diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-01-31 15:34:40 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-01-31 15:34:40 +0100 |
commit | 221cd9f4dd866503777b2fffa721c1403716ad63 (patch) | |
tree | e852c86a815d0f8667655a6a9c1ac920b2925620 /src/regexp_nfa.c | |
parent | 60f807b3f71a92881e2b3bf48bd016294957130e (diff) | |
download | vim-git-221cd9f4dd866503777b2fffa721c1403716ad63.tar.gz |
patch 8.1.0862: no verbose version of character classesv8.1.0862
Problem: No verbose version of character classes.
Solution: Add [:ident:], [:keyword:] and [:fname:]. (Ozaki Kiichi,
closes #1373)
Diffstat (limited to 'src/regexp_nfa.c')
-rw-r--r-- | src/regexp_nfa.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c index 863ad6cac..031a6cf20 100644 --- a/src/regexp_nfa.c +++ b/src/regexp_nfa.c @@ -226,7 +226,10 @@ enum NFA_CLASS_TAB, NFA_CLASS_RETURN, NFA_CLASS_BACKSPACE, - NFA_CLASS_ESCAPE + NFA_CLASS_ESCAPE, + NFA_CLASS_IDENT, + NFA_CLASS_KEYWORD, + NFA_CLASS_FNAME }; /* Keep in sync with classchars. */ @@ -1718,6 +1721,15 @@ collection: case CLASS_ESCAPE: EMIT(NFA_CLASS_ESCAPE); break; + case CLASS_IDENT: + EMIT(NFA_CLASS_IDENT); + break; + case CLASS_KEYWORD: + EMIT(NFA_CLASS_KEYWORD); + break; + case CLASS_FNAME: + EMIT(NFA_CLASS_FNAME); + break; } EMIT(NFA_CONCAT); continue; @@ -2555,6 +2567,9 @@ nfa_set_code(int c) case NFA_CLASS_RETURN: STRCPY(code, "NFA_CLASS_RETURN"); break; case NFA_CLASS_BACKSPACE: STRCPY(code, "NFA_CLASS_BACKSPACE"); break; case NFA_CLASS_ESCAPE: STRCPY(code, "NFA_CLASS_ESCAPE"); break; + case NFA_CLASS_IDENT: STRCPY(code, "NFA_CLASS_IDENT"); break; + case NFA_CLASS_KEYWORD: STRCPY(code, "NFA_CLASS_KEYWORD"); break; + case NFA_CLASS_FNAME: STRCPY(code, "NFA_CLASS_FNAME"); break; case NFA_ANY: STRCPY(code, "NFA_ANY"); break; case NFA_IDENT: STRCPY(code, "NFA_IDENT"); break; @@ -4846,6 +4861,18 @@ check_char_class(int class, int c) if (c == '\033') return OK; break; + case NFA_CLASS_IDENT: + if (vim_isIDc(c)) + return OK; + break; + case NFA_CLASS_KEYWORD: + if (reg_iswordc(c)) + return OK; + break; + case NFA_CLASS_FNAME: + if (vim_isfilec(c)) + return OK; + break; default: /* should not be here :P */ |