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

@@ -4430,6 +4430,20 @@ A jump table for the options with a short description can be found at |Q_op|.
(without "unsigned" it would become "9-2019").
Using CTRL-X on "0" or CTRL-A on "18446744073709551615"
(2^64 - 1) has no effect, overflow is prevented.
blank If included, treat numbers as signed or unsigned based on
preceding whitespace. If a number with a leading dash has its
dash immediately preceded by a non-whitespace character (i.e.,
not a tab or a " "), the negative sign won't be considered as
part of the number. For example:
Using CTRL-A on "14" in "Carbon-14" results in "Carbon-15"
(without "blank" it would become "Carbon-13").
Using CTRL-X on "8" in "Carbon -8" results in "Carbon -9"
(because -8 is preceded by whitespace. If "unsigned" was
set, it would result in "Carbon -7").
If this format is included, overflow is prevented as if
"unsigned" were set. If both this format and "unsigned" are
included, "unsigned" will take precedence.
Numbers which simply begin with a digit in the range 1-9 are always
considered decimal. This also happens for numbers that are not
recognized as octal or hex.

View File

@@ -4549,6 +4549,20 @@ vim.go.mouset = vim.go.mousetime
--- (without "unsigned" it would become "9-2019").
--- Using CTRL-X on "0" or CTRL-A on "18446744073709551615"
--- (2^64 - 1) has no effect, overflow is prevented.
--- blank If included, treat numbers as signed or unsigned based on
--- preceding whitespace. If a number with a leading dash has its
--- dash immediately preceded by a non-whitespace character (i.e.,
--- not a tab or a " "), the negative sign won't be considered as
--- part of the number. For example:
--- Using CTRL-A on "14" in "Carbon-14" results in "Carbon-15"
--- (without "blank" it would become "Carbon-13").
--- Using CTRL-X on "8" in "Carbon -8" results in "Carbon -9"
--- (because -8 is preceded by whitespace. If "unsigned" was
--- set, it would result in "Carbon -7").
--- If this format is included, overflow is prevented as if
--- "unsigned" were set. If both this format and "unsigned" are
--- included, "unsigned" will take precedence.
---
--- Numbers which simply begin with a digit in the range 1-9 are always
--- considered decimal. This also happens for numbers that are not
--- recognized as octal or hex.