0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.0.0516: a large count on a normal command causes trouble

Problem:    A large count on a normal command causes trouble. (Dominique
            Pelle)
Solution:   Make "opcount" long.
This commit is contained in:
Bram Moolenaar
2017-03-29 13:08:35 +02:00
parent d5d37537d1
commit b1e04fca37
3 changed files with 30 additions and 20 deletions

View File

@@ -932,10 +932,10 @@ EXTERN int State INIT(= NORMAL); /* This is the current state of the
* command interpreter. */ * command interpreter. */
EXTERN int finish_op INIT(= FALSE);/* TRUE while an operator is pending */ EXTERN int finish_op INIT(= FALSE);/* TRUE while an operator is pending */
EXTERN int opcount INIT(= 0); /* count for pending operator */ EXTERN long opcount INIT(= 0); /* count for pending operator */
/* /*
* ex mode (Q) state * Ex mode (Q) state
*/ */
EXTERN int exmode_active INIT(= 0); /* zero, EXMODE_NORMAL or EXMODE_VIM */ EXTERN int exmode_active INIT(= 0); /* zero, EXMODE_NORMAL or EXMODE_VIM */
EXTERN int ex_no_reprint INIT(= FALSE); /* no need to print after z or p */ EXTERN int ex_no_reprint INIT(= FALSE); /* no need to print after z or p */

View File

@@ -2259,26 +2259,34 @@ func! Test_normal53_digraph()
bw! bw!
endfunc endfunc
func! Test_normal54_Ctrl_bsl() func Test_normal54_Ctrl_bsl()
new new
call setline(1, 'abcdefghijklmn') call setline(1, 'abcdefghijklmn')
exe "norm! df\<c-\>\<c-n>" exe "norm! df\<c-\>\<c-n>"
call assert_equal(['abcdefghijklmn'], getline(1,'$')) call assert_equal(['abcdefghijklmn'], getline(1,'$'))
exe "norm! df\<c-\>\<c-g>" exe "norm! df\<c-\>\<c-g>"
call assert_equal(['abcdefghijklmn'], getline(1,'$')) call assert_equal(['abcdefghijklmn'], getline(1,'$'))
exe "norm! df\<c-\>m" exe "norm! df\<c-\>m"
call assert_equal(['abcdefghijklmn'], getline(1,'$')) call assert_equal(['abcdefghijklmn'], getline(1,'$'))
if !has("multi_byte") if !has("multi_byte")
return return
endif endif
call setline(2, 'abcdefghijklmnāf') call setline(2, 'abcdefghijklmnāf')
norm! 2gg0 norm! 2gg0
exe "norm! df\<Char-0x101>" exe "norm! df\<Char-0x101>"
call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$')) call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$'))
norm! 1gg0 norm! 1gg0
exe "norm! df\<esc>" exe "norm! df\<esc>"
call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$')) call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$'))
" clean up " clean up
bw! bw!
endfunc
func Test_normal_large_count()
" This may fail with 32bit long, how do we detect that?
new
normal o
normal 6666666666dL
bwipe!
endfunc endfunc

View File

@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
516,
/**/ /**/
515, 515,
/**/ /**/