0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -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. */
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 ex_no_reprint INIT(= FALSE); /* no need to print after z or p */

View File

@@ -2259,26 +2259,34 @@ func! Test_normal53_digraph()
bw!
endfunc
func! Test_normal54_Ctrl_bsl()
new
call setline(1, 'abcdefghijklmn')
exe "norm! df\<c-\>\<c-n>"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
exe "norm! df\<c-\>\<c-g>"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
exe "norm! df\<c-\>m"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
func Test_normal54_Ctrl_bsl()
new
call setline(1, 'abcdefghijklmn')
exe "norm! df\<c-\>\<c-n>"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
exe "norm! df\<c-\>\<c-g>"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
exe "norm! df\<c-\>m"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
if !has("multi_byte")
return
endif
call setline(2, 'abcdefghijklmnāf')
norm! 2gg0
exe "norm! df\<Char-0x101>"
call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$'))
norm! 1gg0
exe "norm! df\<esc>"
call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$'))
call setline(2, 'abcdefghijklmnāf')
norm! 2gg0
exe "norm! df\<Char-0x101>"
call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$'))
norm! 1gg0
exe "norm! df\<esc>"
call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$'))
" clean up
bw!
" clean up
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

View File

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