Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
201 lines
5.5 KiB
Lua
201 lines
5.5 KiB
Lua
local get_curpos = function()
|
|
local curpos = vim.api.nvim_win_get_cursor(0)
|
|
return { curpos[1], curpos[2] + 1 }
|
|
end
|
|
local set_curpos = function(pos)
|
|
vim.api.nvim_win_set_cursor(0, { pos[1], pos[2] - 1 })
|
|
end
|
|
local set_lines = function(lines)
|
|
vim.api.nvim_buf_set_lines(0, 0, -1, false, lines)
|
|
end
|
|
local check_lines = function(lines)
|
|
assert.are.same(lines, vim.api.nvim_buf_get_lines(0, 0, -1, false))
|
|
end
|
|
|
|
describe("jumps", function()
|
|
before_each(function()
|
|
local bufnr = vim.api.nvim_create_buf(true, true)
|
|
vim.api.nvim_win_set_buf(0, bufnr)
|
|
end)
|
|
|
|
it("can do lookahead/lookbehind", function()
|
|
set_lines({
|
|
[[And jump "forwards" and `backwards` to 'the' "nearest" surround.]],
|
|
})
|
|
set_curpos({ 1, 27 })
|
|
|
|
vim.cmd("normal dsq")
|
|
assert.are_not.same(get_curpos(), { 1, 27 })
|
|
check_lines({
|
|
[[And jump "forwards" and backwards to 'the' "nearest" surround.]],
|
|
})
|
|
|
|
vim.cmd("normal ysa'\"")
|
|
check_lines({
|
|
[[And jump "forwards" and backwards to "'the'" "nearest" surround.]],
|
|
})
|
|
|
|
vim.cmd("normal dsq")
|
|
assert.are_not.same(get_curpos(), { 1, 27 })
|
|
vim.cmd("normal! ..")
|
|
assert.are_not.same(get_curpos(), { 1, 27 })
|
|
check_lines({
|
|
[[And jump "forwards and backwards to the nearest" surround.]],
|
|
})
|
|
|
|
vim.cmd("normal csqb")
|
|
assert.are_not.same(get_curpos(), { 1, 27 })
|
|
check_lines({
|
|
[[And jump (forwards and backwards to the nearest) surround.]],
|
|
})
|
|
end)
|
|
|
|
it("can change multiple quotes on a line", function()
|
|
set_lines({
|
|
[["hello "world""]],
|
|
})
|
|
set_curpos({ 1, 10 })
|
|
vim.cmd("normal cs\"'")
|
|
check_lines({
|
|
[["hello 'world'"]],
|
|
})
|
|
set_curpos({ 1, 8 })
|
|
vim.cmd("normal cs'\"")
|
|
check_lines({
|
|
[["hello "world""]],
|
|
})
|
|
set_curpos({ 1, 14 })
|
|
vim.cmd("normal cs\"'")
|
|
check_lines({
|
|
[["hello "world'']],
|
|
})
|
|
end)
|
|
|
|
it("for quotes only target the current line", function()
|
|
set_lines({
|
|
[[This 'line' has quotes]],
|
|
[[While this does "not"]],
|
|
[[This `one` does as well]],
|
|
})
|
|
set_curpos({ 2, 7 })
|
|
vim.cmd("normal dsq")
|
|
check_lines({
|
|
[[This 'line' has quotes]],
|
|
[[While this does not]],
|
|
[[This `one` does as well]],
|
|
})
|
|
vim.cmd("normal! .")
|
|
check_lines({
|
|
[[This 'line' has quotes]],
|
|
[[While this does not]],
|
|
[[This `one` does as well]],
|
|
})
|
|
vim.cmd("normal cs'`")
|
|
vim.cmd("normal cs`'")
|
|
check_lines({
|
|
[[This 'line' has quotes]],
|
|
[[While this does not]],
|
|
[[This `one` does as well]],
|
|
})
|
|
end)
|
|
|
|
it("can jump to pattern-based surrounds", function()
|
|
set_lines({
|
|
[[int f(a, b, c)]],
|
|
})
|
|
vim.cmd("normal dsf")
|
|
check_lines({
|
|
[[int a, b, c]],
|
|
})
|
|
|
|
set_curpos({ 1, 1 })
|
|
set_lines({
|
|
[[// Some comment here]],
|
|
[[string function(vector<int> v) {}]],
|
|
})
|
|
vim.cmd("normal dsf")
|
|
set_lines({
|
|
[[// Some comment here]],
|
|
[[string function(vector<int> v) {}]],
|
|
})
|
|
|
|
set_lines({
|
|
[[outer_func(inner_func(some, args)) -- Comment]],
|
|
})
|
|
set_curpos({ 1, 11 })
|
|
vim.cmd("normal dsf")
|
|
set_lines({
|
|
[[inner_func(some, args) -- Comment]],
|
|
})
|
|
|
|
set_lines({
|
|
[[outer_func(inner_func(some, args)) -- Comment]],
|
|
})
|
|
set_curpos({ 1, 12 })
|
|
vim.cmd("normal dsf")
|
|
set_lines({
|
|
[[outer_func(some, args) -- Comment]],
|
|
})
|
|
|
|
set_lines({
|
|
[[outer_func(inner_func(some, args)) -- Comment]],
|
|
})
|
|
set_curpos({ 1, 33 })
|
|
vim.cmd("normal dsf")
|
|
set_lines({
|
|
[[outer_func(some, args) -- Comment]],
|
|
})
|
|
|
|
set_lines({
|
|
[[outer_func(inner_func(some, args)) -- Comment]],
|
|
})
|
|
set_curpos({ 1, 34 })
|
|
vim.cmd("normal dsf")
|
|
set_lines({
|
|
[[inner_func(some, args) -- Comment]],
|
|
})
|
|
|
|
set_lines({
|
|
[[outer_func(inner_func(some, args)) -- Comment]],
|
|
})
|
|
set_curpos({ 1, 39 })
|
|
vim.cmd("normal dsf")
|
|
set_lines({
|
|
[[inner_func(some, args) -- Comment]],
|
|
})
|
|
end)
|
|
|
|
it("has intended behavior for single-character delimiter pairs", function()
|
|
require("nvim-surround").buffer_setup({
|
|
surrounds = {
|
|
["*"] = {
|
|
find = "%*.-%*",
|
|
delete = "^(.)().-(.)()$",
|
|
change = {
|
|
target = "^(.)().-(.)()$",
|
|
},
|
|
},
|
|
},
|
|
})
|
|
|
|
set_lines({ "*hello*world*" })
|
|
vim.cmd("normal ds*")
|
|
check_lines({ "helloworld*" })
|
|
|
|
set_lines({ "*hello*world*" })
|
|
set_curpos({ 1, 6 })
|
|
vim.cmd("normal ds*")
|
|
check_lines({ "helloworld*" })
|
|
|
|
set_lines({ "*hello*world*" })
|
|
set_curpos({ 1, 7 })
|
|
vim.cmd("normal ds*")
|
|
check_lines({ "*helloworld" })
|
|
|
|
set_lines({ "*hello*world*end" })
|
|
set_curpos({ 1, 15 })
|
|
vim.cmd("normal ds*")
|
|
check_lines({ "*helloworldend" })
|
|
end)
|
|
end)
|