mirror of
https://github.com/neovim/neovim.git
synced 2026-03-31 04:42:03 +00:00
fix(options): vim.opt fails for 'fillchars' #37141
Problem:
When `to_vim_value[info.metatype](info, value)` is called, a list value
such as `{'eob:a'}` is treated like a map, which generates `1:eob:a`.
Note: commands like `:lua vim.opt.wildmode={'longest:full'}` are not an
issue because only cases harcoded in `key_value_options` have metatype `map`.
Solution:
Check for array type and use the same logic as in array metatypes.
This commit is contained in:
committed by
GitHub
parent
8f9278d7c2
commit
f4f1149292
@@ -435,6 +435,9 @@ local to_vim_value = {
|
||||
map = function(_, value)
|
||||
if type(value) == 'string' then
|
||||
return value
|
||||
elseif vim.isarray(value) then
|
||||
value = remove_duplicate_values(value)
|
||||
return table.concat(value, ',')
|
||||
end
|
||||
|
||||
local result = {}
|
||||
|
||||
@@ -778,7 +778,7 @@ describe('lua stdlib', function()
|
||||
eq(true, not formatoptions.q)
|
||||
end)
|
||||
|
||||
it('works for array list type options', function()
|
||||
it('works for comma list type options', function()
|
||||
local wildignore = exec_lua(function()
|
||||
vim.opt.wildignore = '*.c,*.o,__pycache__'
|
||||
return vim.opt.wildignore:get()
|
||||
@@ -788,6 +788,13 @@ describe('lua stdlib', function()
|
||||
eq('*.c', wildignore[1])
|
||||
end)
|
||||
|
||||
it('works for array list type options', function()
|
||||
eq_exec_lua({ eol = '~', space = '-' }, function()
|
||||
vim.opt.listchars = { 'eol:~', 'space:-' }
|
||||
return vim.opt.listchars:get()
|
||||
end)
|
||||
end)
|
||||
|
||||
it('works for options that are both commalist and flaglist', function()
|
||||
eq_exec_lua({ b = true, s = true }, function()
|
||||
vim.opt.whichwrap = 'b,s'
|
||||
|
||||
Reference in New Issue
Block a user