Age | Commit message (Collapse) | Author |
|
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.
|
|
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)
|
|
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: matchstr() fails on long text. Daniel Hahler)
Solution: Return NFA_TOO_EXPENSIVE from regexec_nl(). (Christian Brabandt)
|
|
Problem: Crash when using syntax highlighting.
Solution: When regprog is freed and replaced, store the result.
|
|
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: New and old regexp engine are not consistent.
Solution: Also give an error for "\ze*" for the old regexp engine.
|
|
Problem: In a regexp pattern a "$" followed by \v or \V is not seen as the
end-of-line.
Solution: Handle the situation. (Ozaki Kiichi)
|
|
Problem: It is not possible to ignore composing characters at a specific
point in a pattern.
Solution: Add the %C item.
|
|
Problem: Searching for "a" does not match accented "a" with new regexp
engine, does match with old engine. (David Bürgin)
"ca" does not match "ca" with accented "a" with either engine.
Solution: Change the old engine, check for following composing character
also for single-byte patterns.
|
|
Problem: Compiler warning for int to pointer of different size when DEBUG
is defined.
Solution: use smsg() instead of EMSG3().
|
|
Problem: Duplicate code in regexec().
Solution: Add line_lbr flag to regexec_nl().
|
|
Problem: When updating the window involves a regexp pattern, an interactive
substitute to replace a "\n" with a line break fails. (Ingo
Karkat)
Solution: Set reg_line_lbr in vim_regsub() and vim_regsub_multi().
|
|
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: The string returned by submatch() does not distinguish between a
NL from a line break and a NL that stands for a NUL character.
Solution: Add a second argument to return a list. (ZyX)
|
|
Problem: Now that the +visual feature is always enabled the #ifdefs for it
are not useful.
Solution: Remove the checks for FEAT_VISUAL.
|
|
Problem: Using \1 in pattern goes one line too far. (Bohr Shaw, John Little)
Solution: Only advance the match end for the matched characters in the last
line.
|
|
Problem: An error in a pattern is reported twice.
Solution: Remove the retry with the backtracking engine, it won't work.
|
|
Problem: New regexp engine can't be interrupted.
Solution: Check for CTRL-C pressed. (Yasuhiro Matsumoto)
|
|
Problem: "\p" in a regexp does not match double-width characters.
(Yukihiro Nakadaira)
Solution: Don't count display cells, use vim_isprintc().
|
|
Problem: Old regexp engine does not match pattern with backref correctly.
(Dominique Pelle)
Solution: Fix setting status. Test multi-line patterns better.
|
|
Problem: Compiler warning for unitialized variable. (Tony Mechelynck)
Solution: Set the length to the matching backref.
|
|
Problem: Backreference to previous line doesn't work. (Lech Lorens)
Solution: Implement looking in another line.
|
|
Problem: New regexp engine: Matching plain text could be faster.
Solution: Detect a plain text match and handle it specifically. Add
vim_regfree().
|
|
Problem: Crash when debugging regexp.
Solution: Do not try to dump subexpr that were not set. Skip over count of
\% items.
|
|
Problem: Now that the NFA engine handles everything every failure is a
syntax error.
Solution: Remove the syntax_error flag.
|
|
Problem: No error for using empty \%[].
Solution: Give error message.
|
|
Problem: Crash when regexp logging is enabled.
Solution: Avoid using NULL pointers. Advance over count argument.
|
|
Problem: Flags in 'cpo' are search for several times.
Solution: Store the result and re-use the flags.
|
|
Problem: New regexp engine: \%'m not supported.
Solution: Implement \%'m. Add tests.
|
|
Problem: New regexp engine: \%V not supported.
Solution: Implement \%V. Add tests.
|
|
Problem: Compiler warnings for unused variables.
Solution: Put the variables inside #ifdef.
|
|
Problem: New regexp engine: no error when using \z1 or \z( where it does
not work.
Solution: Give an error message.
|
|
Problem: New regexp engine: \@<= and \@<! are not implemented.
Solution: Implement look-behind matching. Fix off-by-one error in old
regexp engine.
|
|
Problem: A leading star is not seen as a normal char when \{} follows.
Solution: Save and restore the parse state properly.
|
|
Problem: Look-behind matching is very slow on long lines.
Solution: Add a byte limit to how far back an attempt is made.
|
|
Problem: Typo in char value causes out of bounds access.
Solution: Fix character value. (Klemens Baum)
|
|
Problem: In the old regexp engine \i, \I, \f and \F don't work on
multi-byte characters.
Solution: Dereference pointer properly.
|
|
Problem: Regexp debug logs don't have a good name.
Solution: Use clear names and make it possible to write logs for the old and
new engines separately. (Taro Muraoka)
|
|
Problem: Syntax highlighting can be slow.
Solution: Include the NFA regexp engine. Add the 'regexpengine' option to
select which one is used. (various authors, including Ken Takata,
Andrei Aiordachioaie, Russ Cox, Xiaozhou Liua, Ian Young)
|
|
Problem: Cannot easily use :s to make title case.
Solution: Have "\L\u" result in title case. (James McCoy)
|
|
Problem: "\@<!" in regexp does not work correctly with multi-byte
characters, especially cp932.
Solution: Move column to start of multi-byte character. (Yasuhiro Matsumoto)
|
|
Problem: "/[^\n]" does match at a line break.
Solution: Make it do the same as "/.". (Christian Brabandt)
|
|
Problem: "\k" in regexp does not work in other window.
Solution: Use the right buffer. (Yukihiro Nakadaira)
|
|
Problem: Crash with specific use of search pattern.
Solution: Initialize reg_buf to curbuf.
|
|
Problem: ml_get error when searching, caused by curwin not matching curbuf.
Solution: Avoid changing curbuf. (Lech Lorens)
|
|
Problem: Equivalence classes only work for latin characters.
Solution: Add the Unicode equivalence characters. (Dominique Pelle)
|
|
Problem: Using "\n" in a substitute inside ":s" does not result in a line
break.
Solution: Change behavior inside vim_regexec_nl(). Add tests. (Motoya
Kurotsu)
|
|
Problem: Crash when using very long regexp. (Peter Odding)
Solution: Reset reg_toolong. (Carlo Teubner)
|
|
|