Mercurial > vim
comparison src/regexp.c @ 15709:2e2f07561f4b v8.1.0862
patch 8.1.0862: no verbose version of character classes
commit https://github.com/vim/vim/commit/221cd9f4dd866503777b2fffa721c1403716ad63
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Jan 31 15:34:40 2019 +0100
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 31 Jan 2019 15:45:06 +0100 |
parents | 639b8318472c |
children | 920c1e26c8aa |
comparison
equal
deleted
inserted
replaced
15708:8a6b91646ba7 | 15709:2e2f07561f4b |
---|---|
482 #define CLASS_RETURN 13 | 482 #define CLASS_RETURN 13 |
483 "backspace:]", | 483 "backspace:]", |
484 #define CLASS_BACKSPACE 14 | 484 #define CLASS_BACKSPACE 14 |
485 "escape:]", | 485 "escape:]", |
486 #define CLASS_ESCAPE 15 | 486 #define CLASS_ESCAPE 15 |
487 "ident:]", | |
488 #define CLASS_IDENT 16 | |
489 "keyword:]", | |
490 #define CLASS_KEYWORD 17 | |
491 "fname:]", | |
492 #define CLASS_FNAME 18 | |
487 }; | 493 }; |
488 #define CLASS_NONE 99 | 494 #define CLASS_NONE 99 |
489 int i; | 495 int i; |
490 | 496 |
491 if ((*pp)[1] == ':') | 497 if ((*pp)[1] == ':') |
696 static void reginsert_limits(int, long, long, char_u *); | 702 static void reginsert_limits(int, long, long, char_u *); |
697 static char_u *re_put_long(char_u *pr, long_u val); | 703 static char_u *re_put_long(char_u *pr, long_u val); |
698 static int read_limits(long *, long *); | 704 static int read_limits(long *, long *); |
699 static void regtail(char_u *, char_u *); | 705 static void regtail(char_u *, char_u *); |
700 static void regoptail(char_u *, char_u *); | 706 static void regoptail(char_u *, char_u *); |
707 static int reg_iswordc(int); | |
701 | 708 |
702 static regengine_T bt_regengine; | 709 static regengine_T bt_regengine; |
703 static regengine_T nfa_regengine; | 710 static regengine_T nfa_regengine; |
704 | 711 |
705 /* | 712 /* |
2543 regc('\b'); | 2550 regc('\b'); |
2544 break; | 2551 break; |
2545 case CLASS_ESCAPE: | 2552 case CLASS_ESCAPE: |
2546 regc('\033'); | 2553 regc('\033'); |
2547 break; | 2554 break; |
2555 case CLASS_IDENT: | |
2556 for (cu = 1; cu <= 255; cu++) | |
2557 if (vim_isIDc(cu)) | |
2558 regmbc(cu); | |
2559 break; | |
2560 case CLASS_KEYWORD: | |
2561 for (cu = 1; cu <= 255; cu++) | |
2562 if (reg_iswordc(cu)) | |
2563 regmbc(cu); | |
2564 break; | |
2565 case CLASS_FNAME: | |
2566 for (cu = 1; cu <= 255; cu++) | |
2567 if (vim_isfilec(cu)) | |
2568 regmbc(cu); | |
2569 break; | |
2548 } | 2570 } |
2549 } | 2571 } |
2550 else | 2572 else |
2551 { | 2573 { |
2552 if (has_mbyte) | 2574 if (has_mbyte) |
3586 ga_clear(&backpos); | 3608 ga_clear(&backpos); |
3587 vim_free(reg_tofree); | 3609 vim_free(reg_tofree); |
3588 vim_free(reg_prev_sub); | 3610 vim_free(reg_prev_sub); |
3589 } | 3611 } |
3590 #endif | 3612 #endif |
3613 | |
3614 /* | |
3615 * Return TRUE if character 'c' is included in 'iskeyword' option for | |
3616 * "reg_buf" buffer. | |
3617 */ | |
3618 static int | |
3619 reg_iswordc(int c) | |
3620 { | |
3621 return vim_iswordc_buf(c, rex.reg_buf); | |
3622 } | |
3591 | 3623 |
3592 /* | 3624 /* |
3593 * Get pointer to the line "lnum", which is relative to "reg_firstlnum". | 3625 * Get pointer to the line "lnum", which is relative to "reg_firstlnum". |
3594 */ | 3626 */ |
3595 static char_u * | 3627 static char_u * |