mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
ext_cmdline: add tests
This commit is contained in:
parent
6e90bc7200
commit
26fd70bd18
@ -283,9 +283,7 @@ static uint8_t *command_line_enter(int firstc, long count, int indent)
|
||||
if (!cmd_silent) {
|
||||
s->i = msg_scrolled;
|
||||
msg_scrolled = 0; // avoid wait_return message
|
||||
if (!cmdline_external) {
|
||||
gotocmdline(true);
|
||||
}
|
||||
msg_scrolled += s->i;
|
||||
redrawcmdprompt(); // draw prompt or indent
|
||||
set_cmdspos();
|
||||
@ -808,7 +806,9 @@ static int command_line_execute(VimState *state, int key)
|
||||
}
|
||||
|
||||
if (!cmd_silent) {
|
||||
if (!cmdline_external) {
|
||||
ui_cursor_goto(msg_row, 0);
|
||||
}
|
||||
ui_flush();
|
||||
}
|
||||
return 0;
|
||||
@ -3210,6 +3210,9 @@ static void cursorcmd(void)
|
||||
|
||||
void gotocmdline(int clr)
|
||||
{
|
||||
if (cmdline_external) {
|
||||
return;
|
||||
}
|
||||
msg_start();
|
||||
if (cmdmsg_rl)
|
||||
msg_col = Columns - 1;
|
||||
|
128
test/functional/ui/cmdline_spec.lua
Normal file
128
test/functional/ui/cmdline_spec.lua
Normal file
@ -0,0 +1,128 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local Screen = require('test.functional.ui.screen')
|
||||
local clear, feed, execute, eq = helpers.clear, helpers.feed, helpers.execute, helpers.eq
|
||||
local funcs = helpers.funcs
|
||||
|
||||
if helpers.pending_win32(pending) then return end
|
||||
|
||||
describe('External command line completion', function()
|
||||
local screen
|
||||
local shown = false
|
||||
local firstc, prompt, content, pos
|
||||
|
||||
before_each(function()
|
||||
clear()
|
||||
screen = Screen.new(25, 5)
|
||||
screen:attach({rgb=true, cmdline_external=true})
|
||||
screen:set_on_event_handler(function(name, data)
|
||||
if name == "cmdline_enter" then
|
||||
shown = true
|
||||
elseif name == "cmdline_leave" then
|
||||
shown = false
|
||||
elseif name == "cmdline_firstc" then
|
||||
firstc = data[1]
|
||||
elseif name == "cmdline_prompt" then
|
||||
prompt = data[1]
|
||||
elseif name == "cmdline" then
|
||||
content, pos = unpack(data)
|
||||
elseif name == "cmdline_pos" then
|
||||
pos = data[1]
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
screen:detach()
|
||||
end)
|
||||
|
||||
describe("'cmdline'", function()
|
||||
it(':sign', function()
|
||||
feed(':')
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]], nil, nil, function()
|
||||
eq(true, shown)
|
||||
eq(':', firstc)
|
||||
end)
|
||||
|
||||
feed('sign')
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]], nil, nil, function()
|
||||
eq("sign", content)
|
||||
eq(4, pos)
|
||||
end)
|
||||
|
||||
feed('<Left>')
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]], nil, nil, function()
|
||||
eq("sign", content)
|
||||
eq(true, shown)
|
||||
eq(3, pos)
|
||||
end)
|
||||
|
||||
feed('<bs>')
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]], nil, nil, function()
|
||||
eq("sin", content)
|
||||
eq(true, shown)
|
||||
eq(2, pos)
|
||||
end)
|
||||
|
||||
feed('<Esc>')
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]], nil, nil, function()
|
||||
eq(false, shown)
|
||||
end)
|
||||
|
||||
feed(':call input("input", "default")<cr>')
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]], nil, nil, function()
|
||||
eq(true, shown)
|
||||
eq("input", prompt)
|
||||
eq("default", content)
|
||||
end)
|
||||
|
||||
feed('<cr>')
|
||||
feed(':<C-R>=1+2<cr>')
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
|
|
||||
]], nil, nil, function()
|
||||
eq("3", content)
|
||||
end)
|
||||
|
||||
end)
|
||||
end)
|
||||
end)
|
Loading…
Reference in New Issue
Block a user