diff --git a/lua/telescope/builtin/__internal.lua b/lua/telescope/builtin/__internal.lua index c25ebc734a..1687401eb0 100644 --- a/lua/telescope/builtin/__internal.lua +++ b/lua/telescope/builtin/__internal.lua @@ -656,7 +656,11 @@ end internal.vim_options = function(opts) local res = {} for _, v in pairs(vim.api.nvim_get_all_options_info()) do - table.insert(res, v) + local ok, value = pcall(vim.api.nvim_get_option_value, v.name, {}) + if ok then + v.value = value + table.insert(res, v) + end end table.sort(res, function(left, right) return left.name < right.name @@ -684,7 +688,8 @@ internal.vim_options = function(opts) end vim.api.nvim_feedkeys( - string.format("%s:set %s=%s", esc, selection.value.name, selection.value.value), + selection.value.type == "boolean" and string.format("%s:set %s!", esc, selection.value.name) + or string.format("%s:set %s=%s", esc, selection.value.name, selection.value.value), "m", true ) diff --git a/lua/telescope/make_entry.lua b/lua/telescope/make_entry.lua index a1806f37d4..3f42d176f1 100644 --- a/lua/telescope/make_entry.lua +++ b/lua/telescope/make_entry.lua @@ -1003,21 +1003,13 @@ function make_entry.gen_from_vimoptions(opts) display = make_display, value = { name = o.name, - value = o.default, + value = o.value, type = o.type, scope = o.scope, }, - ordinal = string.format("%s %s %s", o.name, o.type, o.scope), + ordinal = string.format("%s %s %s %s", o.name, o.type, o.scope, utils.display_termcodes(tostring(o.value))), } - local ok, value = pcall(vim.api.nvim_get_option, o.name) - if ok then - entry.value.value = value - entry.ordinal = entry.ordinal .. " " .. utils.display_termcodes(tostring(value)) - else - entry.ordinal = entry.ordinal .. " " .. utils.display_termcodes(tostring(o.default)) - end - return make_entry.set_default_entry_mt(entry, opts) end end