diff --git a/runtime/optwin.vim b/runtime/optwin.vim index 41f9fc0373..ce4590f01b 100644 --- a/runtime/optwin.vim +++ b/runtime/optwin.vim @@ -1,7 +1,7 @@ " These commands create the option window. " " Maintainer: The Vim Project -" Last Change: 2025 Mar 27 +" Last Change: 2025 Mar 28 " Former Maintainer: Bram Moolenaar " If there already is an option window, jump to that one. @@ -736,7 +736,7 @@ if has("insert_expand") call OptionG("ph", &ph) call AddOption("pumwidth", gettext("minimum width of the popup menu")) call OptionG("pw", &pw) - call AddOption("pumaxmwidth", gettext("maximum width of the popup menu")) + call AddOption("pummaxwidth", gettext("maximum width of the popup menu")) call OptionG("pmw", &pmw) call AddOption("completefunc", gettext("user defined function for Insert mode completion")) call append("$", "\t" .. s:local_to_buffer) diff --git a/src/nvim/popupmenu.c b/src/nvim/popupmenu.c index 75f1c93ed7..4ce4f9632f 100644 --- a/src/nvim/popupmenu.c +++ b/src/nvim/popupmenu.c @@ -391,6 +391,8 @@ void pum_display(pumitem_T *array, int size, int selected, bool array_changed, i if (p_pmw > 0 && pum_width > p_pmw) { pum_width = (int)p_pmw; } + } else if (p_pmw > 0 && pum_width > p_pmw) { + pum_width = (int)p_pmw; } } } else if (max_col - min_col < def_width) { diff --git a/test/functional/ui/popupmenu_spec.lua b/test/functional/ui/popupmenu_spec.lua index 7469269a1b..d82c24bb83 100644 --- a/test/functional/ui/popupmenu_spec.lua +++ b/test/functional/ui/popupmenu_spec.lua @@ -5621,6 +5621,42 @@ describe('builtin popupmenu', function() ]]) end feed('3Gdd"zp') + + screen:try_resize(32, 10) + feed('GA') + if multigrid then + screen:expect({ + grid = [[ + ## grid 1 + [2:--------------------------------]|*9 + [3:--------------------------------]| + ## grid 2 + 123456789_123456789_123456789_a | + 123456789_123456789_123456789_b | + 123456789_123456789_| + 123456789_a^ | + {1:~ }|*5 + ## grid 3 + {2:-- }{5:match 1 of 2} | + ## grid 4 + {s: 12345...}| + {n: 12345...}| + ]], + float_pos = { [4] = { -1, 'NW', 2, 4, 11, false, 100 } }, + }) + else + screen:expect([[ + 123456789_123456789_123456789_a | + 123456789_123456789_123456789_b | + 123456789_123456789_| + 123456789_a^ | + {1:~ }{s: 12345...}{1: }| + {1:~ }{n: 12345...}{1: }| + {1:~ }|*3 + {2:-- }{5:match 1 of 2} | + ]]) + end + feed('3Gdd"zp') end) -- oldtest: Test_pum_maxwidth_multibyte() diff --git a/test/old/testdir/test_popup.vim b/test/old/testdir/test_popup.vim index 631a81d5cc..94e437ee93 100644 --- a/test/old/testdir/test_popup.vim +++ b/test/old/testdir/test_popup.vim @@ -2023,6 +2023,11 @@ func Test_pum_maxwidth() call VerifyScreenDump(buf, 'Test_pum_maxwidth_04', {'rows': 8}) call term_sendkeys(buf, "\3Gdd\"zp") + call term_sendkeys(buf, ":set lines=10 columns=32\") + call term_sendkeys(buf, "GA\") + call VerifyScreenDump(buf, 'Test_pum_maxwidth_09', {'rows': 10, 'cols': 32}) + call term_sendkeys(buf, "\3Gdd\"zp") + call StopVimInTerminal(buf) endfunc