@@ -666,8 +666,12 @@ static char_u *regnext __ARGS((char_u *));
666666static void regc __ARGS ((int b ));
667667#ifdef FEAT_MBYTE
668668static void regmbc __ARGS ((int c ));
669+ # define REGMBC (x ) regmbc(x);
670+ # define CASEMBC (x ) case x:
669671#else
670672# define regmbc (c ) regc(c)
673+ # define REGMBC (x )
674+ # define CASEMBC (x )
671675#endif
672676static void reginsert __ARGS ((int , char_u * ));
673677static void reginsert_limits __ARGS ((int , long, long, char_u * ));
@@ -787,68 +791,295 @@ reg_equi_class(c)
787791 switch (c )
788792 {
789793 case 'A' : case '\300' : case '\301' : case '\302' :
794+ CASEMBC (0x100 ) CASEMBC (0x102 ) CASEMBC (0x104 ) CASEMBC (0x1cd )
795+ CASEMBC (0x1de ) CASEMBC (0x1e0 ) CASEMBC (0x1ea2 )
790796 case '\303' : case '\304' : case '\305' :
791797 regmbc ('A' ); regmbc ('\300' ); regmbc ('\301' );
792798 regmbc ('\302' ); regmbc ('\303' ); regmbc ('\304' );
793799 regmbc ('\305' );
800+ REGMBC (0x100 ) REGMBC (0x102 ) REGMBC (0x104 )
801+ REGMBC (0x1cd ) REGMBC (0x1de ) REGMBC (0x1e0 )
802+ REGMBC (0x1ea2 )
803+ return ;
804+ case 'B' : CASEMBC (0x1e02 ) CASEMBC (0x1e06 )
805+ regmbc ('B' ); REGMBC (0x1e02 ) REGMBC (0x1e06 )
794806 return ;
795807 case 'C' : case '\307' :
808+ CASEMBC (0x106 ) CASEMBC (0x108 ) CASEMBC (0x10a ) CASEMBC (0x10c )
796809 regmbc ('C' ); regmbc ('\307' );
810+ REGMBC (0x106 ) REGMBC (0x108 ) REGMBC (0x10a )
811+ REGMBC (0x10c )
812+ return ;
813+ case 'D' : CASEMBC (0x10e ) CASEMBC (0x110 ) CASEMBC (0x1e0a )
814+ CASEMBC (0x1e0e ) CASEMBC (0x1e10 )
815+ regmbc ('D' ); REGMBC (0x10e ) REGMBC (0x110 )
816+ REGMBC (0x1e0a ) REGMBC (0x1e0e ) REGMBC (0x1e10 )
797817 return ;
798818 case 'E' : case '\310' : case '\311' : case '\312' : case '\313' :
819+ CASEMBC (0x112 ) CASEMBC (0x114 ) CASEMBC (0x116 ) CASEMBC (0x118 )
820+ CASEMBC (0x11a ) CASEMBC (0x1eba ) CASEMBC (0x1ebc )
799821 regmbc ('E' ); regmbc ('\310' ); regmbc ('\311' );
800822 regmbc ('\312' ); regmbc ('\313' );
823+ REGMBC (0x112 ) REGMBC (0x114 ) REGMBC (0x116 )
824+ REGMBC (0x118 ) REGMBC (0x11a ) REGMBC (0x1eba )
825+ REGMBC (0x1ebc )
826+ return ;
827+ case 'F' : CASEMBC (0x1e1e )
828+ regmbc ('F' ); REGMBC (0x1e1e )
829+ return ;
830+ case 'G' : CASEMBC (0x11c ) CASEMBC (0x11e ) CASEMBC (0x120 )
831+ CASEMBC (0x122 ) CASEMBC (0x1e4 ) CASEMBC (0x1e6 ) CASEMBC (0x1f4 )
832+ CASEMBC (0x1e20 )
833+ regmbc ('G' ); REGMBC (0x11c ) REGMBC (0x11e )
834+ REGMBC (0x120 ) REGMBC (0x122 ) REGMBC (0x1e4 )
835+ REGMBC (0x1e6 ) REGMBC (0x1f4 ) REGMBC (0x1e20 )
836+ return ;
837+ case 'H' : CASEMBC (0x124 ) CASEMBC (0x126 ) CASEMBC (0x1e22 )
838+ CASEMBC (0x1e26 ) CASEMBC (0x1e28 )
839+ regmbc ('H' ); REGMBC (0x124 ) REGMBC (0x126 )
840+ REGMBC (0x1e22 ) REGMBC (0x1e26 ) REGMBC (0x1e28 )
801841 return ;
802842 case 'I' : case '\314' : case '\315' : case '\316' : case '\317' :
843+ CASEMBC (0x128 ) CASEMBC (0x12a ) CASEMBC (0x12c ) CASEMBC (0x12e )
844+ CASEMBC (0x130 ) CASEMBC (0x1cf ) CASEMBC (0x1ec8 )
803845 regmbc ('I' ); regmbc ('\314' ); regmbc ('\315' );
804846 regmbc ('\316' ); regmbc ('\317' );
847+ REGMBC (0x128 ) REGMBC (0x12a ) REGMBC (0x12c )
848+ REGMBC (0x12e ) REGMBC (0x130 ) REGMBC (0x1cf )
849+ REGMBC (0x1ec8 )
850+ return ;
851+ case 'J' : CASEMBC (0x134 )
852+ regmbc ('J' ); REGMBC (0x134 )
853+ return ;
854+ case 'K' : CASEMBC (0x136 ) CASEMBC (0x1e8 ) CASEMBC (0x1e30 )
855+ CASEMBC (0x1e34 )
856+ regmbc ('K' ); REGMBC (0x136 ) REGMBC (0x1e8 )
857+ REGMBC (0x1e30 ) REGMBC (0x1e34 )
858+ return ;
859+ case 'L' : CASEMBC (0x139 ) CASEMBC (0x13b ) CASEMBC (0x13d )
860+ CASEMBC (0x13f ) CASEMBC (0x141 ) CASEMBC (0x1e3a )
861+ regmbc ('L' ); REGMBC (0x139 ) REGMBC (0x13b )
862+ REGMBC (0x13d ) REGMBC (0x13f ) REGMBC (0x141 )
863+ REGMBC (0x1e3a )
864+ return ;
865+ case 'M' : CASEMBC (0x1e3e ) CASEMBC (0x1e40 )
866+ regmbc ('M' ); REGMBC (0x1e3e ) REGMBC (0x1e40 )
805867 return ;
806868 case 'N' : case '\321' :
869+ CASEMBC (0x143 ) CASEMBC (0x145 ) CASEMBC (0x147 ) CASEMBC (0x1e44 )
870+ CASEMBC (0x1e48 )
807871 regmbc ('N' ); regmbc ('\321' );
872+ REGMBC (0x143 ) REGMBC (0x145 ) REGMBC (0x147 )
873+ REGMBC (0x1e44 ) REGMBC (0x1e48 )
808874 return ;
809875 case 'O' : case '\322' : case '\323' : case '\324' : case '\325' :
810- case '\326' :
876+ case '\326' : case '\330' :
877+ CASEMBC (0x14c ) CASEMBC (0x14e ) CASEMBC (0x150 ) CASEMBC (0x1a0 )
878+ CASEMBC (0x1d1 ) CASEMBC (0x1ea ) CASEMBC (0x1ec ) CASEMBC (0x1ece )
811879 regmbc ('O' ); regmbc ('\322' ); regmbc ('\323' );
812880 regmbc ('\324' ); regmbc ('\325' ); regmbc ('\326' );
881+ regmbc ('\330' );
882+ REGMBC (0x14c ) REGMBC (0x14e ) REGMBC (0x150 )
883+ REGMBC (0x1a0 ) REGMBC (0x1d1 ) REGMBC (0x1ea )
884+ REGMBC (0x1ec ) REGMBC (0x1ece )
885+ return ;
886+ case 'P' : case 0x1e54 : case 0x1e56 :
887+ regmbc ('P' ); REGMBC (0x1e54 ) REGMBC (0x1e56 )
888+ return ;
889+ case 'R' : CASEMBC (0x154 ) CASEMBC (0x156 ) CASEMBC (0x158 )
890+ CASEMBC (0x1e58 ) CASEMBC (0x1e5e )
891+ regmbc ('R' ); REGMBC (0x154 ) REGMBC (0x156 ) REGMBC (0x158 )
892+ REGMBC (0x1e58 ) REGMBC (0x1e5e )
893+ return ;
894+ case 'S' : CASEMBC (0x15a ) CASEMBC (0x15c ) CASEMBC (0x15e )
895+ CASEMBC (0x160 ) CASEMBC (0x1e60 )
896+ regmbc ('S' ); REGMBC (0x15a ) REGMBC (0x15c )
897+ REGMBC (0x15e ) REGMBC (0x160 ) REGMBC (0x1e60 )
898+ return ;
899+ case 'T' : CASEMBC (0x162 ) CASEMBC (0x164 ) CASEMBC (0x166 )
900+ CASEMBC (0x1e6a ) CASEMBC (0x1e6e )
901+ regmbc ('T' ); REGMBC (0x162 ) REGMBC (0x164 )
902+ REGMBC (0x166 ) REGMBC (0x1e6a ) REGMBC (0x1e6e )
813903 return ;
814904 case 'U' : case '\331' : case '\332' : case '\333' : case '\334' :
905+ CASEMBC (0x168 ) CASEMBC (0x16a ) CASEMBC (0x16c ) CASEMBC (0x16e )
906+ CASEMBC (0x170 ) CASEMBC (0x172 ) CASEMBC (0x1af ) CASEMBC (0x1d3 )
907+ CASEMBC (0x1ee6 )
815908 regmbc ('U' ); regmbc ('\331' ); regmbc ('\332' );
816909 regmbc ('\333' ); regmbc ('\334' );
910+ REGMBC (0x168 ) REGMBC (0x16a ) REGMBC (0x16c )
911+ REGMBC (0x16e ) REGMBC (0x170 ) REGMBC (0x172 )
912+ REGMBC (0x1af ) REGMBC (0x1d3 ) REGMBC (0x1ee6 )
913+ return ;
914+ case 'V' : CASEMBC (0x1e7c )
915+ regmbc ('V' ); REGMBC (0x1e7c )
916+ return ;
917+ case 'W' : CASEMBC (0x174 ) CASEMBC (0x1e80 ) CASEMBC (0x1e82 )
918+ CASEMBC (0x1e84 ) CASEMBC (0x1e86 )
919+ regmbc ('W' ); REGMBC (0x174 ) REGMBC (0x1e80 )
920+ REGMBC (0x1e82 ) REGMBC (0x1e84 ) REGMBC (0x1e86 )
921+ return ;
922+ case 'X' : CASEMBC (0x1e8a ) CASEMBC (0x1e8c )
923+ regmbc ('X' ); REGMBC (0x1e8a ) REGMBC (0x1e8c )
817924 return ;
818925 case 'Y' : case '\335' :
926+ CASEMBC (0x176 ) CASEMBC (0x178 ) CASEMBC (0x1e8e ) CASEMBC (0x1ef2 )
927+ CASEMBC (0x1ef6 ) CASEMBC (0x1ef8 )
819928 regmbc ('Y' ); regmbc ('\335' );
929+ REGMBC (0x176 ) REGMBC (0x178 ) REGMBC (0x1e8e )
930+ REGMBC (0x1ef2 ) REGMBC (0x1ef6 ) REGMBC (0x1ef8 )
931+ return ;
932+ case 'Z' : CASEMBC (0x179 ) CASEMBC (0x17b ) CASEMBC (0x17d )
933+ CASEMBC (0x1b5 ) CASEMBC (0x1e90 ) CASEMBC (0x1e94 )
934+ regmbc ('Z' ); REGMBC (0x179 ) REGMBC (0x17b )
935+ REGMBC (0x17d ) REGMBC (0x1b5 ) REGMBC (0x1e90 )
936+ REGMBC (0x1e94 )
820937 return ;
821938 case 'a' : case '\340' : case '\341' : case '\342' :
822939 case '\343' : case '\344' : case '\345' :
940+ CASEMBC (0x101 ) CASEMBC (0x103 ) CASEMBC (0x105 ) CASEMBC (0x1ce )
941+ CASEMBC (0x1df ) CASEMBC (0x1e1 ) CASEMBC (0x1ea3 )
823942 regmbc ('a' ); regmbc ('\340' ); regmbc ('\341' );
824943 regmbc ('\342' ); regmbc ('\343' ); regmbc ('\344' );
825944 regmbc ('\345' );
945+ REGMBC (0x101 ) REGMBC (0x103 ) REGMBC (0x105 )
946+ REGMBC (0x1ce ) REGMBC (0x1df ) REGMBC (0x1e1 )
947+ REGMBC (0x1ea3 )
948+ return ;
949+ case 'b' : CASEMBC (0x1e03 ) CASEMBC (0x1e07 )
950+ regmbc ('b' ); REGMBC (0x1e03 ) REGMBC (0x1e07 )
826951 return ;
827952 case 'c' : case '\347' :
953+ CASEMBC (0x107 ) CASEMBC (0x109 ) CASEMBC (0x10b ) CASEMBC (0x10d )
828954 regmbc ('c' ); regmbc ('\347' );
955+ REGMBC (0x107 ) REGMBC (0x109 ) REGMBC (0x10b )
956+ REGMBC (0x10d )
957+ return ;
958+ case 'd' : CASEMBC (0x10f ) CASEMBC (0x111 ) CASEMBC (0x1d0b )
959+ CASEMBC (0x1e11 )
960+ regmbc ('d' ); REGMBC (0x10f ) REGMBC (0x111 )
961+ REGMBC (0x1e0b ) REGMBC (0x01e0f ) REGMBC (0x1e11 )
829962 return ;
830963 case 'e' : case '\350' : case '\351' : case '\352' : case '\353' :
964+ CASEMBC (0x113 ) CASEMBC (0x115 ) CASEMBC (0x117 ) CASEMBC (0x119 )
965+ CASEMBC (0x11b ) CASEMBC (0x1ebb ) CASEMBC (0x1ebd )
831966 regmbc ('e' ); regmbc ('\350' ); regmbc ('\351' );
832967 regmbc ('\352' ); regmbc ('\353' );
968+ REGMBC (0x113 ) REGMBC (0x115 ) REGMBC (0x117 )
969+ REGMBC (0x119 ) REGMBC (0x11b ) REGMBC (0x1ebb )
970+ REGMBC (0x1ebd )
971+ return ;
972+ case 'f' : CASEMBC (0x1e1f )
973+ regmbc ('f' ); REGMBC (0x1e1f )
974+ return ;
975+ case 'g' : CASEMBC (0x11d ) CASEMBC (0x11f ) CASEMBC (0x121 )
976+ CASEMBC (0x123 ) CASEMBC (0x1e5 ) CASEMBC (0x1e7 ) CASEMBC (0x1f5 )
977+ CASEMBC (0x1e21 )
978+ regmbc ('g' ); REGMBC (0x11d ) REGMBC (0x11f )
979+ REGMBC (0x121 ) REGMBC (0x123 ) REGMBC (0x1e5 )
980+ REGMBC (0x1e7 ) REGMBC (0x1f5 ) REGMBC (0x1e21 )
981+ return ;
982+ case 'h' : CASEMBC (0x125 ) CASEMBC (0x127 ) CASEMBC (0x1e23 )
983+ CASEMBC (0x1e27 ) CASEMBC (0x1e29 ) CASEMBC (0x1e96 )
984+ regmbc ('h' ); REGMBC (0x125 ) REGMBC (0x127 )
985+ REGMBC (0x1e23 ) REGMBC (0x1e27 ) REGMBC (0x1e29 )
986+ REGMBC (0x1e96 )
833987 return ;
834988 case 'i' : case '\354' : case '\355' : case '\356' : case '\357' :
989+ CASEMBC (0x129 ) CASEMBC (0x12b ) CASEMBC (0x12d ) CASEMBC (0x12f )
990+ CASEMBC (0x1d0 ) CASEMBC (0x1ec9 )
835991 regmbc ('i' ); regmbc ('\354' ); regmbc ('\355' );
836992 regmbc ('\356' ); regmbc ('\357' );
993+ REGMBC (0x129 ) REGMBC (0x12b ) REGMBC (0x12d )
994+ REGMBC (0x12f ) REGMBC (0x1d0 ) REGMBC (0x1ec9 )
995+ return ;
996+ case 'j' : CASEMBC (0x135 ) CASEMBC (0x1f0 )
997+ regmbc ('j' ); REGMBC (0x135 ) REGMBC (0x1f0 )
998+ return ;
999+ case 'k' : CASEMBC (0x137 ) CASEMBC (0x1e9 ) CASEMBC (0x1e31 )
1000+ CASEMBC (0x1e35 )
1001+ regmbc ('k' ); REGMBC (0x137 ) REGMBC (0x1e9 )
1002+ REGMBC (0x1e31 ) REGMBC (0x1e35 )
1003+ return ;
1004+ case 'l' : CASEMBC (0x13a ) CASEMBC (0x13c ) CASEMBC (0x13e )
1005+ CASEMBC (0x140 ) CASEMBC (0x142 ) CASEMBC (0x1e3b )
1006+ regmbc ('l' ); REGMBC (0x13a ) REGMBC (0x13c )
1007+ REGMBC (0x13e ) REGMBC (0x140 ) REGMBC (0x142 )
1008+ REGMBC (0x1e3b )
1009+ return ;
1010+ case 'm' : CASEMBC (0x1e3f ) CASEMBC (0x1e41 )
1011+ regmbc ('m' ); REGMBC (0x1e3f ) REGMBC (0x1e41 )
8371012 return ;
8381013 case 'n' : case '\361' :
1014+ CASEMBC (0x144 ) CASEMBC (0x146 ) CASEMBC (0x148 ) CASEMBC (0x149 )
1015+ CASEMBC (0x1e45 ) CASEMBC (0x1e49 )
8391016 regmbc ('n' ); regmbc ('\361' );
1017+ REGMBC (0x144 ) REGMBC (0x146 ) REGMBC (0x148 )
1018+ REGMBC (0x149 ) REGMBC (0x1e45 ) REGMBC (0x1e49 )
8401019 return ;
8411020 case 'o' : case '\362' : case '\363' : case '\364' : case '\365' :
842- case '\366' :
1021+ case '\366' : case '\370' :
1022+ CASEMBC (0x14d ) CASEMBC (0x14f ) CASEMBC (0x151 ) CASEMBC (0x1a1 )
1023+ CASEMBC (0x1d2 ) CASEMBC (0x1eb ) CASEMBC (0x1ed ) CASEMBC (0x1ecf )
8431024 regmbc ('o' ); regmbc ('\362' ); regmbc ('\363' );
8441025 regmbc ('\364' ); regmbc ('\365' ); regmbc ('\366' );
1026+ regmbc ('\370' );
1027+ REGMBC (0x14d ) REGMBC (0x14f ) REGMBC (0x151 )
1028+ REGMBC (0x1a1 ) REGMBC (0x1d2 ) REGMBC (0x1eb )
1029+ REGMBC (0x1ed ) REGMBC (0x1ecf )
1030+ return ;
1031+ case 'p' : CASEMBC (0x1e55 ) CASEMBC (0x1e57 )
1032+ regmbc ('p' ); REGMBC (0x1e55 ) REGMBC (0x1e57 )
1033+ return ;
1034+ case 'r' : CASEMBC (0x155 ) CASEMBC (0x157 ) CASEMBC (0x159 )
1035+ CASEMBC (0x1e59 ) CASEMBC (0x1e5f )
1036+ regmbc ('r' ); REGMBC (0x155 ) REGMBC (0x157 ) REGMBC (0x159 )
1037+ REGMBC (0x1e59 ) REGMBC (0x1e5f )
1038+ return ;
1039+ case 's' : CASEMBC (0x15b ) CASEMBC (0x15d ) CASEMBC (0x15f )
1040+ CASEMBC (0x161 ) CASEMBC (0x1e61 )
1041+ regmbc ('s' ); REGMBC (0x15b ) REGMBC (0x15d )
1042+ REGMBC (0x15f ) REGMBC (0x161 ) REGMBC (0x1e61 )
1043+ return ;
1044+ case 't' : CASEMBC (0x163 ) CASEMBC (0x165 ) CASEMBC (0x167 )
1045+ CASEMBC (0x1e6b ) CASEMBC (0x1e6f ) CASEMBC (0x1e97 )
1046+ regmbc ('t' ); REGMBC (0x163 ) REGMBC (0x165 ) REGMBC (0x167 )
1047+ REGMBC (0x1e6b ) REGMBC (0x1e6f ) REGMBC (0x1e97 )
8451048 return ;
8461049 case 'u' : case '\371' : case '\372' : case '\373' : case '\374' :
1050+ CASEMBC (0x169 ) CASEMBC (0x16b ) CASEMBC (0x16d ) CASEMBC (0x16f )
1051+ CASEMBC (0x171 ) CASEMBC (0x173 ) CASEMBC (0x1b0 ) CASEMBC (0x1d4 )
1052+ CASEMBC (0x1ee7 )
8471053 regmbc ('u' ); regmbc ('\371' ); regmbc ('\372' );
8481054 regmbc ('\373' ); regmbc ('\374' );
1055+ REGMBC (0x169 ) REGMBC (0x16b ) REGMBC (0x16d )
1056+ REGMBC (0x16f ) REGMBC (0x171 ) REGMBC (0x173 )
1057+ REGMBC (0x1b0 ) REGMBC (0x1d4 ) REGMBC (0x1ee7 )
1058+ return ;
1059+ case 'v' : CASEMBC (0x1e7d )
1060+ regmbc ('v' ); REGMBC (0x1e7d )
1061+ return ;
1062+ case 'w' : CASEMBC (0x175 ) CASEMBC (0x1e81 ) CASEMBC (0x1e83 )
1063+ CASEMBC (0x1e85 ) CASEMBC (0x1e87 ) CASEMBC (0x1e98 )
1064+ regmbc ('w' ); REGMBC (0x175 ) REGMBC (0x1e81 )
1065+ REGMBC (0x1e83 ) REGMBC (0x1e85 ) REGMBC (0x1e87 )
1066+ REGMBC (0x1e98 )
1067+ return ;
1068+ case 'x' : CASEMBC (0x1e8b ) CASEMBC (0x1e8d )
1069+ regmbc ('x' ); REGMBC (0x1e8b ) REGMBC (0x1e8d )
8491070 return ;
8501071 case 'y' : case '\375' : case '\377' :
1072+ CASEMBC (0x177 ) CASEMBC (0x1e8f ) CASEMBC (0x1e99 )
1073+ CASEMBC (0x1ef3 ) CASEMBC (0x1ef7 ) CASEMBC (0x1ef9 )
8511074 regmbc ('y' ); regmbc ('\375' ); regmbc ('\377' );
1075+ REGMBC (0x177 ) REGMBC (0x1e8f ) REGMBC (0x1e99 )
1076+ REGMBC (0x1ef3 ) REGMBC (0x1ef7 ) REGMBC (0x1ef9 )
1077+ return ;
1078+ case 'z' : CASEMBC (0x17a ) CASEMBC (0x17c ) CASEMBC (0x17e )
1079+ CASEMBC (0x1b6 ) CASEMBC (0x1e91 ) CASEMBC (0x1e95 )
1080+ regmbc ('z' ); REGMBC (0x17a ) REGMBC (0x17c )
1081+ REGMBC (0x17e ) REGMBC (0x1b6 ) REGMBC (0x1e91 )
1082+ REGMBC (0x1e95 )
8521083 return ;
8531084 }
8541085#endif
@@ -2468,6 +2699,8 @@ regc(b)
24682699regmbc (c )
24692700 int c ;
24702701{
2702+ if (!has_mbyte && c > 0xff )
2703+ return ;
24712704 if (regcode == JUST_CALC_SIZE )
24722705 regsize += (* mb_char2len )(c );
24732706 else
@@ -2588,7 +2821,7 @@ regtail(p, val)
25882821 else
25892822 offset = (int )(val - scan );
25902823 /* When the offset uses more than 16 bits it can no longer fit in the two
2591- * bytes avaliable . Use a global flag to avoid having to check return
2824+ * bytes available . Use a global flag to avoid having to check return
25922825 * values in too many places. */
25932826 if (offset > 0xffff )
25942827 reg_toolong = TRUE;
0 commit comments