mirror of
https://github.com/neovim/neovim.git
synced 2025-12-17 20:05:38 +00:00
fix(vim.opt): Get window options before setting.
This closes #14677, but I also am a little unsure if there are times where this may not be correct. However, this just changes the behavior that even if `was_set` was false, we still get for `nvim_win_get_option`.
This commit is contained in:
@@ -209,12 +209,17 @@ local function get_scoped_option(k, set_type)
|
||||
end
|
||||
|
||||
if is_window_option(info) then
|
||||
if vim.api.nvim_get_option_info(k).was_set then
|
||||
local was_set, value = pcall(a.nvim_win_get_option, 0, k)
|
||||
if was_set then return value end
|
||||
local ok, value = pcall(a.nvim_win_get_option, 0, k)
|
||||
if ok then
|
||||
return value
|
||||
end
|
||||
|
||||
return a.nvim_get_option(k)
|
||||
local global_ok, global_val = pcall(a.nvim_get_option, k)
|
||||
if global_ok then
|
||||
return global_val
|
||||
end
|
||||
|
||||
error("win_get: This should never happen. File an issue and tag @tjdevries")
|
||||
end
|
||||
|
||||
error("This fallback case should not be possible. " .. k)
|
||||
|
||||
@@ -1228,6 +1228,21 @@ describe('lua stdlib', function()
|
||||
eq("only-local", result[8])
|
||||
end)
|
||||
|
||||
it('should allow you to retrieve window opts even if they have not been set', function()
|
||||
local result = exec_lua [[
|
||||
local result = {}
|
||||
table.insert(result, vim.opt.number:get())
|
||||
table.insert(result, vim.opt_local.number:get())
|
||||
|
||||
vim.opt_local.number = true
|
||||
table.insert(result, vim.opt.number:get())
|
||||
table.insert(result, vim.opt_local.number:get())
|
||||
|
||||
return result
|
||||
]]
|
||||
eq({false, false, true, true}, result)
|
||||
end)
|
||||
|
||||
it('should allow all sorts of string manipulation', function()
|
||||
eq({'hello', 'hello world', 'start hello world'}, exec_lua [[
|
||||
local results = {}
|
||||
|
||||
Reference in New Issue
Block a user