mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
add cmdline mode to modechange of RPC and tests
use set_cursor_shape_bar for cmdline mode fix test of screen_basic_spec.lua & screen.lua comment fix
This commit is contained in:
parent
ecd7beb6e4
commit
3cf4b14e96
@ -390,8 +390,9 @@ of update.
|
||||
The menu mappings changed.
|
||||
|
||||
["mode_change", mode]
|
||||
The mode changed. Currently sent when "insert", "replace" and "normal"
|
||||
modes are entered. A client could for instance change the cursor shape.
|
||||
The mode changed. Currently sent when "insert", "replace", "cmdline" and
|
||||
"normal" modes are entered. A client could for instance change the cursor
|
||||
shape.
|
||||
|
||||
["popupmenu_show", items, selected, row, col]
|
||||
When `popupmenu_external` is set to true, nvim will not draw the
|
||||
|
@ -271,6 +271,8 @@ static void remote_ui_mode_change(UI *ui, int mode)
|
||||
ADD(args, STRING_OBJ(cstr_to_string("insert")));
|
||||
} else if (mode == REPLACE) {
|
||||
ADD(args, STRING_OBJ(cstr_to_string("replace")));
|
||||
} else if (mode == CMDLINE) {
|
||||
ADD(args, STRING_OBJ(cstr_to_string("cmdline")));
|
||||
} else {
|
||||
assert(mode == NORMAL);
|
||||
ADD(args, STRING_OBJ(cstr_to_string("normal")));
|
||||
|
@ -461,6 +461,10 @@ static void tui_mode_change(UI *ui, int mode)
|
||||
if (data->showing_mode != INSERT) {
|
||||
unibi_out(ui, data->unibi_ext.set_cursor_shape_bar);
|
||||
}
|
||||
} else if (mode == CMDLINE) {
|
||||
if (data->showing_mode != CMDLINE) {
|
||||
unibi_out(ui, data->unibi_ext.set_cursor_shape_bar);
|
||||
}
|
||||
} else if (mode == REPLACE) {
|
||||
if (data->showing_mode != REPLACE) {
|
||||
unibi_out(ui, data->unibi_ext.set_cursor_shape_ul);
|
||||
|
@ -532,13 +532,16 @@ static void ui_mode_change(void)
|
||||
if (!full_screen) {
|
||||
return;
|
||||
}
|
||||
/* Get a simple UI mode out of State. */
|
||||
if ((State & REPLACE) == REPLACE)
|
||||
// Get a simple UI mode out of State.
|
||||
if ((State & REPLACE) == REPLACE) {
|
||||
mode = REPLACE;
|
||||
else if (State & INSERT)
|
||||
} else if (State & INSERT) {
|
||||
mode = INSERT;
|
||||
else
|
||||
} else if (State & CMDLINE) {
|
||||
mode = CMDLINE;
|
||||
} else {
|
||||
mode = NORMAL;
|
||||
}
|
||||
UI_CALL(mode_change, mode);
|
||||
conceal_check_cursur_line();
|
||||
}
|
||||
|
@ -374,7 +374,8 @@ function Screen:_handle_mouse_off()
|
||||
end
|
||||
|
||||
function Screen:_handle_mode_change(mode)
|
||||
assert(mode == 'insert' or mode == 'replace' or mode == 'normal')
|
||||
assert(mode == 'insert' or mode == 'replace'
|
||||
or mode == 'normal' or mode == 'cmdline')
|
||||
self.mode = mode
|
||||
end
|
||||
|
||||
|
@ -642,5 +642,52 @@ describe('Screen', function()
|
||||
eq("normal", screen.mode)
|
||||
end)
|
||||
end)
|
||||
|
||||
it('works in cmdline mode', function()
|
||||
feed(':')
|
||||
screen:expect([[
|
||||
|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
:^ |
|
||||
]],nil,nil,function ()
|
||||
eq("cmdline", screen.mode)
|
||||
end)
|
||||
|
||||
feed('<esc>/')
|
||||
screen:expect([[
|
||||
|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
/^ |
|
||||
]],nil,nil,function ()
|
||||
eq("cmdline", screen.mode)
|
||||
end)
|
||||
|
||||
|
||||
feed('<esc>?')
|
||||
screen:expect([[
|
||||
|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
?^ |
|
||||
]],nil,nil,function ()
|
||||
eq("cmdline", screen.mode)
|
||||
end)
|
||||
|
||||
feed('<esc>')
|
||||
screen:expect([[
|
||||
^ |
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
|
|
||||
]],nil,nil,function ()
|
||||
eq("normal", screen.mode)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user