mirror of
https://github.com/neovim/neovim.git
synced 2025-01-01 17:23:36 -07:00
[RDY] Fix wildmode=list,full and display+=msgsep interaction (#10103)
* Fix wildmode=list and display+=msgsep interaction * Add test to check ext_messages behaviour is unchanged
This commit is contained in:
parent
cbe45a303e
commit
b65a7b7f66
@ -2053,7 +2053,7 @@ int msg_scrollsize(void)
|
|||||||
/*
|
/*
|
||||||
* Scroll the screen up one line for displaying the next message line.
|
* Scroll the screen up one line for displaying the next message line.
|
||||||
*/
|
*/
|
||||||
static void msg_scroll_up(void)
|
void msg_scroll_up(void)
|
||||||
{
|
{
|
||||||
if (!msg_did_scroll) {
|
if (!msg_did_scroll) {
|
||||||
ui_call_win_scroll_over_start();
|
ui_call_win_scroll_over_start();
|
||||||
|
@ -4765,12 +4765,12 @@ win_redr_status_matches (
|
|||||||
|
|
||||||
row = cmdline_row - 1;
|
row = cmdline_row - 1;
|
||||||
if (row >= 0) {
|
if (row >= 0) {
|
||||||
if (wild_menu_showing == 0) {
|
if (wild_menu_showing == 0 || wild_menu_showing == WM_LIST) {
|
||||||
if (msg_scrolled > 0) {
|
if (msg_scrolled > 0) {
|
||||||
/* Put the wildmenu just above the command line. If there is
|
/* Put the wildmenu just above the command line. If there is
|
||||||
* no room, scroll the screen one line up. */
|
* no room, scroll the screen one line up. */
|
||||||
if (cmdline_row == Rows - 1) {
|
if (cmdline_row == Rows - 1) {
|
||||||
grid_del_lines(&default_grid, 0, 1, (int)Rows, 0, (int)Columns);
|
msg_scroll_up();
|
||||||
msg_scrolled++;
|
msg_scrolled++;
|
||||||
} else {
|
} else {
|
||||||
cmdline_row++;
|
cmdline_row++;
|
||||||
|
@ -681,6 +681,43 @@ describe('ui/ext_messages', function()
|
|||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
describe('ui/ext_messages', function()
|
||||||
|
local screen
|
||||||
|
before_each(function()
|
||||||
|
clear()
|
||||||
|
screen = Screen.new(25, 7)
|
||||||
|
screen:attach({rgb=true, ext_messages=true})
|
||||||
|
screen:set_default_attr_ids({
|
||||||
|
[1] = {bold = true, foreground = Screen.colors.Blue1},
|
||||||
|
[2] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
|
||||||
|
[3] = {bold = true, reverse = true},
|
||||||
|
[4] = {bold = true, foreground = Screen.colors.SeaGreen4},
|
||||||
|
})
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('wildmode=list', function()
|
||||||
|
command('set wildmenu wildmode=list')
|
||||||
|
feed(':set wildm<tab>')
|
||||||
|
screen:expect{grid=[[
|
||||||
|
^ |
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
{1:~ }|
|
||||||
|
]], messages={{
|
||||||
|
content = {{'wildmenu wildmode'}},
|
||||||
|
kind = '',
|
||||||
|
}},
|
||||||
|
cmdline={{
|
||||||
|
firstc = ':',
|
||||||
|
content = {{ 'set wildm' }},
|
||||||
|
pos = 9,
|
||||||
|
}}}
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
describe('ui/builtin messages', function()
|
describe('ui/builtin messages', function()
|
||||||
local screen
|
local screen
|
||||||
before_each(function()
|
before_each(function()
|
||||||
|
@ -169,6 +169,91 @@ describe("'wildmenu'", function()
|
|||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
describe("'wildmenu'", function()
|
||||||
|
local screen
|
||||||
|
before_each(function()
|
||||||
|
clear()
|
||||||
|
-- screen needs to be more than 5 rows
|
||||||
|
-- otherwise the tabline is covered and will be redrawn
|
||||||
|
screen = Screen.new(25, 7)
|
||||||
|
screen:attach()
|
||||||
|
end)
|
||||||
|
after_each(function()
|
||||||
|
screen:detach()
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('wildmode=list,full and display+=msgsep interact correctly #10092', function()
|
||||||
|
command('set display+=msgsep')
|
||||||
|
command('set wildmenu wildmode=list,full')
|
||||||
|
command('set showtabline=2')
|
||||||
|
feed(':set wildm<tab>')
|
||||||
|
screen:expect([[
|
||||||
|
[No Name] |
|
||||||
|
|
|
||||||
|
~ |
|
||||||
|
|
|
||||||
|
:set wildm |
|
||||||
|
wildmenu wildmode |
|
||||||
|
:set wildm^ |
|
||||||
|
]])
|
||||||
|
feed('<tab>') -- trigger wildmode full
|
||||||
|
screen:expect([[
|
||||||
|
[No Name] |
|
||||||
|
|
|
||||||
|
|
|
||||||
|
:set wildm |
|
||||||
|
wildmenu wildmode |
|
||||||
|
wildmenu wildmode |
|
||||||
|
:set wildmenu^ |
|
||||||
|
]])
|
||||||
|
feed('<Esc>')
|
||||||
|
screen:expect([[
|
||||||
|
[No Name] |
|
||||||
|
^ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
|
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('wildmode=list,full and display-=msgsep interact correctly', function()
|
||||||
|
command('set display-=msgsep')
|
||||||
|
command('set wildmenu wildmode=list,full')
|
||||||
|
feed(':set wildm<tab>')
|
||||||
|
screen:expect([[
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
:set wildm |
|
||||||
|
wildmenu wildmode |
|
||||||
|
:set wildm^ |
|
||||||
|
]])
|
||||||
|
feed('<tab>') -- trigger wildmode full
|
||||||
|
screen:expect([[
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
:set wildm |
|
||||||
|
wildmenu wildmode |
|
||||||
|
wildmenu wildmode |
|
||||||
|
:set wildmenu^ |
|
||||||
|
]])
|
||||||
|
feed('<Esc>')
|
||||||
|
screen:expect([[
|
||||||
|
^ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
~ |
|
||||||
|
|
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
describe('command line completion', function()
|
describe('command line completion', function()
|
||||||
local screen
|
local screen
|
||||||
before_each(function()
|
before_each(function()
|
||||||
|
Loading…
Reference in New Issue
Block a user