diff --git a/runtime/lua/vim/_extui/messages.lua b/runtime/lua/vim/_extui/messages.lua index 498c37d019..ac34d1ab86 100644 --- a/runtime/lua/vim/_extui/messages.lua +++ b/runtime/lua/vim/_extui/messages.lua @@ -170,11 +170,10 @@ end --- Move message buffer to more window. local function msg_to_more(tar) - api.nvim_win_set_buf(ext.wins[ext.tab].more, ext.bufs[tar]) api.nvim_buf_delete(ext.bufs.more, { force = true }) api.nvim_buf_set_name(ext.bufs[tar], 'vim._extui.more') ext.bufs.more, ext.bufs[tar], M[tar].count = ext.bufs[tar], -1, 0 - ext.tab_check_wins() + ext.tab_check_wins() -- Create and setup new/moved buffer. M.set_pos('more') end diff --git a/runtime/lua/vim/_extui/shared.lua b/runtime/lua/vim/_extui/shared.lua index 31a4f2dd52..03c4cc42da 100644 --- a/runtime/lua/vim/_extui/shared.lua +++ b/runtime/lua/vim/_extui/shared.lua @@ -39,20 +39,16 @@ function M.tab_check_wins() end for _, type in ipairs({ 'box', 'cmd', 'more', 'prompt' }) do - if not api.nvim_buf_is_valid(M.bufs[type]) then + local setopt = not api.nvim_buf_is_valid(M.bufs[type]) + if setopt then M.bufs[type] = api.nvim_create_buf(false, true) - api.nvim_buf_set_name(M.bufs[type], 'vim._extui.' .. type) if type == 'cmd' then -- Attach highlighter to the cmdline buffer. local parser = assert(vim.treesitter.get_parser(M.bufs.cmd, 'vim', {})) M.cmd.highlighter = vim.treesitter.highlighter.new(parser) - elseif type == 'more' then - -- Close more window with `q`, same as `checkhealth` - api.nvim_buf_set_keymap(M.bufs.more, 'n', 'q', 'wincmd c', {}) end end - local setopt = false if not api.nvim_win_is_valid(M.wins[M.tab][type]) or not api.nvim_win_get_config(M.wins[M.tab][type]).zindex -- no longer floating @@ -81,6 +77,12 @@ function M.tab_check_wins() end if setopt then + api.nvim_buf_set_name(M.bufs[type], 'vim._extui.' .. type) + if type == 'more' then + -- Close more window with `q`, same as `checkhealth` + api.nvim_buf_set_keymap(M.bufs.more, 'n', 'q', 'wincmd c', {}) + end + -- Fire a FileType autocommand with window context to let the user reconfigure local options. api.nvim_win_call(M.wins[M.tab][type], function() api.nvim_set_option_value('wrap', true, { scope = 'local' })