diff options
| author | Luke Kershaw <35707277+l-kershaw@users.noreply.github.com> | 2021-08-21 11:44:27 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-21 11:44:27 +0100 |
| commit | fbc983eb9166fdc15e5f63ec6adf043fb0124660 (patch) | |
| tree | 6600912352fb38b040839caecca1bb037ab33f7b /lua/telescope | |
| parent | 4f91ffcbab427503b1e3ebfb02e47400d6eb561a (diff) | |
fix(command_parser): pcall for the loadstring (#1134)
Diffstat (limited to 'lua/telescope')
| -rw-r--r-- | lua/telescope/command.lua | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/lua/telescope/command.lua b/lua/telescope/command.lua index 70c7b4a..db75eb1 100644 --- a/lua/telescope/command.lua +++ b/lua/telescope/command.lua @@ -68,7 +68,7 @@ local split_keywords = { -- convert command line string arguments to -- lua number boolean type and nil value -local function convert_user_opts(user_opts) +command.convert_user_opts = function(user_opts) local default_opts = config.values local _switch = { @@ -102,12 +102,15 @@ local function convert_user_opts(user_opts) if err ~= nil then -- discard invalid lua expression user_opts[key] = nil - elseif select("#", assert(eval)()) == 1 and type(assert(eval)()) == "table" then - -- allow if return a single table only - user_opts[key] = assert(eval)() - else - -- otherwise return nil (allows split check later) - user_opts[key] = nil + elseif eval ~= nil then + ok, eval = pcall(eval) + if ok and type(eval) == "table" then + -- allow if return a table only + user_opts[key] = eval + else + -- otherwise return nil (allows split check later) + user_opts[key] = nil + end end end end, @@ -129,6 +132,8 @@ local function convert_user_opts(user_opts) end elseif default_opts[key] ~= nil then _switch[type(default_opts[key])](key, val) + elseif tonumber(val) ~= nil then + _switch["number"](key, val) else _switch["string"](key, val) end @@ -157,7 +162,7 @@ local function run_command(args) local theme = user_opts.theme or "" if next(opts) ~= nil then - convert_user_opts(opts) + command.convert_user_opts(opts) end if string.len(theme) > 0 then |
