aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhelipe Teles <39670535+phelipetls@users.noreply.github.com>2023-09-16 19:35:12 -0300
committerGitHub <noreply@github.com>2023-09-17 06:35:12 +0800
commit4ab9c5fa46845807a2dc6dd91fc5fb78ccc70856 (patch)
treef5106e6f933bbb73ef42c3bdae9a23d99673eff4
parent054839437e63a7cc985e266052a1539c560a0682 (diff)
downloadrneovim-4ab9c5fa46845807a2dc6dd91fc5fb78ccc70856.tar.gz
rneovim-4ab9c5fa46845807a2dc6dd91fc5fb78ccc70856.tar.bz2
rneovim-4ab9c5fa46845807a2dc6dd91fc5fb78ccc70856.zip
fix(lua): not using global value in vim.opt_global (#25196)
-rw-r--r--runtime/lua/vim/_options.lua5
-rw-r--r--test/functional/lua/vim_spec.lua17
2 files changed, 19 insertions, 3 deletions
diff --git a/runtime/lua/vim/_options.lua b/runtime/lua/vim/_options.lua
index 7b44f6b35f..6a3413b597 100644
--- a/runtime/lua/vim/_options.lua
+++ b/runtime/lua/vim/_options.lua
@@ -727,7 +727,10 @@ local function create_option_accessor(scope)
return setmetatable({}, {
__index = function(_, k)
- return make_option(k, api.nvim_get_option_value(k, {}))
+ -- vim.opt_global must get global value only
+ -- vim.opt_local may fall back to global value like vim.opt
+ local opts = { scope = scope == 'global' and 'global' or nil }
+ return make_option(k, api.nvim_get_option_value(k, opts))
end,
__newindex = function(_, k, v)
diff --git a/test/functional/lua/vim_spec.lua b/test/functional/lua/vim_spec.lua
index 9338e95d10..1dfb9a5e10 100644
--- a/test/functional/lua/vim_spec.lua
+++ b/test/functional/lua/vim_spec.lua
@@ -2257,8 +2257,8 @@ describe('lua stdlib', function()
end)
end) -- vim.opt
- describe('opt_local', function()
- it('should be able to append to an array list type option', function()
+ describe('vim.opt_local', function()
+ it('appends into global value when changing local option value', function()
eq({ "foo,bar,baz,qux" }, exec_lua [[
local result = {}
@@ -2273,6 +2273,19 @@ describe('lua stdlib', function()
end)
end)
+ describe('vim.opt_global', function()
+ it('gets current global option value', function()
+ eq({ "yes" }, exec_lua [[
+ local result = {}
+
+ vim.cmd "setglobal signcolumn=yes"
+ table.insert(result, vim.opt_global.signcolumn:get())
+
+ return result
+ ]])
+ end)
+ end)
+
it('vim.cmd', function()
exec_lua [[
vim.cmd "autocmd BufNew * ++once lua BUF = vim.fn.expand('<abuf>')"