neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 51ea753747c7df12a2d06ad45100db7797c11e1b
parent 55a4aa41bb27aa9439fea11c4ebcfec2ee87844d
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Fri, 16 Feb 2024 13:27:42 +0800

fix(genvimvim): generate prefixed boolean options properly (#27487)


Diffstat:
Msrc/nvim/generators/gen_vimvim.lua | 4++--
Atest/functional/plugin/vim_syntax_spec.lua | 40++++++++++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/src/nvim/generators/gen_vimvim.lua b/src/nvim/generators/gen_vimvim.lua @@ -83,7 +83,7 @@ local vimopt_start = 'syn keyword vimOption contained ' w('\n\n' .. vimopt_start) for _, opt_desc in ipairs(options.options) do - if not opt_desc.varname or opt_desc.varname:sub(1, 7) ~= 'p_force' then + if not opt_desc.immutable then if lld.line_length > 850 then w('\n' .. vimopt_start) end @@ -91,7 +91,7 @@ for _, opt_desc in ipairs(options.options) do if opt_desc.abbreviation then w(' ' .. opt_desc.abbreviation) end - if opt_desc.type == 'bool' then + if opt_desc.type == 'boolean' then w(' inv' .. opt_desc.full_name) w(' no' .. opt_desc.full_name) if opt_desc.abbreviation then diff --git a/test/functional/plugin/vim_syntax_spec.lua b/test/functional/plugin/vim_syntax_spec.lua @@ -0,0 +1,40 @@ +local helpers = require('test.functional.helpers')(after_each) +local Screen = require('test.functional.ui.screen') +local clear = helpers.clear +local exec = helpers.exec +local api = helpers.api + +describe('Vimscript syntax highlighting', function() + local screen + + before_each(function() + clear() + helpers.add_builddir_to_rtp() + exec([[ + setfiletype vim + syntax on + ]]) + screen = Screen.new() + screen:set_default_attr_ids({ + [0] = { foreground = Screen.colors.Blue, bold = true }, + [1] = { foreground = Screen.colors.Brown, bold = true }, + [2] = { foreground = tonumber('0x6a0dad') }, + }) + screen:attach() + end) + + it('prefixed boolean options are highlighted properly', function() + api.nvim_buf_set_lines(0, 0, -1, true, { + 'set number incsearch hlsearch', + 'set nonumber noincsearch nohlsearch', + 'set invnumber invincsearch invhlsearch', + }) + screen:expect([[ + {1:^set} {2:number} {2:incsearch} {2:hlsearch} | + {1:set} {2:nonumber} {2:noincsearch} {2:nohlsearch} | + {1:set} {2:invnumber} {2:invincsearch} {2:invhlsearch} | + {0:~ }|*10 + | + ]]) + end) +end)