aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/highlight_spec.lua
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-05-25 20:37:33 +0800
committerGitHub <noreply@github.com>2024-05-25 20:37:33 +0800
commitbdb81afab3e5c43a33267666c2689feb284f6b52 (patch)
tree5641b43605c4cdacbed97ec4e1b3b09e635f1c0b /test/functional/lua/highlight_spec.lua
parent75f6ee5b26c4a4fc02b69646e0317fd8e802c193 (diff)
downloadrneovim-bdb81afab3e5c43a33267666c2689feb284f6b52.tar.gz
rneovim-bdb81afab3e5c43a33267666c2689feb284f6b52.tar.bz2
rneovim-bdb81afab3e5c43a33267666c2689feb284f6b52.zip
refactor(lua): rewrite vim.highlight.range() (#28986)
- Use getregionpos(). - Use a single extmark for non-blockwise selection.
Diffstat (limited to 'test/functional/lua/highlight_spec.lua')
-rw-r--r--test/functional/lua/highlight_spec.lua83
1 files changed, 83 insertions, 0 deletions
diff --git a/test/functional/lua/highlight_spec.lua b/test/functional/lua/highlight_spec.lua
index c9f2d0a47f..8f099ac233 100644
--- a/test/functional/lua/highlight_spec.lua
+++ b/test/functional/lua/highlight_spec.lua
@@ -1,5 +1,6 @@
local t = require('test.testutil')
local n = require('test.functional.testnvim')()
+local Screen = require('test.functional.ui.screen')
local exec_lua = n.exec_lua
local eq = t.eq
@@ -9,6 +10,88 @@ local command = n.command
local clear = n.clear
local api = n.api
+describe('vim.highlight.range', function()
+ local screen
+
+ before_each(function()
+ clear()
+ screen = Screen.new(60, 6)
+ screen:add_extra_attr_ids({
+ [100] = { foreground = Screen.colors.Blue, background = Screen.colors.Yellow, bold = true },
+ })
+ screen:attach()
+ api.nvim_set_option_value('list', true, {})
+ api.nvim_set_option_value('listchars', 'eol:$', {})
+ api.nvim_buf_set_lines(0, 0, -1, true, {
+ 'asdfghjkl',
+ '«口=口»',
+ 'qwertyuiop',
+ '口口=口口',
+ 'zxcvbnm',
+ })
+ end)
+
+ it('works with charwise selection', function()
+ exec_lua([[
+ local ns = vim.api.nvim_create_namespace('')
+ vim.highlight.range(0, ns, 'Search', { 1, 5 }, { 3, 10 })
+ ]])
+ screen:expect([[
+ ^asdfghjkl{1:$} |
+ «口{10:=口»}{100:$} |
+ {10:qwertyuiop}{100:$} |
+ {10:口口=口}口{1:$} |
+ zxcvbnm{1:$} |
+ |
+ ]])
+ end)
+
+ it('works with linewise selection', function()
+ exec_lua([[
+ local ns = vim.api.nvim_create_namespace('')
+ vim.highlight.range(0, ns, 'Search', { 0, 0 }, { 4, 0 }, { regtype = 'V' })
+ ]])
+ screen:expect([[
+ {10:^asdfghjkl}{100:$} |
+ {10:«口=口»}{100:$} |
+ {10:qwertyuiop}{100:$} |
+ {10:口口=口口}{100:$} |
+ {10:zxcvbnm}{100:$} |
+ |
+ ]])
+ end)
+
+ it('works with blockwise selection', function()
+ exec_lua([[
+ local ns = vim.api.nvim_create_namespace('')
+ vim.highlight.range(0, ns, 'Search', { 0, 0 }, { 4, 4 }, { regtype = '\022' })
+ ]])
+ screen:expect([[
+ {10:^asdf}ghjkl{1:$} |
+ {10:«口=}口»{1:$} |
+ {10:qwer}tyuiop{1:$} |
+ {10:口口}=口口{1:$} |
+ {10:zxcv}bnm{1:$} |
+ |
+ ]])
+ end)
+
+ it('works with blockwise selection with width', function()
+ exec_lua([[
+ local ns = vim.api.nvim_create_namespace('')
+ vim.highlight.range(0, ns, 'Search', { 0, 4 }, { 4, 7 }, { regtype = '\0226' })
+ ]])
+ screen:expect([[
+ ^asdf{10:ghjkl}{1:$} |
+ «口={10:口»}{1:$} |
+ qwer{10:tyuiop}{1:$} |
+ 口口{10:=口口}{1:$} |
+ zxcv{10:bnm}{1:$} |
+ |
+ ]])
+ end)
+end)
+
describe('vim.highlight.on_yank', function()
before_each(function()
clear()