aboutsummaryrefslogtreecommitdiff
path: root/test/functional
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional')
-rw-r--r--test/functional/terminal/buffer_spec.lua38
-rw-r--r--test/functional/ui/cursor_spec.lua4
-rw-r--r--test/functional/ui/fold_spec.lua112
-rw-r--r--test/functional/ui/sign_spec.lua93
4 files changed, 244 insertions, 3 deletions
diff --git a/test/functional/terminal/buffer_spec.lua b/test/functional/terminal/buffer_spec.lua
index 7dcca231ee..f25cfa2039 100644
--- a/test/functional/terminal/buffer_spec.lua
+++ b/test/functional/terminal/buffer_spec.lua
@@ -6,9 +6,11 @@ local poke_eventloop = helpers.poke_eventloop
local eval, feed_command, source = helpers.eval, helpers.feed_command, helpers.source
local eq, neq = helpers.eq, helpers.neq
local write_file = helpers.write_file
-local command= helpers.command
+local command = helpers.command
local exc_exec = helpers.exc_exec
local matches = helpers.matches
+local exec_lua = helpers.exec_lua
+local sleep = helpers.sleep
describe(':terminal buffer', function()
local screen
@@ -328,3 +330,37 @@ describe('No heap-buffer-overflow when', function()
assert_alive()
end)
end)
+
+describe('on_lines does not emit out-of-bounds line indexes when', function()
+ before_each(function()
+ clear()
+ exec_lua([[
+ function _G.register_callback(bufnr)
+ _G.cb_error = ''
+ vim.api.nvim_buf_attach(bufnr, false, {
+ on_lines = function(_, bufnr, _, firstline, _, _)
+ local status, msg = pcall(vim.api.nvim_buf_get_offset, bufnr, firstline)
+ if not status then
+ _G.cb_error = msg
+ end
+ end
+ })
+ end
+ ]])
+ end)
+
+ it('creating a terminal buffer #16394', function()
+ feed_command([[autocmd TermOpen * ++once call v:lua.register_callback(expand("<abuf>"))]])
+ feed_command('terminal')
+ sleep(500)
+ eq('', exec_lua([[return _G.cb_error]]))
+ end)
+
+ it('deleting a terminal buffer #16394', function()
+ feed_command('terminal')
+ sleep(500)
+ feed_command('lua _G.register_callback(0)')
+ feed_command('bdelete!')
+ eq('', exec_lua([[return _G.cb_error]]))
+ end)
+end)
diff --git a/test/functional/ui/cursor_spec.lua b/test/functional/ui/cursor_spec.lua
index 9c035c728b..03cd4bfd06 100644
--- a/test/functional/ui/cursor_spec.lua
+++ b/test/functional/ui/cursor_spec.lua
@@ -212,10 +212,10 @@ describe('ui/cursor', function()
if m.blinkwait then m.blinkwait = 700 end
end
if m.hl_id then
- m.hl_id = 58
+ m.hl_id = 60
m.attr = {background = Screen.colors.DarkGray}
end
- if m.id_lm then m.id_lm = 59 end
+ if m.id_lm then m.id_lm = 61 end
end
-- Assert the new expectation.
diff --git a/test/functional/ui/fold_spec.lua b/test/functional/ui/fold_spec.lua
index 249686234c..3e0e15c2b7 100644
--- a/test/functional/ui/fold_spec.lua
+++ b/test/functional/ui/fold_spec.lua
@@ -41,6 +41,7 @@ describe("folded lines", function()
[9] = {bold = true, foreground = Screen.colors.Brown},
[10] = {background = Screen.colors.LightGrey, underline = true},
[11] = {bold=true},
+ [12] = {background = Screen.colors.Grey90},
})
end)
@@ -84,6 +85,117 @@ describe("folded lines", function()
end
end)
+ it("highlights with CursorLineFold when 'cursorline' is set", function()
+ command("set cursorline foldcolumn=2 foldmethod=marker")
+ command("hi link CursorLineFold Search")
+ insert(content1)
+ feed("zf3j")
+ if multigrid then
+ screen:expect([[
+ ## grid 1
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [3:---------------------------------------------]|
+ ## grid 2
+ {7: }This is a |
+ {7: }valid English |
+ {7: }sentence composed by |
+ {7: }an exhausted developer |
+ {7: }in his cave. |
+ {6: }{12:^ }|
+ {1:~ }|
+ ## grid 3
+ |
+ ]])
+ else
+ screen:expect([[
+ {7: }This is a |
+ {7: }valid English |
+ {7: }sentence composed by |
+ {7: }an exhausted developer |
+ {7: }in his cave. |
+ {6: }{12:^ }|
+ {1:~ }|
+ |
+ ]])
+ end
+ feed("k")
+ if multigrid then
+ screen:expect([[
+ ## grid 1
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [3:---------------------------------------------]|
+ ## grid 2
+ {7: }This is a |
+ {7: }valid English |
+ {7: }sentence composed by |
+ {7: }an exhausted developer |
+ {6: }{12:^in his cave. }|
+ {7: } |
+ {1:~ }|
+ ## grid 3
+ |
+ ]])
+ else
+ screen:expect([[
+ {7: }This is a |
+ {7: }valid English |
+ {7: }sentence composed by |
+ {7: }an exhausted developer |
+ {6: }{12:^in his cave. }|
+ {7: } |
+ {1:~ }|
+ |
+ ]])
+ end
+ command("set cursorlineopt=line")
+ if multigrid then
+ screen:expect([[
+ ## grid 1
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [3:---------------------------------------------]|
+ ## grid 2
+ {7: }This is a |
+ {7: }valid English |
+ {7: }sentence composed by |
+ {7: }an exhausted developer |
+ {7: }{12:^in his cave. }|
+ {7: } |
+ {1:~ }|
+ ## grid 3
+ |
+ ]])
+ else
+ screen:expect([[
+ {7: }This is a |
+ {7: }valid English |
+ {7: }sentence composed by |
+ {7: }an exhausted developer |
+ {7: }{12:^in his cave. }|
+ {7: } |
+ {1:~ }|
+ |
+ ]])
+ end
+ end)
+
it("highlighting with relative line numbers", function()
command("set relativenumber cursorline cursorlineopt=number foldmethod=marker")
feed_command("set foldcolumn=2")
diff --git a/test/functional/ui/sign_spec.lua b/test/functional/ui/sign_spec.lua
index 741b93043d..dcd31cfdb7 100644
--- a/test/functional/ui/sign_spec.lua
+++ b/test/functional/ui/sign_spec.lua
@@ -157,6 +157,99 @@ describe('Signs', function()
]])
end)
+ it('higlights the cursorline sign with culhl', function()
+ feed('ia<cr>b<cr>c<esc>')
+ command('sign define piet text=>> texthl=Search culhl=ErrorMsg')
+ command('sign place 1 line=1 name=piet buffer=1')
+ command('sign place 2 line=2 name=piet buffer=1')
+ command('sign place 3 line=3 name=piet buffer=1')
+ command('set cursorline')
+ screen:expect([[
+ {1:>>}a |
+ {1:>>}b |
+ {8:>>}{3:^c }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ |
+ ]])
+ feed('k')
+ screen:expect([[
+ {1:>>}a |
+ {8:>>}{3:^b }|
+ {1:>>}c |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ |
+ ]])
+ command('set nocursorline')
+ screen:expect([[
+ {1:>>}a |
+ {1:>>}^b |
+ {1:>>}c |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ |
+ ]])
+ command('set cursorline cursorlineopt=line')
+ screen:expect([[
+ {1:>>}a |
+ {1:>>}{3:^b }|
+ {1:>>}c |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ |
+ ]])
+ command('set cursorlineopt=number')
+ screen:expect([[
+ {1:>>}a |
+ {8:>>}^b |
+ {1:>>}c |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ |
+ ]])
+ end)
+
it('multiple signs #9295', function()
feed('ia<cr>b<cr>c<cr><esc>')
command('set number')