From 0174d8f3863067269f00c1e1be83b699372ca21e Mon Sep 17 00:00:00 2001 From: Mike Williams Date: Sun, 8 Jun 2025 15:41:52 +0200 Subject: [PATCH] patch 9.1.1437: MS-Windows: internal compile error in uc_list() Problem: MS-Windows: internal compile error in uc_list() with VS 17.14 (ibear) Solution: refactor code slightly (Mike Williams) fixes: #17402 closes: #17464 Signed-off-by: Mike Williams Signed-off-by: Christian Brabandt --- src/testdir/test_usercommands.vim | 19 +++++++++++++++++++ src/usercmd.c | 16 ++++++++++------ src/version.c | 2 ++ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/testdir/test_usercommands.vim b/src/testdir/test_usercommands.vim index deea5dfa34..d950308ee0 100644 --- a/src/testdir/test_usercommands.vim +++ b/src/testdir/test_usercommands.vim @@ -965,5 +965,24 @@ func Test_comclear_while_listing() call StopVimInTerminal(buf) endfunc +" Test for listing user commands. +func Test_command_list_0() + " Check space padding of attribute and name in command list + set vbs& + command! ShortCommand echo "ShortCommand" + command! VeryMuchLongerCommand echo "VeryMuchLongerCommand" + + redi @"> | com | redi END + pu + + let bl = matchbufline(bufnr('%'), "^ ShortCommand 0", 1, '$') + call assert_false(bl == []) + let bl = matchbufline(bufnr('%'), "^ VeryMuchLongerCommand 0", 1, '$') + call assert_false(bl == []) + + bwipe! + delcommand ShortCommand + delcommand VeryMuchLongerCommand +endfunc " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/usercmd.c b/src/usercmd.c index ded11e759b..9f1efb4b7e 100644 --- a/src/usercmd.c +++ b/src/usercmd.c @@ -600,17 +600,21 @@ uc_list(char_u *name, size_t name_len) msg_putchar('|'); --len; } - while (len-- > 0) - msg_putchar(' '); + if (len != 0) + msg_puts(&" "[4 - len]); msg_outtrans_attr(cmd->uc_name, HL_ATTR(HLF_D)); len = (int)cmd->uc_namelen + 4; - do + if (len < 21) { - msg_putchar(' '); - ++len; - } while (len < 22); + // Field padding spaces 12345678901234567 + static char spaces[18] = " "; + msg_puts(&spaces[len - 4]); + len = 21; + } + msg_putchar(' '); + ++len; // "over" is how much longer the name is than the column width for // the name, we'll try to align what comes after. diff --git a/src/version.c b/src/version.c index 31f1854d5a..3d83858bab 100644 --- a/src/version.c +++ b/src/version.c @@ -709,6 +709,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1437, /**/ 1436, /**/