From fad9a96cb0c49d693ab59504091cb9c522910f1a Mon Sep 17 00:00:00 2001 From: cracyc Date: Sat, 5 Nov 2016 18:32:03 -0500 Subject: plugins/console: better completions (nw) --- plugins/console/init.lua | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'plugins') diff --git a/plugins/console/init.lua b/plugins/console/init.lua index fea0f930d42..b4f42acf48e 100644 --- a/plugins/console/init.lua +++ b/plugins/console/init.lua @@ -37,11 +37,12 @@ function console.startplugin() return type(t) == 'table' or (mt and mt.__pairs) end local comps = "," - local table, last = str:match("([(]?[%w.:()]-)[:.]?([%w]*)$") - if last == "" then - return comps - end + local table = str:match("([(]?[%w.:()]-)[:.]?[%w_]*$") + local rest, last = str:match("(.-[:.]?)([%w_]*)$") local err + if table == "" then + table = "_G" + end err, tablef = pcall(load("return " .. table)) if (not err) or (not tablef) then return comps @@ -49,7 +50,15 @@ function console.startplugin() if is_pair_iterable(tablef) then for k, v in pairs(tablef) do if k:match("^" .. last) then - comps = comps .. "," .. table + comps = comps .. "," .. rest .. k + end + end + end + local tablef = getmetatable(tablef) + if is_pair_iterable(tablef) then + for k, v in pairs(tablef) do + if k:match("^" .. last) then + comps = comps .. "," .. rest .. k end end end -- cgit v1.2.3-70-g09d2