vim-patch:9.1.0537: signed number detection for CTRL-X/A can be improved (#29590)

Problem:  signed number detection for CTRL-X/A can be improved
          (Chris Patuzzo)
Solution: Add the new "blank" value for the 'nrformat' setting. This
          will make Vim assume a signed number only if there is a blank
          in front of the sign.
          (distobs)

fixes: vim/vim#15033
closes: vim/vim#15110

25ac6d67d9

Co-authored-by: distobs <cuppotatocake@gmail.com>
This commit is contained in:
zeertzjq
2024-07-07 06:32:54 +08:00
committed by GitHub
parent 7a54d707fa
commit 5da9b49b19
6 changed files with 102 additions and 13 deletions

View File

@@ -841,6 +841,44 @@ func Test_increment_unsigned()
set nrformats-=unsigned
endfunc
" Try incrementing/decrementing a number when nrformats contains blank
func Test_increment_blank()
set nrformats+=blank
" Signed
call setline(1, '0')
exec "norm! gg0\<C-X>"
call assert_equal('-1', getline(1))
call setline(1, '3')
exec "norm! gg010\<C-X>"
call assert_equal('-7', getline(1))
call setline(1, '-0')
exec "norm! gg0\<C-X>"
call assert_equal("-1", getline(1))
" Unsigned
" NOTE: 18446744073709551615 == 2^64 - 1
call setline(1, 'a-18446744073709551615')
exec "norm! gg0\<C-A>"
call assert_equal('a-18446744073709551615', getline(1))
call setline(1, 'a-18446744073709551615')
exec "norm! gg0\<C-A>"
call assert_equal('a-18446744073709551615', getline(1))
call setline(1, 'a-18446744073709551614')
exec "norm! gg08\<C-A>"
call assert_equal('a-18446744073709551615', getline(1))
call setline(1, 'a-1')
exec "norm! gg0\<C-A>"
call assert_equal('a-2', getline(1))
set nrformats-=blank
endfunc
func Test_in_decrement_large_number()
" NOTE: 18446744073709551616 == 2^64
call setline(1, '18446744073709551616')