diff --git a/src/nvim/mapping.c b/src/nvim/mapping.c index a758bd16bd..6fcade82e0 100644 --- a/src/nvim/mapping.c +++ b/src/nvim/mapping.c @@ -45,6 +45,7 @@ #include "nvim/search.h" #include "nvim/strings.h" #include "nvim/types.h" +#include "nvim/ui.h" #include "nvim/vim.h" /// List used for abbreviations. @@ -220,7 +221,8 @@ static void showmap(mapblock_T *mp, bool local) return; } - if (msg_didout || msg_silent != 0) { + // When ext_messages is active, msg_didout is never set. + if (msg_didout || msg_silent != 0 || ui_has(kUIMessages)) { msg_putchar('\n'); if (got_int) { // 'q' typed at MORE prompt return; diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua index 215e763fd1..a4f13aebc2 100644 --- a/test/functional/ui/messages_spec.lua +++ b/test/functional/ui/messages_spec.lua @@ -834,6 +834,19 @@ stack traceback: end} end) + it('supports multiline messages for :map', function() + command('mapclear') + command('nmap Y y$') + command('nmap Q @@') + command('nnoremap j k') + feed(':map') + + screen:expect{messages={{ + content = {{ "\nn Q @@\nn Y y$\nn j " }, { "*", 5 }, { " k" }}, + kind = '' + }}} + end) + it('wildmode=list', function() screen:try_resize(25, 7) screen:set_option('ext_popupmenu', false)