Problem: Using a function pointer instead of the actual function, which we
know.
Solution: Change mb_ functions to utf_ functions when already checked for
Unicode. (Dominique Pelle, closesvim/vim#1582)
ace95989ed
Problem: Character classes are not well tested. They can differ between
platforms.
Solution: Add tests. In the documentation make clear which classes depend
on what library function. Only use :cntrl: and :graph: for ASCII.
(Kazunobu Kuriyama, Dominique Pelle, closesvim/vim#1560)
Update the documentation.
0c078fc7db
Problem: Cannot make Vim fail on an internal error.
Solution: Add IEMSG() and IEMSG2(). (Domenique Pelle) Avoid reporting an
internal error without mentioning where.
95f096030e
Signed-off-by: Michael Schupikov <michael@schupikov.de>
Functions with FUNC_ATTR_ALWAYS_INLINE need to be defined before they
are called to work around bugs with some compiler versions. When the
body is after the use of the function, compilation will fail with
/home/niko/build/neovim/src/nvim/regexp.c: In function 'regmatch':
/home/niko/build/neovim/build/src/nvim/auto/regexp.c.generated.h:77: sorry, unimplemented: inlining failed in call to 'cstrchr': function body not available
/home/niko/build/neovim/src/nvim/regexp.c:4193: sorry, unimplemented: called from here
Problem: Using function() with a name will find another function when it is
redefined.
Solution: Add funcref(). Refer to lambda using a partial. Fix several
reference counting issues.
437bafe4c8
Problem: Using submatch() in a lambda passed to substitute() is verbose.
Solution: Use a static list and pass it as an optional argument to the
function. Fix memory leak.
df48fb456f
Problem: The old regexp engine doesn't handle character classes correctly.
(Manuel Ortega)
Solution: Use regmbc() instead of regc(). Add a test.
af98a49dd0
Problem: Some character classes may differ between systems. On OS/X the
regexp test fails.
Solution: Make this less dependent on the system. (idea by Kazunobu Kuriyama)
e8aee7dcf9
move `call_shell` to misc1.c
Move some fns to state.c
Move some fns to option.c
Move some fns to memline.c
Move `vim_chdir*` fns to file_search.c
Move some fns to new module, bytes.c
Move some fns to fileio.c
Problem: "\%1l^#.*" does not match on a line starting with "#".
Solution: Do not clear the start-of-line flag. (Christian Brabandt)
7c29f38781
Helped-by: jamessan
Helped-by: mhinz
Problem: Searching for a character matches an illegal byte and causes
invalid memory access. (Dominique Pelle)
Solution: Do not match an invalid byte when search for a character in a
string. Fix equivalence classes using negative numbers, which
result in illegal bytes.
d82a2a990b
Problem: When there are illegal utf-8 characters the old regexp engine may
go past the end of a string.
Solution: Only advance to the end of the string. (Dominique Pelle)
0e462411ca