aboutsummaryrefslogtreecommitdiff
path: root/test/functional/editor/mark_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/editor/mark_spec.lua')
-rw-r--r--test/functional/editor/mark_spec.lua426
1 files changed, 211 insertions, 215 deletions
diff --git a/test/functional/editor/mark_spec.lua b/test/functional/editor/mark_spec.lua
index e669d7f2bb..6b20a736c0 100644
--- a/test/functional/editor/mark_spec.lua
+++ b/test/functional/editor/mark_spec.lua
@@ -1,15 +1,16 @@
local helpers = require('test.functional.helpers')(after_each)
local Screen = require('test.functional.ui.screen')
-local meths = helpers.meths
-local curbufmeths = helpers.curbufmeths
+local api = helpers.api
local clear = helpers.clear
local command = helpers.command
-local funcs = helpers.funcs
+local fn = helpers.fn
local eq = helpers.eq
local feed = helpers.feed
local write_file = helpers.write_file
local pcall_err = helpers.pcall_err
-local cursor = function() return helpers.meths.win_get_cursor(0) end
+local cursor = function()
+ return helpers.api.nvim_win_get_cursor(0)
+end
describe('named marks', function()
local file1 = 'Xtestfile-functional-editor-marks'
@@ -24,153 +25,153 @@ describe('named marks', function()
os.remove(file2)
end)
- it("can be set", function()
- command("edit " .. file1)
- command("mark a")
- eq({1, 0}, curbufmeths.get_mark("a"))
- feed("jmb")
- eq({2, 0}, curbufmeths.get_mark("b"))
- feed("jmB")
- eq({3, 0}, curbufmeths.get_mark("B"))
- command("4kc")
- eq({4, 0}, curbufmeths.get_mark("c"))
+ it('can be set', function()
+ command('edit ' .. file1)
+ command('mark a')
+ eq({ 1, 0 }, api.nvim_buf_get_mark(0, 'a'))
+ feed('jmb')
+ eq({ 2, 0 }, api.nvim_buf_get_mark(0, 'b'))
+ feed('jmB')
+ eq({ 3, 0 }, api.nvim_buf_get_mark(0, 'B'))
+ command('4kc')
+ eq({ 4, 0 }, api.nvim_buf_get_mark(0, 'c'))
end)
- it("errors when set out of range with :mark", function()
- command("edit " .. file1)
- local err = pcall_err(helpers.exec_capture, "1000mark x")
- eq("nvim_exec2(): Vim(mark):E16: Invalid range: 1000mark x", err)
+ it('errors when set out of range with :mark', function()
+ command('edit ' .. file1)
+ local err = pcall_err(helpers.exec_capture, '1000mark x')
+ eq('nvim_exec2(): Vim(mark):E16: Invalid range: 1000mark x', err)
end)
- it("errors when set out of range with :k", function()
- command("edit " .. file1)
- local err = pcall_err(helpers.exec_capture, "1000kx")
- eq("nvim_exec2(): Vim(k):E16: Invalid range: 1000kx", err)
+ it('errors when set out of range with :k', function()
+ command('edit ' .. file1)
+ local err = pcall_err(helpers.exec_capture, '1000kx')
+ eq('nvim_exec2(): Vim(k):E16: Invalid range: 1000kx', err)
end)
- it("errors on unknown mark name with :mark", function()
- command("edit " .. file1)
- local err = pcall_err(helpers.exec_capture, "mark #")
- eq("nvim_exec2(): Vim(mark):E191: Argument must be a letter or forward/backward quote", err)
+ it('errors on unknown mark name with :mark', function()
+ command('edit ' .. file1)
+ local err = pcall_err(helpers.exec_capture, 'mark #')
+ eq('nvim_exec2(): Vim(mark):E191: Argument must be a letter or forward/backward quote', err)
end)
it("errors on unknown mark name with '", function()
- command("edit " .. file1)
+ command('edit ' .. file1)
local err = pcall_err(helpers.exec_capture, "normal! '#")
- eq("nvim_exec2(): Vim(normal):E78: Unknown mark", err)
+ eq('nvim_exec2(): Vim(normal):E78: Unknown mark', err)
end)
- it("errors on unknown mark name with `", function()
- command("edit " .. file1)
- local err = pcall_err(helpers.exec_capture, "normal! `#")
- eq("nvim_exec2(): Vim(normal):E78: Unknown mark", err)
+ it('errors on unknown mark name with `', function()
+ command('edit ' .. file1)
+ local err = pcall_err(helpers.exec_capture, 'normal! `#')
+ eq('nvim_exec2(): Vim(normal):E78: Unknown mark', err)
end)
it("errors when moving to a mark that is not set with '", function()
- command("edit " .. file1)
+ command('edit ' .. file1)
local err = pcall_err(helpers.exec_capture, "normal! 'z")
- eq("nvim_exec2(): Vim(normal):E20: Mark not set", err)
+ eq('nvim_exec2(): Vim(normal):E20: Mark not set', err)
err = pcall_err(helpers.exec_capture, "normal! '.")
- eq("nvim_exec2(): Vim(normal):E20: Mark not set", err)
+ eq('nvim_exec2(): Vim(normal):E20: Mark not set', err)
end)
- it("errors when moving to a mark that is not set with `", function()
- command("edit " .. file1)
- local err = pcall_err(helpers.exec_capture, "normal! `z")
- eq("nvim_exec2(): Vim(normal):E20: Mark not set", err)
- err = pcall_err(helpers.exec_capture, "normal! `>")
- eq("nvim_exec2(): Vim(normal):E20: Mark not set", err)
+ it('errors when moving to a mark that is not set with `', function()
+ command('edit ' .. file1)
+ local err = pcall_err(helpers.exec_capture, 'normal! `z')
+ eq('nvim_exec2(): Vim(normal):E20: Mark not set', err)
+ err = pcall_err(helpers.exec_capture, 'normal! `>')
+ eq('nvim_exec2(): Vim(normal):E20: Mark not set', err)
end)
it("errors when moving to a global mark that is not set with '", function()
- command("edit " .. file1)
+ command('edit ' .. file1)
local err = pcall_err(helpers.exec_capture, "normal! 'Z")
- eq("nvim_exec2(): Vim(normal):E20: Mark not set", err)
+ eq('nvim_exec2(): Vim(normal):E20: Mark not set', err)
end)
- it("errors when moving to a global mark that is not set with `", function()
- command("edit " .. file1)
- local err = pcall_err(helpers.exec_capture, "normal! `Z")
- eq("nvim_exec2(): Vim(normal):E20: Mark not set", err)
+ it('errors when moving to a global mark that is not set with `', function()
+ command('edit ' .. file1)
+ local err = pcall_err(helpers.exec_capture, 'normal! `Z')
+ eq('nvim_exec2(): Vim(normal):E20: Mark not set', err)
end)
it("can move to them using '", function()
- command("args " .. file1 .. " " .. file2)
- feed("j")
- feed("ma")
+ command('args ' .. file1 .. ' ' .. file2)
+ feed('j')
+ feed('ma')
feed("G'a")
- eq({2, 0}, cursor())
- feed("mA")
- command("next")
+ eq({ 2, 0 }, cursor())
+ feed('mA')
+ command('next')
feed("'A")
- eq(1, meths.get_current_buf().id)
- eq({2, 0}, cursor())
+ eq(1, api.nvim_get_current_buf())
+ eq({ 2, 0 }, cursor())
end)
- it("can move to them using `", function()
- command("args " .. file1 .. " " .. file2)
- feed("jll")
- feed("ma")
- feed("G`a")
- eq({2, 2}, cursor())
- feed("mA")
- command("next")
- feed("`A")
- eq(1, meths.get_current_buf().id)
- eq({2, 2}, cursor())
+ it('can move to them using `', function()
+ command('args ' .. file1 .. ' ' .. file2)
+ feed('jll')
+ feed('ma')
+ feed('G`a')
+ eq({ 2, 2 }, cursor())
+ feed('mA')
+ command('next')
+ feed('`A')
+ eq(1, api.nvim_get_current_buf())
+ eq({ 2, 2 }, cursor())
end)
it("can move to them using g'", function()
- command("args " .. file1 .. " " .. file2)
- feed("jll")
- feed("ma")
+ command('args ' .. file1 .. ' ' .. file2)
+ feed('jll')
+ feed('ma')
feed("Gg'a")
- eq({2, 0}, cursor())
- feed("mA")
- command("next")
+ eq({ 2, 0 }, cursor())
+ feed('mA')
+ command('next')
feed("g'A")
- eq(1, meths.get_current_buf().id)
- eq({2, 0}, cursor())
+ eq(1, api.nvim_get_current_buf())
+ eq({ 2, 0 }, cursor())
end)
- it("can move to them using g`", function()
- command("args " .. file1 .. " " .. file2)
- feed("jll")
- feed("ma")
- feed("Gg`a")
- eq({2, 2}, cursor())
- feed("mA")
- command("next")
- feed("g`A")
- eq(1, meths.get_current_buf().id)
- eq({2, 2}, cursor())
+ it('can move to them using g`', function()
+ command('args ' .. file1 .. ' ' .. file2)
+ feed('jll')
+ feed('ma')
+ feed('Gg`a')
+ eq({ 2, 2 }, cursor())
+ feed('mA')
+ command('next')
+ feed('g`A')
+ eq(1, api.nvim_get_current_buf())
+ eq({ 2, 2 }, cursor())
end)
it("can move to them using :'", function()
- command("args " .. file1 .. " " .. file2)
- feed("j")
- feed("ma")
- feed("G")
+ command('args ' .. file1 .. ' ' .. file2)
+ feed('j')
+ feed('ma')
+ feed('G')
command("'a")
- eq({2, 0}, cursor())
- feed("mA")
- command("next")
+ eq({ 2, 0 }, cursor())
+ feed('mA')
+ command('next')
command("'A")
- eq(1, meths.get_current_buf().id)
- eq({2, 0}, cursor())
+ eq(1, api.nvim_get_current_buf())
+ eq({ 2, 0 }, cursor())
end)
it("errors when it can't find the buffer", function()
- command("args " .. file1 .. " " .. file2)
- feed("mA")
- command("next")
- command("bw! " .. file1 )
+ command('args ' .. file1 .. ' ' .. file2)
+ feed('mA')
+ command('next')
+ command('bw! ' .. file1)
local err = pcall_err(helpers.exec_capture, "normal! 'A")
- eq("nvim_exec2(): Vim(normal):E92: Buffer 1 not found", err)
+ eq('nvim_exec2(): Vim(normal):E92: Buffer 1 not found', err)
os.remove(file1)
end)
- it("errors when using a mark in another buffer in command range", function()
+ it('errors when using a mark in another buffer in command range', function()
feed('ifoo<Esc>mA')
command('enew')
feed('ibar<Esc>')
@@ -178,147 +179,147 @@ describe('named marks', function()
end)
it("leave a context mark when moving with '", function()
- command("edit " .. file1)
- feed("llmamA")
- feed("10j0") -- first col, last line
+ command('edit ' .. file1)
+ feed('llmamA')
+ feed('10j0') -- first col, last line
local pos = cursor()
feed("'a")
- feed("<C-o>")
+ feed('<C-o>')
eq(pos, cursor())
feed("'A")
- feed("<C-o>")
+ feed('<C-o>')
eq(pos, cursor())
end)
- it("leave a context mark when moving with `", function()
- command("edit " .. file1)
- feed("llmamA")
- feed("10j0") -- first col, last line
+ it('leave a context mark when moving with `', function()
+ command('edit ' .. file1)
+ feed('llmamA')
+ feed('10j0') -- first col, last line
local pos = cursor()
- feed("`a")
- feed("<C-o>")
+ feed('`a')
+ feed('<C-o>')
eq(pos, cursor())
- feed("`A")
- feed("<C-o>")
+ feed('`A')
+ feed('<C-o>')
eq(pos, cursor())
end)
it("leave a context mark when the mark changes buffer with g'", function()
- command("args " .. file1 .. " " .. file2)
+ command('args ' .. file1 .. ' ' .. file2)
local pos
- feed("GmA")
- command("next")
+ feed('GmA')
+ command('next')
pos = cursor()
- command("clearjumps")
- feed("g'A") -- since the mark is in another buffer, it leaves a context mark
- feed("<C-o>")
+ command('clearjumps')
+ feed("g'A") -- since the mark is in another buffer, it leaves a context mark
+ feed('<C-o>')
eq(pos, cursor())
end)
- it("leave a context mark when the mark changes buffer with g`", function()
- command("args " .. file1 .. " " .. file2)
+ it('leave a context mark when the mark changes buffer with g`', function()
+ command('args ' .. file1 .. ' ' .. file2)
local pos
- feed("GmA")
- command("next")
+ feed('GmA')
+ command('next')
pos = cursor()
- command("clearjumps")
- feed("g`A") -- since the mark is in another buffer, it leaves a context mark
- feed("<C-o>")
+ command('clearjumps')
+ feed('g`A') -- since the mark is in another buffer, it leaves a context mark
+ feed('<C-o>')
eq(pos, cursor())
end)
it("do not leave a context mark when moving with g'", function()
- command("edit " .. file1)
+ command('edit ' .. file1)
local pos
- feed("ma")
+ feed('ma')
pos = cursor() -- Mark pos
- feed("10j0") -- first col, last line
+ feed('10j0') -- first col, last line
feed("g'a")
- feed("<C-o>") -- should do nothing
+ feed('<C-o>') -- should do nothing
eq(pos, cursor())
- feed("mA")
+ feed('mA')
pos = cursor() -- Mark pos
- feed("10j0") -- first col, last line
+ feed('10j0') -- first col, last line
feed("g'a")
- feed("<C-o>") -- should do nothing
+ feed('<C-o>') -- should do nothing
eq(pos, cursor())
end)
- it("do not leave a context mark when moving with g`", function()
- command("edit " .. file1)
+ it('do not leave a context mark when moving with g`', function()
+ command('edit ' .. file1)
local pos
- feed("ma")
+ feed('ma')
pos = cursor() -- Mark pos
- feed("10j0") -- first col, last line
- feed("g`a")
- feed("<C-o>") -- should do nothing
+ feed('10j0') -- first col, last line
+ feed('g`a')
+ feed('<C-o>') -- should do nothing
eq(pos, cursor())
- feed("mA")
+ feed('mA')
pos = cursor() -- Mark pos
- feed("10j0") -- first col, last line
+ feed('10j0') -- first col, last line
feed("g'a")
- feed("<C-o>") -- should do nothing
+ feed('<C-o>') -- should do nothing
eq(pos, cursor())
end)
- it("open folds when moving to them", function()
- command("edit " .. file1)
- feed("jzfG") -- Fold from the second line to the end
- command("3mark a")
- feed("G") -- On top of the fold
- assert(funcs.foldclosed('.') ~= -1) -- folded
+ it('open folds when moving to them', function()
+ command('edit ' .. file1)
+ feed('jzfG') -- Fold from the second line to the end
+ command('3mark a')
+ feed('G') -- On top of the fold
+ assert(fn.foldclosed('.') ~= -1) -- folded
feed("'a")
- eq(-1, funcs.foldclosed('.'))
+ eq(-1, fn.foldclosed('.'))
- feed("zc")
- assert(funcs.foldclosed('.') ~= -1) -- folded
+ feed('zc')
+ assert(fn.foldclosed('.') ~= -1) -- folded
-- TODO: remove this workaround after fixing #15873
- feed("k`a")
- eq(-1, funcs.foldclosed('.'))
+ feed('k`a')
+ eq(-1, fn.foldclosed('.'))
- feed("zc")
- assert(funcs.foldclosed('.') ~= -1) -- folded
+ feed('zc')
+ assert(fn.foldclosed('.') ~= -1) -- folded
feed("kg'a")
- eq(-1, funcs.foldclosed('.'))
+ eq(-1, fn.foldclosed('.'))
- feed("zc")
- assert(funcs.foldclosed('.') ~= -1) -- folded
- feed("kg`a")
- eq(-1, funcs.foldclosed('.'))
+ feed('zc')
+ assert(fn.foldclosed('.') ~= -1) -- folded
+ feed('kg`a')
+ eq(-1, fn.foldclosed('.'))
end)
it("do not open folds when moving to them doesn't move the cursor", function()
- command("edit " .. file1)
- feed("jzfG") -- Fold from the second line to the end
- assert(funcs.foldclosed('.') == 2) -- folded
- feed("ma")
+ command('edit ' .. file1)
+ feed('jzfG') -- Fold from the second line to the end
+ assert(fn.foldclosed('.') == 2) -- folded
+ feed('ma')
feed("'a")
- feed("`a")
+ feed('`a')
feed("g'a")
- feed("g`a")
+ feed('g`a')
-- should still be folded
- eq(2, funcs.foldclosed('.'))
+ eq(2, fn.foldclosed('.'))
end)
it("getting '{ '} '( ') does not move cursor", function()
- meths.buf_set_lines(0, 0, 0, true, {'aaaaa', 'bbbbb', 'ccccc', 'ddddd', 'eeeee'})
- meths.win_set_cursor(0, {2, 0})
- funcs.getpos("'{")
- eq({2, 0}, meths.win_get_cursor(0))
- funcs.getpos("'}")
- eq({2, 0}, meths.win_get_cursor(0))
- funcs.getpos("'(")
- eq({2, 0}, meths.win_get_cursor(0))
- funcs.getpos("')")
- eq({2, 0}, meths.win_get_cursor(0))
+ api.nvim_buf_set_lines(0, 0, 0, true, { 'aaaaa', 'bbbbb', 'ccccc', 'ddddd', 'eeeee' })
+ api.nvim_win_set_cursor(0, { 2, 0 })
+ fn.getpos("'{")
+ eq({ 2, 0 }, api.nvim_win_get_cursor(0))
+ fn.getpos("'}")
+ eq({ 2, 0 }, api.nvim_win_get_cursor(0))
+ fn.getpos("'(")
+ eq({ 2, 0 }, api.nvim_win_get_cursor(0))
+ fn.getpos("')")
+ eq({ 2, 0 }, api.nvim_win_get_cursor(0))
end)
it('in command range does not move cursor #19248', function()
- meths.create_user_command('Test', ':', {range = true})
- meths.buf_set_lines(0, 0, 0, true, {'aaaaa', 'bbbbb', 'ccccc', 'ddddd', 'eeeee'})
- meths.win_set_cursor(0, {2, 0})
+ api.nvim_create_user_command('Test', ':', { range = true })
+ api.nvim_buf_set_lines(0, 0, 0, true, { 'aaaaa', 'bbbbb', 'ccccc', 'ddddd', 'eeeee' })
+ api.nvim_win_set_cursor(0, { 2, 0 })
command([['{,'}Test]])
- eq({2, 0}, meths.win_get_cursor(0))
+ eq({ 2, 0 }, api.nvim_win_get_cursor(0))
end)
end)
@@ -327,16 +328,16 @@ describe('named marks view', function()
local file2 = 'Xtestfile-functional-editor-marks-2'
local function content()
local c = {}
- for i=1,30 do
- c[i] = i .. " line"
+ for i = 1, 30 do
+ c[i] = i .. ' line'
end
- return table.concat(c, "\n")
+ return table.concat(c, '\n')
end
before_each(function()
clear()
write_file(file1, content(), false, false)
write_file(file2, content(), false, false)
- command("set jumpoptions+=view")
+ command('set jumpoptions+=view')
end)
after_each(function()
os.remove(file1)
@@ -344,12 +345,12 @@ describe('named marks view', function()
end)
it('is restored in normal mode but not op-pending mode', function()
- local screen = Screen.new(5, 8)
- screen:attach()
- command("edit " .. file1)
- feed("<C-e>jWma")
- feed("G'a")
- local expected = [[
+ local screen = Screen.new(5, 8)
+ screen:attach()
+ command('edit ' .. file1)
+ feed('<C-e>jWma')
+ feed("G'a")
+ local expected = [[
2 line |
^3 line |
4 line |
@@ -359,9 +360,9 @@ describe('named marks view', function()
8 line |
|
]]
- screen:expect({grid=expected})
- feed("G`a")
- screen:expect([[
+ screen:expect({ grid = expected })
+ feed('G`a')
+ screen:expect([[
2 line |
3 ^line |
4 line |
@@ -371,9 +372,9 @@ describe('named marks view', function()
8 line |
|
]])
- -- not in op-pending mode #20886
- feed("ggj=`a")
- screen:expect([[
+ -- not in op-pending mode #20886
+ feed('ggj=`a')
+ screen:expect([[
1 line |
^2 line |
3 line |
@@ -388,8 +389,8 @@ describe('named marks view', function()
it('is restored across files', function()
local screen = Screen.new(5, 5)
screen:attach()
- command("args " .. file1 .. " " .. file2)
- feed("<C-e>mA")
+ command('args ' .. file1 .. ' ' .. file2)
+ feed('<C-e>mA')
local mark_view = [[
^2 line |
3 line |
@@ -398,7 +399,7 @@ describe('named marks view', function()
|
]]
screen:expect(mark_view)
- command("next")
+ command('next')
screen:expect([[
^1 line |
2 line |
@@ -410,18 +411,16 @@ describe('named marks view', function()
screen:expect(mark_view)
end)
- it('fallback to standard behavior when view can\'t be recovered', function()
- local screen = Screen.new(10, 10)
- screen:attach()
- command("edit " .. file1)
- feed("7GzbmaG") -- Seven lines from the top
- command("new") -- Screen size for window is now half the height can't be restored
- feed("<C-w>p'a")
- screen:expect([[
+ it("fallback to standard behavior when view can't be recovered", function()
+ local screen = Screen.new(10, 10)
+ screen:attach()
+ command('edit ' .. file1)
+ feed('7GzbmaG') -- Seven lines from the top
+ command('new') -- Screen size for window is now half the height can't be restored
+ feed("<C-w>p'a")
+ screen:expect([[
|
- ~ |
- ~ |
- ~ |
+ ~ |*3
[No Name] |
6 line |
^7 line |
@@ -454,10 +453,7 @@ describe('named marks view', function()
command('bwipe!')
screen:expect([[
^ |
- ~ |
- ~ |
- ~ |
- ~ |
+ ~ |*4
|
]])
command('rshada!')