vim-patch:8.2.3903: "gM" does not count tabs as expected (#16796)

This commit is contained in:
zeertzjq 2022-01-28 06:26:24 +08:00 committed by GitHub
parent c5ac04331b
commit 9779f5c84c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 3 deletions

View File

@ -6329,11 +6329,9 @@ static void nv_g_cmd(cmdarg_T *cap)
break; break;
case 'M': { case 'M': {
const char_u *const ptr = get_cursor_line_ptr();
oap->motion_type = kMTCharWise; oap->motion_type = kMTCharWise;
oap->inclusive = false; oap->inclusive = false;
i = (int)mb_string2cells_len(ptr, STRLEN(ptr)); i = linetabsize(get_cursor_line_ptr());
if (cap->count0 > 0 && cap->count0 <= 100) { if (cap->count0 > 0 && cap->count0 <= 100) {
coladvance((colnr_T)(i * cap->count0 / 100)); coladvance((colnr_T)(i * cap->count0 / 100));
} else { } else {

View File

@ -1812,7 +1812,15 @@ fun! Test_normal33_g_cmd2()
call assert_equal(87, col('.')) call assert_equal(87, col('.'))
call assert_equal('E', getreg(0)) call assert_equal('E', getreg(0))
" Test for gM with Tab characters
call setline('.', "\ta\tb\tc\td\te\tf")
norm! gMyl
call assert_equal(6, col('.'))
call assert_equal("c", getreg(0))
" Test for g Ctrl-G " Test for g Ctrl-G
call setline('.', lineC)
norm! 60gMyl
set ff=unix set ff=unix
let a=execute(":norm! g\<c-g>") let a=execute(":norm! g\<c-g>")
call assert_match('Col 87 of 144; Line 2 of 2; Word 1 of 1; Byte 88 of 146', a) call assert_match('Col 87 of 144; Line 2 of 2; Word 1 of 1; Byte 88 of 146', a)