From a62e55d407f75882a2151e552c8bd261987d174b Mon Sep 17 00:00:00 2001 From: Luuk van Baal Date: Sun, 11 May 2025 09:56:38 +0200 Subject: [PATCH] feat(extui): show "g<" hint when message spills 'cmdheight' Problem: Extui shows a spill indicator to hint to the user to press "g<" to show the output of the last command. The user may be unaware of this mapping. Solution: Route a hint message to the message "box" window. --- runtime/lua/vim/_extui/messages.lua | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/runtime/lua/vim/_extui/messages.lua b/runtime/lua/vim/_extui/messages.lua index 44a0400975..a9a42b5bc0 100644 --- a/runtime/lua/vim/_extui/messages.lua +++ b/runtime/lua/vim/_extui/messages.lua @@ -265,13 +265,16 @@ function M.show_msg(tar, content, replace_last, more) ext.cmd.cmdline_show({}, 0, ':', '', ext.cmd.indent, 0, 0) api.nvim__redraw({ flush = true, cursor = true, win = ext.wins[ext.tab].cmd }) else - -- Place [+x] indicator for lines that spill over 'cmdheight'. - local h = api.nvim_win_text_height(ext.wins[ext.tab].cmd, {}) - M.cmd.lines, M.cmd.msg_row = h.all, h.end_row - local spill = M.cmd.lines > ext.cmdheight and ('[+%d]'):format(M.cmd.lines - ext.cmdheight) - M.virt.msg[M.virt.idx.spill][1] = spill and { 0, spill } or nil api.nvim_win_set_cursor(ext.wins[ext.tab][tar], { 1, 0 }) ext.cmd.highlighter.active[ext.bufs.cmd] = nil + -- Show hint in box and place [+x] indicator for lines that spill over 'cmdheight'. + local h = api.nvim_win_text_height(ext.wins[ext.tab].cmd, {}) + M.cmd.lines, M.cmd.msg_row = h.all, h.end_row + local spill = M.cmd.lines - ext.cmdheight + M.virt.msg[M.virt.idx.spill][1] = spill > 0 and { 0, ('[+%d]'):format(spill) } or nil + if spill > 0 then + M.msg_show('verbose', { { 0, ('Press g< to see %d more lines'):format(spill), 0 } }) + end end end