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.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.c')
-rw-r--r-- | src/regexp.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/regexp.c b/src/regexp.c index 20894ea72..9e6cf702d 100644 --- a/src/regexp.c +++ b/src/regexp.c @@ -484,6 +484,12 @@ get_char_class(char_u **pp) #define CLASS_BACKSPACE 14 "escape:]", #define CLASS_ESCAPE 15 + "ident:]", +#define CLASS_IDENT 16 + "keyword:]", +#define CLASS_KEYWORD 17 + "fname:]", +#define CLASS_FNAME 18 }; #define CLASS_NONE 99 int i; @@ -698,6 +704,7 @@ static char_u *re_put_long(char_u *pr, long_u val); static int read_limits(long *, long *); static void regtail(char_u *, char_u *); static void regoptail(char_u *, char_u *); +static int reg_iswordc(int); static regengine_T bt_regengine; static regengine_T nfa_regengine; @@ -2545,6 +2552,21 @@ collection: case CLASS_ESCAPE: regc('\033'); break; + case CLASS_IDENT: + for (cu = 1; cu <= 255; cu++) + if (vim_isIDc(cu)) + regmbc(cu); + break; + case CLASS_KEYWORD: + for (cu = 1; cu <= 255; cu++) + if (reg_iswordc(cu)) + regmbc(cu); + break; + case CLASS_FNAME: + for (cu = 1; cu <= 255; cu++) + if (vim_isfilec(cu)) + regmbc(cu); + break; } } else @@ -3590,6 +3612,16 @@ free_regexp_stuff(void) #endif /* + * Return TRUE if character 'c' is included in 'iskeyword' option for + * "reg_buf" buffer. + */ + static int +reg_iswordc(int c) +{ + return vim_iswordc_buf(c, rex.reg_buf); +} + +/* * Get pointer to the line "lnum", which is relative to "reg_firstlnum". */ static char_u * |