test: 'showcmd' with ext_messages and Visual selection (#28393)

Also slightly reorder some code to make comments look less out-of-place.
This commit is contained in:
zeertzjq 2024-04-18 08:33:08 +08:00 committed by GitHub
parent 562719033e
commit e1ca7a7bfc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 26 additions and 15 deletions

View File

@ -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 };

View File

@ -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;

View File

@ -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 |