diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-04-18 08:33:08 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-18 08:33:08 +0800 |
commit | e1ca7a7bfc954fae6991fc86d5da1a4eda864903 (patch) | |
tree | 26998b867ed1fc2fb12a1e436ecd1fe3ea9dcb67 | |
parent | 562719033ec8bec9f6d56c166b9aef13f8a50a96 (diff) | |
download | rneovim-e1ca7a7bfc954fae6991fc86d5da1a4eda864903.tar.gz rneovim-e1ca7a7bfc954fae6991fc86d5da1a4eda864903.tar.bz2 rneovim-e1ca7a7bfc954fae6991fc86d5da1a4eda864903.zip |
test: 'showcmd' with ext_messages and Visual selection (#28393)
Also slightly reorder some code to make comments look less out-of-place.
-rw-r--r-- | src/nvim/getchar.c | 18 | ||||
-rw-r--r-- | src/nvim/normal.c | 10 | ||||
-rw-r--r-- | test/functional/ui/messages_spec.lua | 13 |
3 files changed, 26 insertions, 15 deletions
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index bb50ba31a9..8d570b4b2d 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -64,6 +64,15 @@ #include "nvim/undo.h" #include "nvim/vim_defs.h" +typedef struct { + int prev_c; + uint8_t buf[MB_MAXBYTES * 3 + 4]; + size_t buflen; + unsigned pending; + bool in_special; + bool in_mbyte; +} gotchars_state_T; + /// Index in scriptin static int curscript = -1; /// Streams to read script from @@ -84,15 +93,6 @@ static FileDescriptor scriptin[NSCRIPT] = { 0 }; #define MINIMAL_SIZE 20 // minimal size for b_str -typedef struct { - int prev_c; - uint8_t buf[MB_MAXBYTES * 3 + 4]; - size_t buflen; - unsigned pending; - bool in_special; - bool in_mbyte; -} gotchars_state_T; - static buffheader_T redobuff = { { NULL, { NUL } }, NULL, 0, 0 }; static buffheader_T old_redobuff = { { NULL, { NUL } }, NULL, 0, 0 }; static buffheader_T recordbuff = { { NULL, { NUL } }, NULL, 0, 0 }; diff --git a/src/nvim/normal.c b/src/nvim/normal.c index 22b1c8dffa..d90e23240c 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -893,8 +893,8 @@ static bool normal_get_command_count(NormalState *s) // Handle a count before a command and compute ca.count0. // Note that '0' is a command and not the start of a count, but it's // part of a count after other digits. - while ((s->c >= '1' && s->c <= '9') || (s->ca.count0 != 0 - && (s->c == K_DEL || s->c == K_KDEL || s->c == '0'))) { + while ((s->c >= '1' && s->c <= '9') + || (s->ca.count0 != 0 && (s->c == K_DEL || s->c == K_KDEL || s->c == '0'))) { if (s->c == K_DEL || s->c == K_KDEL) { s->ca.count0 /= 10; del_from_showcmd(4); // delete the digit and ~@% @@ -2065,9 +2065,6 @@ static void display_showcmd(void) return; } // 'showcmdloc' is "last" or empty - if (p_ch == 0 && !ui_has(kUIMessages)) { - return; - } if (ui_has(kUIMessages)) { MAXSIZE_TEMP_ARRAY(content, 1); @@ -2081,6 +2078,9 @@ static void display_showcmd(void) ui_call_msg_showcmd(content); return; } + if (p_ch == 0) { + return; + } msg_grid_validate(); int showcmd_row = Rows - 1; diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua index e4daf3b546..9fa700c104 100644 --- a/test/functional/ui/messages_spec.lua +++ b/test/functional/ui/messages_spec.lua @@ -685,7 +685,18 @@ describe('ui/ext_messages', function() ]], ruler = { { '2,1 All' } }, } - feed('d') + feed('<c-v>k2l') + screen:expect({ + grid = [[ + {17:ab}^cde | + {17:123}45 | + {1:~ }|*3 + ]], + showmode = { { '-- VISUAL BLOCK --', 5 } }, + showcmd = { { '2x3' } }, + ruler = { { '1,3 All' } }, + }) + feed('o<esc>d') screen:expect { grid = [[ abcde | |