diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-07-24 19:53:07 -0400 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-08-02 12:00:02 -0400 |
commit | 1123a979d06d66f0bf4ab8684829a64832986a25 (patch) | |
tree | ff461fffce6150fa809cddc6b6e88f17cb3a972d /src/nvim/regexp.c | |
parent | 0393eec3ea4534f8ff195848389568462f6f5e63 (diff) | |
download | rneovim-1123a979d06d66f0bf4ab8684829a64832986a25.tar.gz rneovim-1123a979d06d66f0bf4ab8684829a64832986a25.tar.bz2 rneovim-1123a979d06d66f0bf4ab8684829a64832986a25.zip |
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 vim/vim#1373)
https://github.com/vim/vim/commit/221cd9f4dd866503777b2fffa721c1403716ad63
Diffstat (limited to 'src/nvim/regexp.c')
-rw-r--r-- | src/nvim/regexp.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/nvim/regexp.c b/src/nvim/regexp.c index b4e2c7d766..9705896e9b 100644 --- a/src/nvim/regexp.c +++ b/src/nvim/regexp.c @@ -602,6 +602,12 @@ static int 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; @@ -2417,6 +2423,27 @@ collection: case CLASS_ESCAPE: regc(ESC); 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 { // produce a multibyte character, including any @@ -3276,6 +3303,13 @@ void free_regexp_stuff(void) #endif +// Return true if character 'c' is included in 'iskeyword' option for +// "reg_buf" buffer. +static bool reg_iswordc(int c) +{ + return vim_iswordc_buf(c, rex.reg_buf); +} + /* * Get pointer to the line "lnum", which is relative to "reg_firstlnum". */ |