1
0
forked from aniani/vim

patch 8.1.0862: no verbose version of character classes

Problem:    No verbose version of character classes.
Solution:   Add [:ident:], [:keyword:] and [:fname:]. (Ozaki Kiichi,
            closes #1373)
This commit is contained in:
Bram Moolenaar
2019-01-31 15:34:40 +01:00
parent 60f807b3f7
commit 221cd9f4dd
5 changed files with 120 additions and 1 deletions

View File

@@ -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 */