aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-04-01 08:02:42 +0800
committerGitHub <noreply@github.com>2024-04-01 08:02:42 +0800
commitb8858dddbf7b7f1ee3033acfab3d6f54a0ed3114 (patch)
treec53eb61a7aad48c1f1cecbc0612ea239cb24a591
parent6b9a808d13b0d2857228a47511355fd6e12709ed (diff)
parentb61575ba70f8e9276d64a5ab312a9a56e833c2fe (diff)
downloadrneovim-b8858dddbf7b7f1ee3033acfab3d6f54a0ed3114.tar.gz
rneovim-b8858dddbf7b7f1ee3033acfab3d6f54a0ed3114.tar.bz2
rneovim-b8858dddbf7b7f1ee3033acfab3d6f54a0ed3114.zip
Merge pull request #28080 from echasnovski/intro-buf-change
fix(intro): link showing intro to state at start
-rw-r--r--src/nvim/drawscreen.c2
-rw-r--r--src/nvim/version.c8
-rw-r--r--test/functional/ui/messages_spec.lua72
3 files changed, 69 insertions, 13 deletions
diff --git a/src/nvim/drawscreen.c b/src/nvim/drawscreen.c
index 1fb42af786..a01cbe6223 100644
--- a/src/nvim/drawscreen.c
+++ b/src/nvim/drawscreen.c
@@ -424,7 +424,7 @@ int update_screen(void)
static bool still_may_intro = true;
if (still_may_intro) {
if (!may_show_intro()) {
- must_redraw = UPD_NOT_VALID;
+ redraw_later(firstwin, UPD_NOT_VALID);
still_may_intro = false;
}
}
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 14e2491d18..5443371ba7 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -2715,9 +2715,11 @@ void list_version(void)
/// Whether it still is not too late to show an intro message
bool may_show_intro(void)
{
- return (buf_is_empty(firstwin->w_buffer)
- && (firstwin->w_buffer->b_fname == NULL)
- && one_window(firstwin)
+ return (buf_is_empty(curbuf)
+ && (curbuf->b_fname == NULL)
+ && (curbuf->handle == 1)
+ && (curwin->handle == LOWEST_WIN_ID)
+ && one_window(curwin)
&& (vim_strchr(p_shm, SHM_INTRO) == NULL));
}
diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua
index fb02af46b5..fcfd94ff7c 100644
--- a/test/functional/ui/messages_spec.lua
+++ b/test/functional/ui/messages_spec.lua
@@ -1630,25 +1630,25 @@ describe('ui/ext_messages', function()
{1:~ }type :help iccf{5:<Enter>} for information {1: }|
{1:~ }|*5
]]
+ local showmode = { { '-- INSERT --', 3 } }
screen:expect(introscreen)
-- <c-l> (same as :mode) does _not_ clear intro message
feed('<c-l>i')
- screen:expect { grid = introscreen, showmode = { { '-- INSERT --', 3 } } }
+ screen:expect { grid = introscreen, showmode = showmode }
- -- opening a float also does not
- local win = api.nvim_open_win(api.nvim_create_buf(false, false), true, {
+ -- opening a float without focus also does not
+ local win = api.nvim_open_win(api.nvim_create_buf(false, false), false, {
relative = 'editor',
height = 1,
width = 5,
row = 1,
col = 5,
})
- feed('float<esc><c-l>')
screen:expect {
grid = [[
- |
- {1:~ }{8:floa^t}{1: }|
+ ^ |
+ {1:~ }{8: }{1: }|
{1:~ }|*3
{MATCH:.*}|
{1:~ }|
@@ -1666,18 +1666,20 @@ describe('ui/ext_messages', function()
{1:~ }type :help iccf{5:<Enter>} for information {1: }|
{1:~ }|*5
]],
+ showmode = showmode,
}
+
api.nvim_win_close(win, true)
- screen:expect { grid = introscreen }
+ screen:expect { grid = introscreen, showmode = showmode }
-- but editing text does..
- feed('ix')
+ feed('x')
screen:expect {
grid = [[
x^ |
{1:~ }|*23
]],
- showmode = { { '-- INSERT --', 3 } },
+ showmode = showmode,
}
feed('<esc>:intro<cr>')
@@ -1715,6 +1717,58 @@ describe('ui/ext_messages', function()
}
end)
+ it('clears intro screen when new buffer is active', function()
+ api.nvim_set_current_buf(api.nvim_create_buf(true, false))
+ screen:expect {
+ grid = [[
+ ^ |
+ {1:~ }|*23
+ ]],
+ }
+ end)
+
+ it('clears intro screen when new buffer is active in floating window', function()
+ local win_opts = { relative = 'editor', height = 1, width = 5, row = 1, col = 5 }
+ api.nvim_open_win(api.nvim_create_buf(false, false), true, win_opts)
+ screen:expect {
+ grid = [[
+ |
+ {1:~ }{8:^ }{1: }|
+ {1:~ }|*22
+ ]],
+ }
+ end)
+
+ it('clears intro screen when initial buffer is active in floating window', function()
+ local win_opts = { relative = 'editor', height = 1, width = 5, row = 1, col = 5 }
+ api.nvim_open_win(api.nvim_get_current_buf(), true, win_opts)
+ screen:expect {
+ grid = [[
+ |
+ {1:~ }{8:^ }{1: }|
+ {1:~ }|*22
+ ]],
+ }
+ end)
+
+ it('clears intro screen when initial window is converted to be floating', function()
+ exec_lua([[
+ local init_win_id = vim.api.nvim_get_current_win()
+ vim.cmd('split')
+ local win_opts = { relative = 'editor', height = 1, width = 5, row = 1, col = 5 }
+ vim.api.nvim_win_set_config(init_win_id, win_opts)
+ vim.api.nvim_set_current_win(init_win_id)
+ ]])
+ screen:expect {
+ grid = [[
+ |
+ {1:~ }{8:^ }{1: }|
+ {1:~ }|*21
+ {6:[No Name] }|
+ ]],
+ }
+ end)
+
it('supports global statusline', function()
feed(':set laststatus=3<cr>')
feed(':sp<cr>')