2024-04-09 04:26:16 -07:00
|
|
|
local t = require('test.functional.testutil')()
|
2022-01-07 11:39:44 -07:00
|
|
|
|
2024-04-08 02:03:20 -07:00
|
|
|
local clear = t.clear
|
|
|
|
local eq = t.eq
|
|
|
|
local exec = t.exec
|
|
|
|
local exec_capture = t.exec_capture
|
|
|
|
local write_file = t.write_file
|
|
|
|
local call_viml_function = t.api.nvim_call_function
|
2022-01-07 11:39:44 -07:00
|
|
|
|
2023-03-11 06:09:11 -07:00
|
|
|
local function last_set_tests(cmd)
|
2022-01-07 11:39:44 -07:00
|
|
|
local script_location, script_file
|
|
|
|
-- All test cases below use the same nvim instance.
|
|
|
|
setup(function()
|
|
|
|
clear { args = { '-V1' } }
|
|
|
|
script_file = 'test_verbose.lua'
|
|
|
|
local current_dir = call_viml_function('getcwd', {})
|
|
|
|
current_dir = call_viml_function('fnamemodify', { current_dir, ':~' })
|
2024-04-08 02:03:20 -07:00
|
|
|
script_location = table.concat { current_dir, t.get_pathsep(), script_file }
|
2022-01-07 11:39:44 -07:00
|
|
|
|
|
|
|
write_file(
|
|
|
|
script_file,
|
|
|
|
[[
|
2022-12-19 09:37:45 -07:00
|
|
|
vim.api.nvim_set_option_value('hlsearch', false, {})
|
2022-01-07 11:39:44 -07:00
|
|
|
vim.bo.expandtab = true
|
|
|
|
vim.opt.number = true
|
|
|
|
vim.api.nvim_set_keymap('n', '<leader>key1', ':echo "test"<cr>', {noremap = true})
|
|
|
|
vim.keymap.set('n', '<leader>key2', ':echo "test"<cr>')
|
|
|
|
|
2023-03-25 09:58:48 -07:00
|
|
|
vim.api.nvim_exec2("augroup test_group\
|
2022-01-07 11:39:44 -07:00
|
|
|
autocmd!\
|
|
|
|
autocmd FileType c setl cindent\
|
|
|
|
augroup END\
|
2023-03-25 19:49:32 -07:00
|
|
|
", {})
|
2022-01-07 11:39:44 -07:00
|
|
|
|
2024-03-31 05:21:47 -07:00
|
|
|
vim.api.nvim_create_autocmd('FileType', {
|
|
|
|
group = 'test_group',
|
|
|
|
pattern = 'cpp',
|
|
|
|
command = 'setl cindent',
|
|
|
|
})
|
|
|
|
|
|
|
|
vim.api.nvim_exec2(':highlight TestHL1 guibg=Blue', {})
|
|
|
|
vim.api.nvim_set_hl(0, 'TestHL2', { bg = 'Green' })
|
|
|
|
|
2022-01-07 11:39:44 -07:00
|
|
|
vim.api.nvim_command("command Bdelete :bd")
|
2022-04-10 18:12:41 -07:00
|
|
|
vim.api.nvim_create_user_command("TestCommand", ":echo 'Hello'", {})
|
2022-01-07 11:39:44 -07:00
|
|
|
|
2024-03-31 05:21:47 -07:00
|
|
|
vim.api.nvim_exec2 ("\
|
2022-01-07 11:39:44 -07:00
|
|
|
function Close_Window() abort\
|
|
|
|
wincmd -\
|
|
|
|
endfunction\
|
2024-03-31 05:21:47 -07:00
|
|
|
", {})
|
2022-02-16 23:53:17 -07:00
|
|
|
|
2024-03-31 05:21:47 -07:00
|
|
|
local ret = vim.api.nvim_exec2 ("\
|
2022-02-16 23:53:17 -07:00
|
|
|
function! s:return80()\
|
|
|
|
return 80\
|
|
|
|
endfunction\
|
|
|
|
let &tw = s:return80()\
|
2024-03-31 05:21:47 -07:00
|
|
|
", {})
|
2022-01-07 11:39:44 -07:00
|
|
|
]]
|
|
|
|
)
|
2023-03-11 06:09:11 -07:00
|
|
|
exec(cmd .. ' ' .. script_file)
|
2022-01-07 11:39:44 -07:00
|
|
|
end)
|
|
|
|
|
|
|
|
teardown(function()
|
|
|
|
os.remove(script_file)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it('"Last set" for option set by Lua', function()
|
|
|
|
local result = exec_capture(':verbose set hlsearch?')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
nohlsearch
|
|
|
|
Last set from %s line 1]],
|
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it('"Last set" for option set by vim.o', function()
|
|
|
|
local result = exec_capture(':verbose set expandtab?')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
expandtab
|
|
|
|
Last set from %s line 2]],
|
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it('"Last set" for option set by vim.opt', function()
|
|
|
|
local result = exec_capture(':verbose set number?')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
number
|
|
|
|
Last set from %s line 3]],
|
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
|
2022-10-23 01:17:45 -07:00
|
|
|
it('"Last set" for mapping set by Lua', function()
|
2022-01-07 11:39:44 -07:00
|
|
|
local result = exec_capture(':verbose map <leader>key1')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
|
|
|
|
n \key1 * :echo "test"<CR>
|
|
|
|
Last set from %s line 4]],
|
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
|
2024-03-31 05:21:47 -07:00
|
|
|
it('"Last set" for mapping set by vim.keymap.set', function()
|
2022-01-07 11:39:44 -07:00
|
|
|
local result = exec_capture(':verbose map <leader>key2')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
|
|
|
|
n \key2 * :echo "test"<CR>
|
|
|
|
Last set from %s line 5]],
|
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
|
2024-03-31 05:21:47 -07:00
|
|
|
it('"Last set" for autocmd set by nvim_exec2', function()
|
2022-01-07 11:39:44 -07:00
|
|
|
local result = exec_capture(':verbose autocmd test_group Filetype c')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
--- Autocommands ---
|
|
|
|
test_group FileType
|
|
|
|
c setl cindent
|
|
|
|
Last set from %s line 7]],
|
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
|
2024-03-31 05:21:47 -07:00
|
|
|
it('"Last set" for autocmd set by nvim_create_autocmd', function()
|
|
|
|
local result = exec_capture(':verbose autocmd test_group Filetype cpp')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
--- Autocommands ---
|
|
|
|
test_group FileType
|
|
|
|
cpp setl cindent
|
|
|
|
Last set from %s line 13]],
|
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it('"Last set" for highlight group set by nvim_exec2', function()
|
|
|
|
local result = exec_capture(':verbose highlight TestHL1')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
TestHL1 xxx guibg=Blue
|
|
|
|
Last set from %s line 19]],
|
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it('"Last set" for highlight group set by nvim_set_hl', function()
|
|
|
|
local result = exec_capture(':verbose highlight TestHL2')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
TestHL2 xxx guibg=Green
|
|
|
|
Last set from %s line 20]],
|
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
|
2022-01-07 11:39:44 -07:00
|
|
|
it('"Last set" for command defined by nvim_command', function()
|
2023-03-11 06:09:11 -07:00
|
|
|
if cmd == 'luafile' then
|
|
|
|
pending('nvim_command does not set the script context')
|
|
|
|
end
|
2022-01-07 11:39:44 -07:00
|
|
|
local result = exec_capture(':verbose command Bdelete')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
Name Args Address Complete Definition
|
|
|
|
Bdelete 0 :bd
|
2024-03-31 05:21:47 -07:00
|
|
|
Last set from %s line 22]],
|
2022-01-07 11:39:44 -07:00
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
|
2022-04-10 18:12:41 -07:00
|
|
|
it('"Last set" for command defined by nvim_create_user_command', function()
|
2022-01-07 11:39:44 -07:00
|
|
|
local result = exec_capture(':verbose command TestCommand')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
Name Args Address Complete Definition
|
|
|
|
TestCommand 0 :echo 'Hello'
|
2024-03-31 05:21:47 -07:00
|
|
|
Last set from %s line 23]],
|
2022-01-07 11:39:44 -07:00
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
|
2023-03-11 06:09:11 -07:00
|
|
|
it('"Last set" for function', function()
|
2022-01-07 11:39:44 -07:00
|
|
|
local result = exec_capture(':verbose function Close_Window')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
function Close_Window() abort
|
2024-03-31 05:21:47 -07:00
|
|
|
Last set from %s line 25
|
2022-01-07 11:39:44 -07:00
|
|
|
1 wincmd -
|
|
|
|
endfunction]],
|
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
2022-02-16 23:53:17 -07:00
|
|
|
|
|
|
|
it('"Last set" works with anonymous sid', function()
|
|
|
|
local result = exec_capture(':verbose set tw?')
|
|
|
|
eq(
|
|
|
|
string.format(
|
|
|
|
[[
|
|
|
|
textwidth=80
|
2024-03-31 05:21:47 -07:00
|
|
|
Last set from %s line 31]],
|
2022-02-16 23:53:17 -07:00
|
|
|
script_location
|
|
|
|
),
|
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
2023-03-11 06:09:11 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
describe('lua :verbose when using :source', function()
|
|
|
|
last_set_tests('source')
|
|
|
|
end)
|
|
|
|
|
|
|
|
describe('lua :verbose when using :luafile', function()
|
|
|
|
last_set_tests('luafile')
|
2022-01-07 11:39:44 -07:00
|
|
|
end)
|
|
|
|
|
|
|
|
describe('lua verbose:', function()
|
|
|
|
local script_file
|
|
|
|
|
|
|
|
setup(function()
|
|
|
|
clear()
|
|
|
|
script_file = 'test_luafile.lua'
|
|
|
|
write_file(
|
|
|
|
script_file,
|
|
|
|
[[
|
2022-12-19 09:37:45 -07:00
|
|
|
vim.api.nvim_set_option_value('hlsearch', false, {})
|
2022-01-07 11:39:44 -07:00
|
|
|
]]
|
|
|
|
)
|
|
|
|
exec(':source ' .. script_file)
|
|
|
|
end)
|
|
|
|
|
|
|
|
teardown(function()
|
|
|
|
os.remove(script_file)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it('is disabled when verbose = 0', function()
|
|
|
|
local result = exec_capture(':verbose set hlsearch?')
|
|
|
|
eq(
|
|
|
|
[[
|
|
|
|
nohlsearch
|
2024-03-29 16:57:22 -07:00
|
|
|
Last set from Lua (run Nvim with -V1 for more details)]],
|
2022-01-07 11:39:44 -07:00
|
|
|
result
|
|
|
|
)
|
|
|
|
end)
|
|
|
|
end)
|