summaryrefslogtreecommitdiff
path: root/lua/telescope
diff options
context:
space:
mode:
authorLuke Kershaw <35707277+l-kershaw@users.noreply.github.com>2021-08-21 11:44:27 +0100
committerGitHub <noreply@github.com>2021-08-21 11:44:27 +0100
commitfbc983eb9166fdc15e5f63ec6adf043fb0124660 (patch)
tree6600912352fb38b040839caecca1bb037ab33f7b /lua/telescope
parent4f91ffcbab427503b1e3ebfb02e47400d6eb561a (diff)
fix(command_parser): pcall for the loadstring (#1134)
Diffstat (limited to 'lua/telescope')
-rw-r--r--lua/telescope/command.lua21
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