Mercurial > vim
diff src/regexp_nfa.c @ 4714:fc4d7f02ea3a v7.3.1104
updated for version 7.3.1104
Problem: New regexp engine does not handle "~".
Solution: Add support for "~".
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Sun, 02 Jun 2013 22:08:03 +0200 |
parents | 832bf8136d86 |
children | a804309e7327 |
line wrap: on
line diff
--- a/src/regexp_nfa.c +++ b/src/regexp_nfa.c @@ -829,9 +829,26 @@ nfa_regatom() EMSGN(_(e_misplaced), no_Magic(c)); return FAIL; - case Magic('~'): /* previous substitute pattern */ - /* TODO: Not supported yet */ - return FAIL; + case Magic('~'): + { + char_u *lp; + + /* Previous substitute pattern. + * Generated as "\%(pattern\)". */ + if (reg_prev_sub == NULL) + { + EMSG(_(e_nopresub)); + return FAIL; + } + for (lp = reg_prev_sub; *lp != NUL; mb_cptr_adv(lp)) + { + EMIT(PTR2CHAR(lp)); + if (lp != reg_prev_sub) + EMIT(NFA_CONCAT); + } + EMIT(NFA_NOPEN); + break; + } case Magic('1'): case Magic('2'):