The size of long varies depending on architecture, in contrast to the
MAXLNUM constant which sets the maximum allowable number of lines to
2^32-1. This discrepancy may lead to hard to detect bugs, for example
https://github.com/neovim/neovim/issues/18454. Setting linenr_T to a
fix maximum size of 2^32-1 will prevent this type of errors in the
future.
Also change the variables `amount` and `amount_after` to be linenr_T
since they're referring to "the line number difference" between two
texts.
Neovim already removed `evim` (or any similar flags). The 'insertmode'
option is a weird remnant, so get rid of it.
The 'insertmode' option is replaced with a script that closely emulates
the option. This script is documented at :help 'insertmode'
Problem: Increment/decrement might get interrupted by updating folds.
Solution: Disable fold updating for a moment. (Christian Brabandt,
closesvim/vim#3599)
6b731886ca
Problem: The mode #defines are not clearly named.
Solution: Prepend MODE_. Renumber them to put the mapped modes first.
249591057b
A hunk from the patch depends on patch 8.2.4861, which hasn't been
ported yet, but that should be easy to notice.
This warning is essentially only triggered for ported vim functions.
It's unlikely that we'll refactor vim functions solely based on their
size since it'd mean we'd greatly deviate from vim, which is a high cost
when it comes to importing the vim patches. Thus, this warning only
serves as an annoyance and should be removed.
Add space around arithmetic operators '+' and '-'.
Remove space between back-to-back parentheses, i.e. ')(' vs. ') ('.
Remove space between '((' or '))' of control statements.
Add space between ')' and '{' of control statements.
Remove space between function name and '(' on function declaration.
Collapse empty blocks between '{' and '}'.
Remove newline at the end of the file.
Remove newline between 'enum' and '{'.
Remove newline between '}' and ')' in a function invocation.
Remove newline between '}' and 'while' of 'do' statement.
Problem: Use register one too often and not properly tested.
Solution: Do not always use register one when specifying a register.
(closesvim/vim#4085) Add more tests.
9d7fdd403a
Problem: Cannot execute a register containing line continuation.
Solution: Concatenate lines where needed. (Yegappan Lakshmanan,
closesvim/vim#6272)
856c1110c1
According to #2542 the "Future:" part was removed intentionally.
Use size_t in more places to reduce type casts.
Problem: Check for overflow in put count does not work well.
Solution: Improve the overflow check. (Ozaki Kiichi, closesvim/vim#9102)
fa53722367
Add some casts as Nvim uses size_t variables in some places.
We could technically adjust the logic to check for overflow outside of size_t's
range, but it's much easier to just port the patch exactly (also means we can
use the same tests).
v:sizeoflong is N/A, so convert the 64-bit tests to Lua and use the FFI to check
long's size.
Problem: Overflow check still fails when sizeof(int) == sizeof(long).
Solution: Use a float to check the result.
e551ccfb93
This approach is... interesting...
Tests fail.
Problem: Cannot decide whether to skip test that fails with 64 bit ints.
(closesvim/vim#9072)
Solution: Add v:sizeofint, v:sizeoflong and v:sizeofpointer. Improve the
check for multiply overflow.
69b3072d98
Omit v:sizeof{int,long,pointer} as they're only really used for tests.
Problem: Crash when pasting too many times.
Solution: Limit the size to what fits in an int. (closesvim/vim#8962)
eeed1c7ae0
Note that this overflow check pretty bad.
It also doesn't work well on Windows (where sizeof(int) == sizeof(long)).
This is all temporary; everything here is rewritten in future patches anyway.
e_resulting_text_too_long was already cherry-picked.
totlen is size_t in Nvim, but is int in Vim. This means we'll need some casts.
We could technically adjust the logic in do_put to use the entire range of
size_t in stuff like totlen, but there's not much gain, and it's much easier to
just port the patch like Vim as was done before (also allows us to use the same
tests).
Problem: "vrc" does not replace composing characters, while "rc" does.
Solution: Check the byte length including composing characters.
(closesvim/vim#9351)
8ee6028de3
vim-patch:8.2.3823: test for visual replace is in wrong function
Problem: Test for visual replace is in wrong function.
Solution: Move it to another function.
6ecf58b0d7
Problem: When cursor is move for block append wrong text is inserted.
Solution: Calculate an offset. (Christian Brabandt, closesvim/vim#8433,
closesvim/vim#8288)
4067bd3604
Problem: Put in Visual mode cannot be repeated.
Solution: Use "P" to put without yanking the deleted text into the unnamed
register. (Shougo Matsushita, closesvim/vim#9591)
fb55207ed1
Cherry-pick get_y_previous() and set_y_previous() from patch 8.1.1736.
Nvim has removed y_current, so code related to it is N/A.