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, closes#1582)
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, closes#1560)
Update the documentation.
Problem: Regexp fails to match when using "\>\)\?". (Ramel)
Solution: When a state is already in the list, but addstate_here() is used
and the existing state comes later, add the new state anyway.
Problem: The example that explains nested backreferences does not work
properly with the new regexp engine. (Harm te Hennepe)
Solution: Also save the end position when adding a state. (closes#990)
Problem: Falling back from NFA to old regexp engine does not work properly.
(fritzophrenic)
Solution: Do not restore nfa_match. (Christian Brabandt, closes#867)
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)
Problem: Can't match "%>80v" properly for multi-byte characters.
Solution: Multiply the character number by the maximum number of bytes in a
character. (Yasuhiro Matsumoto)
Problem: Crash when searching for "x\{0,90000}". (Dominique Pelle)
Solution: Bail out from the NFA engine when the max limit is much higher
than the min limit.
Problem: Matching with a virtual column has a lot of overhead on very long
lines. (Issue 310)
Solution: Bail out early if there can't be a match. (Christian Brabandt)
Also check for CTRL-C at every position.
Problem: With some regexp patterns the NFA engine uses many states and
becomes very slow. To the user it looks like Vim freezes.
Solution: When the number of states reaches a limit fall back to the old
engine. (Christian Brabandt)
Problem: A non-greedy match followed by a branch is too greedy. (Ingo
Karkat)
Solution: Add NFA_MATCH when it is already in the state list if the position
differs.
Problem: Pattern with repeated backreference does not match with new regexp
engine. (Urtica Dioica)
Solution: Also check the end of a submatch when deciding to put a state in
the state list.
Problem: Crash when using cpp syntax file with pattern using external
match. (Havard Garnes)
Solution: Discard match when end column is before start column.
Problem: NFA regexp doesn't handle backreference correctly. (Ryuichi
Hayashida, Urtica Dioica)
Solution: Always add NFA_SKIP, also when it already exists at the start
position.
Problem: Syntax highlighting a Yaml file causes a crash. (Blake Preston)
Solution: Copy the pim structure before calling addstate() to avoid it
becoming invalide when the state list is reallocated.
Problem: Using "\ze" in a sub-pattern does not result in the end of the
match to be set. (Axel Bender)
Solution: Copy the end of match position when a recursive match was
successful.