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 *