Mercurial > vim
annotate src/mbyte.c @ 34854:97b5457962ed v9.1.0296
patch 9.1.0296: regexp: engines do not handle case-folding well
Commit: https://github.com/vim/vim/commit/7a27c108e0509f3255ebdcb6558e896c223e4d23
Author: Christian Brabandt <cb@256bit.org>
Date: Tue Apr 9 22:53:19 2024 +0200
patch 9.1.0296: regexp: engines do not handle case-folding well
Problem: Regex engines do not handle case-folding well
Solution: Correctly calculate byte length of characters to skip
When the regexp engine compares two utf-8 codepoints case insensitively
it may match an adjacent character, because it assumes it can step over
as many bytes as the pattern contains.
This however is not necessarily true because of case-folding, a
multi-byte UTF-8 character can be considered equal to some single-byte
value.
Let's consider the pattern '?' and the string 's'. When comparing and
ignoring case, the single character 's' matches, and since it matches
Vim will try to step over the match (by the amount of bytes of the
pattern), assuming that since it matches, the length of both strings is
the same.
However in that case, it should only step over the single byte
value 's' so by 1 byte and try to start matching after it again. So for the
backtracking engine we need to ensure:
- we try to match the correct length for the pattern and the text
- in case of a match, we step over it correctly
The same thing can happen for the NFA engine, when skipping to the next
character to test for a match. We are skipping over the regstart
pointer, however we do not consider the case that because of
case-folding we may need to adjust the number of bytes to skip over. So
this needs to be adjusted in find_match_text() as well.
A related issue turned out, when prog->match_text is actually empty. In
that case we should try to find the next match and skip this condition.
fixes: #14294
closes: #14433
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 09 Apr 2024 23:00:08 +0200 |
parents | 9e093c96dff6 |
children | 3f8444c5a6f3 |
rev | line source |
---|---|
10042
4aead6a9b7a9
commit https://github.com/vim/vim/commit/edf3f97ae2af024708ebb4ac614227327033ca47
Christian Brabandt <cb@256bit.org>
parents:
9495
diff
changeset
|
1 /* vi:set ts=8 sts=4 sw=4 noet: |
7 | 2 * |
3 * VIM - Vi IMproved by Bram Moolenaar | |
4 * Multibyte extensions partly by Sung-Hoon Baek | |
5 * | |
6 * Do ":help uganda" in Vim to read copying and usage conditions. | |
7 * Do ":help credits" in Vim to see a list of people who contributed. | |
8 * See README.txt for an overview of the Vim source code. | |
9 */ | |
10 /* | |
11 * mbyte.c: Code specifically for handling multi-byte characters. | |
12 * | |
13 * The encoding used in the core is set with 'encoding'. When 'encoding' is | |
14 * changed, the following four variables are set (for speed). | |
15 * Currently these types of character encodings are supported: | |
16 * | |
17 * "enc_dbcs" When non-zero it tells the type of double byte character | |
18 * encoding (Chinese, Korean, Japanese, etc.). | |
19 * The cell width on the display is equal to the number of | |
20 * bytes. (exception: DBCS_JPNU with first byte 0x8e) | |
21 * Recognizing the first or second byte is difficult, it | |
22 * requires checking a byte sequence from the start. | |
23 * "enc_utf8" When TRUE use Unicode characters in UTF-8 encoding. | |
24 * The cell width on the display needs to be determined from | |
25 * the character value. | |
26 * Recognizing bytes is easy: 0xxx.xxxx is a single-byte | |
27 * char, 10xx.xxxx is a trailing byte, 11xx.xxxx is a leading | |
28 * byte of a multi-byte character. | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
29 * To make things complicated, up to six composing characters |
7 | 30 * are allowed. These are drawn on top of the first char. |
31 * For most editing the sequence of bytes with composing | |
32 * characters included is considered to be one character. | |
33 * "enc_unicode" When 2 use 16-bit Unicode characters (or UTF-16). | |
34 * When 4 use 32-but Unicode characters. | |
35 * Internally characters are stored in UTF-8 encoding to | |
36 * avoid NUL bytes. Conversion happens when doing I/O. | |
37 * "enc_utf8" will also be TRUE. | |
38 * | |
39 * "has_mbyte" is set when "enc_dbcs" or "enc_utf8" is non-zero. | |
40 * | |
41 * If none of these is TRUE, 8-bit bytes are used for a character. The | |
42 * encoding isn't currently specified (TODO). | |
43 * | |
44 * 'encoding' specifies the encoding used in the core. This is in registers, | |
45 * text manipulation, buffers, etc. Conversion has to be done when characters | |
46 * in another encoding are received or send: | |
47 * | |
48 * clipboard | |
49 * ^ | |
50 * | (2) | |
51 * V | |
52 * +---------------+ | |
53 * (1) | | (3) | |
54 * keyboard ----->| core |-----> display | |
55 * | | | |
56 * +---------------+ | |
57 * ^ | |
58 * | (4) | |
59 * V | |
60 * file | |
61 * | |
62 * (1) Typed characters arrive in the current locale. Conversion is to be | |
63 * done when 'encoding' is different from 'termencoding'. | |
64 * (2) Text will be made available with the encoding specified with | |
65 * 'encoding'. If this is not sufficient, system-specific conversion | |
66 * might be required. | |
67 * (3) For the GUI the correct font must be selected, no conversion done. | |
68 * Otherwise, conversion is to be done when 'encoding' differs from | |
69 * 'termencoding'. (Different in the GTK+ 2 port -- 'termencoding' | |
70 * is always used for both input and output and must always be set to | |
71 * "utf-8". gui_mch_init() does this automatically.) | |
72 * (4) The encoding of the file is specified with 'fileencoding'. Conversion | |
73 * is to be done when it's different from 'encoding'. | |
74 * | |
75 * The viminfo file is a special case: Only text is converted, not file names. | |
76 * Vim scripts may contain an ":encoding" command. This has an effect for | |
77 * some commands, like ":menutrans" | |
78 */ | |
79 | |
80 #include "vim.h" | |
81 | |
82 #ifdef WIN32UNIX | |
83 # ifndef WIN32_LEAN_AND_MEAN | |
84 # define WIN32_LEAN_AND_MEAN | |
85 # endif | |
5602 | 86 # if defined(FEAT_GUI) || defined(FEAT_XCLIPBOARD) |
28423
3fe127d8ede6
patch 8.2.4736: build problem for Cygwin with Motif
Bram Moolenaar <Bram@vim.org>
parents:
27827
diff
changeset
|
87 # ifdef __CYGWIN__ |
3fe127d8ede6
patch 8.2.4736: build problem for Cygwin with Motif
Bram Moolenaar <Bram@vim.org>
parents:
27827
diff
changeset
|
88 // ControlMask from <X11/X.h> (included in "vim.h") is conflicting with |
3fe127d8ede6
patch 8.2.4736: build problem for Cygwin with Motif
Bram Moolenaar <Bram@vim.org>
parents:
27827
diff
changeset
|
89 // <w32api/windows.h> (included in <X11/Xwindows.h>). |
3fe127d8ede6
patch 8.2.4736: build problem for Cygwin with Motif
Bram Moolenaar <Bram@vim.org>
parents:
27827
diff
changeset
|
90 # undef ControlMask |
3fe127d8ede6
patch 8.2.4736: build problem for Cygwin with Motif
Bram Moolenaar <Bram@vim.org>
parents:
27827
diff
changeset
|
91 # endif |
5602 | 92 # include <X11/Xwindows.h> |
93 # define WINBYTE wBYTE | |
94 # else | |
95 # include <windows.h> | |
96 # define WINBYTE BYTE | |
97 # endif | |
7 | 98 # ifdef WIN32 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
99 # undef WIN32 // Some windows.h define WIN32, we don't want that here. |
7 | 100 # endif |
5602 | 101 #else |
102 # define WINBYTE BYTE | |
7 | 103 #endif |
104 | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
105 #if (defined(MSWIN) || defined(WIN32UNIX)) && !defined(__MINGW32__) |
7 | 106 # include <winnls.h> |
107 #endif | |
108 | |
109 #ifdef FEAT_GUI_X11 | |
110 # include <X11/Intrinsic.h> | |
111 #endif | |
112 #ifdef X_LOCALE | |
12716
351cf7c67bbe
patch 8.0.1236: Mac features are confusing
Christian Brabandt <cb@256bit.org>
parents:
12650
diff
changeset
|
113 # include <X11/Xlocale.h> |
351cf7c67bbe
patch 8.0.1236: Mac features are confusing
Christian Brabandt <cb@256bit.org>
parents:
12650
diff
changeset
|
114 # if !defined(HAVE_MBLEN) && !defined(mblen) |
351cf7c67bbe
patch 8.0.1236: Mac features are confusing
Christian Brabandt <cb@256bit.org>
parents:
12650
diff
changeset
|
115 # define mblen _Xmblen |
351cf7c67bbe
patch 8.0.1236: Mac features are confusing
Christian Brabandt <cb@256bit.org>
parents:
12650
diff
changeset
|
116 # endif |
7 | 117 #endif |
118 | |
119 #ifdef HAVE_WCHAR_H | |
120 # include <wchar.h> | |
121 #endif | |
122 | |
123 #if 0 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
124 // This has been disabled, because several people reported problems with the |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
125 // wcwidth() and iswprint() library functions, esp. for Hebrew. |
7 | 126 # ifdef __STDC_ISO_10646__ |
127 # define USE_WCHAR_FUNCTIONS | |
128 # endif | |
129 #endif | |
130 | |
7803
37c929c4a073
commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents:
7734
diff
changeset
|
131 static int dbcs_char2len(int c); |
37c929c4a073
commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents:
7734
diff
changeset
|
132 static int dbcs_char2bytes(int c, char_u *buf); |
37c929c4a073
commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents:
7734
diff
changeset
|
133 static int dbcs_ptr2len(char_u *p); |
37c929c4a073
commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents:
7734
diff
changeset
|
134 static int dbcs_ptr2len_len(char_u *p, int size); |
37c929c4a073
commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents:
7734
diff
changeset
|
135 static int utf_ptr2cells_len(char_u *p, int size); |
37c929c4a073
commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents:
7734
diff
changeset
|
136 static int dbcs_char2cells(int c); |
37c929c4a073
commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents:
7734
diff
changeset
|
137 static int dbcs_ptr2cells_len(char_u *p, int size); |
37c929c4a073
commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents:
7734
diff
changeset
|
138 static int dbcs_ptr2char(char_u *p); |
18051
d1e77015f60b
patch 8.1.2021: some global functions can be local to the file
Bram Moolenaar <Bram@vim.org>
parents:
18014
diff
changeset
|
139 static int dbcs_head_off(char_u *base, char_u *p); |
21973
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
140 #ifdef FEAT_EVAL |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
141 static int cw_value(int c); |
21973
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
142 #endif |
7 | 143 |
2015 | 144 /* |
145 * Lookup table to quickly get the length in bytes of a UTF-8 character from | |
146 * the first byte of a UTF-8 string. | |
147 * Bytes which are illegal when used as the first byte have a 1. | |
148 * The NUL byte has length 1. | |
149 */ | |
7 | 150 static char utf8len_tab[256] = |
151 { | |
152 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
153 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
154 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
155 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
2015 | 156 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
157 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
7 | 158 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, |
159 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1, | |
160 }; | |
161 | |
162 /* | |
2015 | 163 * Like utf8len_tab above, but using a zero for illegal lead bytes. |
164 */ | |
165 static char utf8len_tab_zero[256] = | |
166 { | |
167 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
168 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
169 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
170 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, | |
171 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, | |
172 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, | |
173 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, | |
174 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0, | |
175 }; | |
176 | |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
177 |
7 | 178 /* |
179 * Canonical encoding names and their properties. | |
180 * "iso-8859-n" is handled by enc_canonize() directly. | |
181 */ | |
182 static struct | |
183 { char *name; int prop; int codepage;} | |
184 enc_canon_table[] = | |
185 { | |
186 #define IDX_LATIN_1 0 | |
187 {"latin1", ENC_8BIT + ENC_LATIN1, 1252}, | |
188 #define IDX_ISO_2 1 | |
189 {"iso-8859-2", ENC_8BIT, 0}, | |
190 #define IDX_ISO_3 2 | |
191 {"iso-8859-3", ENC_8BIT, 0}, | |
192 #define IDX_ISO_4 3 | |
193 {"iso-8859-4", ENC_8BIT, 0}, | |
194 #define IDX_ISO_5 4 | |
195 {"iso-8859-5", ENC_8BIT, 0}, | |
196 #define IDX_ISO_6 5 | |
197 {"iso-8859-6", ENC_8BIT, 0}, | |
198 #define IDX_ISO_7 6 | |
199 {"iso-8859-7", ENC_8BIT, 0}, | |
407 | 200 #define IDX_ISO_8 7 |
7 | 201 {"iso-8859-8", ENC_8BIT, 0}, |
407 | 202 #define IDX_ISO_9 8 |
7 | 203 {"iso-8859-9", ENC_8BIT, 0}, |
407 | 204 #define IDX_ISO_10 9 |
7 | 205 {"iso-8859-10", ENC_8BIT, 0}, |
407 | 206 #define IDX_ISO_11 10 |
7 | 207 {"iso-8859-11", ENC_8BIT, 0}, |
407 | 208 #define IDX_ISO_13 11 |
7 | 209 {"iso-8859-13", ENC_8BIT, 0}, |
407 | 210 #define IDX_ISO_14 12 |
7 | 211 {"iso-8859-14", ENC_8BIT, 0}, |
407 | 212 #define IDX_ISO_15 13 |
26 | 213 {"iso-8859-15", ENC_8BIT + ENC_LATIN9, 0}, |
407 | 214 #define IDX_KOI8_R 14 |
7 | 215 {"koi8-r", ENC_8BIT, 0}, |
407 | 216 #define IDX_KOI8_U 15 |
7 | 217 {"koi8-u", ENC_8BIT, 0}, |
407 | 218 #define IDX_UTF8 16 |
7 | 219 {"utf-8", ENC_UNICODE, 0}, |
407 | 220 #define IDX_UCS2 17 |
7 | 221 {"ucs-2", ENC_UNICODE + ENC_ENDIAN_B + ENC_2BYTE, 0}, |
407 | 222 #define IDX_UCS2LE 18 |
7 | 223 {"ucs-2le", ENC_UNICODE + ENC_ENDIAN_L + ENC_2BYTE, 0}, |
407 | 224 #define IDX_UTF16 19 |
7 | 225 {"utf-16", ENC_UNICODE + ENC_ENDIAN_B + ENC_2WORD, 0}, |
407 | 226 #define IDX_UTF16LE 20 |
7 | 227 {"utf-16le", ENC_UNICODE + ENC_ENDIAN_L + ENC_2WORD, 0}, |
407 | 228 #define IDX_UCS4 21 |
7 | 229 {"ucs-4", ENC_UNICODE + ENC_ENDIAN_B + ENC_4BYTE, 0}, |
407 | 230 #define IDX_UCS4LE 22 |
7 | 231 {"ucs-4le", ENC_UNICODE + ENC_ENDIAN_L + ENC_4BYTE, 0}, |
407 | 232 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
233 // For debugging DBCS encoding on Unix. |
407 | 234 #define IDX_DEBUG 23 |
7 | 235 {"debug", ENC_DBCS, DBCS_DEBUG}, |
407 | 236 #define IDX_EUC_JP 24 |
7 | 237 {"euc-jp", ENC_DBCS, DBCS_JPNU}, |
407 | 238 #define IDX_SJIS 25 |
7 | 239 {"sjis", ENC_DBCS, DBCS_JPN}, |
407 | 240 #define IDX_EUC_KR 26 |
7 | 241 {"euc-kr", ENC_DBCS, DBCS_KORU}, |
407 | 242 #define IDX_EUC_CN 27 |
7 | 243 {"euc-cn", ENC_DBCS, DBCS_CHSU}, |
407 | 244 #define IDX_EUC_TW 28 |
7 | 245 {"euc-tw", ENC_DBCS, DBCS_CHTU}, |
407 | 246 #define IDX_BIG5 29 |
7 | 247 {"big5", ENC_DBCS, DBCS_CHT}, |
407 | 248 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
249 // MS-DOS and MS-Windows codepages are included here, so that they can be |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
250 // used on Unix too. Most of them are similar to ISO-8859 encodings, but |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
251 // not exactly the same. |
407 | 252 #define IDX_CP437 30 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
253 {"cp437", ENC_8BIT, 437}, // like iso-8859-1 |
407 | 254 #define IDX_CP737 31 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
255 {"cp737", ENC_8BIT, 737}, // like iso-8859-7 |
407 | 256 #define IDX_CP775 32 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
257 {"cp775", ENC_8BIT, 775}, // Baltic |
407 | 258 #define IDX_CP850 33 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
259 {"cp850", ENC_8BIT, 850}, // like iso-8859-4 |
407 | 260 #define IDX_CP852 34 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
261 {"cp852", ENC_8BIT, 852}, // like iso-8859-1 |
407 | 262 #define IDX_CP855 35 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
263 {"cp855", ENC_8BIT, 855}, // like iso-8859-2 |
407 | 264 #define IDX_CP857 36 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
265 {"cp857", ENC_8BIT, 857}, // like iso-8859-5 |
407 | 266 #define IDX_CP860 37 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
267 {"cp860", ENC_8BIT, 860}, // like iso-8859-9 |
407 | 268 #define IDX_CP861 38 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
269 {"cp861", ENC_8BIT, 861}, // like iso-8859-1 |
407 | 270 #define IDX_CP862 39 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
271 {"cp862", ENC_8BIT, 862}, // like iso-8859-1 |
407 | 272 #define IDX_CP863 40 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
273 {"cp863", ENC_8BIT, 863}, // like iso-8859-8 |
407 | 274 #define IDX_CP865 41 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
275 {"cp865", ENC_8BIT, 865}, // like iso-8859-1 |
407 | 276 #define IDX_CP866 42 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
277 {"cp866", ENC_8BIT, 866}, // like iso-8859-5 |
407 | 278 #define IDX_CP869 43 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
279 {"cp869", ENC_8BIT, 869}, // like iso-8859-7 |
407 | 280 #define IDX_CP874 44 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
281 {"cp874", ENC_8BIT, 874}, // Thai |
407 | 282 #define IDX_CP932 45 |
283 {"cp932", ENC_DBCS, DBCS_JPN}, | |
284 #define IDX_CP936 46 | |
285 {"cp936", ENC_DBCS, DBCS_CHS}, | |
286 #define IDX_CP949 47 | |
287 {"cp949", ENC_DBCS, DBCS_KOR}, | |
288 #define IDX_CP950 48 | |
289 {"cp950", ENC_DBCS, DBCS_CHT}, | |
290 #define IDX_CP1250 49 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
291 {"cp1250", ENC_8BIT, 1250}, // Czech, Polish, etc. |
407 | 292 #define IDX_CP1251 50 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
293 {"cp1251", ENC_8BIT, 1251}, // Cyrillic |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
294 // cp1252 is considered to be equal to latin1 |
407 | 295 #define IDX_CP1253 51 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
296 {"cp1253", ENC_8BIT, 1253}, // Greek |
407 | 297 #define IDX_CP1254 52 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
298 {"cp1254", ENC_8BIT, 1254}, // Turkish |
407 | 299 #define IDX_CP1255 53 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
300 {"cp1255", ENC_8BIT, 1255}, // Hebrew |
407 | 301 #define IDX_CP1256 54 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
302 {"cp1256", ENC_8BIT, 1256}, // Arabic |
407 | 303 #define IDX_CP1257 55 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
304 {"cp1257", ENC_8BIT, 1257}, // Baltic |
407 | 305 #define IDX_CP1258 56 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
306 {"cp1258", ENC_8BIT, 1258}, // Vietnamese |
407 | 307 |
308 #define IDX_MACROMAN 57 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
309 {"macroman", ENC_8BIT + ENC_MACROMAN, 0}, // Mac OS |
890 | 310 #define IDX_DECMCS 58 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
311 {"dec-mcs", ENC_8BIT, 0}, // DEC MCS |
890 | 312 #define IDX_HPROMAN8 59 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
313 {"hp-roman8", ENC_8BIT, 0}, // HP Roman8 |
890 | 314 #define IDX_COUNT 60 |
7 | 315 }; |
316 | |
317 /* | |
318 * Aliases for encoding names. | |
319 */ | |
320 static struct | |
321 { char *name; int canon;} | |
322 enc_alias_table[] = | |
323 { | |
324 {"ansi", IDX_LATIN_1}, | |
325 {"iso-8859-1", IDX_LATIN_1}, | |
27827
0a0ad6453e67
patch 8.2.4439: accepting "iso8859" 'encoding' as "iso-8859-"
Bram Moolenaar <Bram@vim.org>
parents:
26917
diff
changeset
|
326 {"iso-8859", IDX_LATIN_1}, |
7 | 327 {"latin2", IDX_ISO_2}, |
328 {"latin3", IDX_ISO_3}, | |
329 {"latin4", IDX_ISO_4}, | |
330 {"cyrillic", IDX_ISO_5}, | |
331 {"arabic", IDX_ISO_6}, | |
332 {"greek", IDX_ISO_7}, | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
333 #ifdef MSWIN |
7 | 334 {"hebrew", IDX_CP1255}, |
335 #else | |
336 {"hebrew", IDX_ISO_8}, | |
337 #endif | |
338 {"latin5", IDX_ISO_9}, | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
339 {"turkish", IDX_ISO_9}, // ? |
7 | 340 {"latin6", IDX_ISO_10}, |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
341 {"nordic", IDX_ISO_10}, // ? |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
342 {"thai", IDX_ISO_11}, // ? |
7 | 343 {"latin7", IDX_ISO_13}, |
344 {"latin8", IDX_ISO_14}, | |
345 {"latin9", IDX_ISO_15}, | |
346 {"utf8", IDX_UTF8}, | |
347 {"unicode", IDX_UCS2}, | |
348 {"ucs2", IDX_UCS2}, | |
349 {"ucs2be", IDX_UCS2}, | |
350 {"ucs-2be", IDX_UCS2}, | |
351 {"ucs2le", IDX_UCS2LE}, | |
352 {"utf16", IDX_UTF16}, | |
353 {"utf16be", IDX_UTF16}, | |
354 {"utf-16be", IDX_UTF16}, | |
355 {"utf16le", IDX_UTF16LE}, | |
356 {"ucs4", IDX_UCS4}, | |
357 {"ucs4be", IDX_UCS4}, | |
358 {"ucs-4be", IDX_UCS4}, | |
359 {"ucs4le", IDX_UCS4LE}, | |
1540 | 360 {"utf32", IDX_UCS4}, |
361 {"utf-32", IDX_UCS4}, | |
362 {"utf32be", IDX_UCS4}, | |
363 {"utf-32be", IDX_UCS4}, | |
364 {"utf32le", IDX_UCS4LE}, | |
365 {"utf-32le", IDX_UCS4LE}, | |
7 | 366 {"932", IDX_CP932}, |
367 {"949", IDX_CP949}, | |
368 {"936", IDX_CP936}, | |
932 | 369 {"gbk", IDX_CP936}, |
7 | 370 {"950", IDX_CP950}, |
371 {"eucjp", IDX_EUC_JP}, | |
372 {"unix-jis", IDX_EUC_JP}, | |
373 {"ujis", IDX_EUC_JP}, | |
374 {"shift-jis", IDX_SJIS}, | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
375 {"pck", IDX_SJIS}, // Sun: PCK |
7 | 376 {"euckr", IDX_EUC_KR}, |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
377 {"5601", IDX_EUC_KR}, // Sun: KS C 5601 |
7 | 378 {"euccn", IDX_EUC_CN}, |
379 {"gb2312", IDX_EUC_CN}, | |
380 {"euctw", IDX_EUC_TW}, | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
381 #if defined(MSWIN) || defined(WIN32UNIX) || defined(MACOS_X) |
7 | 382 {"japan", IDX_CP932}, |
383 {"korea", IDX_CP949}, | |
384 {"prc", IDX_CP936}, | |
385 {"chinese", IDX_CP936}, | |
386 {"taiwan", IDX_CP950}, | |
387 {"big5", IDX_CP950}, | |
388 #else | |
389 {"japan", IDX_EUC_JP}, | |
390 {"korea", IDX_EUC_KR}, | |
391 {"prc", IDX_EUC_CN}, | |
392 {"chinese", IDX_EUC_CN}, | |
393 {"taiwan", IDX_EUC_TW}, | |
394 {"cp950", IDX_BIG5}, | |
395 {"950", IDX_BIG5}, | |
396 #endif | |
397 {"mac", IDX_MACROMAN}, | |
890 | 398 {"mac-roman", IDX_MACROMAN}, |
7 | 399 {NULL, 0} |
400 }; | |
401 | |
402 #ifndef CP_UTF8 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
403 # define CP_UTF8 65001 // magic number from winnls.h |
7 | 404 #endif |
405 | |
406 /* | |
407 * Find encoding "name" in the list of canonical encoding names. | |
408 * Returns -1 if not found. | |
409 */ | |
410 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
411 enc_canon_search(char_u *name) |
7 | 412 { |
413 int i; | |
414 | |
415 for (i = 0; i < IDX_COUNT; ++i) | |
416 if (STRCMP(name, enc_canon_table[i].name) == 0) | |
417 return i; | |
418 return -1; | |
419 } | |
420 | |
421 | |
422 /* | |
423 * Find canonical encoding "name" in the list and return its properties. | |
424 * Returns 0 if not found. | |
425 */ | |
426 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
427 enc_canon_props(char_u *name) |
7 | 428 { |
429 int i; | |
430 | |
431 i = enc_canon_search(name); | |
432 if (i >= 0) | |
433 return enc_canon_table[i].prop; | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
434 #ifdef MSWIN |
7 | 435 if (name[0] == 'c' && name[1] == 'p' && VIM_ISDIGIT(name[2])) |
436 { | |
437 CPINFO cpinfo; | |
438 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
439 // Get info on this codepage to find out what it is. |
8080
b6cb94ad97a4
commit https://github.com/vim/vim/commit/6aa2cd4be287f35f95f35c2cec6d5a24f53c4d3c
Christian Brabandt <cb@256bit.org>
parents:
7827
diff
changeset
|
440 if (GetCPInfo(atoi((char *)name + 2), &cpinfo) != 0) |
7 | 441 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
442 if (cpinfo.MaxCharSize == 1) // some single-byte encoding |
7 | 443 return ENC_8BIT; |
444 if (cpinfo.MaxCharSize == 2 | |
445 && (cpinfo.LeadByte[0] != 0 || cpinfo.LeadByte[1] != 0)) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
446 // must be a DBCS encoding |
7 | 447 return ENC_DBCS; |
448 } | |
449 return 0; | |
450 } | |
451 #endif | |
452 if (STRNCMP(name, "2byte-", 6) == 0) | |
453 return ENC_DBCS; | |
454 if (STRNCMP(name, "8bit-", 5) == 0 || STRNCMP(name, "iso-8859-", 9) == 0) | |
455 return ENC_8BIT; | |
456 return 0; | |
457 } | |
458 | |
459 /* | |
460 * Set up for using multi-byte characters. | |
461 * Called in three cases: | |
462 * - by main() to initialize (p_enc == NULL) | |
463 * - by set_init_1() after 'encoding' was set to its default. | |
464 * - by do_set() when 'encoding' has been set. | |
465 * p_enc must have been passed through enc_canonize() already. | |
466 * Sets the "enc_unicode", "enc_utf8", "enc_dbcs" and "has_mbyte" flags. | |
467 * Fills mb_bytelen_tab[] and returns NULL when there are no problems. | |
468 * When there is something wrong: Returns an error message and doesn't change | |
469 * anything. | |
470 */ | |
15470
55ccc2d353bd
patch 8.1.0743: giving error messages is not flexible
Bram Moolenaar <Bram@vim.org>
parents:
14862
diff
changeset
|
471 char * |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
472 mb_init(void) |
7 | 473 { |
474 int i; | |
475 int idx; | |
476 int n; | |
477 int enc_dbcs_new = 0; | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
478 #if defined(USE_ICONV) && !defined(MSWIN) && !defined(WIN32UNIX) \ |
12716
351cf7c67bbe
patch 8.0.1236: Mac features are confusing
Christian Brabandt <cb@256bit.org>
parents:
12650
diff
changeset
|
479 && !defined(MACOS_CONVERT) |
7 | 480 # define LEN_FROM_CONV |
481 vimconv_T vimconv; | |
482 char_u *p; | |
483 #endif | |
484 | |
485 if (p_enc == NULL) | |
486 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
487 // Just starting up: set the whole table to one's. |
7 | 488 for (i = 0; i < 256; ++i) |
489 mb_bytelen_tab[i] = 1; | |
490 input_conv.vc_type = CONV_NONE; | |
491 input_conv.vc_factor = 1; | |
492 output_conv.vc_type = CONV_NONE; | |
493 return NULL; | |
494 } | |
495 | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
496 #ifdef MSWIN |
7 | 497 if (p_enc[0] == 'c' && p_enc[1] == 'p' && VIM_ISDIGIT(p_enc[2])) |
498 { | |
499 CPINFO cpinfo; | |
500 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
501 // Get info on this codepage to find out what it is. |
8080
b6cb94ad97a4
commit https://github.com/vim/vim/commit/6aa2cd4be287f35f95f35c2cec6d5a24f53c4d3c
Christian Brabandt <cb@256bit.org>
parents:
7827
diff
changeset
|
502 if (GetCPInfo(atoi((char *)p_enc + 2), &cpinfo) != 0) |
7 | 503 { |
504 if (cpinfo.MaxCharSize == 1) | |
505 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
506 // some single-byte encoding |
7 | 507 enc_unicode = 0; |
508 enc_utf8 = FALSE; | |
509 } | |
510 else if (cpinfo.MaxCharSize == 2 | |
511 && (cpinfo.LeadByte[0] != 0 || cpinfo.LeadByte[1] != 0)) | |
512 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
513 // must be a DBCS encoding, check below |
8080
b6cb94ad97a4
commit https://github.com/vim/vim/commit/6aa2cd4be287f35f95f35c2cec6d5a24f53c4d3c
Christian Brabandt <cb@256bit.org>
parents:
7827
diff
changeset
|
514 enc_dbcs_new = atoi((char *)p_enc + 2); |
7 | 515 } |
516 else | |
517 goto codepage_invalid; | |
518 } | |
519 else if (GetLastError() == ERROR_INVALID_PARAMETER) | |
520 { | |
521 codepage_invalid: | |
26917
d91aea2a612c
patch 8.2.3987: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26877
diff
changeset
|
522 return N_(e_not_valid_codepage); |
7 | 523 } |
524 } | |
525 #endif | |
526 else if (STRNCMP(p_enc, "8bit-", 5) == 0 | |
527 || STRNCMP(p_enc, "iso-8859-", 9) == 0) | |
528 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
529 // Accept any "8bit-" or "iso-8859-" name. |
7 | 530 enc_unicode = 0; |
531 enc_utf8 = FALSE; | |
532 } | |
533 else if (STRNCMP(p_enc, "2byte-", 6) == 0) | |
534 { | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
535 #ifdef MSWIN |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
536 // Windows: accept only valid codepage numbers, check below. |
7 | 537 if (p_enc[6] != 'c' || p_enc[7] != 'p' |
8080
b6cb94ad97a4
commit https://github.com/vim/vim/commit/6aa2cd4be287f35f95f35c2cec6d5a24f53c4d3c
Christian Brabandt <cb@256bit.org>
parents:
7827
diff
changeset
|
538 || (enc_dbcs_new = atoi((char *)p_enc + 8)) == 0) |
26865
bce848ec8b1b
patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26592
diff
changeset
|
539 return e_invalid_argument; |
7 | 540 #else |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
541 // Unix: accept any "2byte-" name, assume current locale. |
7 | 542 enc_dbcs_new = DBCS_2BYTE; |
543 #endif | |
544 } | |
545 else if ((idx = enc_canon_search(p_enc)) >= 0) | |
546 { | |
547 i = enc_canon_table[idx].prop; | |
548 if (i & ENC_UNICODE) | |
549 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
550 // Unicode |
7 | 551 enc_utf8 = TRUE; |
552 if (i & (ENC_2BYTE | ENC_2WORD)) | |
553 enc_unicode = 2; | |
554 else if (i & ENC_4BYTE) | |
555 enc_unicode = 4; | |
556 else | |
557 enc_unicode = 0; | |
558 } | |
559 else if (i & ENC_DBCS) | |
560 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
561 // 2byte, handle below |
7 | 562 enc_dbcs_new = enc_canon_table[idx].codepage; |
563 } | |
564 else | |
565 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
566 // Must be 8-bit. |
7 | 567 enc_unicode = 0; |
568 enc_utf8 = FALSE; | |
569 } | |
570 } | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
571 else // Don't know what encoding this is, reject it. |
26865
bce848ec8b1b
patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26592
diff
changeset
|
572 return e_invalid_argument; |
7 | 573 |
574 if (enc_dbcs_new != 0) | |
575 { | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
576 #ifdef MSWIN |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
577 // Check if the DBCS code page is OK. |
7 | 578 if (!IsValidCodePage(enc_dbcs_new)) |
579 goto codepage_invalid; | |
580 #endif | |
581 enc_unicode = 0; | |
582 enc_utf8 = FALSE; | |
583 } | |
584 enc_dbcs = enc_dbcs_new; | |
585 has_mbyte = (enc_dbcs != 0 || enc_utf8); | |
586 | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
587 #if defined(MSWIN) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD) |
7 | 588 enc_codepage = encname2codepage(p_enc); |
26 | 589 enc_latin9 = (STRCMP(p_enc, "iso-8859-15") == 0); |
7 | 590 #endif |
591 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
592 // Detect an encoding that uses latin1 characters. |
492 | 593 enc_latin1like = (enc_utf8 || STRCMP(p_enc, "latin1") == 0 |
594 || STRCMP(p_enc, "iso-8859-15") == 0); | |
595 | |
7 | 596 /* |
597 * Set the function pointers. | |
598 */ | |
599 if (enc_utf8) | |
600 { | |
474 | 601 mb_ptr2len = utfc_ptr2len; |
1903 | 602 mb_ptr2len_len = utfc_ptr2len_len; |
7 | 603 mb_char2len = utf_char2len; |
604 mb_char2bytes = utf_char2bytes; | |
605 mb_ptr2cells = utf_ptr2cells; | |
1903 | 606 mb_ptr2cells_len = utf_ptr2cells_len; |
7 | 607 mb_char2cells = utf_char2cells; |
608 mb_off2cells = utf_off2cells; | |
609 mb_ptr2char = utf_ptr2char; | |
610 mb_head_off = utf_head_off; | |
611 } | |
612 else if (enc_dbcs != 0) | |
613 { | |
474 | 614 mb_ptr2len = dbcs_ptr2len; |
1903 | 615 mb_ptr2len_len = dbcs_ptr2len_len; |
7 | 616 mb_char2len = dbcs_char2len; |
617 mb_char2bytes = dbcs_char2bytes; | |
618 mb_ptr2cells = dbcs_ptr2cells; | |
1903 | 619 mb_ptr2cells_len = dbcs_ptr2cells_len; |
7 | 620 mb_char2cells = dbcs_char2cells; |
621 mb_off2cells = dbcs_off2cells; | |
622 mb_ptr2char = dbcs_ptr2char; | |
623 mb_head_off = dbcs_head_off; | |
624 } | |
625 else | |
626 { | |
474 | 627 mb_ptr2len = latin_ptr2len; |
1903 | 628 mb_ptr2len_len = latin_ptr2len_len; |
7 | 629 mb_char2len = latin_char2len; |
630 mb_char2bytes = latin_char2bytes; | |
631 mb_ptr2cells = latin_ptr2cells; | |
1903 | 632 mb_ptr2cells_len = latin_ptr2cells_len; |
7 | 633 mb_char2cells = latin_char2cells; |
634 mb_off2cells = latin_off2cells; | |
635 mb_ptr2char = latin_ptr2char; | |
636 mb_head_off = latin_head_off; | |
637 } | |
638 | |
639 /* | |
640 * Fill the mb_bytelen_tab[] for MB_BYTE2LEN(). | |
641 */ | |
642 #ifdef LEN_FROM_CONV | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
643 // When 'encoding' is different from the current locale mblen() won't |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
644 // work. Use conversion to "utf-8" instead. |
7 | 645 vimconv.vc_type = CONV_NONE; |
646 if (enc_dbcs) | |
647 { | |
648 p = enc_locale(); | |
649 if (p == NULL || STRCMP(p, p_enc) != 0) | |
650 { | |
651 convert_setup(&vimconv, p_enc, (char_u *)"utf-8"); | |
652 vimconv.vc_fail = TRUE; | |
653 } | |
654 vim_free(p); | |
655 } | |
656 #endif | |
657 | |
658 for (i = 0; i < 256; ++i) | |
659 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
660 // Our own function to reliably check the length of UTF-8 characters, |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
661 // independent of mblen(). |
7 | 662 if (enc_utf8) |
663 n = utf8len_tab[i]; | |
664 else if (enc_dbcs == 0) | |
665 n = 1; | |
666 else | |
667 { | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
668 #if defined(MSWIN) || defined(WIN32UNIX) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
669 // enc_dbcs is set by setting 'fileencoding'. It becomes a Windows |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
670 // CodePage identifier, which we can pass directly in to Windows |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
671 // API |
5602 | 672 n = IsDBCSLeadByteEx(enc_dbcs, (WINBYTE)i) ? 2 : 1; |
7 | 673 #else |
12716
351cf7c67bbe
patch 8.0.1236: Mac features are confusing
Christian Brabandt <cb@256bit.org>
parents:
12650
diff
changeset
|
674 # if defined(__amigaos4__) || defined(__ANDROID__) || \ |
351cf7c67bbe
patch 8.0.1236: Mac features are confusing
Christian Brabandt <cb@256bit.org>
parents:
12650
diff
changeset
|
675 !(defined(HAVE_MBLEN) || defined(X_LOCALE)) |
7 | 676 /* |
677 * if mblen() is not available, character which MSB is turned on | |
678 * are treated as leading byte character. (note : This assumption | |
679 * is not always true.) | |
680 */ | |
681 n = (i & 0x80) ? 2 : 1; | |
682 # else | |
3549 | 683 char buf[MB_MAXBYTES + 1]; |
12716
351cf7c67bbe
patch 8.0.1236: Mac features are confusing
Christian Brabandt <cb@256bit.org>
parents:
12650
diff
changeset
|
684 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
685 if (i == NUL) // just in case mblen() can't handle "" |
7 | 686 n = 1; |
687 else | |
688 { | |
689 buf[0] = i; | |
690 buf[1] = 0; | |
12716
351cf7c67bbe
patch 8.0.1236: Mac features are confusing
Christian Brabandt <cb@256bit.org>
parents:
12650
diff
changeset
|
691 # ifdef LEN_FROM_CONV |
7 | 692 if (vimconv.vc_type != CONV_NONE) |
693 { | |
694 /* | |
695 * string_convert() should fail when converting the first | |
696 * byte of a double-byte character. | |
697 */ | |
698 p = string_convert(&vimconv, (char_u *)buf, NULL); | |
699 if (p != NULL) | |
700 { | |
701 vim_free(p); | |
702 n = 1; | |
703 } | |
704 else | |
705 n = 2; | |
706 } | |
707 else | |
12716
351cf7c67bbe
patch 8.0.1236: Mac features are confusing
Christian Brabandt <cb@256bit.org>
parents:
12650
diff
changeset
|
708 # endif |
7 | 709 { |
710 /* | |
711 * mblen() should return -1 for invalid (means the leading | |
712 * multibyte) character. However there are some platforms | |
713 * where mblen() returns 0 for invalid character. | |
714 * Therefore, following condition includes 0. | |
715 */ | |
14730
193471015e1a
patch 8.1.0377: xdiff doesn't use the Vim memory allocation functions
Christian Brabandt <cb@256bit.org>
parents:
14712
diff
changeset
|
716 vim_ignored = mblen(NULL, 0); // First reset the state. |
7 | 717 if (mblen(buf, (size_t)1) <= 0) |
718 n = 2; | |
719 else | |
720 n = 1; | |
721 } | |
722 } | |
723 # endif | |
724 #endif | |
725 } | |
726 | |
727 mb_bytelen_tab[i] = n; | |
728 } | |
729 | |
730 #ifdef LEN_FROM_CONV | |
731 convert_setup(&vimconv, NULL, NULL); | |
732 #endif | |
733 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
734 // The cell width depends on the type of multi-byte characters. |
7 | 735 (void)init_chartab(); |
736 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
737 // When enc_utf8 is set or reset, (de)allocate ScreenLinesUC[] |
7 | 738 screenalloc(FALSE); |
739 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
740 // When using Unicode, set default for 'fileencodings'. |
7 | 741 if (enc_utf8 && !option_was_set((char_u *)"fencs")) |
24912
02fa8d72e4e3
patch 8.2.2993: 'fileencodings' default value should depend on 'encoding'
Bram Moolenaar <Bram@vim.org>
parents:
24790
diff
changeset
|
742 set_fencs_unicode(); |
694 | 743 |
7 | 744 #if defined(HAVE_BIND_TEXTDOMAIN_CODESET) && defined(FEAT_GETTEXT) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
745 // GNU gettext 0.10.37 supports this feature: set the codeset used for |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
746 // translated messages independently from the current locale. |
7 | 747 (void)bind_textdomain_codeset(VIMPACKAGE, |
748 enc_utf8 ? "utf-8" : (char *)p_enc); | |
749 #endif | |
750 | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
751 #ifdef MSWIN |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
752 // When changing 'encoding' while starting up, then convert the command |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
753 // line arguments from the active codepage to 'encoding'. |
23 | 754 if (starting != 0) |
755 fix_arg_enc(); | |
756 #endif | |
757 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
758 // Fire an autocommand to let people do custom font setup. This must be |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
759 // after Vim has been setup for the new encoding. |
7 | 760 apply_autocmds(EVENT_ENCODINGCHANGED, NULL, (char_u *)"", FALSE, curbuf); |
761 | |
740 | 762 #ifdef FEAT_SPELL |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
763 // Need to reload spell dictionaries |
236 | 764 spell_reload(); |
765 #endif | |
766 | |
7 | 767 return NULL; |
768 } | |
769 | |
770 /* | |
771 * Return the size of the BOM for the current buffer: | |
772 * 0 - no BOM | |
773 * 2 - UCS-2 or UTF-16 BOM | |
774 * 4 - UCS-4 BOM | |
775 * 3 - UTF-8 BOM | |
776 */ | |
777 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
778 bomb_size(void) |
7 | 779 { |
780 int n = 0; | |
781 | |
782 if (curbuf->b_p_bomb && !curbuf->b_p_bin) | |
783 { | |
784 if (*curbuf->b_p_fenc == NUL) | |
785 { | |
786 if (enc_utf8) | |
787 { | |
788 if (enc_unicode != 0) | |
789 n = enc_unicode; | |
790 else | |
791 n = 3; | |
792 } | |
793 } | |
794 else if (STRCMP(curbuf->b_p_fenc, "utf-8") == 0) | |
795 n = 3; | |
796 else if (STRNCMP(curbuf->b_p_fenc, "ucs-2", 5) == 0 | |
797 || STRNCMP(curbuf->b_p_fenc, "utf-16", 6) == 0) | |
798 n = 2; | |
799 else if (STRNCMP(curbuf->b_p_fenc, "ucs-4", 5) == 0) | |
800 n = 4; | |
801 } | |
802 return n; | |
803 } | |
804 | |
15555
d89c5b339c2a
patch 8.1.0785: depending on the configuration some functions are unused
Bram Moolenaar <Bram@vim.org>
parents:
15543
diff
changeset
|
805 #if defined(FEAT_QUICKFIX) || defined(PROTO) |
7 | 806 /* |
3002 | 807 * Remove all BOM from "s" by moving remaining text. |
808 */ | |
809 void | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
810 remove_bom(char_u *s) |
3002 | 811 { |
31728
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
812 if (!enc_utf8) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
813 return; |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
814 |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
815 char_u *p = s; |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
816 |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
817 while ((p = vim_strbyte(p, 0xef)) != NULL) |
3002 | 818 { |
31728
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
819 if (p[1] == 0xbb && p[2] == 0xbf) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
820 STRMOVE(p, p + 3); |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
821 else |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
822 ++p; |
3002 | 823 } |
824 } | |
15555
d89c5b339c2a
patch 8.1.0785: depending on the configuration some functions are unused
Bram Moolenaar <Bram@vim.org>
parents:
15543
diff
changeset
|
825 #endif |
3002 | 826 |
827 /* | |
7 | 828 * Get class of pointer: |
829 * 0 for blank or NUL | |
830 * 1 for punctuation | |
831 * 2 for an (ASCII) word character | |
832 * >2 for other word characters | |
833 */ | |
834 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
835 mb_get_class(char_u *p) |
7 | 836 { |
4069 | 837 return mb_get_class_buf(p, curbuf); |
838 } | |
839 | |
840 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
841 mb_get_class_buf(char_u *p, buf_T *buf) |
4069 | 842 { |
7 | 843 if (MB_BYTE2LEN(p[0]) == 1) |
844 { | |
11129
f4ea50924c6d
patch 8.0.0452: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents:
11127
diff
changeset
|
845 if (p[0] == NUL || VIM_ISWHITE(p[0])) |
7 | 846 return 0; |
4069 | 847 if (vim_iswordc_buf(p[0], buf)) |
7 | 848 return 2; |
849 return 1; | |
850 } | |
851 if (enc_dbcs != 0 && p[0] != NUL && p[1] != NUL) | |
852 return dbcs_class(p[0], p[1]); | |
853 if (enc_utf8) | |
10724
ae1c6bf22e5f
patch 8.0.0252: not properly recognizing word characters between 128 and 255
Christian Brabandt <cb@256bit.org>
parents:
10571
diff
changeset
|
854 return utf_class_buf(utf_ptr2char(p), buf); |
7 | 855 return 0; |
856 } | |
857 | |
858 /* | |
859 * Get class of a double-byte character. This always returns 3 or bigger. | |
860 * TODO: Should return 1 for punctuation. | |
861 */ | |
862 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
863 dbcs_class(unsigned lead, unsigned trail) |
7 | 864 { |
865 switch (enc_dbcs) | |
866 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
867 // please add classify routine for your language in here |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
868 |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
869 case DBCS_JPNU: // ? |
7 | 870 case DBCS_JPN: |
871 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
872 // JIS code classification |
7 | 873 unsigned char lb = lead; |
874 unsigned char tb = trail; | |
875 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
876 // convert process code to JIS |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
877 # if defined(MSWIN) || defined(WIN32UNIX) || defined(MACOS_X) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
878 // process code is SJIS |
7 | 879 if (lb <= 0x9f) |
880 lb = (lb - 0x81) * 2 + 0x21; | |
881 else | |
882 lb = (lb - 0xc1) * 2 + 0x21; | |
883 if (tb <= 0x7e) | |
884 tb -= 0x1f; | |
885 else if (tb <= 0x9e) | |
886 tb -= 0x20; | |
887 else | |
888 { | |
889 tb -= 0x7e; | |
890 lb += 1; | |
891 } | |
892 # else | |
893 /* | |
894 * XXX: Code page identification can not use with all | |
895 * system! So, some other encoding information | |
896 * will be needed. | |
897 * In japanese: SJIS,EUC,UNICODE,(JIS) | |
898 * Note that JIS-code system don't use as | |
899 * process code in most system because it uses | |
900 * escape sequences(JIS is context depend encoding). | |
901 */ | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
902 // assume process code is JAPANESE-EUC |
7 | 903 lb &= 0x7f; |
904 tb &= 0x7f; | |
905 # endif | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
906 // exceptions |
7 | 907 switch (lb << 8 | tb) |
908 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
909 case 0x2121: // ZENKAKU space |
7 | 910 return 0; |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
911 case 0x2122: // TOU-TEN (Japanese comma) |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
912 case 0x2123: // KU-TEN (Japanese period) |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
913 case 0x2124: // ZENKAKU comma |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
914 case 0x2125: // ZENKAKU period |
7 | 915 return 1; |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
916 case 0x213c: // prolongedsound handled as KATAKANA |
7 | 917 return 13; |
918 } | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
919 // sieved by KU code |
7 | 920 switch (lb) |
921 { | |
922 case 0x21: | |
923 case 0x22: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
924 // special symbols |
7 | 925 return 10; |
926 case 0x23: | |
19195
2ef19eed524a
patch 8.2.0156: various typos in source files and tests
Bram Moolenaar <Bram@vim.org>
parents:
18800
diff
changeset
|
927 // alphanumeric |
7 | 928 return 11; |
929 case 0x24: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
930 // hiragana |
7 | 931 return 12; |
932 case 0x25: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
933 // katakana |
7 | 934 return 13; |
935 case 0x26: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
936 // greek |
7 | 937 return 14; |
938 case 0x27: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
939 // russian |
7 | 940 return 15; |
941 case 0x28: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
942 // lines |
7 | 943 return 16; |
944 default: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
945 // kanji |
7 | 946 return 17; |
947 } | |
948 } | |
949 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
950 case DBCS_KORU: // ? |
7 | 951 case DBCS_KOR: |
952 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
953 // KS code classification |
7 | 954 unsigned char c1 = lead; |
955 unsigned char c2 = trail; | |
956 | |
957 /* | |
958 * 20 : Hangul | |
959 * 21 : Hanja | |
960 * 22 : Symbols | |
19195
2ef19eed524a
patch 8.2.0156: various typos in source files and tests
Bram Moolenaar <Bram@vim.org>
parents:
18800
diff
changeset
|
961 * 23 : Alphanumeric/Roman Letter (Full width) |
7 | 962 * 24 : Hangul Letter(Alphabet) |
963 * 25 : Roman Numeral/Greek Letter | |
964 * 26 : Box Drawings | |
965 * 27 : Unit Symbols | |
966 * 28 : Circled/Parenthesized Letter | |
4352 | 967 * 29 : Hiragana/Katakana |
7 | 968 * 30 : Cyrillic Letter |
969 */ | |
970 | |
971 if (c1 >= 0xB0 && c1 <= 0xC8) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
972 // Hangul |
7 | 973 return 20; |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
974 #if defined(MSWIN) || defined(WIN32UNIX) |
7 | 975 else if (c1 <= 0xA0 || c2 <= 0xA0) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
976 // Extended Hangul Region : MS UHC(Unified Hangul Code) |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
977 // c1: 0x81-0xA0 with c2: 0x41-0x5A, 0x61-0x7A, 0x81-0xFE |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
978 // c1: 0xA1-0xC6 with c2: 0x41-0x5A, 0x61-0x7A, 0x81-0xA0 |
7 | 979 return 20; |
980 #endif | |
981 | |
982 else if (c1 >= 0xCA && c1 <= 0xFD) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
983 // Hanja |
7 | 984 return 21; |
985 else switch (c1) | |
986 { | |
987 case 0xA1: | |
988 case 0xA2: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
989 // Symbols |
7 | 990 return 22; |
991 case 0xA3: | |
19195
2ef19eed524a
patch 8.2.0156: various typos in source files and tests
Bram Moolenaar <Bram@vim.org>
parents:
18800
diff
changeset
|
992 // Alphanumeric |
7 | 993 return 23; |
994 case 0xA4: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
995 // Hangul Letter(Alphabet) |
7 | 996 return 24; |
997 case 0xA5: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
998 // Roman Numeral/Greek Letter |
7 | 999 return 25; |
1000 case 0xA6: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1001 // Box Drawings |
7 | 1002 return 26; |
1003 case 0xA7: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1004 // Unit Symbols |
7 | 1005 return 27; |
1006 case 0xA8: | |
1007 case 0xA9: | |
1008 if (c2 <= 0xAF) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1009 return 25; // Roman Letter |
7 | 1010 else if (c2 >= 0xF6) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1011 return 22; // Symbols |
7 | 1012 else |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1013 // Circled/Parenthesized Letter |
7 | 1014 return 28; |
1015 case 0xAA: | |
1016 case 0xAB: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1017 // Hiragana/Katakana |
7 | 1018 return 29; |
1019 case 0xAC: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1020 // Cyrillic Letter |
7 | 1021 return 30; |
1022 } | |
1023 } | |
1024 default: | |
1025 break; | |
1026 } | |
1027 return 3; | |
1028 } | |
1029 | |
1030 /* | |
1031 * mb_char2len() function pointer. | |
1032 * Return length in bytes of character "c". | |
1033 * Returns 1 for a single-byte character. | |
1034 */ | |
1035 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1036 latin_char2len(int c UNUSED) |
7 | 1037 { |
1038 return 1; | |
1039 } | |
1040 | |
1041 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1042 dbcs_char2len( |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1043 int c) |
7 | 1044 { |
1045 if (c >= 0x100) | |
1046 return 2; | |
1047 return 1; | |
1048 } | |
1049 | |
1050 /* | |
1051 * mb_char2bytes() function pointer. | |
1052 * Convert a character to its bytes. | |
1053 * Returns the length in bytes. | |
1054 */ | |
1055 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1056 latin_char2bytes(int c, char_u *buf) |
7 | 1057 { |
1058 buf[0] = c; | |
1059 return 1; | |
1060 } | |
1061 | |
1062 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1063 dbcs_char2bytes(int c, char_u *buf) |
7 | 1064 { |
1065 if (c >= 0x100) | |
1066 { | |
1067 buf[0] = (unsigned)c >> 8; | |
1068 buf[1] = c; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1069 // Never use a NUL byte, it causes lots of trouble. It's an invalid |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1070 // character anyway. |
221 | 1071 if (buf[1] == NUL) |
1072 buf[1] = '\n'; | |
7 | 1073 return 2; |
1074 } | |
1075 buf[0] = c; | |
1076 return 1; | |
1077 } | |
1078 | |
1079 /* | |
29761
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1080 * Get byte length of character at "*p". Returns zero when "*p" is NUL. |
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1081 * Used for mb_ptr2len() when 'encoding' latin. |
7 | 1082 */ |
1083 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1084 latin_ptr2len(char_u *p) |
7 | 1085 { |
29761
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1086 return *p == NUL ? 0 : 1; |
7 | 1087 } |
1088 | |
29761
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1089 /* |
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1090 * Get byte length of character at "*p". Returns zero when "*p" is NUL. |
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1091 * Used for mb_ptr2len() when 'encoding' DBCS. |
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1092 */ |
7 | 1093 static int |
29761
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1094 dbcs_ptr2len(char_u *p) |
7 | 1095 { |
1096 int len; | |
1097 | |
29761
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1098 if (*p == NUL) |
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1099 return 0; |
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1100 |
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
1101 // if the second byte is missing the length is 1 |
7 | 1102 len = MB_BYTE2LEN(*p); |
1103 if (len == 2 && p[1] == NUL) | |
1104 len = 1; | |
1105 return len; | |
1106 } | |
1107 | |
1903 | 1108 /* |
1109 * mb_ptr2len_len() function pointer. | |
1110 * Like mb_ptr2len(), but limit to read "size" bytes. | |
1111 * Returns 0 for an empty string. | |
1112 * Returns 1 for an illegal char or an incomplete byte sequence. | |
1113 */ | |
1114 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1115 latin_ptr2len_len(char_u *p, int size) |
1903 | 1116 { |
1117 if (size < 1 || *p == NUL) | |
1118 return 0; | |
1119 return 1; | |
1120 } | |
1121 | |
1122 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1123 dbcs_ptr2len_len(char_u *p, int size) |
1903 | 1124 { |
1125 int len; | |
1126 | |
1127 if (size < 1 || *p == NUL) | |
1128 return 0; | |
1129 if (size == 1) | |
1130 return 1; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1131 // Check that second byte is not missing. |
1903 | 1132 len = MB_BYTE2LEN(*p); |
1133 if (len == 2 && p[1] == NUL) | |
1134 len = 1; | |
1135 return len; | |
1136 } | |
1137 | |
7 | 1138 struct interval |
1139 { | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
1140 long first; |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
1141 long last; |
7 | 1142 }; |
1143 | |
1144 /* | |
1145 * Return TRUE if "c" is in "table[size / sizeof(struct interval)]". | |
1146 */ | |
1147 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1148 intable(struct interval *table, size_t size, int c) |
7 | 1149 { |
1150 int mid, bot, top; | |
1151 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1152 // first quick check for Latin1 etc. characters |
7 | 1153 if (c < table[0].first) |
1154 return FALSE; | |
1155 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1156 // binary search in table |
7 | 1157 bot = 0; |
835 | 1158 top = (int)(size / sizeof(struct interval) - 1); |
7 | 1159 while (top >= bot) |
1160 { | |
1161 mid = (bot + top) / 2; | |
1162 if (table[mid].last < c) | |
1163 bot = mid + 1; | |
1164 else if (table[mid].first > c) | |
1165 top = mid - 1; | |
1166 else | |
1167 return TRUE; | |
1168 } | |
1169 return FALSE; | |
1170 } | |
1171 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1172 // Sorted list of non-overlapping intervals of East Asian Ambiguous |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1173 // characters, generated with ../runtime/tools/unicode.vim. |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1174 static struct interval ambiguous[] = |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1175 { |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1176 {0x00a1, 0x00a1}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1177 {0x00a4, 0x00a4}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1178 {0x00a7, 0x00a8}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1179 {0x00aa, 0x00aa}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1180 {0x00ad, 0x00ae}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1181 {0x00b0, 0x00b4}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1182 {0x00b6, 0x00ba}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1183 {0x00bc, 0x00bf}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1184 {0x00c6, 0x00c6}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1185 {0x00d0, 0x00d0}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1186 {0x00d7, 0x00d8}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1187 {0x00de, 0x00e1}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1188 {0x00e6, 0x00e6}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1189 {0x00e8, 0x00ea}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1190 {0x00ec, 0x00ed}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1191 {0x00f0, 0x00f0}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1192 {0x00f2, 0x00f3}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1193 {0x00f7, 0x00fa}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1194 {0x00fc, 0x00fc}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1195 {0x00fe, 0x00fe}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1196 {0x0101, 0x0101}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1197 {0x0111, 0x0111}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1198 {0x0113, 0x0113}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1199 {0x011b, 0x011b}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1200 {0x0126, 0x0127}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1201 {0x012b, 0x012b}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1202 {0x0131, 0x0133}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1203 {0x0138, 0x0138}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1204 {0x013f, 0x0142}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1205 {0x0144, 0x0144}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1206 {0x0148, 0x014b}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1207 {0x014d, 0x014d}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1208 {0x0152, 0x0153}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1209 {0x0166, 0x0167}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1210 {0x016b, 0x016b}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1211 {0x01ce, 0x01ce}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1212 {0x01d0, 0x01d0}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1213 {0x01d2, 0x01d2}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1214 {0x01d4, 0x01d4}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1215 {0x01d6, 0x01d6}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1216 {0x01d8, 0x01d8}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1217 {0x01da, 0x01da}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1218 {0x01dc, 0x01dc}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1219 {0x0251, 0x0251}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1220 {0x0261, 0x0261}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1221 {0x02c4, 0x02c4}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1222 {0x02c7, 0x02c7}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1223 {0x02c9, 0x02cb}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1224 {0x02cd, 0x02cd}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1225 {0x02d0, 0x02d0}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1226 {0x02d8, 0x02db}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1227 {0x02dd, 0x02dd}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1228 {0x02df, 0x02df}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1229 {0x0300, 0x036f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1230 {0x0391, 0x03a1}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1231 {0x03a3, 0x03a9}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1232 {0x03b1, 0x03c1}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1233 {0x03c3, 0x03c9}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1234 {0x0401, 0x0401}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1235 {0x0410, 0x044f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1236 {0x0451, 0x0451}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1237 {0x2010, 0x2010}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1238 {0x2013, 0x2016}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1239 {0x2018, 0x2019}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1240 {0x201c, 0x201d}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1241 {0x2020, 0x2022}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1242 {0x2024, 0x2027}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1243 {0x2030, 0x2030}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1244 {0x2032, 0x2033}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1245 {0x2035, 0x2035}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1246 {0x203b, 0x203b}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1247 {0x203e, 0x203e}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1248 {0x2074, 0x2074}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1249 {0x207f, 0x207f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1250 {0x2081, 0x2084}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1251 {0x20ac, 0x20ac}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1252 {0x2103, 0x2103}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1253 {0x2105, 0x2105}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1254 {0x2109, 0x2109}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1255 {0x2113, 0x2113}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1256 {0x2116, 0x2116}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1257 {0x2121, 0x2122}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1258 {0x2126, 0x2126}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1259 {0x212b, 0x212b}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1260 {0x2153, 0x2154}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1261 {0x215b, 0x215e}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1262 {0x2160, 0x216b}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1263 {0x2170, 0x2179}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1264 {0x2189, 0x2189}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1265 {0x2190, 0x2199}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1266 {0x21b8, 0x21b9}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1267 {0x21d2, 0x21d2}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1268 {0x21d4, 0x21d4}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1269 {0x21e7, 0x21e7}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1270 {0x2200, 0x2200}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1271 {0x2202, 0x2203}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1272 {0x2207, 0x2208}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1273 {0x220b, 0x220b}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1274 {0x220f, 0x220f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1275 {0x2211, 0x2211}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1276 {0x2215, 0x2215}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1277 {0x221a, 0x221a}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1278 {0x221d, 0x2220}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1279 {0x2223, 0x2223}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1280 {0x2225, 0x2225}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1281 {0x2227, 0x222c}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1282 {0x222e, 0x222e}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1283 {0x2234, 0x2237}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1284 {0x223c, 0x223d}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1285 {0x2248, 0x2248}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1286 {0x224c, 0x224c}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1287 {0x2252, 0x2252}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1288 {0x2260, 0x2261}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1289 {0x2264, 0x2267}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1290 {0x226a, 0x226b}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1291 {0x226e, 0x226f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1292 {0x2282, 0x2283}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1293 {0x2286, 0x2287}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1294 {0x2295, 0x2295}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1295 {0x2299, 0x2299}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1296 {0x22a5, 0x22a5}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1297 {0x22bf, 0x22bf}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1298 {0x2312, 0x2312}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1299 {0x2460, 0x24e9}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1300 {0x24eb, 0x254b}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1301 {0x2550, 0x2573}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1302 {0x2580, 0x258f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1303 {0x2592, 0x2595}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1304 {0x25a0, 0x25a1}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1305 {0x25a3, 0x25a9}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1306 {0x25b2, 0x25b3}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1307 {0x25b6, 0x25b7}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1308 {0x25bc, 0x25bd}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1309 {0x25c0, 0x25c1}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1310 {0x25c6, 0x25c8}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1311 {0x25cb, 0x25cb}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1312 {0x25ce, 0x25d1}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1313 {0x25e2, 0x25e5}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1314 {0x25ef, 0x25ef}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1315 {0x2605, 0x2606}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1316 {0x2609, 0x2609}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1317 {0x260e, 0x260f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1318 {0x261c, 0x261c}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1319 {0x261e, 0x261e}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1320 {0x2640, 0x2640}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1321 {0x2642, 0x2642}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1322 {0x2660, 0x2661}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1323 {0x2663, 0x2665}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1324 {0x2667, 0x266a}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1325 {0x266c, 0x266d}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1326 {0x266f, 0x266f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1327 {0x269e, 0x269f}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1328 {0x26bf, 0x26bf}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1329 {0x26c6, 0x26cd}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1330 {0x26cf, 0x26d3}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1331 {0x26d5, 0x26e1}, |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1332 {0x26e3, 0x26e3}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1333 {0x26e8, 0x26e9}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1334 {0x26eb, 0x26f1}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1335 {0x26f4, 0x26f4}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1336 {0x26f6, 0x26f9}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1337 {0x26fb, 0x26fc}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1338 {0x26fe, 0x26ff}, |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1339 {0x273d, 0x273d}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1340 {0x2776, 0x277f}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1341 {0x2b56, 0x2b59}, |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1342 {0x3248, 0x324f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1343 {0xe000, 0xf8ff}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1344 {0xfe00, 0xfe0f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1345 {0xfffd, 0xfffd}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1346 {0x1f100, 0x1f10a}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1347 {0x1f110, 0x1f12d}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1348 {0x1f130, 0x1f169}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1349 {0x1f170, 0x1f18d}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1350 {0x1f18f, 0x1f190}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1351 {0x1f19b, 0x1f1ac}, |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1352 {0xe0100, 0xe01ef}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1353 {0xf0000, 0xffffd}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1354 {0x100000, 0x10fffd} |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1355 }; |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
1356 |
12210
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
1357 #if defined(FEAT_TERMINAL) || defined(PROTO) |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
1358 /* |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
1359 * utf_char2cells() with different argument type for libvterm. |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
1360 */ |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
1361 int |
12269
d2373927d76d
patch 8.0.1014: old compiler doesn't know uint32_t
Christian Brabandt <cb@256bit.org>
parents:
12210
diff
changeset
|
1362 utf_uint2cells(UINT32_T c) |
12210
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
1363 { |
12650
f58755eb453e
patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents:
12547
diff
changeset
|
1364 if (c >= 0x100 && utf_iscomposing((int)c)) |
f58755eb453e
patch 8.0.1203: terminal window mistreats composing characters
Christian Brabandt <cb@256bit.org>
parents:
12547
diff
changeset
|
1365 return 0; |
12210
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
1366 return utf_char2cells((int)c); |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
1367 } |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
1368 #endif |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
1369 |
7 | 1370 /* |
1371 * For UTF-8 character "c" return 2 for a double-width character, 1 for others. | |
1372 * Returns 4 or 6 for an unprintable character. | |
1373 * Is only correct for characters >= 0x80. | |
1374 * When p_ambw is "double", return 2 for a character with East Asian Width | |
1375 * class 'A'(mbiguous). | |
1376 */ | |
1377 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1378 utf_char2cells(int c) |
7 | 1379 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1380 // Sorted list of non-overlapping intervals of East Asian double width |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1381 // characters, generated with ../runtime/tools/unicode.vim. |
2063
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1382 static struct interval doublewidth[] = |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1383 { |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1384 {0x1100, 0x115f}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1385 {0x231a, 0x231b}, |
2063
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1386 {0x2329, 0x232a}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1387 {0x23e9, 0x23ec}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1388 {0x23f0, 0x23f0}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1389 {0x23f3, 0x23f3}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1390 {0x25fd, 0x25fe}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1391 {0x2614, 0x2615}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1392 {0x2648, 0x2653}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1393 {0x267f, 0x267f}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1394 {0x2693, 0x2693}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1395 {0x26a1, 0x26a1}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1396 {0x26aa, 0x26ab}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1397 {0x26bd, 0x26be}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1398 {0x26c4, 0x26c5}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1399 {0x26ce, 0x26ce}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1400 {0x26d4, 0x26d4}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1401 {0x26ea, 0x26ea}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
1402 {0x26f2, 0x26f3}, |
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
1403 {0x26f5, 0x26f5}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1404 {0x26fa, 0x26fa}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1405 {0x26fd, 0x26fd}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1406 {0x2705, 0x2705}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1407 {0x270a, 0x270b}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1408 {0x2728, 0x2728}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1409 {0x274c, 0x274c}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1410 {0x274e, 0x274e}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1411 {0x2753, 0x2755}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1412 {0x2757, 0x2757}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1413 {0x2795, 0x2797}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1414 {0x27b0, 0x27b0}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1415 {0x27bf, 0x27bf}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1416 {0x2b1b, 0x2b1c}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1417 {0x2b50, 0x2b50}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1418 {0x2b55, 0x2b55}, |
2063
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1419 {0x2e80, 0x2e99}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1420 {0x2e9b, 0x2ef3}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1421 {0x2f00, 0x2fd5}, |
33529
6d7a054bf2e3
patch 9.0.2013: Unicode tables outdated
Christian Brabandt <cb@256bit.org>
parents:
33399
diff
changeset
|
1422 {0x2ff0, 0x303e}, |
2063
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1423 {0x3041, 0x3096}, |
6495 | 1424 {0x3099, 0x30ff}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
1425 {0x3105, 0x312f}, |
2063
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1426 {0x3131, 0x318e}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
1427 {0x3190, 0x31e3}, |
33529
6d7a054bf2e3
patch 9.0.2013: Unicode tables outdated
Christian Brabandt <cb@256bit.org>
parents:
33399
diff
changeset
|
1428 {0x31ef, 0x321e}, |
2063
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1429 {0x3220, 0x3247}, |
16938
b2ebc416491b
patch 8.1.1470: new Unicode character U32FF missing from double-width table
Bram Moolenaar <Bram@vim.org>
parents:
16825
diff
changeset
|
1430 {0x3250, 0x4dbf}, |
2063
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1431 {0x4e00, 0xa48c}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1432 {0xa490, 0xa4c6}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1433 {0xa960, 0xa97c}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1434 {0xac00, 0xd7a3}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1435 {0xf900, 0xfaff}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1436 {0xfe10, 0xfe19}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1437 {0xfe30, 0xfe52}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1438 {0xfe54, 0xfe66}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1439 {0xfe68, 0xfe6b}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1440 {0xff01, 0xff60}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1441 {0xffe0, 0xffe6}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
1442 {0x16fe0, 0x16fe3}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
1443 {0x16ff0, 0x16ff1}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
1444 {0x17000, 0x187f7}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
1445 {0x18800, 0x18cd5}, |
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
1446 {0x18d00, 0x18d08}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1447 {0x1aff0, 0x1aff3}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1448 {0x1aff5, 0x1affb}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1449 {0x1affd, 0x1affe}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1450 {0x1b000, 0x1b122}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1451 {0x1b132, 0x1b132}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
1452 {0x1b150, 0x1b152}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1453 {0x1b155, 0x1b155}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
1454 {0x1b164, 0x1b167}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1455 {0x1b170, 0x1b2fb}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1456 {0x1f004, 0x1f004}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1457 {0x1f0cf, 0x1f0cf}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1458 {0x1f18e, 0x1f18e}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1459 {0x1f191, 0x1f19a}, |
8682
4ce551bd5024
commit https://github.com/vim/vim/commit/d63aff0a65b955447de2fd8bfdaee29b61ce2843
Christian Brabandt <cb@256bit.org>
parents:
8680
diff
changeset
|
1460 {0x1f200, 0x1f202}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1461 {0x1f210, 0x1f23b}, |
8682
4ce551bd5024
commit https://github.com/vim/vim/commit/d63aff0a65b955447de2fd8bfdaee29b61ce2843
Christian Brabandt <cb@256bit.org>
parents:
8680
diff
changeset
|
1462 {0x1f240, 0x1f248}, |
4ce551bd5024
commit https://github.com/vim/vim/commit/d63aff0a65b955447de2fd8bfdaee29b61ce2843
Christian Brabandt <cb@256bit.org>
parents:
8680
diff
changeset
|
1463 {0x1f250, 0x1f251}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1464 {0x1f260, 0x1f265}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1465 {0x1f300, 0x1f320}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1466 {0x1f32d, 0x1f335}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1467 {0x1f337, 0x1f37c}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1468 {0x1f37e, 0x1f393}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1469 {0x1f3a0, 0x1f3ca}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1470 {0x1f3cf, 0x1f3d3}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1471 {0x1f3e0, 0x1f3f0}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1472 {0x1f3f4, 0x1f3f4}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1473 {0x1f3f8, 0x1f43e}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1474 {0x1f440, 0x1f440}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1475 {0x1f442, 0x1f4fc}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1476 {0x1f4ff, 0x1f53d}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1477 {0x1f54b, 0x1f54e}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1478 {0x1f550, 0x1f567}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1479 {0x1f57a, 0x1f57a}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1480 {0x1f595, 0x1f596}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1481 {0x1f5a4, 0x1f5a4}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1482 {0x1f5fb, 0x1f64f}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1483 {0x1f680, 0x1f6c5}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1484 {0x1f6cc, 0x1f6cc}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1485 {0x1f6d0, 0x1f6d2}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
1486 {0x1f6d5, 0x1f6d7}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1487 {0x1f6dc, 0x1f6df}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
1488 {0x1f6eb, 0x1f6ec}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
1489 {0x1f6f4, 0x1f6fc}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
1490 {0x1f7e0, 0x1f7eb}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1491 {0x1f7f0, 0x1f7f0}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
1492 {0x1f90c, 0x1f93a}, |
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
1493 {0x1f93c, 0x1f945}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1494 {0x1f947, 0x1f9ff}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1495 {0x1fa70, 0x1fa7c}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1496 {0x1fa80, 0x1fa88}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1497 {0x1fa90, 0x1fabd}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1498 {0x1fabf, 0x1fac5}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1499 {0x1face, 0x1fadb}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1500 {0x1fae0, 0x1fae8}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
1501 {0x1faf0, 0x1faf8}, |
2063
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1502 {0x20000, 0x2fffd}, |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1503 {0x30000, 0x3fffd} |
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1504 }; |
6495 | 1505 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1506 // Sorted list of non-overlapping intervals of Emoji characters that don't |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1507 // have ambiguous or double width, |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1508 // based on http://unicode.org/emoji/charts/emoji-list.html |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
1509 static struct interval emoji_wide[] = |
8680
131e651fb347
commit https://github.com/vim/vim/commit/b86f10ee10bdf932df02bdaf601dffa671518a47
Christian Brabandt <cb@256bit.org>
parents:
8661
diff
changeset
|
1510 { |
21973
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1511 {0x23ed, 0x23ef}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1512 {0x23f1, 0x23f2}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1513 {0x23f8, 0x23fa}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1514 {0x24c2, 0x24c2}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1515 {0x261d, 0x261d}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1516 {0x26c8, 0x26c8}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1517 {0x26cf, 0x26cf}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1518 {0x26d1, 0x26d1}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1519 {0x26d3, 0x26d3}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1520 {0x26e9, 0x26e9}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1521 {0x26f0, 0x26f1}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1522 {0x26f7, 0x26f9}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1523 {0x270c, 0x270d}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1524 {0x2934, 0x2935}, |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
1525 {0x1f170, 0x1f189}, |
8680
131e651fb347
commit https://github.com/vim/vim/commit/b86f10ee10bdf932df02bdaf601dffa671518a47
Christian Brabandt <cb@256bit.org>
parents:
8661
diff
changeset
|
1526 {0x1f1e6, 0x1f1ff}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1527 {0x1f321, 0x1f321}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1528 {0x1f324, 0x1f32c}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1529 {0x1f336, 0x1f336}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1530 {0x1f37d, 0x1f37d}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1531 {0x1f396, 0x1f397}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1532 {0x1f399, 0x1f39b}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1533 {0x1f39e, 0x1f39f}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1534 {0x1f3cb, 0x1f3ce}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1535 {0x1f3d4, 0x1f3df}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1536 {0x1f3f3, 0x1f3f5}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1537 {0x1f3f7, 0x1f3f7}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1538 {0x1f43f, 0x1f43f}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1539 {0x1f441, 0x1f441}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1540 {0x1f4fd, 0x1f4fd}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1541 {0x1f549, 0x1f54a}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1542 {0x1f56f, 0x1f570}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1543 {0x1f573, 0x1f579}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1544 {0x1f587, 0x1f587}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1545 {0x1f58a, 0x1f58d}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1546 {0x1f590, 0x1f590}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1547 {0x1f5a5, 0x1f5a5}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1548 {0x1f5a8, 0x1f5a8}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1549 {0x1f5b1, 0x1f5b2}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1550 {0x1f5bc, 0x1f5bc}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1551 {0x1f5c2, 0x1f5c4}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1552 {0x1f5d1, 0x1f5d3}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1553 {0x1f5dc, 0x1f5de}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1554 {0x1f5e1, 0x1f5e1}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1555 {0x1f5e3, 0x1f5e3}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1556 {0x1f5e8, 0x1f5e8}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1557 {0x1f5ef, 0x1f5ef}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1558 {0x1f5f3, 0x1f5f3}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1559 {0x1f5fa, 0x1f5fa}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1560 {0x1f6cb, 0x1f6cf}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1561 {0x1f6e0, 0x1f6e5}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1562 {0x1f6e9, 0x1f6e9}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1563 {0x1f6f0, 0x1f6f0}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
1564 {0x1f6f3, 0x1f6f3} |
24381
7b84cf514dd8
patch 8.2.2731: Mac: SF symbols are not displayed properly
Bram Moolenaar <Bram@vim.org>
parents:
24246
diff
changeset
|
1565 |
7b84cf514dd8
patch 8.2.2731: Mac: SF symbols are not displayed properly
Bram Moolenaar <Bram@vim.org>
parents:
24246
diff
changeset
|
1566 #ifdef MACOS_X |
31014
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1567 // Include SF Symbols 4 characters, which should be rendered as |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1568 // double-width. SF Symbols is an Apple-specific set of symbols and |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1569 // icons for use in Apple operating systems. They are included as |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1570 // glyphs as part of the default San Francisco fonts shipped with |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1571 // macOS. The current version is SF Symbols 4. |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1572 // |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1573 // These Apple-specific glyphs are not part of standard Unicode, and |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1574 // all of them are in the Supplementary Private Use Area-B range. The |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1575 // exact range was determined by downloading the 'SF Symbols 4' app |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1576 // from Apple (https://developer.apple.com/sf-symbols/), and then |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1577 // selecting all symbols, copying them out, and inspecting the unicode |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1578 // values of them. |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1579 // |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1580 // Note that these symbols are of varying widths, as they are symbols |
32118
04d9dff67d99
patch 9.0.1390: FOR_ALL_ macros are defined in an unexpected file
Bram Moolenaar <Bram@vim.org>
parents:
31782
diff
changeset
|
1581 // representing different things ranging from a simple gear icon to an |
31014
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1582 // airplane. Some of them are in fact wider than double-width, but Vim |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1583 // doesn't support non-fixed-width font, and tagging them as |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1584 // double-width is the best way to handle them. |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1585 // |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1586 // Also see https://en.wikipedia.org/wiki/San_Francisco_(sans-serif_typeface)#SF_Symbols |
22eeb290c752
patch 9.0.0842: Unicode range for Apple SF symbols is outdated
Bram Moolenaar <Bram@vim.org>
parents:
30663
diff
changeset
|
1587 , {0x100000, 0x1018c7} |
24381
7b84cf514dd8
patch 8.2.2731: Mac: SF symbols are not displayed properly
Bram Moolenaar <Bram@vim.org>
parents:
24246
diff
changeset
|
1588 #endif |
8680
131e651fb347
commit https://github.com/vim/vim/commit/b86f10ee10bdf932df02bdaf601dffa671518a47
Christian Brabandt <cb@256bit.org>
parents:
8661
diff
changeset
|
1589 }; |
131e651fb347
commit https://github.com/vim/vim/commit/b86f10ee10bdf932df02bdaf601dffa671518a47
Christian Brabandt <cb@256bit.org>
parents:
8661
diff
changeset
|
1590 |
31782
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1591 #ifdef FEAT_EVAL |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1592 // Use the value from setcellwidths() at 0x80 and higher, unless the |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1593 // character is not printable. |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1594 if (c >= 0x80 && |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1595 # ifdef USE_WCHAR_FUNCTIONS |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1596 wcwidth(c) >= 1 && |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1597 # endif |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1598 vim_isprintc(c)) |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1599 { |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1600 int n = cw_value(c); |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1601 if (n != 0) |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1602 return n; |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1603 } |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1604 #endif |
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1605 |
7 | 1606 if (c >= 0x100) |
1607 { | |
31782
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1608 #ifdef USE_WCHAR_FUNCTIONS |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
1609 int n; |
31782
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
1610 |
7 | 1611 /* |
1612 * Assume the library function wcwidth() works better than our own | |
1613 * stuff. It should return 1 for ambiguous width chars! | |
1614 */ | |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
1615 n = wcwidth(c); |
7 | 1616 |
1617 if (n < 0) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1618 return 6; // unprintable, displays <xxxx> |
7 | 1619 if (n > 1) |
1620 return n; | |
1621 #else | |
1622 if (!utf_printable(c)) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1623 return 6; // unprintable, displays <xxxx> |
2063
1378bc45ebe5
updated for version 7.2.348
Bram Moolenaar <bram@zimbu.org>
parents:
2041
diff
changeset
|
1624 if (intable(doublewidth, sizeof(doublewidth), c)) |
7 | 1625 return 2; |
1626 #endif | |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
1627 if (p_emoji && intable(emoji_wide, sizeof(emoji_wide), c)) |
8629
54ac275e3fc4
commit https://github.com/vim/vim/commit/3848e00e0177abdb31bc600234967863ec487233
Christian Brabandt <cb@256bit.org>
parents:
8218
diff
changeset
|
1628 return 2; |
7 | 1629 } |
1630 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1631 // Characters below 0x100 are influenced by 'isprint' option |
7 | 1632 else if (c >= 0x80 && !vim_isprintc(c)) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1633 return 4; // unprintable, displays <xx> |
7 | 1634 |
1635 if (c >= 0x80 && *p_ambw == 'd' && intable(ambiguous, sizeof(ambiguous), c)) | |
1636 return 2; | |
1637 | |
1638 return 1; | |
1639 } | |
1640 | |
1641 /* | |
1642 * mb_ptr2cells() function pointer. | |
1643 * Return the number of display cells character at "*p" occupies. | |
1644 * This doesn't take care of unprintable characters, use ptr2cells() for that. | |
1645 */ | |
1646 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1647 latin_ptr2cells(char_u *p UNUSED) |
7 | 1648 { |
1649 return 1; | |
1650 } | |
1651 | |
1652 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1653 utf_ptr2cells( |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1654 char_u *p) |
7 | 1655 { |
1656 int c; | |
1657 | |
21996
808edde1e97d
patch 8.2.1547: various comment problems
Bram Moolenaar <Bram@vim.org>
parents:
21975
diff
changeset
|
1658 // Need to convert to a character number. |
7 | 1659 if (*p >= 0x80) |
1660 { | |
1661 c = utf_ptr2char(p); | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1662 // An illegal byte is displayed as <xx>. |
474 | 1663 if (utf_ptr2len(p) == 1 || c == NUL) |
7 | 1664 return 4; |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1665 // If the char is ASCII it must be an overlong sequence. |
7 | 1666 if (c < 0x80) |
1667 return char2cells(c); | |
1668 return utf_char2cells(c); | |
1669 } | |
1670 return 1; | |
1671 } | |
1672 | |
1673 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1674 dbcs_ptr2cells(char_u *p) |
7 | 1675 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1676 // Number of cells is equal to number of bytes, except for euc-jp when |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1677 // the first byte is 0x8e. |
7 | 1678 if (enc_dbcs == DBCS_JPNU && *p == 0x8e) |
1679 return 1; | |
1680 return MB_BYTE2LEN(*p); | |
1681 } | |
1682 | |
1683 /* | |
1903 | 1684 * mb_ptr2cells_len() function pointer. |
1685 * Like mb_ptr2cells(), but limit string length to "size". | |
1686 * For an empty string or truncated character returns 1. | |
1687 */ | |
1688 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1689 latin_ptr2cells_len(char_u *p UNUSED, int size UNUSED) |
1903 | 1690 { |
1691 return 1; | |
1692 } | |
1693 | |
1694 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1695 utf_ptr2cells_len(char_u *p, int size) |
1903 | 1696 { |
1697 int c; | |
1698 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1699 // Need to convert to a wide character. |
1903 | 1700 if (size > 0 && *p >= 0x80) |
1701 { | |
1702 if (utf_ptr2len_len(p, size) < utf8len_tab[*p]) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1703 return 1; // truncated |
1903 | 1704 c = utf_ptr2char(p); |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1705 // An illegal byte is displayed as <xx>. |
1903 | 1706 if (utf_ptr2len(p) == 1 || c == NUL) |
1707 return 4; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1708 // If the char is ASCII it must be an overlong sequence. |
1903 | 1709 if (c < 0x80) |
1710 return char2cells(c); | |
1711 return utf_char2cells(c); | |
1712 } | |
1713 return 1; | |
1714 } | |
1715 | |
1716 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1717 dbcs_ptr2cells_len(char_u *p, int size) |
1903 | 1718 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1719 // Number of cells is equal to number of bytes, except for euc-jp when |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1720 // the first byte is 0x8e. |
1903 | 1721 if (size <= 1 || (enc_dbcs == DBCS_JPNU && *p == 0x8e)) |
1722 return 1; | |
1723 return MB_BYTE2LEN(*p); | |
1724 } | |
1725 | |
1726 /* | |
7 | 1727 * mb_char2cells() function pointer. |
1728 * Return the number of display cells character "c" occupies. | |
1729 * Only takes care of multi-byte chars, not "^C" and such. | |
1730 */ | |
1731 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1732 latin_char2cells(int c UNUSED) |
7 | 1733 { |
1734 return 1; | |
1735 } | |
1736 | |
1737 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1738 dbcs_char2cells(int c) |
7 | 1739 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1740 // Number of cells is equal to number of bytes, except for euc-jp when |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1741 // the first byte is 0x8e. |
7 | 1742 if (enc_dbcs == DBCS_JPNU && ((unsigned)c >> 8) == 0x8e) |
1743 return 1; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1744 // use the first byte |
7 | 1745 return MB_BYTE2LEN((unsigned)c >> 8); |
1746 } | |
1747 | |
1748 /* | |
2338
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1749 * Return the number of cells occupied by string "p". |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1750 * Stop at a NUL character. When "len" >= 0 stop at character "p[len]". |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1751 */ |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1752 int |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1753 mb_string2cells(char_u *p, int len) |
2338
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1754 { |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1755 int i; |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1756 int clen = 0; |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1757 |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1758 for (i = 0; (len < 0 || i < len) && p[i] != NUL; i += (*mb_ptr2len)(p + i)) |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1759 clen += (*mb_ptr2cells)(p + i); |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1760 return clen; |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1761 } |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1762 |
da6ec32d8d8f
Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents:
2311
diff
changeset
|
1763 /* |
7 | 1764 * mb_off2cells() function pointer. |
1765 * Return number of display cells for char at ScreenLines[off]. | |
1378 | 1766 * We make sure that the offset used is less than "max_off". |
7 | 1767 */ |
1768 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1769 latin_off2cells(unsigned off UNUSED, unsigned max_off UNUSED) |
7 | 1770 { |
1771 return 1; | |
1772 } | |
1773 | |
1774 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1775 dbcs_off2cells(unsigned off, unsigned max_off) |
7 | 1776 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1777 // never check beyond end of the line |
1378 | 1778 if (off >= max_off) |
1779 return 1; | |
1780 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1781 // Number of cells is equal to number of bytes, except for euc-jp when |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1782 // the first byte is 0x8e. |
7 | 1783 if (enc_dbcs == DBCS_JPNU && ScreenLines[off] == 0x8e) |
1784 return 1; | |
1785 return MB_BYTE2LEN(ScreenLines[off]); | |
1786 } | |
1787 | |
1788 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1789 utf_off2cells(unsigned off, unsigned max_off) |
7 | 1790 { |
1378 | 1791 return (off + 1 < max_off && ScreenLines[off + 1] == 0) ? 2 : 1; |
7 | 1792 } |
1793 | |
1794 /* | |
1795 * mb_ptr2char() function pointer. | |
1796 * Convert a byte sequence into a character. | |
1797 */ | |
1798 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1799 latin_ptr2char(char_u *p) |
7 | 1800 { |
1801 return *p; | |
1802 } | |
1803 | |
1804 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1805 dbcs_ptr2char(char_u *p) |
7 | 1806 { |
1807 if (MB_BYTE2LEN(*p) > 1 && p[1] != NUL) | |
1808 return (p[0] << 8) + p[1]; | |
1809 return *p; | |
1810 } | |
1811 | |
1812 /* | |
21996
808edde1e97d
patch 8.2.1547: various comment problems
Bram Moolenaar <Bram@vim.org>
parents:
21975
diff
changeset
|
1813 * Convert a UTF-8 byte sequence to a character number. |
7 | 1814 * If the sequence is illegal or truncated by a NUL the first byte is |
1815 * returned. | |
13117
cfaa513efa3f
patch 8.0.1433: illegal memory access after undo
Christian Brabandt <cb@256bit.org>
parents:
12948
diff
changeset
|
1816 * For an overlong sequence this may return zero. |
7 | 1817 * Does not include composing characters, of course. |
1818 */ | |
1819 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1820 utf_ptr2char(char_u *p) |
7 | 1821 { |
1822 int len; | |
1823 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1824 if (p[0] < 0x80) // be quick for ASCII |
7 | 1825 return p[0]; |
1826 | |
2015 | 1827 len = utf8len_tab_zero[p[0]]; |
1658 | 1828 if (len > 1 && (p[1] & 0xc0) == 0x80) |
7 | 1829 { |
1830 if (len == 2) | |
1831 return ((p[0] & 0x1f) << 6) + (p[1] & 0x3f); | |
1832 if ((p[2] & 0xc0) == 0x80) | |
1833 { | |
1834 if (len == 3) | |
1835 return ((p[0] & 0x0f) << 12) + ((p[1] & 0x3f) << 6) | |
1836 + (p[2] & 0x3f); | |
1837 if ((p[3] & 0xc0) == 0x80) | |
1838 { | |
1839 if (len == 4) | |
1840 return ((p[0] & 0x07) << 18) + ((p[1] & 0x3f) << 12) | |
1841 + ((p[2] & 0x3f) << 6) + (p[3] & 0x3f); | |
1842 if ((p[4] & 0xc0) == 0x80) | |
1843 { | |
1844 if (len == 5) | |
1845 return ((p[0] & 0x03) << 24) + ((p[1] & 0x3f) << 18) | |
1846 + ((p[2] & 0x3f) << 12) + ((p[3] & 0x3f) << 6) | |
1847 + (p[4] & 0x3f); | |
1848 if ((p[5] & 0xc0) == 0x80 && len == 6) | |
1849 return ((p[0] & 0x01) << 30) + ((p[1] & 0x3f) << 24) | |
1850 + ((p[2] & 0x3f) << 18) + ((p[3] & 0x3f) << 12) | |
1851 + ((p[4] & 0x3f) << 6) + (p[5] & 0x3f); | |
1852 } | |
1853 } | |
1854 } | |
1855 } | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1856 // Illegal value, just return the first byte |
7 | 1857 return p[0]; |
1858 } | |
1859 | |
1860 /* | |
2961 | 1861 * Convert a UTF-8 byte sequence to a wide character. |
1862 * String is assumed to be terminated by NUL or after "n" bytes, whichever | |
1863 * comes first. | |
1864 * The function is safe in the sense that it never accesses memory beyond the | |
1865 * first "n" bytes of "s". | |
1866 * | |
1867 * On success, returns decoded codepoint, advances "s" to the beginning of | |
1868 * next character and decreases "n" accordingly. | |
1869 * | |
1870 * If end of string was reached, returns 0 and, if "n" > 0, advances "s" past | |
1871 * NUL byte. | |
1872 * | |
1873 * If byte sequence is illegal or incomplete, returns -1 and does not advance | |
1874 * "s". | |
1875 */ | |
1876 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1877 utf_safe_read_char_adv(char_u **s, size_t *n) |
2961 | 1878 { |
1879 int c, k; | |
1880 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1881 if (*n == 0) // end of buffer |
2961 | 1882 return 0; |
1883 | |
1884 k = utf8len_tab_zero[**s]; | |
1885 | |
1886 if (k == 1) | |
1887 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1888 // ASCII character or NUL |
2961 | 1889 (*n)--; |
1890 return *(*s)++; | |
1891 } | |
1892 | |
1893 if ((size_t)k <= *n) | |
1894 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1895 // We have a multibyte sequence and it isn't truncated by buffer |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1896 // limits so utf_ptr2char() is safe to use. Or the first byte is |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1897 // illegal (k=0), and it's also safe to use utf_ptr2char(). |
2961 | 1898 c = utf_ptr2char(*s); |
1899 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1900 // On failure, utf_ptr2char() returns the first byte, so here we |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1901 // check equality with the first byte. The only non-ASCII character |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1902 // which equals the first byte of its own UTF-8 representation is |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1903 // U+00C3 (UTF-8: 0xC3 0x83), so need to check that special case too. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1904 // It's safe even if n=1, else we would have k=2 > n. |
2961 | 1905 if (c != (int)(**s) || (c == 0xC3 && (*s)[1] == 0x83)) |
1906 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1907 // byte sequence was successfully decoded |
2961 | 1908 *s += k; |
1909 *n -= k; | |
1910 return c; | |
1911 } | |
1912 } | |
1913 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1914 // byte sequence is incomplete or illegal |
2961 | 1915 return -1; |
1916 } | |
1917 | |
1918 /* | |
7 | 1919 * Get character at **pp and advance *pp to the next character. |
1920 * Note: composing characters are skipped! | |
1921 */ | |
1922 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1923 mb_ptr2char_adv(char_u **pp) |
7 | 1924 { |
1925 int c; | |
1926 | |
1927 c = (*mb_ptr2char)(*pp); | |
474 | 1928 *pp += (*mb_ptr2len)(*pp); |
1929 return c; | |
1930 } | |
1931 | |
1932 /* | |
1933 * Get character at **pp and advance *pp to the next character. | |
1934 * Note: composing characters are returned as separate characters. | |
1935 */ | |
1936 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1937 mb_cptr2char_adv(char_u **pp) |
474 | 1938 { |
1939 int c; | |
1940 | |
1941 c = (*mb_ptr2char)(*pp); | |
1942 if (enc_utf8) | |
1943 *pp += utf_ptr2len(*pp); | |
1944 else | |
1945 *pp += (*mb_ptr2len)(*pp); | |
7 | 1946 return c; |
1947 } | |
1948 | |
1949 #if defined(FEAT_ARABIC) || defined(PROTO) | |
1950 /* | |
1951 * Check if the character pointed to by "p2" is a composing character when it | |
1952 * comes after "p1". For Arabic sometimes "ab" is replaced with "c", which | |
1953 * behaves like a composing character. | |
1954 */ | |
1955 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1956 utf_composinglike(char_u *p1, char_u *p2) |
7 | 1957 { |
1958 int c2; | |
1959 | |
1960 c2 = utf_ptr2char(p2); | |
1961 if (utf_iscomposing(c2)) | |
1962 return TRUE; | |
1963 if (!arabic_maycombine(c2)) | |
1964 return FALSE; | |
1965 return arabic_combine(utf_ptr2char(p1), c2); | |
1966 } | |
1967 #endif | |
1968 | |
1969 /* | |
1205 | 1970 * Convert a UTF-8 byte string to a wide character. Also get up to MAX_MCO |
7 | 1971 * composing characters. |
1972 */ | |
1973 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1974 utfc_ptr2char( |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
1975 char_u *p, |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1976 int *pcc) // return: composing chars, last one is 0 |
7 | 1977 { |
1978 int len; | |
1979 int c; | |
1980 int cc; | |
714 | 1981 int i = 0; |
7 | 1982 |
1983 c = utf_ptr2char(p); | |
474 | 1984 len = utf_ptr2len(p); |
714 | 1985 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
1986 // Only accept a composing char when the first char isn't illegal. |
7 | 1987 if ((len > 1 || *p < 0x80) |
1988 && p[len] >= 0x80 | |
1989 && UTF_COMPOSINGLIKE(p, p + len)) | |
1990 { | |
714 | 1991 cc = utf_ptr2char(p + len); |
1992 for (;;) | |
1993 { | |
1994 pcc[i++] = cc; | |
1995 if (i == MAX_MCO) | |
1996 break; | |
1997 len += utf_ptr2len(p + len); | |
1998 if (p[len] < 0x80 || !utf_iscomposing(cc = utf_ptr2char(p + len))) | |
1999 break; | |
2000 } | |
7 | 2001 } |
714 | 2002 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2003 if (i < MAX_MCO) // last composing char must be 0 |
714 | 2004 pcc[i] = 0; |
2005 | |
7 | 2006 return c; |
2007 } | |
2008 | |
2009 /* | |
1205 | 2010 * Convert a UTF-8 byte string to a wide character. Also get up to MAX_MCO |
7 | 2011 * composing characters. Use no more than p[maxlen]. |
2012 */ | |
2013 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2014 utfc_ptr2char_len( |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2015 char_u *p, |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2016 int *pcc, // return: composing chars, last one is 0 |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2017 int maxlen) |
7 | 2018 { |
2019 int len; | |
2020 int c; | |
2021 int cc; | |
714 | 2022 int i = 0; |
7 | 2023 |
2024 c = utf_ptr2char(p); | |
474 | 2025 len = utf_ptr2len_len(p, maxlen); |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2026 // Only accept a composing char when the first char isn't illegal. |
7 | 2027 if ((len > 1 || *p < 0x80) |
2028 && len < maxlen | |
2029 && p[len] >= 0x80 | |
2030 && UTF_COMPOSINGLIKE(p, p + len)) | |
2031 { | |
714 | 2032 cc = utf_ptr2char(p + len); |
2033 for (;;) | |
2034 { | |
2035 pcc[i++] = cc; | |
2036 if (i == MAX_MCO) | |
2037 break; | |
2038 len += utf_ptr2len_len(p + len, maxlen - len); | |
2039 if (len >= maxlen | |
2040 || p[len] < 0x80 | |
2041 || !utf_iscomposing(cc = utf_ptr2char(p + len))) | |
2042 break; | |
2043 } | |
7 | 2044 } |
714 | 2045 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2046 if (i < MAX_MCO) // last composing char must be 0 |
714 | 2047 pcc[i] = 0; |
2048 | |
7 | 2049 return c; |
2050 } | |
2051 | |
2052 /* | |
2053 * Convert the character at screen position "off" to a sequence of bytes. | |
2054 * Includes the composing characters. | |
3549 | 2055 * "buf" must at least have the length MB_MAXBYTES + 1. |
2154
7c8c7c95a865
First step in the Vim 7.3 branch. Changed version numbers.
Bram Moolenaar <bram@zimbu.org>
parents:
2063
diff
changeset
|
2056 * Only to be used when ScreenLinesUC[off] != 0. |
7 | 2057 * Returns the produced number of bytes. |
2058 */ | |
2059 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2060 utfc_char2bytes(int off, char_u *buf) |
7 | 2061 { |
2062 int len; | |
714 | 2063 int i; |
7 | 2064 |
2065 len = utf_char2bytes(ScreenLinesUC[off], buf); | |
714 | 2066 for (i = 0; i < Screen_mco; ++i) |
7 | 2067 { |
714 | 2068 if (ScreenLinesC[i][off] == 0) |
2069 break; | |
2070 len += utf_char2bytes(ScreenLinesC[i][off], buf + len); | |
7 | 2071 } |
2072 return len; | |
2073 } | |
2074 | |
2075 /* | |
2076 * Get the length of a UTF-8 byte sequence, not including any following | |
2077 * composing characters. | |
2078 * Returns 0 for "". | |
2079 * Returns 1 for an illegal byte sequence. | |
2080 */ | |
2081 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2082 utf_ptr2len(char_u *p) |
7 | 2083 { |
2084 int len; | |
2085 int i; | |
2086 | |
2087 if (*p == NUL) | |
2088 return 0; | |
2089 len = utf8len_tab[*p]; | |
2090 for (i = 1; i < len; ++i) | |
2091 if ((p[i] & 0xc0) != 0x80) | |
2092 return 1; | |
2093 return len; | |
2094 } | |
2095 | |
2096 /* | |
2097 * Return length of UTF-8 character, obtained from the first byte. | |
2098 * "b" must be between 0 and 255! | |
2015 | 2099 * Returns 1 for an invalid first byte value. |
7 | 2100 */ |
2101 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2102 utf_byte2len(int b) |
7 | 2103 { |
2104 return utf8len_tab[b]; | |
2105 } | |
2106 | |
2107 /* | |
2108 * Get the length of UTF-8 byte sequence "p[size]". Does not include any | |
2109 * following composing characters. | |
2110 * Returns 1 for "". | |
1487 | 2111 * Returns 1 for an illegal byte sequence (also in incomplete byte seq.). |
7 | 2112 * Returns number > "size" for an incomplete byte sequence. |
2015 | 2113 * Never returns zero. |
7 | 2114 */ |
2115 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2116 utf_ptr2len_len(char_u *p, int size) |
7 | 2117 { |
2118 int len; | |
2119 int i; | |
1487 | 2120 int m; |
7 | 2121 |
2015 | 2122 len = utf8len_tab[*p]; |
2123 if (len == 1) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2124 return 1; // NUL, ascii or illegal lead byte |
7 | 2125 if (len > size) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2126 m = size; // incomplete byte sequence. |
2015 | 2127 else |
2128 m = len; | |
1487 | 2129 for (i = 1; i < m; ++i) |
7 | 2130 if ((p[i] & 0xc0) != 0x80) |
2131 return 1; | |
2132 return len; | |
2133 } | |
2134 | |
2135 /* | |
2136 * Return the number of bytes the UTF-8 encoding of the character at "p" takes. | |
2137 * This includes following composing characters. | |
29761
0cea0cdcce92
patch 9.0.0220: invalid memory access with for loop over NULL string
Bram Moolenaar <Bram@vim.org>
parents:
29672
diff
changeset
|
2138 * Returns zero for NUL. |
7 | 2139 */ |
2140 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2141 utfc_ptr2len(char_u *p) |
7 | 2142 { |
2143 int len; | |
318 | 2144 int b0 = *p; |
7 | 2145 #ifdef FEAT_ARABIC |
2146 int prevlen; | |
2147 #endif | |
2148 | |
318 | 2149 if (b0 == NUL) |
7 | 2150 return 0; |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2151 if (b0 < 0x80 && p[1] < 0x80) // be quick for ASCII |
7 | 2152 return 1; |
2153 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2154 // Skip over first UTF-8 char, stopping at a NUL byte. |
474 | 2155 len = utf_ptr2len(p); |
7 | 2156 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2157 // Check for illegal byte. |
318 | 2158 if (len == 1 && b0 >= 0x80) |
7 | 2159 return 1; |
2160 | |
2161 /* | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2162 * Check for composing characters. We can handle only the first six, but |
7 | 2163 * skip all of them (otherwise the cursor would get stuck). |
2164 */ | |
2165 #ifdef FEAT_ARABIC | |
2166 prevlen = 0; | |
2167 #endif | |
2168 for (;;) | |
2169 { | |
2170 if (p[len] < 0x80 || !UTF_COMPOSINGLIKE(p + prevlen, p + len)) | |
2171 return len; | |
2172 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2173 // Skip over composing char |
7 | 2174 #ifdef FEAT_ARABIC |
2175 prevlen = len; | |
2176 #endif | |
474 | 2177 len += utf_ptr2len(p + len); |
7 | 2178 } |
2179 } | |
2180 | |
2181 /* | |
2182 * Return the number of bytes the UTF-8 encoding of the character at "p[size]" | |
2183 * takes. This includes following composing characters. | |
1903 | 2184 * Returns 0 for an empty string. |
7 | 2185 * Returns 1 for an illegal char or an incomplete byte sequence. |
2186 */ | |
2187 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2188 utfc_ptr2len_len(char_u *p, int size) |
7 | 2189 { |
2190 int len; | |
2191 #ifdef FEAT_ARABIC | |
2192 int prevlen; | |
2193 #endif | |
2194 | |
1903 | 2195 if (size < 1 || *p == NUL) |
7 | 2196 return 0; |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2197 if (p[0] < 0x80 && (size == 1 || p[1] < 0x80)) // be quick for ASCII |
7 | 2198 return 1; |
2199 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2200 // Skip over first UTF-8 char, stopping at a NUL byte. |
474 | 2201 len = utf_ptr2len_len(p, size); |
7 | 2202 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2203 // Check for illegal byte and incomplete byte sequence. |
7 | 2204 if ((len == 1 && p[0] >= 0x80) || len > size) |
2205 return 1; | |
2206 | |
2207 /* | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2208 * Check for composing characters. We can handle only the first six, but |
7 | 2209 * skip all of them (otherwise the cursor would get stuck). |
2210 */ | |
2211 #ifdef FEAT_ARABIC | |
2212 prevlen = 0; | |
2213 #endif | |
2214 while (len < size) | |
2215 { | |
1658 | 2216 int len_next_char; |
2217 | |
2218 if (p[len] < 0x80) | |
2219 break; | |
2220 | |
2221 /* | |
2222 * Next character length should not go beyond size to ensure that | |
2223 * UTF_COMPOSINGLIKE(...) does not read beyond size. | |
2224 */ | |
2225 len_next_char = utf_ptr2len_len(p + len, size - len); | |
2226 if (len_next_char > size - len) | |
2227 break; | |
2228 | |
2229 if (!UTF_COMPOSINGLIKE(p + prevlen, p + len)) | |
7 | 2230 break; |
2231 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2232 // Skip over composing char |
7 | 2233 #ifdef FEAT_ARABIC |
2234 prevlen = len; | |
2235 #endif | |
1658 | 2236 len += len_next_char; |
7 | 2237 } |
2238 return len; | |
2239 } | |
2240 | |
2241 /* | |
2242 * Return the number of bytes the UTF-8 encoding of character "c" takes. | |
2243 * This does not include composing characters. | |
2244 */ | |
2245 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2246 utf_char2len(int c) |
7 | 2247 { |
2248 if (c < 0x80) | |
2249 return 1; | |
2250 if (c < 0x800) | |
2251 return 2; | |
2252 if (c < 0x10000) | |
2253 return 3; | |
2254 if (c < 0x200000) | |
2255 return 4; | |
2256 if (c < 0x4000000) | |
2257 return 5; | |
2258 return 6; | |
2259 } | |
2260 | |
2261 /* | |
2262 * Convert Unicode character "c" to UTF-8 string in "buf[]". | |
2263 * Returns the number of bytes. | |
2264 */ | |
2265 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2266 utf_char2bytes(int c, char_u *buf) |
7 | 2267 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2268 if (c < 0x80) // 7 bits |
7 | 2269 { |
2270 buf[0] = c; | |
2271 return 1; | |
2272 } | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2273 if (c < 0x800) // 11 bits |
7 | 2274 { |
2275 buf[0] = 0xc0 + ((unsigned)c >> 6); | |
2276 buf[1] = 0x80 + (c & 0x3f); | |
2277 return 2; | |
2278 } | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2279 if (c < 0x10000) // 16 bits |
7 | 2280 { |
2281 buf[0] = 0xe0 + ((unsigned)c >> 12); | |
2282 buf[1] = 0x80 + (((unsigned)c >> 6) & 0x3f); | |
2283 buf[2] = 0x80 + (c & 0x3f); | |
2284 return 3; | |
2285 } | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2286 if (c < 0x200000) // 21 bits |
7 | 2287 { |
2288 buf[0] = 0xf0 + ((unsigned)c >> 18); | |
2289 buf[1] = 0x80 + (((unsigned)c >> 12) & 0x3f); | |
2290 buf[2] = 0x80 + (((unsigned)c >> 6) & 0x3f); | |
2291 buf[3] = 0x80 + (c & 0x3f); | |
2292 return 4; | |
2293 } | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2294 if (c < 0x4000000) // 26 bits |
7 | 2295 { |
2296 buf[0] = 0xf8 + ((unsigned)c >> 24); | |
2297 buf[1] = 0x80 + (((unsigned)c >> 18) & 0x3f); | |
2298 buf[2] = 0x80 + (((unsigned)c >> 12) & 0x3f); | |
2299 buf[3] = 0x80 + (((unsigned)c >> 6) & 0x3f); | |
2300 buf[4] = 0x80 + (c & 0x3f); | |
2301 return 5; | |
2302 } | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2303 // 31 bits |
7 | 2304 buf[0] = 0xfc + ((unsigned)c >> 30); |
2305 buf[1] = 0x80 + (((unsigned)c >> 24) & 0x3f); | |
2306 buf[2] = 0x80 + (((unsigned)c >> 18) & 0x3f); | |
2307 buf[3] = 0x80 + (((unsigned)c >> 12) & 0x3f); | |
2308 buf[4] = 0x80 + (((unsigned)c >> 6) & 0x3f); | |
2309 buf[5] = 0x80 + (c & 0x3f); | |
2310 return 6; | |
2311 } | |
2312 | |
12210
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
2313 #if defined(FEAT_TERMINAL) || defined(PROTO) |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
2314 /* |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
2315 * utf_iscomposing() with different argument type for libvterm. |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
2316 */ |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
2317 int |
12269
d2373927d76d
patch 8.0.1014: old compiler doesn't know uint32_t
Christian Brabandt <cb@256bit.org>
parents:
12210
diff
changeset
|
2318 utf_iscomposing_uint(UINT32_T c) |
12210
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
2319 { |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
2320 return utf_iscomposing((int)c); |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
2321 } |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
2322 #endif |
b9b06aa0b6d9
patch 8.0.0985: libvterm has its own idea of character width
Christian Brabandt <cb@256bit.org>
parents:
11539
diff
changeset
|
2323 |
7 | 2324 /* |
2325 * Return TRUE if "c" is a composing UTF-8 character. This means it will be | |
2326 * drawn on top of the preceding character. | |
2327 * Based on code from Markus Kuhn. | |
2328 */ | |
2329 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2330 utf_iscomposing(int c) |
7 | 2331 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2332 // Sorted list of non-overlapping intervals. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2333 // Generated by ../runtime/tools/unicode.vim. |
7 | 2334 static struct interval combining[] = |
2335 { | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2336 {0x0300, 0x036f}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2337 {0x0483, 0x0489}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2338 {0x0591, 0x05bd}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2339 {0x05bf, 0x05bf}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2340 {0x05c1, 0x05c2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2341 {0x05c4, 0x05c5}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2342 {0x05c7, 0x05c7}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2343 {0x0610, 0x061a}, |
6495 | 2344 {0x064b, 0x065f}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2345 {0x0670, 0x0670}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2346 {0x06d6, 0x06dc}, |
6495 | 2347 {0x06df, 0x06e4}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2348 {0x06e7, 0x06e8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2349 {0x06ea, 0x06ed}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2350 {0x0711, 0x0711}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2351 {0x0730, 0x074a}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2352 {0x07a6, 0x07b0}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2353 {0x07eb, 0x07f3}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
2354 {0x07fd, 0x07fd}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2355 {0x0816, 0x0819}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2356 {0x081b, 0x0823}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2357 {0x0825, 0x0827}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2358 {0x0829, 0x082d}, |
6495 | 2359 {0x0859, 0x085b}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2360 {0x0898, 0x089f}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2361 {0x08ca, 0x08e1}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2362 {0x08e3, 0x0902}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2363 {0x093a, 0x093a}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2364 {0x093c, 0x093c}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2365 {0x0941, 0x0948}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2366 {0x094d, 0x094d}, |
6495 | 2367 {0x0951, 0x0957}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2368 {0x0962, 0x0963}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2369 {0x0981, 0x0981}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2370 {0x09bc, 0x09bc}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2371 {0x09c1, 0x09c4}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2372 {0x09cd, 0x09cd}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2373 {0x09e2, 0x09e3}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
2374 {0x09fe, 0x09fe}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2375 {0x0a01, 0x0a02}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2376 {0x0a3c, 0x0a3c}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2377 {0x0a41, 0x0a42}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2378 {0x0a47, 0x0a48}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2379 {0x0a4b, 0x0a4d}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2380 {0x0a51, 0x0a51}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2381 {0x0a70, 0x0a71}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2382 {0x0a75, 0x0a75}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2383 {0x0a81, 0x0a82}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2384 {0x0abc, 0x0abc}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2385 {0x0ac1, 0x0ac5}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2386 {0x0ac7, 0x0ac8}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2387 {0x0acd, 0x0acd}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2388 {0x0ae2, 0x0ae3}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2389 {0x0afa, 0x0aff}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2390 {0x0b01, 0x0b01}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2391 {0x0b3c, 0x0b3c}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2392 {0x0b3f, 0x0b3f}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2393 {0x0b41, 0x0b44}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2394 {0x0b4d, 0x0b4d}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2395 {0x0b55, 0x0b56}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2396 {0x0b62, 0x0b63}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2397 {0x0b82, 0x0b82}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2398 {0x0bc0, 0x0bc0}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2399 {0x0bcd, 0x0bcd}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2400 {0x0c00, 0x0c00}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2401 {0x0c04, 0x0c04}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2402 {0x0c3c, 0x0c3c}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2403 {0x0c3e, 0x0c40}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2404 {0x0c46, 0x0c48}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2405 {0x0c4a, 0x0c4d}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2406 {0x0c55, 0x0c56}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2407 {0x0c62, 0x0c63}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2408 {0x0c81, 0x0c81}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2409 {0x0cbc, 0x0cbc}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2410 {0x0cbf, 0x0cbf}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2411 {0x0cc6, 0x0cc6}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2412 {0x0ccc, 0x0ccd}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2413 {0x0ce2, 0x0ce3}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2414 {0x0d00, 0x0d01}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2415 {0x0d3b, 0x0d3c}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2416 {0x0d41, 0x0d44}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2417 {0x0d4d, 0x0d4d}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2418 {0x0d62, 0x0d63}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2419 {0x0d81, 0x0d81}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2420 {0x0dca, 0x0dca}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2421 {0x0dd2, 0x0dd4}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2422 {0x0dd6, 0x0dd6}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2423 {0x0e31, 0x0e31}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2424 {0x0e34, 0x0e3a}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2425 {0x0e47, 0x0e4e}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2426 {0x0eb1, 0x0eb1}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
2427 {0x0eb4, 0x0ebc}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2428 {0x0ec8, 0x0ece}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2429 {0x0f18, 0x0f19}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2430 {0x0f35, 0x0f35}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2431 {0x0f37, 0x0f37}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2432 {0x0f39, 0x0f39}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2433 {0x0f71, 0x0f7e}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2434 {0x0f80, 0x0f84}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2435 {0x0f86, 0x0f87}, |
6495 | 2436 {0x0f8d, 0x0f97}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2437 {0x0f99, 0x0fbc}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2438 {0x0fc6, 0x0fc6}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2439 {0x102d, 0x1030}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2440 {0x1032, 0x1037}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2441 {0x1039, 0x103a}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2442 {0x103d, 0x103e}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2443 {0x1058, 0x1059}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2444 {0x105e, 0x1060}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2445 {0x1071, 0x1074}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2446 {0x1082, 0x1082}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2447 {0x1085, 0x1086}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2448 {0x108d, 0x108d}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2449 {0x109d, 0x109d}, |
6495 | 2450 {0x135d, 0x135f}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2451 {0x1712, 0x1714}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2452 {0x1732, 0x1733}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2453 {0x1752, 0x1753}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2454 {0x1772, 0x1773}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2455 {0x17b4, 0x17b5}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2456 {0x17b7, 0x17bd}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2457 {0x17c6, 0x17c6}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2458 {0x17c9, 0x17d3}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2459 {0x17dd, 0x17dd}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2460 {0x180b, 0x180d}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2461 {0x180f, 0x180f}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
2462 {0x1885, 0x1886}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2463 {0x18a9, 0x18a9}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2464 {0x1920, 0x1922}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2465 {0x1927, 0x1928}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2466 {0x1932, 0x1932}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2467 {0x1939, 0x193b}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2468 {0x1a17, 0x1a18}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2469 {0x1a1b, 0x1a1b}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2470 {0x1a56, 0x1a56}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2471 {0x1a58, 0x1a5e}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2472 {0x1a60, 0x1a60}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2473 {0x1a62, 0x1a62}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2474 {0x1a65, 0x1a6c}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2475 {0x1a73, 0x1a7c}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2476 {0x1a7f, 0x1a7f}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2477 {0x1ab0, 0x1ace}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2478 {0x1b00, 0x1b03}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2479 {0x1b34, 0x1b34}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2480 {0x1b36, 0x1b3a}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2481 {0x1b3c, 0x1b3c}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2482 {0x1b42, 0x1b42}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2483 {0x1b6b, 0x1b73}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2484 {0x1b80, 0x1b81}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2485 {0x1ba2, 0x1ba5}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2486 {0x1ba8, 0x1ba9}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2487 {0x1bab, 0x1bad}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2488 {0x1be6, 0x1be6}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2489 {0x1be8, 0x1be9}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2490 {0x1bed, 0x1bed}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2491 {0x1bef, 0x1bf1}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2492 {0x1c2c, 0x1c33}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2493 {0x1c36, 0x1c37}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2494 {0x1cd0, 0x1cd2}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2495 {0x1cd4, 0x1ce0}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2496 {0x1ce2, 0x1ce8}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2497 {0x1ced, 0x1ced}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
2498 {0x1cf4, 0x1cf4}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2499 {0x1cf8, 0x1cf9}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2500 {0x1dc0, 0x1dff}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2501 {0x20d0, 0x20f0}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2502 {0x2cef, 0x2cf1}, |
6495 | 2503 {0x2d7f, 0x2d7f}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2504 {0x2de0, 0x2dff}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2505 {0x302a, 0x302d}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2506 {0x3099, 0x309a}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2507 {0xa66f, 0xa672}, |
6495 | 2508 {0xa674, 0xa67d}, |
6864 | 2509 {0xa69e, 0xa69f}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2510 {0xa6f0, 0xa6f1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2511 {0xa802, 0xa802}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2512 {0xa806, 0xa806}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2513 {0xa80b, 0xa80b}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2514 {0xa825, 0xa826}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
2515 {0xa82c, 0xa82c}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2516 {0xa8c4, 0xa8c5}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2517 {0xa8e0, 0xa8f1}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
2518 {0xa8ff, 0xa8ff}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2519 {0xa926, 0xa92d}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2520 {0xa947, 0xa951}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2521 {0xa980, 0xa982}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2522 {0xa9b3, 0xa9b3}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2523 {0xa9b6, 0xa9b9}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2524 {0xa9bc, 0xa9bd}, |
6495 | 2525 {0xa9e5, 0xa9e5}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2526 {0xaa29, 0xaa2e}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2527 {0xaa31, 0xaa32}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2528 {0xaa35, 0xaa36}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2529 {0xaa43, 0xaa43}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2530 {0xaa4c, 0xaa4c}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2531 {0xaa7c, 0xaa7c}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2532 {0xaab0, 0xaab0}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2533 {0xaab2, 0xaab4}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2534 {0xaab7, 0xaab8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2535 {0xaabe, 0xaabf}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2536 {0xaac1, 0xaac1}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2537 {0xaaec, 0xaaed}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2538 {0xaaf6, 0xaaf6}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2539 {0xabe5, 0xabe5}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2540 {0xabe8, 0xabe8}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2541 {0xabed, 0xabed}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2542 {0xfb1e, 0xfb1e}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2543 {0xfe00, 0xfe0f}, |
6864 | 2544 {0xfe20, 0xfe2f}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2545 {0x101fd, 0x101fd}, |
6495 | 2546 {0x102e0, 0x102e0}, |
2547 {0x10376, 0x1037a}, | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2548 {0x10a01, 0x10a03}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2549 {0x10a05, 0x10a06}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2550 {0x10a0c, 0x10a0f}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2551 {0x10a38, 0x10a3a}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2552 {0x10a3f, 0x10a3f}, |
6495 | 2553 {0x10ae5, 0x10ae6}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
2554 {0x10d24, 0x10d27}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
2555 {0x10eab, 0x10eac}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2556 {0x10efd, 0x10eff}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
2557 {0x10f46, 0x10f50}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2558 {0x10f82, 0x10f85}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2559 {0x11001, 0x11001}, |
6495 | 2560 {0x11038, 0x11046}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2561 {0x11070, 0x11070}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2562 {0x11073, 0x11074}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2563 {0x1107f, 0x11081}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2564 {0x110b3, 0x110b6}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2565 {0x110b9, 0x110ba}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2566 {0x110c2, 0x110c2}, |
6495 | 2567 {0x11100, 0x11102}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2568 {0x11127, 0x1112b}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2569 {0x1112d, 0x11134}, |
6495 | 2570 {0x11173, 0x11173}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2571 {0x11180, 0x11181}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2572 {0x111b6, 0x111be}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
2573 {0x111c9, 0x111cc}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2574 {0x111cf, 0x111cf}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2575 {0x1122f, 0x11231}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2576 {0x11234, 0x11234}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2577 {0x11236, 0x11237}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
2578 {0x1123e, 0x1123e}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2579 {0x11241, 0x11241}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2580 {0x112df, 0x112df}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2581 {0x112e3, 0x112ea}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2582 {0x11300, 0x11301}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
2583 {0x1133b, 0x1133c}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2584 {0x11340, 0x11340}, |
6495 | 2585 {0x11366, 0x1136c}, |
2586 {0x11370, 0x11374}, | |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2587 {0x11438, 0x1143f}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2588 {0x11442, 0x11444}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2589 {0x11446, 0x11446}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
2590 {0x1145e, 0x1145e}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2591 {0x114b3, 0x114b8}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2592 {0x114ba, 0x114ba}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2593 {0x114bf, 0x114c0}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2594 {0x114c2, 0x114c3}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2595 {0x115b2, 0x115b5}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2596 {0x115bc, 0x115bd}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2597 {0x115bf, 0x115c0}, |
6864 | 2598 {0x115dc, 0x115dd}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2599 {0x11633, 0x1163a}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2600 {0x1163d, 0x1163d}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2601 {0x1163f, 0x11640}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2602 {0x116ab, 0x116ab}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2603 {0x116ad, 0x116ad}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2604 {0x116b0, 0x116b5}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2605 {0x116b7, 0x116b7}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2606 {0x1171d, 0x1171f}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2607 {0x11722, 0x11725}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2608 {0x11727, 0x1172b}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2609 {0x1182f, 0x11837}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2610 {0x11839, 0x1183a}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2611 {0x1193b, 0x1193c}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2612 {0x1193e, 0x1193e}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2613 {0x11943, 0x11943}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2614 {0x119d4, 0x119d7}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2615 {0x119da, 0x119db}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2616 {0x119e0, 0x119e0}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2617 {0x11a01, 0x11a0a}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2618 {0x11a33, 0x11a38}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2619 {0x11a3b, 0x11a3e}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2620 {0x11a47, 0x11a47}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2621 {0x11a51, 0x11a56}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2622 {0x11a59, 0x11a5b}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2623 {0x11a8a, 0x11a96}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2624 {0x11a98, 0x11a99}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2625 {0x11c30, 0x11c36}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2626 {0x11c38, 0x11c3d}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2627 {0x11c3f, 0x11c3f}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
2628 {0x11c92, 0x11ca7}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2629 {0x11caa, 0x11cb0}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2630 {0x11cb2, 0x11cb3}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2631 {0x11cb5, 0x11cb6}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2632 {0x11d31, 0x11d36}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2633 {0x11d3a, 0x11d3a}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2634 {0x11d3c, 0x11d3d}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2635 {0x11d3f, 0x11d45}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2636 {0x11d47, 0x11d47}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
2637 {0x11d90, 0x11d91}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2638 {0x11d95, 0x11d95}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2639 {0x11d97, 0x11d97}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2640 {0x11ef3, 0x11ef4}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2641 {0x11f00, 0x11f01}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2642 {0x11f36, 0x11f3a}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2643 {0x11f40, 0x11f40}, |
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2644 {0x11f42, 0x11f42}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2645 {0x13440, 0x13440}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2646 {0x13447, 0x13455}, |
6495 | 2647 {0x16af0, 0x16af4}, |
2648 {0x16b30, 0x16b36}, | |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
2649 {0x16f4f, 0x16f4f}, |
6495 | 2650 {0x16f8f, 0x16f92}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
2651 {0x16fe4, 0x16fe4}, |
6495 | 2652 {0x1bc9d, 0x1bc9e}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2653 {0x1cf00, 0x1cf2d}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2654 {0x1cf30, 0x1cf46}, |
30663
65c35212c772
patch 9.0.0666: spacing-combining characters handled as composing
Bram Moolenaar <Bram@vim.org>
parents:
30503
diff
changeset
|
2655 {0x1d167, 0x1d169}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2656 {0x1d17b, 0x1d182}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2657 {0x1d185, 0x1d18b}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2658 {0x1d1aa, 0x1d1ad}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2659 {0x1d242, 0x1d244}, |
6864 | 2660 {0x1da00, 0x1da36}, |
2661 {0x1da3b, 0x1da6c}, | |
2662 {0x1da75, 0x1da75}, | |
2663 {0x1da84, 0x1da84}, | |
2664 {0x1da9b, 0x1da9f}, | |
2665 {0x1daa1, 0x1daaf}, | |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
2666 {0x1e000, 0x1e006}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
2667 {0x1e008, 0x1e018}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
2668 {0x1e01b, 0x1e021}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
2669 {0x1e023, 0x1e024}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
2670 {0x1e026, 0x1e02a}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2671 {0x1e08f, 0x1e08f}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
2672 {0x1e130, 0x1e136}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2673 {0x1e2ae, 0x1e2ae}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
2674 {0x1e2ec, 0x1e2ef}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2675 {0x1e4ec, 0x1e4ef}, |
6495 | 2676 {0x1e8d0, 0x1e8d6}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
2677 {0x1e944, 0x1e94a}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
2678 {0xe0100, 0xe01ef} |
7 | 2679 }; |
2680 | |
2681 return intable(combining, sizeof(combining), c); | |
2682 } | |
2683 | |
2684 /* | |
2685 * Return TRUE for characters that can be displayed in a normal way. | |
2686 * Only for characters of 0x100 and above! | |
2687 */ | |
2688 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2689 utf_printable(int c) |
7 | 2690 { |
2691 #ifdef USE_WCHAR_FUNCTIONS | |
2692 /* | |
2693 * Assume the iswprint() library function works better than our own stuff. | |
2694 */ | |
2695 return iswprint(c); | |
2696 #else | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2697 // Sorted list of non-overlapping intervals. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2698 // 0xd800-0xdfff is reserved for UTF-16, actually illegal. |
7 | 2699 static struct interval nonprint[] = |
2700 { | |
2701 {0x070f, 0x070f}, {0x180b, 0x180e}, {0x200b, 0x200f}, {0x202a, 0x202e}, | |
26075
31bdc22000a1
patch 8.2.3571: some unicode control characters are considered printable
Bram Moolenaar <Bram@vim.org>
parents:
26022
diff
changeset
|
2702 {0x2060, 0x206f}, {0xd800, 0xdfff}, {0xfeff, 0xfeff}, {0xfff9, 0xfffb}, |
7 | 2703 {0xfffe, 0xffff} |
2704 }; | |
2705 | |
2706 return !intable(nonprint, sizeof(nonprint), c); | |
2707 #endif | |
2708 } | |
2709 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2710 // Sorted list of non-overlapping intervals of all Emoji characters, |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2711 // based on http://unicode.org/emoji/charts/emoji-list.html |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
2712 // Generated by ../runtime/tools/unicode.vim. |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
2713 // Excludes 0x00a9 and 0x00ae because they are considered latin1. |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2714 static struct interval emoji_all[] = |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2715 { |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2716 {0x203c, 0x203c}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2717 {0x2049, 0x2049}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2718 {0x2122, 0x2122}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2719 {0x2139, 0x2139}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2720 {0x2194, 0x2199}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2721 {0x21a9, 0x21aa}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2722 {0x231a, 0x231b}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2723 {0x2328, 0x2328}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2724 {0x23cf, 0x23cf}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2725 {0x23e9, 0x23f3}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2726 {0x23f8, 0x23fa}, |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2727 {0x24c2, 0x24c2}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2728 {0x25aa, 0x25ab}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2729 {0x25b6, 0x25b6}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2730 {0x25c0, 0x25c0}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2731 {0x25fb, 0x25fe}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2732 {0x2600, 0x2604}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2733 {0x260e, 0x260e}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2734 {0x2611, 0x2611}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2735 {0x2614, 0x2615}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2736 {0x2618, 0x2618}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2737 {0x261d, 0x261d}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2738 {0x2620, 0x2620}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2739 {0x2622, 0x2623}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2740 {0x2626, 0x2626}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2741 {0x262a, 0x262a}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2742 {0x262e, 0x262f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2743 {0x2638, 0x263a}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2744 {0x2640, 0x2640}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2745 {0x2642, 0x2642}, |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2746 {0x2648, 0x2653}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
2747 {0x265f, 0x2660}, |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2748 {0x2663, 0x2663}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2749 {0x2665, 0x2666}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2750 {0x2668, 0x2668}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2751 {0x267b, 0x267b}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
2752 {0x267e, 0x267f}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2753 {0x2692, 0x2697}, |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2754 {0x2699, 0x2699}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2755 {0x269b, 0x269c}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2756 {0x26a0, 0x26a1}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
2757 {0x26a7, 0x26a7}, |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2758 {0x26aa, 0x26ab}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2759 {0x26b0, 0x26b1}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2760 {0x26bd, 0x26be}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2761 {0x26c4, 0x26c5}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2762 {0x26c8, 0x26c8}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2763 {0x26ce, 0x26cf}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2764 {0x26d1, 0x26d1}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2765 {0x26d3, 0x26d4}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2766 {0x26e9, 0x26ea}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2767 {0x26f0, 0x26f5}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2768 {0x26f7, 0x26fa}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2769 {0x26fd, 0x26fd}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2770 {0x2702, 0x2702}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2771 {0x2705, 0x2705}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2772 {0x2708, 0x270d}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2773 {0x270f, 0x270f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2774 {0x2712, 0x2712}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2775 {0x2714, 0x2714}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2776 {0x2716, 0x2716}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2777 {0x271d, 0x271d}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2778 {0x2721, 0x2721}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2779 {0x2728, 0x2728}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2780 {0x2733, 0x2734}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2781 {0x2744, 0x2744}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2782 {0x2747, 0x2747}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2783 {0x274c, 0x274c}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2784 {0x274e, 0x274e}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2785 {0x2753, 0x2755}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2786 {0x2757, 0x2757}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2787 {0x2763, 0x2764}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2788 {0x2795, 0x2797}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2789 {0x27a1, 0x27a1}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2790 {0x27b0, 0x27b0}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2791 {0x27bf, 0x27bf}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2792 {0x2934, 0x2935}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2793 {0x2b05, 0x2b07}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2794 {0x2b1b, 0x2b1c}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2795 {0x2b50, 0x2b50}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2796 {0x2b55, 0x2b55}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2797 {0x3030, 0x3030}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2798 {0x303d, 0x303d}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2799 {0x3297, 0x3297}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2800 {0x3299, 0x3299}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2801 {0x1f004, 0x1f004}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2802 {0x1f0cf, 0x1f0cf}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
2803 {0x1f170, 0x1f171}, |
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
2804 {0x1f17e, 0x1f17f}, |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2805 {0x1f18e, 0x1f18e}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2806 {0x1f191, 0x1f19a}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2807 {0x1f1e6, 0x1f1ff}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2808 {0x1f201, 0x1f202}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2809 {0x1f21a, 0x1f21a}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2810 {0x1f22f, 0x1f22f}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2811 {0x1f232, 0x1f23a}, |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2812 {0x1f250, 0x1f251}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2813 {0x1f300, 0x1f321}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2814 {0x1f324, 0x1f393}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2815 {0x1f396, 0x1f397}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2816 {0x1f399, 0x1f39b}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2817 {0x1f39e, 0x1f3f0}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2818 {0x1f3f3, 0x1f3f5}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2819 {0x1f3f7, 0x1f4fd}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2820 {0x1f4ff, 0x1f53d}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2821 {0x1f549, 0x1f54e}, |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2822 {0x1f550, 0x1f567}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2823 {0x1f56f, 0x1f570}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2824 {0x1f573, 0x1f57a}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2825 {0x1f587, 0x1f587}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2826 {0x1f58a, 0x1f58d}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2827 {0x1f590, 0x1f590}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2828 {0x1f595, 0x1f596}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2829 {0x1f5a4, 0x1f5a5}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2830 {0x1f5a8, 0x1f5a8}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2831 {0x1f5b1, 0x1f5b2}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2832 {0x1f5bc, 0x1f5bc}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2833 {0x1f5c2, 0x1f5c4}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2834 {0x1f5d1, 0x1f5d3}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2835 {0x1f5dc, 0x1f5de}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2836 {0x1f5e1, 0x1f5e1}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2837 {0x1f5e3, 0x1f5e3}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2838 {0x1f5e8, 0x1f5e8}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2839 {0x1f5ef, 0x1f5ef}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2840 {0x1f5f3, 0x1f5f3}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2841 {0x1f5fa, 0x1f64f}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2842 {0x1f680, 0x1f6c5}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2843 {0x1f6cb, 0x1f6d2}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
2844 {0x1f6d5, 0x1f6d7}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2845 {0x1f6dc, 0x1f6e5}, |
11539
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2846 {0x1f6e9, 0x1f6e9}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2847 {0x1f6eb, 0x1f6ec}, |
f7ba69508fd5
patch 8.0.0652: unicode information is outdated
Christian Brabandt <cb@256bit.org>
parents:
11474
diff
changeset
|
2848 {0x1f6f0, 0x1f6f0}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
2849 {0x1f6f3, 0x1f6fc}, |
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
2850 {0x1f7e0, 0x1f7eb}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2851 {0x1f7f0, 0x1f7f0}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
2852 {0x1f90c, 0x1f93a}, |
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
2853 {0x1f93c, 0x1f945}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2854 {0x1f947, 0x1f9ff}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2855 {0x1fa70, 0x1fa7c}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2856 {0x1fa80, 0x1fa88}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2857 {0x1fa90, 0x1fabd}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2858 {0x1fabf, 0x1fac5}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2859 {0x1face, 0x1fadb}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2860 {0x1fae0, 0x1fae8}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
2861 {0x1faf0, 0x1faf8} |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2862 }; |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2863 |
7 | 2864 /* |
2865 * Get class of a Unicode character. | |
2866 * 0: white space | |
2867 * 1: punctuation | |
2868 * 2 or bigger: some class of word character. | |
2869 */ | |
2870 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
2871 utf_class(int c) |
7 | 2872 { |
10724
ae1c6bf22e5f
patch 8.0.0252: not properly recognizing word characters between 128 and 255
Christian Brabandt <cb@256bit.org>
parents:
10571
diff
changeset
|
2873 return utf_class_buf(c, curbuf); |
ae1c6bf22e5f
patch 8.0.0252: not properly recognizing word characters between 128 and 255
Christian Brabandt <cb@256bit.org>
parents:
10571
diff
changeset
|
2874 } |
ae1c6bf22e5f
patch 8.0.0252: not properly recognizing word characters between 128 and 255
Christian Brabandt <cb@256bit.org>
parents:
10571
diff
changeset
|
2875 |
ae1c6bf22e5f
patch 8.0.0252: not properly recognizing word characters between 128 and 255
Christian Brabandt <cb@256bit.org>
parents:
10571
diff
changeset
|
2876 int |
ae1c6bf22e5f
patch 8.0.0252: not properly recognizing word characters between 128 and 255
Christian Brabandt <cb@256bit.org>
parents:
10571
diff
changeset
|
2877 utf_class_buf(int c, buf_T *buf) |
ae1c6bf22e5f
patch 8.0.0252: not properly recognizing word characters between 128 and 255
Christian Brabandt <cb@256bit.org>
parents:
10571
diff
changeset
|
2878 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2879 // sorted list of non-overlapping intervals |
7 | 2880 static struct clinterval |
2881 { | |
5477 | 2882 unsigned int first; |
2883 unsigned int last; | |
2884 unsigned int class; | |
7 | 2885 } classes[] = |
2886 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2887 {0x037e, 0x037e, 1}, // Greek question mark |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2888 {0x0387, 0x0387, 1}, // Greek ano teleia |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2889 {0x055a, 0x055f, 1}, // Armenian punctuation |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2890 {0x0589, 0x0589, 1}, // Armenian full stop |
7 | 2891 {0x05be, 0x05be, 1}, |
2892 {0x05c0, 0x05c0, 1}, | |
2893 {0x05c3, 0x05c3, 1}, | |
2894 {0x05f3, 0x05f4, 1}, | |
2895 {0x060c, 0x060c, 1}, | |
2896 {0x061b, 0x061b, 1}, | |
2897 {0x061f, 0x061f, 1}, | |
2898 {0x066a, 0x066d, 1}, | |
2899 {0x06d4, 0x06d4, 1}, | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2900 {0x0700, 0x070d, 1}, // Syriac punctuation |
7 | 2901 {0x0964, 0x0965, 1}, |
2902 {0x0970, 0x0970, 1}, | |
2903 {0x0df4, 0x0df4, 1}, | |
2904 {0x0e4f, 0x0e4f, 1}, | |
2905 {0x0e5a, 0x0e5b, 1}, | |
2906 {0x0f04, 0x0f12, 1}, | |
2907 {0x0f3a, 0x0f3d, 1}, | |
2908 {0x0f85, 0x0f85, 1}, | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2909 {0x104a, 0x104f, 1}, // Myanmar punctuation |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2910 {0x10fb, 0x10fb, 1}, // Georgian punctuation |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2911 {0x1361, 0x1368, 1}, // Ethiopic punctuation |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2912 {0x166d, 0x166e, 1}, // Canadian Syl. punctuation |
7 | 2913 {0x1680, 0x1680, 0}, |
2914 {0x169b, 0x169c, 1}, | |
2915 {0x16eb, 0x16ed, 1}, | |
2916 {0x1735, 0x1736, 1}, | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2917 {0x17d4, 0x17dc, 1}, // Khmer punctuation |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2918 {0x1800, 0x180a, 1}, // Mongolian punctuation |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2919 {0x2000, 0x200b, 0}, // spaces |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2920 {0x200c, 0x2027, 1}, // punctuation and symbols |
7 | 2921 {0x2028, 0x2029, 0}, |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2922 {0x202a, 0x202e, 1}, // punctuation and symbols |
7 | 2923 {0x202f, 0x202f, 0}, |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2924 {0x2030, 0x205e, 1}, // punctuation and symbols |
7 | 2925 {0x205f, 0x205f, 0}, |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2926 {0x2060, 0x27ff, 1}, // punctuation and symbols |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2927 {0x2070, 0x207f, 0x2070}, // superscript |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2928 {0x2080, 0x2094, 0x2080}, // subscript |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2929 {0x20a0, 0x27ff, 1}, // all kinds of symbols |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2930 {0x2800, 0x28ff, 0x2800}, // braille |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2931 {0x2900, 0x2998, 1}, // arrows, brackets, etc. |
7 | 2932 {0x29d8, 0x29db, 1}, |
2933 {0x29fc, 0x29fd, 1}, | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2934 {0x2e00, 0x2e7f, 1}, // supplemental punctuation |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2935 {0x3000, 0x3000, 0}, // ideographic space |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2936 {0x3001, 0x3020, 1}, // ideographic punctuation |
7 | 2937 {0x3030, 0x3030, 1}, |
2938 {0x303d, 0x303d, 1}, | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2939 {0x3040, 0x309f, 0x3040}, // Hiragana |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2940 {0x30a0, 0x30ff, 0x30a0}, // Katakana |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2941 {0x3300, 0x9fff, 0x4e00}, // CJK Ideographs |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2942 {0xac00, 0xd7a3, 0xac00}, // Hangul Syllables |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2943 {0xf900, 0xfaff, 0x4e00}, // CJK Ideographs |
7 | 2944 {0xfd3e, 0xfd3f, 1}, |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2945 {0xfe30, 0xfe6b, 1}, // punctuation forms |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2946 {0xff00, 0xff0f, 1}, // half/fullwidth ASCII |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2947 {0xff1a, 0xff20, 1}, // half/fullwidth ASCII |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2948 {0xff3b, 0xff40, 1}, // half/fullwidth ASCII |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2949 {0xff5b, 0xff65, 1}, // half/fullwidth ASCII |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2950 {0x1d000, 0x1d24f, 1}, // Musical notation |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2951 {0x1d400, 0x1d7ff, 1}, // Mathematical Alphanumeric Symbols |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2952 {0x1f000, 0x1f2ff, 1}, // Game pieces; enclosed characters |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2953 {0x1f300, 0x1f9ff, 1}, // Many symbol blocks |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2954 {0x20000, 0x2a6df, 0x4e00}, // CJK Ideographs |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2955 {0x2a700, 0x2b73f, 0x4e00}, // CJK Ideographs |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2956 {0x2b740, 0x2b81f, 0x4e00}, // CJK Ideographs |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2957 {0x2f800, 0x2fa1f, 0x4e00}, // CJK Ideographs |
7 | 2958 }; |
8680
131e651fb347
commit https://github.com/vim/vim/commit/b86f10ee10bdf932df02bdaf601dffa671518a47
Christian Brabandt <cb@256bit.org>
parents:
8661
diff
changeset
|
2959 |
7 | 2960 int bot = 0; |
24768
7334bf933510
patch 8.2.2922: computing array length is done in various ways
Bram Moolenaar <Bram@vim.org>
parents:
24754
diff
changeset
|
2961 int top = ARRAY_LENGTH(classes) - 1; |
7 | 2962 int mid; |
2963 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2964 // First quick check for Latin1 characters, use 'iskeyword'. |
7 | 2965 if (c < 0x100) |
2966 { | |
335 | 2967 if (c == ' ' || c == '\t' || c == NUL || c == 0xa0) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2968 return 0; // blank |
10724
ae1c6bf22e5f
patch 8.0.0252: not properly recognizing word characters between 128 and 255
Christian Brabandt <cb@256bit.org>
parents:
10571
diff
changeset
|
2969 if (vim_iswordc_buf(c, buf)) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2970 return 2; // word character |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2971 return 1; // punctuation |
7 | 2972 } |
2973 | |
21973
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
2974 // emoji |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
2975 if (intable(emoji_all, sizeof(emoji_all), c)) |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
2976 return 3; |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
2977 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2978 // binary search in table |
7 | 2979 while (top >= bot) |
2980 { | |
2981 mid = (bot + top) / 2; | |
5477 | 2982 if (classes[mid].last < (unsigned int)c) |
7 | 2983 bot = mid + 1; |
5477 | 2984 else if (classes[mid].first > (unsigned int)c) |
7 | 2985 top = mid - 1; |
2986 else | |
2987 return (int)classes[mid].class; | |
2988 } | |
2989 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
2990 // most other characters are "word" characters |
7 | 2991 return 2; |
2992 } | |
2993 | |
8819
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2994 int |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2995 utf_ambiguous_width(int c) |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2996 { |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2997 return c >= 0x80 && (intable(ambiguous, sizeof(ambiguous), c) |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2998 || intable(emoji_all, sizeof(emoji_all), c)); |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
2999 } |
a1132255e3e1
commit https://github.com/vim/vim/commit/cb0700844c1274fe8bc0ceaffaee0ad21c406f30
Christian Brabandt <cb@256bit.org>
parents:
8706
diff
changeset
|
3000 |
7 | 3001 /* |
3002 * Code for Unicode case-dependent operations. Based on notes in | |
3003 * http://www.unicode.org/Public/UNIDATA/CaseFolding.txt | |
3004 * This code uses simple case folding, not full case folding. | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3005 * Last updated for Unicode 5.2. |
7 | 3006 */ |
3007 | |
3008 /* | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3009 * The following tables are built by ../runtime/tools/unicode.vim. |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3010 * They must be in numeric order, because we use binary search. |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3011 * An entry such as {0x41,0x5a,1,32} means that Unicode characters in the |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3012 * range from 0x41 to 0x5a inclusive, stepping by 1, are changed to |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3013 * folded/upper/lower by adding 32. |
7 | 3014 */ |
3015 typedef struct | |
3016 { | |
3017 int rangeStart; | |
3018 int rangeEnd; | |
3019 int step; | |
3020 int offset; | |
3021 } convertStruct; | |
3022 | |
297 | 3023 static convertStruct foldCase[] = |
7 | 3024 { |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3025 {0x41,0x5a,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3026 {0xb5,0xb5,-1,775}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3027 {0xc0,0xd6,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3028 {0xd8,0xde,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3029 {0x100,0x12e,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3030 {0x132,0x136,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3031 {0x139,0x147,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3032 {0x14a,0x176,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3033 {0x178,0x178,-1,-121}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3034 {0x179,0x17d,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3035 {0x17f,0x17f,-1,-268}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3036 {0x181,0x181,-1,210}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3037 {0x182,0x184,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3038 {0x186,0x186,-1,206}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3039 {0x187,0x187,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3040 {0x189,0x18a,1,205}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3041 {0x18b,0x18b,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3042 {0x18e,0x18e,-1,79}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3043 {0x18f,0x18f,-1,202}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3044 {0x190,0x190,-1,203}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3045 {0x191,0x191,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3046 {0x193,0x193,-1,205}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3047 {0x194,0x194,-1,207}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3048 {0x196,0x196,-1,211}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3049 {0x197,0x197,-1,209}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3050 {0x198,0x198,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3051 {0x19c,0x19c,-1,211}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3052 {0x19d,0x19d,-1,213}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3053 {0x19f,0x19f,-1,214}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3054 {0x1a0,0x1a4,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3055 {0x1a6,0x1a6,-1,218}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3056 {0x1a7,0x1a7,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3057 {0x1a9,0x1a9,-1,218}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3058 {0x1ac,0x1ac,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3059 {0x1ae,0x1ae,-1,218}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3060 {0x1af,0x1af,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3061 {0x1b1,0x1b2,1,217}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3062 {0x1b3,0x1b5,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3063 {0x1b7,0x1b7,-1,219}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3064 {0x1b8,0x1bc,4,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3065 {0x1c4,0x1c4,-1,2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3066 {0x1c5,0x1c5,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3067 {0x1c7,0x1c7,-1,2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3068 {0x1c8,0x1c8,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3069 {0x1ca,0x1ca,-1,2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3070 {0x1cb,0x1db,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3071 {0x1de,0x1ee,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3072 {0x1f1,0x1f1,-1,2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3073 {0x1f2,0x1f4,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3074 {0x1f6,0x1f6,-1,-97}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3075 {0x1f7,0x1f7,-1,-56}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3076 {0x1f8,0x21e,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3077 {0x220,0x220,-1,-130}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3078 {0x222,0x232,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3079 {0x23a,0x23a,-1,10795}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3080 {0x23b,0x23b,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3081 {0x23d,0x23d,-1,-163}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3082 {0x23e,0x23e,-1,10792}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3083 {0x241,0x241,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3084 {0x243,0x243,-1,-195}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3085 {0x244,0x244,-1,69}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3086 {0x245,0x245,-1,71}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3087 {0x246,0x24e,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3088 {0x345,0x345,-1,116}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3089 {0x370,0x372,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3090 {0x376,0x376,-1,1}, |
6495 | 3091 {0x37f,0x37f,-1,116}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3092 {0x386,0x386,-1,38}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3093 {0x388,0x38a,1,37}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3094 {0x38c,0x38c,-1,64}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3095 {0x38e,0x38f,1,63}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3096 {0x391,0x3a1,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3097 {0x3a3,0x3ab,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3098 {0x3c2,0x3c2,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3099 {0x3cf,0x3cf,-1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3100 {0x3d0,0x3d0,-1,-30}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3101 {0x3d1,0x3d1,-1,-25}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3102 {0x3d5,0x3d5,-1,-15}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3103 {0x3d6,0x3d6,-1,-22}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3104 {0x3d8,0x3ee,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3105 {0x3f0,0x3f0,-1,-54}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3106 {0x3f1,0x3f1,-1,-48}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3107 {0x3f4,0x3f4,-1,-60}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3108 {0x3f5,0x3f5,-1,-64}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3109 {0x3f7,0x3f7,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3110 {0x3f9,0x3f9,-1,-7}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3111 {0x3fa,0x3fa,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3112 {0x3fd,0x3ff,1,-130}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3113 {0x400,0x40f,1,80}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3114 {0x410,0x42f,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3115 {0x460,0x480,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3116 {0x48a,0x4be,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3117 {0x4c0,0x4c0,-1,15}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3118 {0x4c1,0x4cd,2,1}, |
6495 | 3119 {0x4d0,0x52e,2,1}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3120 {0x531,0x556,1,48}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3121 {0x10a0,0x10c5,1,7264}, |
6495 | 3122 {0x10c7,0x10cd,6,7264}, |
6864 | 3123 {0x13f8,0x13fd,1,-8}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3124 {0x1c80,0x1c80,-1,-6222}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3125 {0x1c81,0x1c81,-1,-6221}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3126 {0x1c82,0x1c82,-1,-6212}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3127 {0x1c83,0x1c84,1,-6210}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3128 {0x1c85,0x1c85,-1,-6211}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3129 {0x1c86,0x1c86,-1,-6204}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3130 {0x1c87,0x1c87,-1,-6180}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3131 {0x1c88,0x1c88,-1,35267}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
3132 {0x1c90,0x1cba,1,-3008}, |
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
3133 {0x1cbd,0x1cbf,1,-3008}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3134 {0x1e00,0x1e94,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3135 {0x1e9b,0x1e9b,-1,-58}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3136 {0x1e9e,0x1e9e,-1,-7615}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3137 {0x1ea0,0x1efe,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3138 {0x1f08,0x1f0f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3139 {0x1f18,0x1f1d,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3140 {0x1f28,0x1f2f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3141 {0x1f38,0x1f3f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3142 {0x1f48,0x1f4d,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3143 {0x1f59,0x1f5f,2,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3144 {0x1f68,0x1f6f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3145 {0x1f88,0x1f8f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3146 {0x1f98,0x1f9f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3147 {0x1fa8,0x1faf,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3148 {0x1fb8,0x1fb9,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3149 {0x1fba,0x1fbb,1,-74}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3150 {0x1fbc,0x1fbc,-1,-9}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3151 {0x1fbe,0x1fbe,-1,-7173}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3152 {0x1fc8,0x1fcb,1,-86}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3153 {0x1fcc,0x1fcc,-1,-9}, |
33529
6d7a054bf2e3
patch 9.0.2013: Unicode tables outdated
Christian Brabandt <cb@256bit.org>
parents:
33399
diff
changeset
|
3154 {0x1fd3,0x1fd3,-1,-7235}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3155 {0x1fd8,0x1fd9,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3156 {0x1fda,0x1fdb,1,-100}, |
33529
6d7a054bf2e3
patch 9.0.2013: Unicode tables outdated
Christian Brabandt <cb@256bit.org>
parents:
33399
diff
changeset
|
3157 {0x1fe3,0x1fe3,-1,-7219}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3158 {0x1fe8,0x1fe9,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3159 {0x1fea,0x1feb,1,-112}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3160 {0x1fec,0x1fec,-1,-7}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3161 {0x1ff8,0x1ff9,1,-128}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3162 {0x1ffa,0x1ffb,1,-126}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3163 {0x1ffc,0x1ffc,-1,-9}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3164 {0x2126,0x2126,-1,-7517}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3165 {0x212a,0x212a,-1,-8383}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3166 {0x212b,0x212b,-1,-8262}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3167 {0x2132,0x2132,-1,28}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3168 {0x2160,0x216f,1,16}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3169 {0x2183,0x2183,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3170 {0x24b6,0x24cf,1,26}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3171 {0x2c00,0x2c2f,1,48}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3172 {0x2c60,0x2c60,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3173 {0x2c62,0x2c62,-1,-10743}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3174 {0x2c63,0x2c63,-1,-3814}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3175 {0x2c64,0x2c64,-1,-10727}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3176 {0x2c67,0x2c6b,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3177 {0x2c6d,0x2c6d,-1,-10780}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3178 {0x2c6e,0x2c6e,-1,-10749}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3179 {0x2c6f,0x2c6f,-1,-10783}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3180 {0x2c70,0x2c70,-1,-10782}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3181 {0x2c72,0x2c75,3,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3182 {0x2c7e,0x2c7f,1,-10815}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3183 {0x2c80,0x2ce2,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3184 {0x2ceb,0x2ced,2,1}, |
6495 | 3185 {0x2cf2,0xa640,31054,1}, |
3186 {0xa642,0xa66c,2,1}, | |
3187 {0xa680,0xa69a,2,1}, | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3188 {0xa722,0xa72e,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3189 {0xa732,0xa76e,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3190 {0xa779,0xa77b,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3191 {0xa77d,0xa77d,-1,-35332}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3192 {0xa77e,0xa786,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3193 {0xa78b,0xa78b,-1,1}, |
6495 | 3194 {0xa78d,0xa78d,-1,-42280}, |
3195 {0xa790,0xa792,2,1}, | |
3196 {0xa796,0xa7a8,2,1}, | |
3197 {0xa7aa,0xa7aa,-1,-42308}, | |
3198 {0xa7ab,0xa7ab,-1,-42319}, | |
3199 {0xa7ac,0xa7ac,-1,-42315}, | |
3200 {0xa7ad,0xa7ad,-1,-42305}, | |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3201 {0xa7ae,0xa7ae,-1,-42308}, |
6495 | 3202 {0xa7b0,0xa7b0,-1,-42258}, |
3203 {0xa7b1,0xa7b1,-1,-42282}, | |
6864 | 3204 {0xa7b2,0xa7b2,-1,-42261}, |
3205 {0xa7b3,0xa7b3,-1,928}, | |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3206 {0xa7b4,0xa7c2,2,1}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3207 {0xa7c4,0xa7c4,-1,-48}, |
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3208 {0xa7c5,0xa7c5,-1,-42307}, |
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3209 {0xa7c6,0xa7c6,-1,-35384}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
3210 {0xa7c7,0xa7c9,2,1}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3211 {0xa7d0,0xa7d6,6,1}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3212 {0xa7d8,0xa7f5,29,1}, |
6864 | 3213 {0xab70,0xabbf,1,-38864}, |
33529
6d7a054bf2e3
patch 9.0.2013: Unicode tables outdated
Christian Brabandt <cb@256bit.org>
parents:
33399
diff
changeset
|
3214 {0xfb05,0xfb05,-1,1}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3215 {0xff21,0xff3a,1,32}, |
6495 | 3216 {0x10400,0x10427,1,40}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3217 {0x104b0,0x104d3,1,40}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3218 {0x10570,0x1057a,1,39}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3219 {0x1057c,0x1058a,1,39}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3220 {0x1058c,0x10592,1,39}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3221 {0x10594,0x10595,1,39}, |
6864 | 3222 {0x10c80,0x10cb2,1,64}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3223 {0x118a0,0x118bf,1,32}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
3224 {0x16e40,0x16e5f,1,32}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3225 {0x1e900,0x1e921,1,34} |
7 | 3226 }; |
3227 | |
3228 /* | |
3229 * Generic conversion function for case operations. | |
3230 * Return the converted equivalent of "a", which is a UCS-4 character. Use | |
3231 * the given conversion "table". Uses binary search on "table". | |
3232 */ | |
3233 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3234 utf_convert( |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3235 int a, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3236 convertStruct table[], |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3237 int tableSize) |
7 | 3238 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3239 int start, mid, end; // indices into table |
3190 | 3240 int entries = tableSize / sizeof(convertStruct); |
7 | 3241 |
3242 start = 0; | |
3190 | 3243 end = entries; |
7 | 3244 while (start < end) |
3245 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3246 // need to search further |
3190 | 3247 mid = (end + start) / 2; |
7 | 3248 if (table[mid].rangeEnd < a) |
3249 start = mid + 1; | |
3250 else | |
3251 end = mid; | |
3252 } | |
3190 | 3253 if (start < entries |
3254 && table[start].rangeStart <= a | |
3255 && a <= table[start].rangeEnd | |
7 | 3256 && (a - table[start].rangeStart) % table[start].step == 0) |
3257 return (a + table[start].offset); | |
3258 else | |
3259 return a; | |
3260 } | |
3261 | |
3262 /* | |
3263 * Return the folded-case equivalent of "a", which is a UCS-4 character. Uses | |
3264 * simple case folding. | |
3265 */ | |
3266 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3267 utf_fold(int a) |
7 | 3268 { |
9477
045543df0c28
commit https://github.com/vim/vim/commit/c4a927ca8dc383190d5df2cacd3f966698b6190c
Christian Brabandt <cb@256bit.org>
parents:
9357
diff
changeset
|
3269 if (a < 0x80) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3270 // be fast for ASCII |
9477
045543df0c28
commit https://github.com/vim/vim/commit/c4a927ca8dc383190d5df2cacd3f966698b6190c
Christian Brabandt <cb@256bit.org>
parents:
9357
diff
changeset
|
3271 return a >= 0x41 && a <= 0x5a ? a + 32 : a; |
3190 | 3272 return utf_convert(a, foldCase, (int)sizeof(foldCase)); |
7 | 3273 } |
3274 | |
297 | 3275 static convertStruct toLower[] = |
7 | 3276 { |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3277 {0x41,0x5a,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3278 {0xc0,0xd6,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3279 {0xd8,0xde,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3280 {0x100,0x12e,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3281 {0x130,0x130,-1,-199}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3282 {0x132,0x136,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3283 {0x139,0x147,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3284 {0x14a,0x176,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3285 {0x178,0x178,-1,-121}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3286 {0x179,0x17d,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3287 {0x181,0x181,-1,210}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3288 {0x182,0x184,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3289 {0x186,0x186,-1,206}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3290 {0x187,0x187,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3291 {0x189,0x18a,1,205}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3292 {0x18b,0x18b,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3293 {0x18e,0x18e,-1,79}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3294 {0x18f,0x18f,-1,202}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3295 {0x190,0x190,-1,203}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3296 {0x191,0x191,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3297 {0x193,0x193,-1,205}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3298 {0x194,0x194,-1,207}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3299 {0x196,0x196,-1,211}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3300 {0x197,0x197,-1,209}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3301 {0x198,0x198,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3302 {0x19c,0x19c,-1,211}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3303 {0x19d,0x19d,-1,213}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3304 {0x19f,0x19f,-1,214}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3305 {0x1a0,0x1a4,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3306 {0x1a6,0x1a6,-1,218}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3307 {0x1a7,0x1a7,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3308 {0x1a9,0x1a9,-1,218}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3309 {0x1ac,0x1ac,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3310 {0x1ae,0x1ae,-1,218}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3311 {0x1af,0x1af,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3312 {0x1b1,0x1b2,1,217}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3313 {0x1b3,0x1b5,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3314 {0x1b7,0x1b7,-1,219}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3315 {0x1b8,0x1bc,4,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3316 {0x1c4,0x1c4,-1,2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3317 {0x1c5,0x1c5,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3318 {0x1c7,0x1c7,-1,2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3319 {0x1c8,0x1c8,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3320 {0x1ca,0x1ca,-1,2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3321 {0x1cb,0x1db,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3322 {0x1de,0x1ee,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3323 {0x1f1,0x1f1,-1,2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3324 {0x1f2,0x1f4,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3325 {0x1f6,0x1f6,-1,-97}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3326 {0x1f7,0x1f7,-1,-56}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3327 {0x1f8,0x21e,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3328 {0x220,0x220,-1,-130}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3329 {0x222,0x232,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3330 {0x23a,0x23a,-1,10795}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3331 {0x23b,0x23b,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3332 {0x23d,0x23d,-1,-163}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3333 {0x23e,0x23e,-1,10792}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3334 {0x241,0x241,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3335 {0x243,0x243,-1,-195}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3336 {0x244,0x244,-1,69}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3337 {0x245,0x245,-1,71}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3338 {0x246,0x24e,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3339 {0x370,0x372,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3340 {0x376,0x376,-1,1}, |
6495 | 3341 {0x37f,0x37f,-1,116}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3342 {0x386,0x386,-1,38}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3343 {0x388,0x38a,1,37}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3344 {0x38c,0x38c,-1,64}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3345 {0x38e,0x38f,1,63}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3346 {0x391,0x3a1,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3347 {0x3a3,0x3ab,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3348 {0x3cf,0x3cf,-1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3349 {0x3d8,0x3ee,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3350 {0x3f4,0x3f4,-1,-60}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3351 {0x3f7,0x3f7,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3352 {0x3f9,0x3f9,-1,-7}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3353 {0x3fa,0x3fa,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3354 {0x3fd,0x3ff,1,-130}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3355 {0x400,0x40f,1,80}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3356 {0x410,0x42f,1,32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3357 {0x460,0x480,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3358 {0x48a,0x4be,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3359 {0x4c0,0x4c0,-1,15}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3360 {0x4c1,0x4cd,2,1}, |
6495 | 3361 {0x4d0,0x52e,2,1}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3362 {0x531,0x556,1,48}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3363 {0x10a0,0x10c5,1,7264}, |
6495 | 3364 {0x10c7,0x10cd,6,7264}, |
6864 | 3365 {0x13a0,0x13ef,1,38864}, |
3366 {0x13f0,0x13f5,1,8}, | |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
3367 {0x1c90,0x1cba,1,-3008}, |
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
3368 {0x1cbd,0x1cbf,1,-3008}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3369 {0x1e00,0x1e94,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3370 {0x1e9e,0x1e9e,-1,-7615}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3371 {0x1ea0,0x1efe,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3372 {0x1f08,0x1f0f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3373 {0x1f18,0x1f1d,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3374 {0x1f28,0x1f2f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3375 {0x1f38,0x1f3f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3376 {0x1f48,0x1f4d,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3377 {0x1f59,0x1f5f,2,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3378 {0x1f68,0x1f6f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3379 {0x1f88,0x1f8f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3380 {0x1f98,0x1f9f,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3381 {0x1fa8,0x1faf,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3382 {0x1fb8,0x1fb9,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3383 {0x1fba,0x1fbb,1,-74}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3384 {0x1fbc,0x1fbc,-1,-9}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3385 {0x1fc8,0x1fcb,1,-86}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3386 {0x1fcc,0x1fcc,-1,-9}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3387 {0x1fd8,0x1fd9,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3388 {0x1fda,0x1fdb,1,-100}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3389 {0x1fe8,0x1fe9,1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3390 {0x1fea,0x1feb,1,-112}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3391 {0x1fec,0x1fec,-1,-7}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3392 {0x1ff8,0x1ff9,1,-128}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3393 {0x1ffa,0x1ffb,1,-126}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3394 {0x1ffc,0x1ffc,-1,-9}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3395 {0x2126,0x2126,-1,-7517}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3396 {0x212a,0x212a,-1,-8383}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3397 {0x212b,0x212b,-1,-8262}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3398 {0x2132,0x2132,-1,28}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3399 {0x2160,0x216f,1,16}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3400 {0x2183,0x2183,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3401 {0x24b6,0x24cf,1,26}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3402 {0x2c00,0x2c2f,1,48}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3403 {0x2c60,0x2c60,-1,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3404 {0x2c62,0x2c62,-1,-10743}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3405 {0x2c63,0x2c63,-1,-3814}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3406 {0x2c64,0x2c64,-1,-10727}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3407 {0x2c67,0x2c6b,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3408 {0x2c6d,0x2c6d,-1,-10780}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3409 {0x2c6e,0x2c6e,-1,-10749}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3410 {0x2c6f,0x2c6f,-1,-10783}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3411 {0x2c70,0x2c70,-1,-10782}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3412 {0x2c72,0x2c75,3,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3413 {0x2c7e,0x2c7f,1,-10815}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3414 {0x2c80,0x2ce2,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3415 {0x2ceb,0x2ced,2,1}, |
6495 | 3416 {0x2cf2,0xa640,31054,1}, |
3417 {0xa642,0xa66c,2,1}, | |
3418 {0xa680,0xa69a,2,1}, | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3419 {0xa722,0xa72e,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3420 {0xa732,0xa76e,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3421 {0xa779,0xa77b,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3422 {0xa77d,0xa77d,-1,-35332}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3423 {0xa77e,0xa786,2,1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3424 {0xa78b,0xa78b,-1,1}, |
6495 | 3425 {0xa78d,0xa78d,-1,-42280}, |
3426 {0xa790,0xa792,2,1}, | |
3427 {0xa796,0xa7a8,2,1}, | |
3428 {0xa7aa,0xa7aa,-1,-42308}, | |
3429 {0xa7ab,0xa7ab,-1,-42319}, | |
3430 {0xa7ac,0xa7ac,-1,-42315}, | |
3431 {0xa7ad,0xa7ad,-1,-42305}, | |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3432 {0xa7ae,0xa7ae,-1,-42308}, |
6495 | 3433 {0xa7b0,0xa7b0,-1,-42258}, |
3434 {0xa7b1,0xa7b1,-1,-42282}, | |
6864 | 3435 {0xa7b2,0xa7b2,-1,-42261}, |
3436 {0xa7b3,0xa7b3,-1,928}, | |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3437 {0xa7b4,0xa7c2,2,1}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3438 {0xa7c4,0xa7c4,-1,-48}, |
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3439 {0xa7c5,0xa7c5,-1,-42307}, |
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3440 {0xa7c6,0xa7c6,-1,-35384}, |
25062
042560a16d4e
patch 8.2.3068: Unicode tables are slightly outdated
Bram Moolenaar <Bram@vim.org>
parents:
24912
diff
changeset
|
3441 {0xa7c7,0xa7c9,2,1}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3442 {0xa7d0,0xa7d6,6,1}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3443 {0xa7d8,0xa7f5,29,1}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3444 {0xff21,0xff3a,1,32}, |
6495 | 3445 {0x10400,0x10427,1,40}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3446 {0x104b0,0x104d3,1,40}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3447 {0x10570,0x1057a,1,39}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3448 {0x1057c,0x1058a,1,39}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3449 {0x1058c,0x10592,1,39}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3450 {0x10594,0x10595,1,39}, |
6864 | 3451 {0x10c80,0x10cb2,1,64}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3452 {0x118a0,0x118bf,1,32}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
3453 {0x16e40,0x16e5f,1,32}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3454 {0x1e900,0x1e921,1,34} |
7 | 3455 }; |
3456 | |
34336
d2ad8733db75
patch 9.1.0101: upper-case of German sharp s should be U+1E9E
Christian Brabandt <cb@256bit.org>
parents:
34309
diff
changeset
|
3457 // Note: UnicodeData.txt does not define U+1E9E as being the corresponding upper |
d2ad8733db75
patch 9.1.0101: upper-case of German sharp s should be U+1E9E
Christian Brabandt <cb@256bit.org>
parents:
34309
diff
changeset
|
3458 // case letter for U+00DF (ß), however it is part of the toLower table |
297 | 3459 static convertStruct toUpper[] = |
7 | 3460 { |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3461 {0x61,0x7a,1,-32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3462 {0xb5,0xb5,-1,743}, |
6495 | 3463 {0xe0,0xf6,1,-32}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3464 {0xf8,0xfe,1,-32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3465 {0xff,0xff,-1,121}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3466 {0x101,0x12f,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3467 {0x131,0x131,-1,-232}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3468 {0x133,0x137,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3469 {0x13a,0x148,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3470 {0x14b,0x177,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3471 {0x17a,0x17e,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3472 {0x17f,0x17f,-1,-300}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3473 {0x180,0x180,-1,195}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3474 {0x183,0x185,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3475 {0x188,0x18c,4,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3476 {0x192,0x192,-1,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3477 {0x195,0x195,-1,97}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3478 {0x199,0x199,-1,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3479 {0x19a,0x19a,-1,163}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3480 {0x19e,0x19e,-1,130}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3481 {0x1a1,0x1a5,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3482 {0x1a8,0x1ad,5,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3483 {0x1b0,0x1b4,4,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3484 {0x1b6,0x1b9,3,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3485 {0x1bd,0x1bd,-1,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3486 {0x1bf,0x1bf,-1,56}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3487 {0x1c5,0x1c5,-1,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3488 {0x1c6,0x1c6,-1,-2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3489 {0x1c8,0x1c8,-1,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3490 {0x1c9,0x1c9,-1,-2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3491 {0x1cb,0x1cb,-1,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3492 {0x1cc,0x1cc,-1,-2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3493 {0x1ce,0x1dc,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3494 {0x1dd,0x1dd,-1,-79}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3495 {0x1df,0x1ef,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3496 {0x1f2,0x1f2,-1,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3497 {0x1f3,0x1f3,-1,-2}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3498 {0x1f5,0x1f9,4,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3499 {0x1fb,0x21f,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3500 {0x223,0x233,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3501 {0x23c,0x23c,-1,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3502 {0x23f,0x240,1,10815}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3503 {0x242,0x247,5,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3504 {0x249,0x24f,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3505 {0x250,0x250,-1,10783}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3506 {0x251,0x251,-1,10780}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3507 {0x252,0x252,-1,10782}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3508 {0x253,0x253,-1,-210}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3509 {0x254,0x254,-1,-206}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3510 {0x256,0x257,1,-205}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3511 {0x259,0x259,-1,-202}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3512 {0x25b,0x25b,-1,-203}, |
6495 | 3513 {0x25c,0x25c,-1,42319}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3514 {0x260,0x260,-1,-205}, |
6495 | 3515 {0x261,0x261,-1,42315}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3516 {0x263,0x263,-1,-207}, |
6495 | 3517 {0x265,0x265,-1,42280}, |
3518 {0x266,0x266,-1,42308}, | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3519 {0x268,0x268,-1,-209}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3520 {0x269,0x269,-1,-211}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3521 {0x26a,0x26a,-1,42308}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3522 {0x26b,0x26b,-1,10743}, |
6495 | 3523 {0x26c,0x26c,-1,42305}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3524 {0x26f,0x26f,-1,-211}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3525 {0x271,0x271,-1,10749}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3526 {0x272,0x272,-1,-213}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3527 {0x275,0x275,-1,-214}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3528 {0x27d,0x27d,-1,10727}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3529 {0x280,0x280,-1,-218}, |
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3530 {0x282,0x282,-1,42307}, |
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3531 {0x283,0x283,-1,-218}, |
6495 | 3532 {0x287,0x287,-1,42282}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3533 {0x288,0x288,-1,-218}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3534 {0x289,0x289,-1,-69}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3535 {0x28a,0x28b,1,-217}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3536 {0x28c,0x28c,-1,-71}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3537 {0x292,0x292,-1,-219}, |
6864 | 3538 {0x29d,0x29d,-1,42261}, |
6495 | 3539 {0x29e,0x29e,-1,42258}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3540 {0x345,0x345,-1,84}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3541 {0x371,0x373,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3542 {0x377,0x377,-1,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3543 {0x37b,0x37d,1,130}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3544 {0x3ac,0x3ac,-1,-38}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3545 {0x3ad,0x3af,1,-37}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3546 {0x3b1,0x3c1,1,-32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3547 {0x3c2,0x3c2,-1,-31}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3548 {0x3c3,0x3cb,1,-32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3549 {0x3cc,0x3cc,-1,-64}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3550 {0x3cd,0x3ce,1,-63}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3551 {0x3d0,0x3d0,-1,-62}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3552 {0x3d1,0x3d1,-1,-57}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3553 {0x3d5,0x3d5,-1,-47}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3554 {0x3d6,0x3d6,-1,-54}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3555 {0x3d7,0x3d7,-1,-8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3556 {0x3d9,0x3ef,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3557 {0x3f0,0x3f0,-1,-86}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3558 {0x3f1,0x3f1,-1,-80}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3559 {0x3f2,0x3f2,-1,7}, |
6495 | 3560 {0x3f3,0x3f3,-1,-116}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3561 {0x3f5,0x3f5,-1,-96}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3562 {0x3f8,0x3fb,3,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3563 {0x430,0x44f,1,-32}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3564 {0x450,0x45f,1,-80}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3565 {0x461,0x481,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3566 {0x48b,0x4bf,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3567 {0x4c2,0x4ce,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3568 {0x4cf,0x4cf,-1,-15}, |
6495 | 3569 {0x4d1,0x52f,2,-1}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3570 {0x561,0x586,1,-48}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
3571 {0x10d0,0x10fa,1,3008}, |
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
3572 {0x10fd,0x10ff,1,3008}, |
6864 | 3573 {0x13f8,0x13fd,1,-8}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3574 {0x1c80,0x1c80,-1,-6254}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3575 {0x1c81,0x1c81,-1,-6253}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3576 {0x1c82,0x1c82,-1,-6244}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3577 {0x1c83,0x1c84,1,-6242}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3578 {0x1c85,0x1c85,-1,-6243}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3579 {0x1c86,0x1c86,-1,-6236}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3580 {0x1c87,0x1c87,-1,-6181}, |
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3581 {0x1c88,0x1c88,-1,35266}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3582 {0x1d79,0x1d79,-1,35332}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3583 {0x1d7d,0x1d7d,-1,3814}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3584 {0x1d8e,0x1d8e,-1,35384}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3585 {0x1e01,0x1e95,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3586 {0x1e9b,0x1e9b,-1,-59}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3587 {0x1ea1,0x1eff,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3588 {0x1f00,0x1f07,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3589 {0x1f10,0x1f15,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3590 {0x1f20,0x1f27,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3591 {0x1f30,0x1f37,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3592 {0x1f40,0x1f45,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3593 {0x1f51,0x1f57,2,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3594 {0x1f60,0x1f67,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3595 {0x1f70,0x1f71,1,74}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3596 {0x1f72,0x1f75,1,86}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3597 {0x1f76,0x1f77,1,100}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3598 {0x1f78,0x1f79,1,128}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3599 {0x1f7a,0x1f7b,1,112}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3600 {0x1f7c,0x1f7d,1,126}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3601 {0x1f80,0x1f87,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3602 {0x1f90,0x1f97,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3603 {0x1fa0,0x1fa7,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3604 {0x1fb0,0x1fb1,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3605 {0x1fb3,0x1fb3,-1,9}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3606 {0x1fbe,0x1fbe,-1,-7205}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3607 {0x1fc3,0x1fc3,-1,9}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3608 {0x1fd0,0x1fd1,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3609 {0x1fe0,0x1fe1,1,8}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3610 {0x1fe5,0x1fe5,-1,7}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3611 {0x1ff3,0x1ff3,-1,9}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3612 {0x214e,0x214e,-1,-28}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3613 {0x2170,0x217f,1,-16}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3614 {0x2184,0x2184,-1,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3615 {0x24d0,0x24e9,1,-26}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3616 {0x2c30,0x2c5f,1,-48}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3617 {0x2c61,0x2c61,-1,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3618 {0x2c65,0x2c65,-1,-10795}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3619 {0x2c66,0x2c66,-1,-10792}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3620 {0x2c68,0x2c6c,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3621 {0x2c73,0x2c76,3,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3622 {0x2c81,0x2ce3,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3623 {0x2cec,0x2cee,2,-1}, |
6495 | 3624 {0x2cf3,0x2cf3,-1,-1}, |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3625 {0x2d00,0x2d25,1,-7264}, |
6495 | 3626 {0x2d27,0x2d2d,6,-7264}, |
3627 {0xa641,0xa66d,2,-1}, | |
3628 {0xa681,0xa69b,2,-1}, | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3629 {0xa723,0xa72f,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3630 {0xa733,0xa76f,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3631 {0xa77a,0xa77c,2,-1}, |
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3632 {0xa77f,0xa787,2,-1}, |
6495 | 3633 {0xa78c,0xa791,5,-1}, |
16304
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3634 {0xa793,0xa793,-1,-1}, |
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3635 {0xa794,0xa794,-1,48}, |
c83169bdb290
patch 8.1.1157: Unicode tables are out of date
Bram Moolenaar <Bram@vim.org>
parents:
16302
diff
changeset
|
3636 {0xa797,0xa7a9,2,-1}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3637 {0xa7b5,0xa7c3,2,-1}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3638 {0xa7c8,0xa7ca,2,-1}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3639 {0xa7d1,0xa7d7,6,-1}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3640 {0xa7d9,0xa7f6,29,-1}, |
6864 | 3641 {0xab53,0xab53,-1,-928}, |
3642 {0xab70,0xabbf,1,-38864}, | |
2041
d5867fd6b2b7
updated for version 7.2.330
Bram Moolenaar <bram@zimbu.org>
parents:
2015
diff
changeset
|
3643 {0xff41,0xff5a,1,-32}, |
6495 | 3644 {0x10428,0x1044f,1,-40}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3645 {0x104d8,0x104fb,1,-40}, |
30503
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3646 {0x10597,0x105a1,1,-39}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3647 {0x105a3,0x105b1,1,-39}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3648 {0x105b3,0x105b9,1,-39}, |
3ee335235412
patch 9.0.0587: Unicode tables are outdated
Bram Moolenaar <Bram@vim.org>
parents:
30053
diff
changeset
|
3649 {0x105bb,0x105bc,1,-39}, |
6864 | 3650 {0x10cc0,0x10cf2,1,-64}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3651 {0x118c0,0x118df,1,-32}, |
14333
65ded7626193
patch 8.1.0182: Unicode standard was updated
Christian Brabandt <cb@256bit.org>
parents:
14075
diff
changeset
|
3652 {0x16e60,0x16e7f,1,-32}, |
9357
f9524b765095
commit https://github.com/vim/vim/commit/04e2b4b0c4866586ecce3d1567f9b0bdeeb31f15
Christian Brabandt <cb@256bit.org>
parents:
8819
diff
changeset
|
3653 {0x1e922,0x1e943,1,-34} |
7 | 3654 }; |
8682
4ce551bd5024
commit https://github.com/vim/vim/commit/d63aff0a65b955447de2fd8bfdaee29b61ce2843
Christian Brabandt <cb@256bit.org>
parents:
8680
diff
changeset
|
3655 |
7 | 3656 /* |
3657 * Return the upper-case equivalent of "a", which is a UCS-4 character. Use | |
3658 * simple case folding. | |
3659 */ | |
3660 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3661 utf_toupper(int a) |
7 | 3662 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3663 // If 'casemap' contains "keepascii" use ASCII style toupper(). |
7 | 3664 if (a < 128 && (cmp_flags & CMP_KEEPASCII)) |
3665 return TOUPPER_ASC(a); | |
3666 | |
856 | 3667 #if defined(HAVE_TOWUPPER) && defined(__STDC_ISO_10646__) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3668 // If towupper() is available and handles Unicode, use it. |
7 | 3669 if (!(cmp_flags & CMP_INTERNAL)) |
3670 return towupper(a); | |
3671 #endif | |
3672 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3673 // For characters below 128 use locale sensitive toupper(). |
7 | 3674 if (a < 128) |
3675 return TOUPPER_LOC(a); | |
3676 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3677 // For any other characters use the above mapping table. |
3190 | 3678 return utf_convert(a, toUpper, (int)sizeof(toUpper)); |
7 | 3679 } |
3680 | |
3681 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3682 utf_islower(int a) |
7 | 3683 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3684 // German sharp s is lower case but has no upper case equivalent. |
3551 | 3685 return (utf_toupper(a) != a) || a == 0xdf; |
7 | 3686 } |
3687 | |
3688 /* | |
3689 * Return the lower-case equivalent of "a", which is a UCS-4 character. Use | |
3690 * simple case folding. | |
3691 */ | |
3692 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3693 utf_tolower(int a) |
7 | 3694 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3695 // If 'casemap' contains "keepascii" use ASCII style tolower(). |
7 | 3696 if (a < 128 && (cmp_flags & CMP_KEEPASCII)) |
3697 return TOLOWER_ASC(a); | |
3698 | |
856 | 3699 #if defined(HAVE_TOWLOWER) && defined(__STDC_ISO_10646__) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3700 // If towlower() is available and handles Unicode, use it. |
7 | 3701 if (!(cmp_flags & CMP_INTERNAL)) |
3702 return towlower(a); | |
3703 #endif | |
3704 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3705 // For characters below 128 use locale sensitive tolower(). |
7 | 3706 if (a < 128) |
3707 return TOLOWER_LOC(a); | |
3708 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3709 // For any other characters use the above mapping table. |
3190 | 3710 return utf_convert(a, toLower, (int)sizeof(toLower)); |
7 | 3711 } |
3712 | |
3713 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3714 utf_isupper(int a) |
7 | 3715 { |
3716 return (utf_tolower(a) != a); | |
3717 } | |
3718 | |
2961 | 3719 static int |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3720 utf_strnicmp( |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3721 char_u *s1, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3722 char_u *s2, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3723 size_t n1, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3724 size_t n2) |
2961 | 3725 { |
3726 int c1, c2, cdiff; | |
3727 char_u buffer[6]; | |
3728 | |
3729 for (;;) | |
3730 { | |
3731 c1 = utf_safe_read_char_adv(&s1, &n1); | |
3732 c2 = utf_safe_read_char_adv(&s2, &n2); | |
3733 | |
3734 if (c1 <= 0 || c2 <= 0) | |
3735 break; | |
3736 | |
3737 if (c1 == c2) | |
3738 continue; | |
3739 | |
3740 cdiff = utf_fold(c1) - utf_fold(c2); | |
3741 if (cdiff != 0) | |
3742 return cdiff; | |
3743 } | |
3744 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3745 // some string ended or has an incomplete/illegal character sequence |
2961 | 3746 |
3747 if (c1 == 0 || c2 == 0) | |
3748 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3749 // some string ended. shorter string is smaller |
2961 | 3750 if (c1 == 0 && c2 == 0) |
3751 return 0; | |
3752 return c1 == 0 ? -1 : 1; | |
3753 } | |
3754 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3755 // Continue with bytewise comparison to produce some result that |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3756 // would make comparison operations involving this function transitive. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3757 // |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3758 // If only one string had an error, comparison should be made with |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3759 // folded version of the other string. In this case it is enough |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3760 // to fold just one character to determine the result of comparison. |
2961 | 3761 |
3762 if (c1 != -1 && c2 == -1) | |
3763 { | |
3764 n1 = utf_char2bytes(utf_fold(c1), buffer); | |
3765 s1 = buffer; | |
3766 } | |
3767 else if (c2 != -1 && c1 == -1) | |
3768 { | |
3769 n2 = utf_char2bytes(utf_fold(c2), buffer); | |
3770 s2 = buffer; | |
3771 } | |
3772 | |
3773 while (n1 > 0 && n2 > 0 && *s1 != NUL && *s2 != NUL) | |
3774 { | |
3775 cdiff = (int)(*s1) - (int)(*s2); | |
3776 if (cdiff != 0) | |
3777 return cdiff; | |
3778 | |
3779 s1++; | |
3780 s2++; | |
3781 n1--; | |
3782 n2--; | |
3783 } | |
3784 | |
3785 if (n1 > 0 && *s1 == NUL) | |
3786 n1 = 0; | |
3787 if (n2 > 0 && *s2 == NUL) | |
3788 n2 = 0; | |
3789 | |
3790 if (n1 == 0 && n2 == 0) | |
3791 return 0; | |
3792 return n1 == 0 ? -1 : 1; | |
3793 } | |
3794 | |
7 | 3795 /* |
3796 * Version of strnicmp() that handles multi-byte characters. | |
4025 | 3797 * Needed for Big5, Shift-JIS and UTF-8 encoding. Other DBCS encodings can |
7 | 3798 * probably use strnicmp(), because there are no ASCII characters in the |
3799 * second byte. | |
3800 * Returns zero if s1 and s2 are equal (ignoring case), the difference between | |
3801 * two characters otherwise. | |
3802 */ | |
3803 int | |
34854
97b5457962ed
patch 9.1.0296: regexp: engines do not handle case-folding well
Christian Brabandt <cb@256bit.org>
parents:
34540
diff
changeset
|
3804 mb_strnicmp2(char_u *s1, char_u *s2, int n1, int n2) |
97b5457962ed
patch 9.1.0296: regexp: engines do not handle case-folding well
Christian Brabandt <cb@256bit.org>
parents:
34540
diff
changeset
|
3805 { |
97b5457962ed
patch 9.1.0296: regexp: engines do not handle case-folding well
Christian Brabandt <cb@256bit.org>
parents:
34540
diff
changeset
|
3806 if (n1 == n2 || !enc_utf8) |
97b5457962ed
patch 9.1.0296: regexp: engines do not handle case-folding well
Christian Brabandt <cb@256bit.org>
parents:
34540
diff
changeset
|
3807 return mb_strnicmp(s1, s2, n1); |
97b5457962ed
patch 9.1.0296: regexp: engines do not handle case-folding well
Christian Brabandt <cb@256bit.org>
parents:
34540
diff
changeset
|
3808 else |
97b5457962ed
patch 9.1.0296: regexp: engines do not handle case-folding well
Christian Brabandt <cb@256bit.org>
parents:
34540
diff
changeset
|
3809 return utf_strnicmp(s1, s2, n1, n2); |
97b5457962ed
patch 9.1.0296: regexp: engines do not handle case-folding well
Christian Brabandt <cb@256bit.org>
parents:
34540
diff
changeset
|
3810 } |
97b5457962ed
patch 9.1.0296: regexp: engines do not handle case-folding well
Christian Brabandt <cb@256bit.org>
parents:
34540
diff
changeset
|
3811 |
97b5457962ed
patch 9.1.0296: regexp: engines do not handle case-folding well
Christian Brabandt <cb@256bit.org>
parents:
34540
diff
changeset
|
3812 int |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3813 mb_strnicmp(char_u *s1, char_u *s2, size_t nn) |
7 | 3814 { |
2961 | 3815 int i, l; |
7 | 3816 int cdiff; |
835 | 3817 int n = (int)nn; |
7 | 3818 |
2961 | 3819 if (enc_utf8) |
7 | 3820 { |
2961 | 3821 return utf_strnicmp(s1, s2, nn, nn); |
3822 } | |
3823 else | |
3824 { | |
3825 for (i = 0; i < n; i += l) | |
7 | 3826 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3827 if (s1[i] == NUL && s2[i] == NUL) // both strings end |
2961 | 3828 return 0; |
3829 | |
474 | 3830 l = (*mb_ptr2len)(s1 + i); |
7 | 3831 if (l <= 1) |
3832 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3833 // Single byte: first check normally, then with ignore case. |
7 | 3834 if (s1[i] != s2[i]) |
3835 { | |
1347 | 3836 cdiff = MB_TOLOWER(s1[i]) - MB_TOLOWER(s2[i]); |
7 | 3837 if (cdiff != 0) |
3838 return cdiff; | |
3839 } | |
3840 } | |
3841 else | |
3842 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3843 // For non-Unicode multi-byte don't ignore case. |
7 | 3844 if (l > n - i) |
3845 l = n - i; | |
3846 cdiff = STRNCMP(s1 + i, s2 + i, l); | |
3847 if (cdiff != 0) | |
3848 return cdiff; | |
3849 } | |
3850 } | |
3851 } | |
3852 return 0; | |
3853 } | |
3854 | |
3855 /* | |
3856 * "g8": show bytes of the UTF-8 char under the cursor. Doesn't matter what | |
3857 * 'encoding' has been set to. | |
3858 */ | |
3859 void | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3860 show_utf8(void) |
7 | 3861 { |
3862 int len; | |
273 | 3863 int rlen = 0; |
7 | 3864 char_u *line; |
3865 int clen; | |
3866 int i; | |
3867 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3868 // Get the byte length of the char under the cursor, including composing |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3869 // characters. |
7 | 3870 line = ml_get_cursor(); |
474 | 3871 len = utfc_ptr2len(line); |
7 | 3872 if (len == 0) |
3873 { | |
15543
dd725a8ab112
patch 8.1.0779: argument for message functions is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15474
diff
changeset
|
3874 msg("NUL"); |
7 | 3875 return; |
3876 } | |
3877 | |
3878 clen = 0; | |
3879 for (i = 0; i < len; ++i) | |
3880 { | |
3881 if (clen == 0) | |
3882 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3883 // start of (composing) character, get its length |
7 | 3884 if (i > 0) |
273 | 3885 { |
3886 STRCPY(IObuff + rlen, "+ "); | |
3887 rlen += 2; | |
3888 } | |
474 | 3889 clen = utf_ptr2len(line + i); |
7 | 3890 } |
2205
54605ada811b
"g8" doesn't work properly on a NUL.
Bram Moolenaar <bram@vim.org>
parents:
2154
diff
changeset
|
3891 sprintf((char *)IObuff + rlen, "%02x ", |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3892 (line[i] == NL) ? NUL : line[i]); // NUL is stored as NL |
7 | 3893 --clen; |
835 | 3894 rlen += (int)STRLEN(IObuff + rlen); |
273 | 3895 if (rlen > IOSIZE - 20) |
3896 break; | |
7 | 3897 } |
3898 | |
15543
dd725a8ab112
patch 8.1.0779: argument for message functions is inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15474
diff
changeset
|
3899 msg((char *)IObuff); |
7 | 3900 } |
3901 | |
3902 /* | |
3903 * mb_head_off() function pointer. | |
3904 * Return offset from "p" to the first byte of the character it points into. | |
2015 | 3905 * If "p" points to the NUL at the end of the string return 0. |
7 | 3906 * Returns 0 when already at the first byte of a character. |
3907 */ | |
3908 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3909 latin_head_off(char_u *base UNUSED, char_u *p UNUSED) |
7 | 3910 { |
3911 return 0; | |
3912 } | |
3913 | |
18051
d1e77015f60b
patch 8.1.2021: some global functions can be local to the file
Bram Moolenaar <Bram@vim.org>
parents:
18014
diff
changeset
|
3914 static int |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3915 dbcs_head_off(char_u *base, char_u *p) |
7 | 3916 { |
3917 char_u *q; | |
3918 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3919 // It can't be a trailing byte when not using DBCS, at the start of the |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3920 // string or the previous byte can't start a double-byte. |
2015 | 3921 if (p <= base || MB_BYTE2LEN(p[-1]) == 1 || *p == NUL) |
7 | 3922 return 0; |
3923 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3924 // This is slow: need to start at the base and go forward until the |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3925 // byte we are looking for. Return 1 when we went past it, 0 otherwise. |
7 | 3926 q = base; |
3927 while (q < p) | |
474 | 3928 q += dbcs_ptr2len(q); |
7 | 3929 return (q == p) ? 0 : 1; |
3930 } | |
3931 | |
3932 /* | |
3933 * Special version of dbcs_head_off() that works for ScreenLines[], where | |
3934 * single-width DBCS_JPNU characters are stored separately. | |
3935 */ | |
3936 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3937 dbcs_screen_head_off(char_u *base, char_u *p) |
7 | 3938 { |
3939 char_u *q; | |
3940 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3941 // It can't be a trailing byte when not using DBCS, at the start of the |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3942 // string or the previous byte can't start a double-byte. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3943 // For euc-jp an 0x8e byte in the previous cell always means we have a |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3944 // lead byte in the current cell. |
7 | 3945 if (p <= base |
3946 || (enc_dbcs == DBCS_JPNU && p[-1] == 0x8e) | |
2015 | 3947 || MB_BYTE2LEN(p[-1]) == 1 |
3948 || *p == NUL) | |
7 | 3949 return 0; |
3950 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3951 // This is slow: need to start at the base and go forward until the |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3952 // byte we are looking for. Return 1 when we went past it, 0 otherwise. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3953 // For DBCS_JPNU look out for 0x8e, which means the second byte is not |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3954 // stored as the next byte. |
7 | 3955 q = base; |
3956 while (q < p) | |
3957 { | |
3958 if (enc_dbcs == DBCS_JPNU && *q == 0x8e) | |
3959 ++q; | |
3960 else | |
474 | 3961 q += dbcs_ptr2len(q); |
7 | 3962 } |
3963 return (q == p) ? 0 : 1; | |
3964 } | |
3965 | |
26592
9f445e07f766
patch 8.2.3825: various comments could be improved
Bram Moolenaar <Bram@vim.org>
parents:
26075
diff
changeset
|
3966 /* |
9f445e07f766
patch 8.2.3825: various comments could be improved
Bram Moolenaar <Bram@vim.org>
parents:
26075
diff
changeset
|
3967 * Return offset from "p" to the start of a character, including composing |
9f445e07f766
patch 8.2.3825: various comments could be improved
Bram Moolenaar <Bram@vim.org>
parents:
26075
diff
changeset
|
3968 * characters. "base" must be the start of the string, which must be NUL |
9f445e07f766
patch 8.2.3825: various comments could be improved
Bram Moolenaar <Bram@vim.org>
parents:
26075
diff
changeset
|
3969 * terminated. |
9f445e07f766
patch 8.2.3825: various comments could be improved
Bram Moolenaar <Bram@vim.org>
parents:
26075
diff
changeset
|
3970 */ |
7 | 3971 int |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
3972 utf_head_off(char_u *base, char_u *p) |
7 | 3973 { |
3974 char_u *q; | |
3975 char_u *s; | |
3976 int c; | |
2015 | 3977 int len; |
7 | 3978 #ifdef FEAT_ARABIC |
3979 char_u *j; | |
3980 #endif | |
3981 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3982 if (*p < 0x80) // be quick for ASCII |
7 | 3983 return 0; |
3984 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3985 // Skip backwards over trailing bytes: 10xx.xxxx |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3986 // Skip backwards again if on a composing char. |
7 | 3987 for (q = p; ; --q) |
3988 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3989 // Move s to the last byte of this char. |
7 | 3990 for (s = q; (s[1] & 0xc0) == 0x80; ++s) |
3991 ; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3992 // Move q to the first byte of this char. |
7 | 3993 while (q > base && (*q & 0xc0) == 0x80) |
3994 --q; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3995 // Check for illegal sequence. Do allow an illegal byte after where we |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
3996 // started. |
2015 | 3997 len = utf8len_tab[*q]; |
3998 if (len != (int)(s - q + 1) && len != (int)(p - q + 1)) | |
7 | 3999 return 0; |
4000 | |
4001 if (q <= base) | |
4002 break; | |
4003 | |
4004 c = utf_ptr2char(q); | |
4005 if (utf_iscomposing(c)) | |
4006 continue; | |
4007 | |
4008 #ifdef FEAT_ARABIC | |
4009 if (arabic_maycombine(c)) | |
4010 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4011 // Advance to get a sneak-peak at the next char |
7 | 4012 j = q; |
4013 --j; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4014 // Move j to the first byte of this char. |
7 | 4015 while (j > base && (*j & 0xc0) == 0x80) |
4016 --j; | |
4017 if (arabic_combine(utf_ptr2char(j), c)) | |
4018 continue; | |
4019 } | |
4020 #endif | |
4021 break; | |
4022 } | |
4023 | |
4024 return (int)(p - q); | |
4025 } | |
4026 | |
4027 /* | |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4028 * Whether space is NOT allowed before/after 'c'. |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4029 */ |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4030 int |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4031 utf_eat_space(int cc) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4032 { |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4033 return ((cc >= 0x2000 && cc <= 0x206F) // General punctuations |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4034 || (cc >= 0x2e00 && cc <= 0x2e7f) // Supplemental punctuations |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4035 || (cc >= 0x3000 && cc <= 0x303f) // CJK symbols and punctuations |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4036 || (cc >= 0xff01 && cc <= 0xff0f) // Full width ASCII punctuations |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4037 || (cc >= 0xff1a && cc <= 0xff20) // .. |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4038 || (cc >= 0xff3b && cc <= 0xff40) // .. |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4039 || (cc >= 0xff5b && cc <= 0xff65)); // .. |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4040 } |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4041 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4042 /* |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4043 * Whether line break is allowed before "cc". |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4044 */ |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4045 int |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4046 utf_allow_break_before(int cc) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4047 { |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4048 static const int BOL_prohibition_punct[] = |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4049 { |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4050 '!', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4051 '%', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4052 ')', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4053 ',', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4054 ':', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4055 ';', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4056 '>', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4057 '?', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4058 ']', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4059 '}', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4060 0x2019, // ’ right single quotation mark |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4061 0x201d, // ” right double quotation mark |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4062 0x2020, // † dagger |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4063 0x2021, // ‡ double dagger |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4064 0x2026, // … horizontal ellipsis |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4065 0x2030, // ‰ per mille sign |
33223
def9fc5c92d1
patch 9.0.1886: Various Typos
Christian Brabandt <cb@256bit.org>
parents:
32120
diff
changeset
|
4066 0x2031, // ‱ per ten thousand sign |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4067 0x203c, // ‼ double exclamation mark |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4068 0x2047, // ⁇ double question mark |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4069 0x2048, // ⁈ question exclamation mark |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4070 0x2049, // ⁉ exclamation question mark |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4071 0x2103, // ℃ degree celsius |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4072 0x2109, // ℉ degree fahrenheit |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4073 0x3001, // 、 ideographic comma |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4074 0x3002, // 。 ideographic full stop |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4075 0x3009, // 〉 right angle bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4076 0x300b, // 》 right double angle bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4077 0x300d, // 」 right corner bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4078 0x300f, // 』 right white corner bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4079 0x3011, // 】 right black lenticular bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4080 0x3015, // 〕 right tortoise shell bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4081 0x3017, // 〗 right white lenticular bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4082 0x3019, // 〙 right white tortoise shell bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4083 0x301b, // 〛 right white square bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4084 0xff01, // ! fullwidth exclamation mark |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4085 0xff09, // ) fullwidth right parenthesis |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4086 0xff0c, // , fullwidth comma |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4087 0xff0e, // . fullwidth full stop |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4088 0xff1a, // : fullwidth colon |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4089 0xff1b, // ; fullwidth semicolon |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4090 0xff1f, // ? fullwidth question mark |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4091 0xff3d, // ] fullwidth right square bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4092 0xff5d, // } fullwidth right curly bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4093 }; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4094 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4095 int first = 0; |
24768
7334bf933510
patch 8.2.2922: computing array length is done in various ways
Bram Moolenaar <Bram@vim.org>
parents:
24754
diff
changeset
|
4096 int last = ARRAY_LENGTH(BOL_prohibition_punct) - 1; |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4097 int mid = 0; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4098 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4099 while (first < last) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4100 { |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4101 mid = (first + last)/2; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4102 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4103 if (cc == BOL_prohibition_punct[mid]) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4104 return FALSE; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4105 else if (cc > BOL_prohibition_punct[mid]) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4106 first = mid + 1; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4107 else |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4108 last = mid - 1; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4109 } |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4110 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4111 return cc != BOL_prohibition_punct[first]; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4112 } |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4113 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4114 /* |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4115 * Whether line break is allowed after "cc". |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4116 */ |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4117 static int |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4118 utf_allow_break_after(int cc) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4119 { |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4120 static const int EOL_prohibition_punct[] = |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4121 { |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4122 '(', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4123 '<', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4124 '[', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4125 '`', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4126 '{', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4127 //0x2014, // — em dash |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4128 0x2018, // ‘ left single quotation mark |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4129 0x201c, // “ left double quotation mark |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4130 //0x2053, // ~ swung dash |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4131 0x3008, // 〈 left angle bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4132 0x300a, // 《 left double angle bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4133 0x300c, // 「 left corner bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4134 0x300e, // 『 left white corner bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4135 0x3010, // 【 left black lenticular bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4136 0x3014, // 〔 left tortoise shell bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4137 0x3016, // 〖 left white lenticular bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4138 0x3018, // 〘 left white tortoise shell bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4139 0x301a, // 〚 left white square bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4140 0xff08, // ( fullwidth left parenthesis |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4141 0xff3b, // [ fullwidth left square bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4142 0xff5b, // { fullwidth left curly bracket |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4143 }; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4144 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4145 int first = 0; |
24768
7334bf933510
patch 8.2.2922: computing array length is done in various ways
Bram Moolenaar <Bram@vim.org>
parents:
24754
diff
changeset
|
4146 int last = ARRAY_LENGTH(EOL_prohibition_punct) - 1; |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4147 int mid = 0; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4148 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4149 while (first < last) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4150 { |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4151 mid = (first + last)/2; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4152 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4153 if (cc == EOL_prohibition_punct[mid]) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4154 return FALSE; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4155 else if (cc > EOL_prohibition_punct[mid]) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4156 first = mid + 1; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4157 else |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4158 last = mid - 1; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4159 } |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4160 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4161 return cc != EOL_prohibition_punct[first]; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4162 } |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4163 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4164 /* |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4165 * Whether line break is allowed between "cc" and "ncc". |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4166 */ |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4167 int |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4168 utf_allow_break(int cc, int ncc) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4169 { |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4170 // don't break between two-letter punctuations |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4171 if (cc == ncc |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4172 && (cc == 0x2014 // em dash |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4173 || cc == 0x2026)) // horizontal ellipsis |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4174 return FALSE; |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4175 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4176 return utf_allow_break_after(cc) && utf_allow_break_before(ncc); |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4177 } |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4178 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
20637
diff
changeset
|
4179 /* |
99 | 4180 * Copy a character from "*fp" to "*tp" and advance the pointers. |
4181 */ | |
4182 void | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4183 mb_copy_char(char_u **fp, char_u **tp) |
99 | 4184 { |
474 | 4185 int l = (*mb_ptr2len)(*fp); |
99 | 4186 |
4187 mch_memmove(*tp, *fp, (size_t)l); | |
4188 *tp += l; | |
4189 *fp += l; | |
4190 } | |
4191 | |
4192 /* | |
7 | 4193 * Return the offset from "p" to the first byte of a character. When "p" is |
4194 * at the start of a character 0 is returned, otherwise the offset to the next | |
4195 * character. Can start anywhere in a stream of bytes. | |
4196 */ | |
4197 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4198 mb_off_next(char_u *base, char_u *p) |
7 | 4199 { |
34431
cffcacc1502a
patch 9.1.0137: <Del> in cmdline mode doesn't delete composing chars
Christian Brabandt <cb@256bit.org>
parents:
34336
diff
changeset
|
4200 int head_off = (*mb_head_off)(base, p); |
cffcacc1502a
patch 9.1.0137: <Del> in cmdline mode doesn't delete composing chars
Christian Brabandt <cb@256bit.org>
parents:
34336
diff
changeset
|
4201 |
cffcacc1502a
patch 9.1.0137: <Del> in cmdline mode doesn't delete composing chars
Christian Brabandt <cb@256bit.org>
parents:
34336
diff
changeset
|
4202 if (head_off == 0) |
cffcacc1502a
patch 9.1.0137: <Del> in cmdline mode doesn't delete composing chars
Christian Brabandt <cb@256bit.org>
parents:
34336
diff
changeset
|
4203 return 0; |
cffcacc1502a
patch 9.1.0137: <Del> in cmdline mode doesn't delete composing chars
Christian Brabandt <cb@256bit.org>
parents:
34336
diff
changeset
|
4204 |
cffcacc1502a
patch 9.1.0137: <Del> in cmdline mode doesn't delete composing chars
Christian Brabandt <cb@256bit.org>
parents:
34336
diff
changeset
|
4205 return (*mb_ptr2len)(p - head_off) - head_off; |
7 | 4206 } |
4207 | |
4208 /* | |
4209 * Return the offset from "p" to the last byte of the character it points | |
4210 * into. Can start anywhere in a stream of bytes. | |
26592
9f445e07f766
patch 8.2.3825: various comments could be improved
Bram Moolenaar <Bram@vim.org>
parents:
26075
diff
changeset
|
4211 * Composing characters are not included. |
7 | 4212 */ |
4213 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4214 mb_tail_off(char_u *base, char_u *p) |
7 | 4215 { |
4216 int i; | |
4217 int j; | |
4218 | |
4219 if (*p == NUL) | |
4220 return 0; | |
4221 | |
4222 if (enc_utf8) | |
4223 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4224 // Find the last character that is 10xx.xxxx |
7 | 4225 for (i = 0; (p[i + 1] & 0xc0) == 0x80; ++i) |
4226 ; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4227 // Check for illegal sequence. |
7 | 4228 for (j = 0; p - j > base; ++j) |
4229 if ((p[-j] & 0xc0) != 0x80) | |
4230 break; | |
4231 if (utf8len_tab[p[-j]] != i + j + 1) | |
4232 return 0; | |
4233 return i; | |
4234 } | |
4235 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4236 // It can't be the first byte if a double-byte when not using DBCS, at the |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4237 // end of the string or the byte can't start a double-byte. |
7 | 4238 if (enc_dbcs == 0 || p[1] == NUL || MB_BYTE2LEN(*p) == 1) |
4239 return 0; | |
4240 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4241 // Return 1 when on the lead byte, 0 when on the tail byte. |
7 | 4242 return 1 - dbcs_head_off(base, p); |
4243 } | |
4244 | |
776 | 4245 /* |
4246 * Find the next illegal byte sequence. | |
4247 */ | |
4248 void | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4249 utf_find_illegal(void) |
776 | 4250 { |
4251 pos_T pos = curwin->w_cursor; | |
4252 char_u *p; | |
4253 int len; | |
4254 vimconv_T vimconv; | |
4255 char_u *tofree = NULL; | |
4256 | |
4257 vimconv.vc_type = CONV_NONE; | |
4258 if (enc_utf8 && (enc_canon_props(curbuf->b_p_fenc) & ENC_8BIT)) | |
4259 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4260 // 'encoding' is "utf-8" but we are editing a 8-bit encoded file, |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4261 // possibly a utf-8 file with illegal bytes. Setup for conversion |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4262 // from utf-8 to 'fileencoding'. |
776 | 4263 convert_setup(&vimconv, p_enc, curbuf->b_p_fenc); |
4264 } | |
4265 | |
4266 curwin->w_cursor.coladd = 0; | |
4267 for (;;) | |
4268 { | |
4269 p = ml_get_cursor(); | |
4270 if (vimconv.vc_type != CONV_NONE) | |
4271 { | |
4272 vim_free(tofree); | |
4273 tofree = string_convert(&vimconv, p, NULL); | |
4274 if (tofree == NULL) | |
4275 break; | |
4276 p = tofree; | |
4277 } | |
4278 | |
4279 while (*p != NUL) | |
4280 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4281 // Illegal means that there are not enough trail bytes (checked by |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4282 // utf_ptr2len()) or too many of them (overlong sequence). |
776 | 4283 len = utf_ptr2len(p); |
4284 if (*p >= 0x80 && (len == 1 | |
4285 || utf_char2len(utf_ptr2char(p)) != len)) | |
4286 { | |
4287 if (vimconv.vc_type == CONV_NONE) | |
835 | 4288 curwin->w_cursor.col += (colnr_T)(p - ml_get_cursor()); |
776 | 4289 else |
4290 { | |
4291 int l; | |
4292 | |
835 | 4293 len = (int)(p - tofree); |
776 | 4294 for (p = ml_get_cursor(); *p != NUL && len-- > 0; p += l) |
4295 { | |
4296 l = utf_ptr2len(p); | |
4297 curwin->w_cursor.col += l; | |
4298 } | |
4299 } | |
4300 goto theend; | |
4301 } | |
4302 p += len; | |
4303 } | |
4304 if (curwin->w_cursor.lnum == curbuf->b_ml.ml_line_count) | |
4305 break; | |
4306 ++curwin->w_cursor.lnum; | |
4307 curwin->w_cursor.col = 0; | |
4308 } | |
4309 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4310 // didn't find it: don't move and beep |
776 | 4311 curwin->w_cursor = pos; |
4312 beep_flush(); | |
4313 | |
4314 theend: | |
4315 vim_free(tofree); | |
4316 convert_setup(&vimconv, NULL, NULL); | |
4317 } | |
4318 | |
28790
a161c262e947
patch 8.2.4919: can add invalid bytes with :spellgood
Bram Moolenaar <Bram@vim.org>
parents:
28423
diff
changeset
|
4319 #if defined(FEAT_GUI_GTK) || defined(FEAT_SPELL) || defined(PROTO) |
26 | 4320 /* |
4321 * Return TRUE if string "s" is a valid utf-8 string. | |
29387
9dce192d1ac2
patch 9.0.0036: 'fillchars' cannot have window-local values
Bram Moolenaar <Bram@vim.org>
parents:
29105
diff
changeset
|
4322 * When "end" is NULL stop at the first NUL. Otherwise stop at "end". |
26 | 4323 */ |
4324 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4325 utf_valid_string(char_u *s, char_u *end) |
26 | 4326 { |
4327 int l; | |
4328 char_u *p = s; | |
4329 | |
4330 while (end == NULL ? *p != NUL : p < end) | |
4331 { | |
2015 | 4332 l = utf8len_tab_zero[*p]; |
4333 if (l == 0) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4334 return FALSE; // invalid lead byte |
26 | 4335 if (end != NULL && p + l > end) |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4336 return FALSE; // incomplete byte sequence |
26 | 4337 ++p; |
4338 while (--l > 0) | |
4339 if ((*p++ & 0xc0) != 0x80) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4340 return FALSE; // invalid trail byte |
26 | 4341 } |
4342 return TRUE; | |
4343 } | |
4344 #endif | |
4345 | |
7 | 4346 #if defined(FEAT_GUI) || defined(PROTO) |
4347 /* | |
4348 * Special version of mb_tail_off() for use in ScreenLines[]. | |
4349 */ | |
4350 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4351 dbcs_screen_tail_off(char_u *base, char_u *p) |
7 | 4352 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4353 // It can't be the first byte if a double-byte when not using DBCS, at the |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4354 // end of the string or the byte can't start a double-byte. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4355 // For euc-jp an 0x8e byte always means we have a lead byte in the current |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4356 // cell. |
7 | 4357 if (*p == NUL || p[1] == NUL |
4358 || (enc_dbcs == DBCS_JPNU && *p == 0x8e) | |
4359 || MB_BYTE2LEN(*p) == 1) | |
4360 return 0; | |
4361 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4362 // Return 1 when on the lead byte, 0 when on the tail byte. |
7 | 4363 return 1 - dbcs_screen_head_off(base, p); |
4364 } | |
4365 #endif | |
4366 | |
4367 /* | |
4368 * If the cursor moves on an trail byte, set the cursor on the lead byte. | |
4369 * Thus it moves left if necessary. | |
4370 * Return TRUE when the cursor was adjusted. | |
4371 */ | |
4372 void | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4373 mb_adjust_cursor(void) |
7 | 4374 { |
2933 | 4375 mb_adjustpos(curbuf, &curwin->w_cursor); |
7 | 4376 } |
4377 | |
4378 /* | |
4379 * Adjust position "*lp" to point to the first byte of a multi-byte character. | |
4380 * If it points to a tail byte it's moved backwards to the head byte. | |
4381 */ | |
4382 void | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4383 mb_adjustpos(buf_T *buf, pos_T *lp) |
7 | 4384 { |
4385 char_u *p; | |
4386 | |
15636
6f1c7e9a6393
patch 8.1.0826: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15597
diff
changeset
|
4387 if (lp->col > 0 || lp->coladd > 1) |
7 | 4388 { |
2933 | 4389 p = ml_get_buf(buf, lp->lnum, FALSE); |
34540
9e093c96dff6
patch 9.1.0172: More code can use ml_get_buf_len() instead of STRLEN()
Christian Brabandt <cb@256bit.org>
parents:
34431
diff
changeset
|
4390 if (*p == NUL || ml_get_buf_len(buf, lp->lnum) < lp->col) |
13117
cfaa513efa3f
patch 8.0.1433: illegal memory access after undo
Christian Brabandt <cb@256bit.org>
parents:
12948
diff
changeset
|
4391 lp->col = 0; |
cfaa513efa3f
patch 8.0.1433: illegal memory access after undo
Christian Brabandt <cb@256bit.org>
parents:
12948
diff
changeset
|
4392 else |
cfaa513efa3f
patch 8.0.1433: illegal memory access after undo
Christian Brabandt <cb@256bit.org>
parents:
12948
diff
changeset
|
4393 lp->col -= (*mb_head_off)(p, p + lp->col); |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4394 // Reset "coladd" when the cursor would be on the right half of a |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4395 // double-wide character. |
7 | 4396 if (lp->coladd == 1 |
4397 && p[lp->col] != TAB | |
4398 && vim_isprintc((*mb_ptr2char)(p + lp->col)) | |
4399 && ptr2cells(p + lp->col) > 1) | |
4400 lp->coladd = 0; | |
4401 } | |
4402 } | |
4403 | |
4404 /* | |
4405 * Return a pointer to the character before "*p", if there is one. | |
4406 */ | |
4407 char_u * | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4408 mb_prevptr( |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4409 char_u *line, // start of the string |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4410 char_u *p) |
7 | 4411 { |
4412 if (p > line) | |
11127
506f5d8b7d8b
patch 8.0.0451: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents:
10724
diff
changeset
|
4413 MB_PTR_BACK(line, p); |
7 | 4414 return p; |
4415 } | |
4416 | |
4417 /* | |
474 | 4418 * Return the character length of "str". Each multi-byte character (with |
4419 * following composing characters) counts as one. | |
7 | 4420 */ |
4421 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4422 mb_charlen(char_u *str) |
7 | 4423 { |
500 | 4424 char_u *p = str; |
4425 int count; | |
4426 | |
4427 if (p == NULL) | |
7 | 4428 return 0; |
4429 | |
500 | 4430 for (count = 0; *p != NUL; count++) |
4431 p += (*mb_ptr2len)(p); | |
7 | 4432 |
4433 return count; | |
4434 } | |
4435 | |
500 | 4436 /* |
4437 * Like mb_charlen() but for a string with specified length. | |
4438 */ | |
4439 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4440 mb_charlen_len(char_u *str, int len) |
500 | 4441 { |
4442 char_u *p = str; | |
4443 int count; | |
4444 | |
4445 for (count = 0; *p != NUL && p < str + len; count++) | |
4446 p += (*mb_ptr2len)(p); | |
4447 | |
4448 return count; | |
4449 } | |
4450 | |
7 | 4451 /* |
4452 * Try to un-escape a multi-byte character. | |
4453 * Used for the "to" and "from" part of a mapping. | |
4454 * Return the un-escaped string if it is a multi-byte character, and advance | |
4455 * "pp" to just after the bytes that formed it. | |
4456 * Return NULL if no multi-byte char was found. | |
4457 */ | |
4458 char_u * | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4459 mb_unescape(char_u **pp) |
7 | 4460 { |
3812 | 4461 static char_u buf[6]; |
4462 int n; | |
4463 int m = 0; | |
7 | 4464 char_u *str = *pp; |
4465 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4466 // Must translate K_SPECIAL KS_SPECIAL KE_FILLER to K_SPECIAL and CSI |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4467 // KS_EXTRA KE_CSI to CSI. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4468 // Maximum length of a utf-8 character is 4 bytes. |
3812 | 4469 for (n = 0; str[n] != NUL && m < 4; ++n) |
7 | 4470 { |
4471 if (str[n] == K_SPECIAL | |
4472 && str[n + 1] == KS_SPECIAL | |
4473 && str[n + 2] == KE_FILLER) | |
4474 { | |
4475 buf[m++] = K_SPECIAL; | |
4476 n += 2; | |
4477 } | |
1495 | 4478 else if ((str[n] == K_SPECIAL |
7 | 4479 # ifdef FEAT_GUI |
1495 | 4480 || str[n] == CSI |
4481 # endif | |
4482 ) | |
7 | 4483 && str[n + 1] == KS_EXTRA |
4484 && str[n + 2] == (int)KE_CSI) | |
4485 { | |
4486 buf[m++] = CSI; | |
4487 n += 2; | |
4488 } | |
4489 else if (str[n] == K_SPECIAL | |
4490 # ifdef FEAT_GUI | |
4491 || str[n] == CSI | |
4492 # endif | |
4493 ) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4494 break; // a special key can't be a multibyte char |
7 | 4495 else |
4496 buf[m++] = str[n]; | |
4497 buf[m] = NUL; | |
4498 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4499 // Return a multi-byte character if it's found. An illegal sequence |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4500 // will result in a 1 here. |
474 | 4501 if ((*mb_ptr2len)(buf) > 1) |
7 | 4502 { |
4503 *pp = str + n + 1; | |
4504 return buf; | |
4505 } | |
3812 | 4506 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4507 // Bail out quickly for ASCII. |
3812 | 4508 if (buf[0] < 128) |
4509 break; | |
7 | 4510 } |
4511 return NULL; | |
4512 } | |
4513 | |
4514 /* | |
4515 * Return TRUE if the character at "row"/"col" on the screen is the left side | |
4516 * of a double-width character. | |
4517 * Caller must make sure "row" and "col" are not invalid! | |
4518 */ | |
4519 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4520 mb_lefthalve(int row, int col) |
7 | 4521 { |
1378 | 4522 return (*mb_off2cells)(LineOffset[row] + col, |
4523 LineOffset[row] + screen_Columns) > 1; | |
7 | 4524 } |
4525 | |
4526 /* | |
1698 | 4527 * Correct a position on the screen, if it's the right half of a double-wide |
4528 * char move it to the left half. Returns the corrected column. | |
7 | 4529 */ |
4530 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4531 mb_fix_col(int col, int row) |
7 | 4532 { |
17312
484424955bfa
patch 8.1.1655: popup window border drawn wrong with multi-byte char
Bram Moolenaar <Bram@vim.org>
parents:
17296
diff
changeset
|
4533 int off; |
484424955bfa
patch 8.1.1655: popup window border drawn wrong with multi-byte char
Bram Moolenaar <Bram@vim.org>
parents:
17296
diff
changeset
|
4534 |
7 | 4535 col = check_col(col); |
4536 row = check_row(row); | |
17312
484424955bfa
patch 8.1.1655: popup window border drawn wrong with multi-byte char
Bram Moolenaar <Bram@vim.org>
parents:
17296
diff
changeset
|
4537 off = LineOffset[row] + col; |
7 | 4538 if (has_mbyte && ScreenLines != NULL && col > 0 |
4539 && ((enc_dbcs | |
17312
484424955bfa
patch 8.1.1655: popup window border drawn wrong with multi-byte char
Bram Moolenaar <Bram@vim.org>
parents:
17296
diff
changeset
|
4540 && ScreenLines[off] != NUL |
7 | 4541 && dbcs_screen_head_off(ScreenLines + LineOffset[row], |
17312
484424955bfa
patch 8.1.1655: popup window border drawn wrong with multi-byte char
Bram Moolenaar <Bram@vim.org>
parents:
17296
diff
changeset
|
4542 ScreenLines + off)) |
484424955bfa
patch 8.1.1655: popup window border drawn wrong with multi-byte char
Bram Moolenaar <Bram@vim.org>
parents:
17296
diff
changeset
|
4543 || (enc_utf8 && ScreenLines[off] == 0 |
484424955bfa
patch 8.1.1655: popup window border drawn wrong with multi-byte char
Bram Moolenaar <Bram@vim.org>
parents:
17296
diff
changeset
|
4544 && ScreenLinesUC[off] == 0))) |
1620 | 4545 return col - 1; |
7 | 4546 return col; |
4547 } | |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4548 |
7803
37c929c4a073
commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents:
7734
diff
changeset
|
4549 static int enc_alias_search(char_u *name); |
7 | 4550 |
4551 /* | |
4552 * Skip the Vim specific head of a 'encoding' name. | |
4553 */ | |
4554 char_u * | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4555 enc_skip(char_u *p) |
7 | 4556 { |
4557 if (STRNCMP(p, "2byte-", 6) == 0) | |
4558 return p + 6; | |
4559 if (STRNCMP(p, "8bit-", 5) == 0) | |
4560 return p + 5; | |
4561 return p; | |
4562 } | |
4563 | |
4564 /* | |
4565 * Find the canonical name for encoding "enc". | |
4566 * When the name isn't recognized, returns "enc" itself, but with all lower | |
4567 * case characters and '_' replaced with '-'. | |
4568 * Returns an allocated string. NULL for out-of-memory. | |
4569 */ | |
4570 char_u * | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4571 enc_canonize(char_u *enc) |
7 | 4572 { |
4573 char_u *r; | |
4574 char_u *p, *s; | |
4575 int i; | |
4576 | |
39 | 4577 if (STRCMP(enc, "default") == 0) |
4578 { | |
24754
a4cb7499fa11
patch 8.2.2915: MS-Windows: when using "default" for encoding utf-8 is used
Bram Moolenaar <Bram@vim.org>
parents:
24747
diff
changeset
|
4579 #ifdef MSWIN |
a4cb7499fa11
patch 8.2.2915: MS-Windows: when using "default" for encoding utf-8 is used
Bram Moolenaar <Bram@vim.org>
parents:
24747
diff
changeset
|
4580 // Use the system encoding, the default is always utf-8. |
a4cb7499fa11
patch 8.2.2915: MS-Windows: when using "default" for encoding utf-8 is used
Bram Moolenaar <Bram@vim.org>
parents:
24747
diff
changeset
|
4581 r = enc_locale(); |
a4cb7499fa11
patch 8.2.2915: MS-Windows: when using "default" for encoding utf-8 is used
Bram Moolenaar <Bram@vim.org>
parents:
24747
diff
changeset
|
4582 #else |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4583 // Use the default encoding as it's found by set_init_1(). |
39 | 4584 r = get_encoding_default(); |
24754
a4cb7499fa11
patch 8.2.2915: MS-Windows: when using "default" for encoding utf-8 is used
Bram Moolenaar <Bram@vim.org>
parents:
24747
diff
changeset
|
4585 #endif |
39 | 4586 if (r == NULL) |
24747
7da496081b91
patch 8.2.2912: MS-Windows: most users expect using Unicode
Bram Moolenaar <Bram@vim.org>
parents:
24381
diff
changeset
|
4587 r = (char_u *)ENC_DFLT; |
39 | 4588 return vim_strsave(r); |
4589 } | |
4590 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4591 // copy "enc" to allocated memory, with room for two '-' |
16764
ef00b6bc186b
patch 8.1.1384: using "int" for alloc() often results in compiler warnings
Bram Moolenaar <Bram@vim.org>
parents:
16451
diff
changeset
|
4592 r = alloc(STRLEN(enc) + 3); |
31728
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4593 if (r == NULL) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4594 return NULL; |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4595 |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4596 // Make it all lower case and replace '_' with '-'. |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4597 p = r; |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4598 for (s = enc; *s != NUL; ++s) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4599 { |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4600 if (*s == '_') |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4601 *p++ = '-'; |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4602 else |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4603 *p++ = TOLOWER_ASC(*s); |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4604 } |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4605 *p = NUL; |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4606 |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4607 // Skip "2byte-" and "8bit-". |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4608 p = enc_skip(r); |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4609 |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4610 // Change "microsoft-cp" to "cp". Used in some spell files. |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4611 if (STRNCMP(p, "microsoft-cp", 12) == 0) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4612 STRMOVE(p, p + 10); |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4613 |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4614 // "iso8859" -> "iso-8859" |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4615 if (STRNCMP(p, "iso8859", 7) == 0) |
7 | 4616 { |
31728
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4617 STRMOVE(p + 4, p + 3); |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4618 p[3] = '-'; |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4619 } |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4620 |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4621 // "iso-8859n" -> "iso-8859-n" |
34074
1629cc65d78d
patch 9.1.0006: is*() and to*() function may be unsafe
Christian Brabandt <cb@256bit.org>
parents:
33529
diff
changeset
|
4622 if (STRNCMP(p, "iso-8859", 8) == 0 && SAFE_isdigit(p[8])) |
31728
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4623 { |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4624 STRMOVE(p + 9, p + 8); |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4625 p[8] = '-'; |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4626 } |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4627 |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4628 // "latin-N" -> "latinN" |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4629 if (STRNCMP(p, "latin-", 6) == 0) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4630 STRMOVE(p + 5, p + 6); |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4631 |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4632 if (enc_canon_search(p) >= 0) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4633 { |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4634 // canonical name can be used unmodified |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4635 if (p != r) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4636 STRMOVE(r, p); |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4637 } |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4638 else if ((i = enc_alias_search(p)) >= 0) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4639 { |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4640 // alias recognized, get canonical name |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4641 vim_free(r); |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
4642 r = vim_strsave((char_u *)enc_canon_table[i].name); |
7 | 4643 } |
4644 return r; | |
4645 } | |
4646 | |
4647 /* | |
4648 * Search for an encoding alias of "name". | |
4649 * Returns -1 when not found. | |
4650 */ | |
4651 static int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4652 enc_alias_search(char_u *name) |
7 | 4653 { |
4654 int i; | |
4655 | |
4656 for (i = 0; enc_alias_table[i].name != NULL; ++i) | |
4657 if (STRCMP(name, enc_alias_table[i].name) == 0) | |
4658 return enc_alias_table[i].canon; | |
4659 return -1; | |
4660 } | |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4661 |
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4662 |
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4663 #ifdef HAVE_LANGINFO_H |
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4664 # include <langinfo.h> |
7 | 4665 #endif |
4666 | |
16451
7ae2396cef62
patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents:
16304
diff
changeset
|
4667 #if !defined(FEAT_GUI_MSWIN) || defined(VIMDLL) |
7 | 4668 /* |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4669 * Get the canonicalized encoding from the specified locale string "locale" |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4670 * or from the environment variables LC_ALL, LC_CTYPE and LANG. |
7 | 4671 * Returns an allocated string when successful, NULL when not. |
4672 */ | |
4673 char_u * | |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4674 enc_locale_env(char *locale) |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4675 { |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4676 char *s = locale; |
7 | 4677 char *p; |
4678 int i; | |
4679 char buf[50]; | |
4680 | |
4681 if (s == NULL || *s == NUL) | |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4682 if ((s = getenv("LC_ALL")) == NULL || *s == NUL) |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4683 if ((s = getenv("LC_CTYPE")) == NULL || *s == NUL) |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4684 s = getenv("LANG"); |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4685 |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4686 if (s == NULL || *s == NUL) |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4687 return NULL; |
7 | 4688 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4689 // The most generic locale format is: |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4690 // language[_territory][.codeset][@modifier][+special][,[sponsor][_revision]] |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4691 // If there is a '.' remove the part before it. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4692 // if there is something after the codeset, remove it. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4693 // Make the name lowercase and replace '_' with '-'. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4694 // Exception: "ja_JP.EUC" == "euc-jp", "zh_CN.EUC" = "euc-cn", |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4695 // "ko_KR.EUC" == "euc-kr" |
7 | 4696 if ((p = (char *)vim_strchr((char_u *)s, '.')) != NULL) |
4697 { | |
4698 if (p > s + 2 && STRNICMP(p + 1, "EUC", 3) == 0 | |
34074
1629cc65d78d
patch 9.1.0006: is*() and to*() function may be unsafe
Christian Brabandt <cb@256bit.org>
parents:
33529
diff
changeset
|
4699 && !SAFE_isalnum((int)p[4]) && p[4] != '-' && p[-3] == '_') |
7 | 4700 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4701 // copy "XY.EUC" to "euc-XY" to buf[10] |
7 | 4702 STRCPY(buf + 10, "euc-"); |
4703 buf[14] = p[-2]; | |
4704 buf[15] = p[-1]; | |
4705 buf[16] = 0; | |
4706 s = buf + 10; | |
4707 } | |
4708 else | |
4709 s = p + 1; | |
4710 } | |
9495
c086632cca2e
commit https://github.com/vim/vim/commit/5498a41f5a62c3877fee0185adf3bf7245a9a547
Christian Brabandt <cb@256bit.org>
parents:
9477
diff
changeset
|
4711 for (i = 0; i < (int)sizeof(buf) - 1 && s[i] != NUL; ++i) |
7 | 4712 { |
4713 if (s[i] == '_' || s[i] == '-') | |
4714 buf[i] = '-'; | |
34074
1629cc65d78d
patch 9.1.0006: is*() and to*() function may be unsafe
Christian Brabandt <cb@256bit.org>
parents:
33529
diff
changeset
|
4715 else if (SAFE_isalnum(s[i])) |
7 | 4716 buf[i] = TOLOWER_ASC(s[i]); |
4717 else | |
4718 break; | |
4719 } | |
4720 buf[i] = NUL; | |
4721 | |
4722 return enc_canonize((char_u *)buf); | |
4723 } | |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4724 #endif |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4725 |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4726 /* |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4727 * Get the canonicalized encoding of the current locale. |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4728 * Returns an allocated string when successful, NULL when not. |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4729 */ |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4730 char_u * |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4731 enc_locale(void) |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4732 { |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
4733 #ifdef MSWIN |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4734 char buf[50]; |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4735 long acp = GetACP(); |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4736 |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4737 if (acp == 1200) |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4738 STRCPY(buf, "ucs-2le"); |
18014
82543df649ba
patch 8.1.2003: MS-Windows: code page 65001 is not recognized
Bram Moolenaar <Bram@vim.org>
parents:
18008
diff
changeset
|
4739 else if (acp == 1252) // cp1252 is used as latin1 |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4740 STRCPY(buf, "latin1"); |
18014
82543df649ba
patch 8.1.2003: MS-Windows: code page 65001 is not recognized
Bram Moolenaar <Bram@vim.org>
parents:
18008
diff
changeset
|
4741 else if (acp == 65001) |
82543df649ba
patch 8.1.2003: MS-Windows: code page 65001 is not recognized
Bram Moolenaar <Bram@vim.org>
parents:
18008
diff
changeset
|
4742 STRCPY(buf, "utf-8"); |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4743 else |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4744 sprintf(buf, "cp%ld", acp); |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4745 |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4746 return enc_canonize((char_u *)buf); |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4747 #else |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4748 char *s; |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4749 |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4750 # ifdef HAVE_NL_LANGINFO_CODESET |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4751 if ((s = nl_langinfo(CODESET)) == NULL || *s == NUL) |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4752 # endif |
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4753 # if defined(HAVE_LOCALE_H) || defined(X_LOCALE) |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4754 if ((s = setlocale(LC_CTYPE, NULL)) == NULL || *s == NUL) |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4755 # endif |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4756 s = NULL; |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4757 |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4758 return enc_locale_env(s); |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
4759 #endif |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4760 } |
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4761 |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
4762 # if defined(MSWIN) || defined(PROTO) || defined(FEAT_CYGWIN_WIN32_CLIPBOARD) |
7 | 4763 /* |
4764 * Convert an encoding name to an MS-Windows codepage. | |
4765 * Returns zero if no codepage can be figured out. | |
4766 */ | |
4767 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4768 encname2codepage(char_u *name) |
7 | 4769 { |
4770 int cp; | |
4771 char_u *p = name; | |
4772 int idx; | |
4773 | |
4774 if (STRNCMP(p, "8bit-", 5) == 0) | |
4775 p += 5; | |
4776 else if (STRNCMP(p_enc, "2byte-", 6) == 0) | |
4777 p += 6; | |
4778 | |
4779 if (p[0] == 'c' && p[1] == 'p') | |
5136
28e6f5f88968
updated for version 7.3.1311
Bram Moolenaar <bram@vim.org>
parents:
5025
diff
changeset
|
4780 cp = atoi((char *)p + 2); |
7 | 4781 else if ((idx = enc_canon_search(p)) >= 0) |
4782 cp = enc_canon_table[idx].codepage; | |
4783 else | |
4784 return 0; | |
4785 if (IsValidCodePage(cp)) | |
4786 return cp; | |
4787 return 0; | |
4788 } | |
12547
aa3f6d093f4b
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Christian Brabandt <cb@256bit.org>
parents:
12439
diff
changeset
|
4789 # endif |
7 | 4790 |
4791 # if defined(USE_ICONV) || defined(PROTO) | |
4792 | |
4793 /* | |
4794 * Call iconv_open() with a check if iconv() works properly (there are broken | |
4795 * versions). | |
4796 * Returns (void *)-1 if failed. | |
4797 * (should return iconv_t, but that causes problems with prototypes). | |
4798 */ | |
4799 void * | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4800 my_iconv_open(char_u *to, char_u *from) |
7 | 4801 { |
4802 iconv_t fd; | |
4803 #define ICONV_TESTLEN 400 | |
4804 char_u tobuf[ICONV_TESTLEN]; | |
4805 char *p; | |
4806 size_t tolen; | |
4807 static int iconv_ok = -1; | |
4808 | |
4809 if (iconv_ok == FALSE) | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4810 return (void *)-1; // detected a broken iconv() previously |
7 | 4811 |
4812 #ifdef DYNAMIC_ICONV | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4813 // Check if the iconv.dll can be found. |
7 | 4814 if (!iconv_enabled(TRUE)) |
4815 return (void *)-1; | |
4816 #endif | |
4817 | |
4818 fd = iconv_open((char *)enc_skip(to), (char *)enc_skip(from)); | |
4819 | |
4820 if (fd != (iconv_t)-1 && iconv_ok == -1) | |
4821 { | |
4822 /* | |
4823 * Do a dummy iconv() call to check if it actually works. There is a | |
4824 * version of iconv() on Linux that is broken. We can't ignore it, | |
4825 * because it's wide-spread. The symptoms are that after outputting | |
4826 * the initial shift state the "to" pointer is NULL and conversion | |
4827 * stops for no apparent reason after about 8160 characters. | |
4828 */ | |
4829 p = (char *)tobuf; | |
4830 tolen = ICONV_TESTLEN; | |
4831 (void)iconv(fd, NULL, NULL, &p, &tolen); | |
4832 if (p == NULL) | |
4833 { | |
4834 iconv_ok = FALSE; | |
4835 iconv_close(fd); | |
4836 fd = (iconv_t)-1; | |
4837 } | |
4838 else | |
4839 iconv_ok = TRUE; | |
4840 } | |
4841 | |
4842 return (void *)fd; | |
4843 } | |
4844 | |
4845 /* | |
4846 * Convert the string "str[slen]" with iconv(). | |
4847 * If "unconvlenp" is not NULL handle the string ending in an incomplete | |
4848 * sequence and set "*unconvlenp" to the length of it. | |
4849 * Returns the converted string in allocated memory. NULL for an error. | |
1904 | 4850 * If resultlenp is not NULL, sets it to the result length in bytes. |
7 | 4851 */ |
4852 static char_u * | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4853 iconv_string( |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4854 vimconv_T *vcp, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4855 char_u *str, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4856 int slen, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4857 int *unconvlenp, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4858 int *resultlenp) |
7 | 4859 { |
4860 const char *from; | |
4861 size_t fromlen; | |
4862 char *to; | |
4863 size_t tolen; | |
4864 size_t len = 0; | |
4865 size_t done = 0; | |
4866 char_u *result = NULL; | |
4867 char_u *p; | |
4868 int l; | |
4869 | |
4870 from = (char *)str; | |
4871 fromlen = slen; | |
4872 for (;;) | |
4873 { | |
4874 if (len == 0 || ICONV_ERRNO == ICONV_E2BIG) | |
4875 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4876 // Allocate enough room for most conversions. When re-allocating |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4877 // increase the buffer size. |
7 | 4878 len = len + fromlen * 2 + 40; |
16764
ef00b6bc186b
patch 8.1.1384: using "int" for alloc() often results in compiler warnings
Bram Moolenaar <Bram@vim.org>
parents:
16451
diff
changeset
|
4879 p = alloc(len); |
7 | 4880 if (p != NULL && done > 0) |
4881 mch_memmove(p, result, done); | |
4882 vim_free(result); | |
4883 result = p; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4884 if (result == NULL) // out of memory |
7 | 4885 break; |
4886 } | |
4887 | |
4888 to = (char *)result + done; | |
4889 tolen = len - done - 2; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4890 // Avoid a warning for systems with a wrong iconv() prototype by |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4891 // casting the second argument to void *. |
7 | 4892 if (iconv(vcp->vc_fd, (void *)&from, &fromlen, &to, &tolen) |
4893 != (size_t)-1) | |
4894 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4895 // Finished, append a NUL. |
7 | 4896 *to = NUL; |
4897 break; | |
4898 } | |
4899 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4900 // Check both ICONV_EINVAL and EINVAL, because the dynamically loaded |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4901 // iconv library may use one of them. |
7 | 4902 if (!vcp->vc_fail && unconvlenp != NULL |
4903 && (ICONV_ERRNO == ICONV_EINVAL || ICONV_ERRNO == EINVAL)) | |
4904 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4905 // Handle an incomplete sequence at the end. |
7 | 4906 *to = NUL; |
835 | 4907 *unconvlenp = (int)fromlen; |
7 | 4908 break; |
4909 } | |
4910 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4911 // Check both ICONV_EILSEQ and EILSEQ, because the dynamically loaded |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4912 // iconv library may use one of them. |
7 | 4913 else if (!vcp->vc_fail |
4914 && (ICONV_ERRNO == ICONV_EILSEQ || ICONV_ERRNO == EILSEQ | |
4915 || ICONV_ERRNO == ICONV_EINVAL || ICONV_ERRNO == EINVAL)) | |
4916 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4917 // Can't convert: insert a '?' and skip a character. This assumes |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4918 // conversion from 'encoding' to something else. In other |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4919 // situations we don't know what to skip anyway. |
7 | 4920 *to++ = '?'; |
4921 if ((*mb_ptr2cells)((char_u *)from) > 1) | |
4922 *to++ = '?'; | |
221 | 4923 if (enc_utf8) |
835 | 4924 l = utfc_ptr2len_len((char_u *)from, (int)fromlen); |
221 | 4925 else |
4926 { | |
474 | 4927 l = (*mb_ptr2len)((char_u *)from); |
227 | 4928 if (l > (int)fromlen) |
835 | 4929 l = (int)fromlen; |
221 | 4930 } |
7 | 4931 from += l; |
4932 fromlen -= l; | |
4933 } | |
4934 else if (ICONV_ERRNO != ICONV_E2BIG) | |
4935 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4936 // conversion failed |
13244
ac42c4b11dbc
patch 8.0.1496: clearing a pointer takes two lines
Christian Brabandt <cb@256bit.org>
parents:
13117
diff
changeset
|
4937 VIM_CLEAR(result); |
7 | 4938 break; |
4939 } | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4940 // Not enough room or skipping illegal sequence. |
7 | 4941 done = to - (char *)result; |
4942 } | |
1904 | 4943 |
2766 | 4944 if (resultlenp != NULL && result != NULL) |
1904 | 4945 *resultlenp = (int)(to - (char *)result); |
7 | 4946 return result; |
4947 } | |
4948 | |
4949 # if defined(DYNAMIC_ICONV) || defined(PROTO) | |
4950 /* | |
4951 * Dynamically load the "iconv.dll" on Win32. | |
4952 */ | |
4953 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4954 # ifndef DYNAMIC_ICONV // must be generating prototypes |
7734
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4955 # define HINSTANCE int |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4956 # endif |
297 | 4957 static HINSTANCE hIconvDLL = 0; |
4958 static HINSTANCE hMsvcrtDLL = 0; | |
7 | 4959 |
7734
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4960 # ifndef DYNAMIC_ICONV_DLL |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4961 # define DYNAMIC_ICONV_DLL "iconv.dll" |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4962 # define DYNAMIC_ICONV_DLL_ALT1 "libiconv.dll" |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4963 # define DYNAMIC_ICONV_DLL_ALT2 "libiconv2.dll" |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4964 # define DYNAMIC_ICONV_DLL_ALT3 "libiconv-2.dll" |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4965 # endif |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4966 # ifndef DYNAMIC_MSVCRT_DLL |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4967 # define DYNAMIC_MSVCRT_DLL "msvcrt.dll" |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4968 # endif |
7 | 4969 |
4970 /* | |
4971 * Try opening the iconv.dll and return TRUE if iconv() can be used. | |
4972 */ | |
4973 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
4974 iconv_enabled(int verbose) |
7 | 4975 { |
4976 if (hIconvDLL != 0 && hMsvcrtDLL != 0) | |
4977 return TRUE; | |
7162
fe090e9cd10a
commit https://github.com/vim/vim/commit/9d6ca1cc5ebb6e61cc2ef73aecfbb0bdbb65432f
Christian Brabandt <cb@256bit.org>
parents:
6864
diff
changeset
|
4978 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4979 // The iconv DLL file goes under different names, try them all. |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
4980 // Do the "2" version first, it's newer. |
7734
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4981 #ifdef DYNAMIC_ICONV_DLL_ALT2 |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4982 if (hIconvDLL == 0) |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4983 hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL_ALT2); |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4984 #endif |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4985 #ifdef DYNAMIC_ICONV_DLL_ALT3 |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4986 if (hIconvDLL == 0) |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4987 hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL_ALT3); |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4988 #endif |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4989 if (hIconvDLL == 0) |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4990 hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL); |
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4991 #ifdef DYNAMIC_ICONV_DLL_ALT1 |
7162
fe090e9cd10a
commit https://github.com/vim/vim/commit/9d6ca1cc5ebb6e61cc2ef73aecfbb0bdbb65432f
Christian Brabandt <cb@256bit.org>
parents:
6864
diff
changeset
|
4992 if (hIconvDLL == 0) |
fe090e9cd10a
commit https://github.com/vim/vim/commit/9d6ca1cc5ebb6e61cc2ef73aecfbb0bdbb65432f
Christian Brabandt <cb@256bit.org>
parents:
6864
diff
changeset
|
4993 hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL_ALT1); |
7734
616769d423fc
commit https://github.com/vim/vim/commit/938ee834d345062cd94f8fdfd54fad0019432a83
Christian Brabandt <cb@256bit.org>
parents:
7330
diff
changeset
|
4994 #endif |
7162
fe090e9cd10a
commit https://github.com/vim/vim/commit/9d6ca1cc5ebb6e61cc2ef73aecfbb0bdbb65432f
Christian Brabandt <cb@256bit.org>
parents:
6864
diff
changeset
|
4995 |
7 | 4996 if (hIconvDLL != 0) |
2612 | 4997 hMsvcrtDLL = vimLoadLib(DYNAMIC_MSVCRT_DLL); |
7 | 4998 if (hIconvDLL == 0 || hMsvcrtDLL == 0) |
4999 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5000 // Only give the message when 'verbose' is set, otherwise it might be |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5001 // done whenever a conversion is attempted. |
7 | 5002 if (verbose && p_verbose > 0) |
292 | 5003 { |
5004 verbose_enter(); | |
26877
06a137af96f8
patch 8.2.3967: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26865
diff
changeset
|
5005 semsg(_(e_could_not_load_library_str_str), |
25342
c4298ed56ffa
patch 8.2.3208: dynamic library load error does not mention why it failed
Bram Moolenaar <Bram@vim.org>
parents:
25206
diff
changeset
|
5006 hIconvDLL == 0 ? DYNAMIC_ICONV_DLL : DYNAMIC_MSVCRT_DLL, |
c4298ed56ffa
patch 8.2.3208: dynamic library load error does not mention why it failed
Bram Moolenaar <Bram@vim.org>
parents:
25206
diff
changeset
|
5007 GetWin32Error()); |
292 | 5008 verbose_leave(); |
5009 } | |
7 | 5010 iconv_end(); |
5011 return FALSE; | |
5012 } | |
5013 | |
29105
faf7fcd1c8d5
patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents:
28790
diff
changeset
|
5014 iconv = (size_t (*)(iconv_t, const char **, |
faf7fcd1c8d5
patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents:
28790
diff
changeset
|
5015 size_t *, char **, size_t *)) |
faf7fcd1c8d5
patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents:
28790
diff
changeset
|
5016 GetProcAddress(hIconvDLL, "libiconv"); |
faf7fcd1c8d5
patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents:
28790
diff
changeset
|
5017 iconv_open = (iconv_t (*)(const char *, const char *)) |
faf7fcd1c8d5
patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents:
28790
diff
changeset
|
5018 GetProcAddress(hIconvDLL, "libiconv_open"); |
faf7fcd1c8d5
patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents:
28790
diff
changeset
|
5019 iconv_close = (int (*)(iconv_t)) |
faf7fcd1c8d5
patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents:
28790
diff
changeset
|
5020 GetProcAddress(hIconvDLL, "libiconv_close"); |
faf7fcd1c8d5
patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents:
28790
diff
changeset
|
5021 iconvctl = (int (*)(iconv_t, int, void *)) |
faf7fcd1c8d5
patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents:
28790
diff
changeset
|
5022 GetProcAddress(hIconvDLL, "libiconvctl"); |
faf7fcd1c8d5
patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents:
28790
diff
changeset
|
5023 iconv_errno = (int *(*)(void))get_dll_import_func(hIconvDLL, "_errno"); |
4025 | 5024 if (iconv_errno == NULL) |
29105
faf7fcd1c8d5
patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents:
28790
diff
changeset
|
5025 iconv_errno = (int *(*)(void))GetProcAddress(hMsvcrtDLL, "_errno"); |
7 | 5026 if (iconv == NULL || iconv_open == NULL || iconv_close == NULL |
5027 || iconvctl == NULL || iconv_errno == NULL) | |
5028 { | |
5029 iconv_end(); | |
5030 if (verbose && p_verbose > 0) | |
292 | 5031 { |
5032 verbose_enter(); | |
26877
06a137af96f8
patch 8.2.3967: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents:
26865
diff
changeset
|
5033 semsg(_(e_could_not_load_library_function_str), "for libiconv"); |
292 | 5034 verbose_leave(); |
5035 } | |
7 | 5036 return FALSE; |
5037 } | |
5038 return TRUE; | |
5039 } | |
5040 | |
5041 void | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5042 iconv_end(void) |
7 | 5043 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5044 // Don't use iconv() when inputting or outputting characters. |
7 | 5045 if (input_conv.vc_type == CONV_ICONV) |
5046 convert_setup(&input_conv, NULL, NULL); | |
5047 if (output_conv.vc_type == CONV_ICONV) | |
5048 convert_setup(&output_conv, NULL, NULL); | |
5049 | |
5050 if (hIconvDLL != 0) | |
5051 FreeLibrary(hIconvDLL); | |
5052 if (hMsvcrtDLL != 0) | |
5053 FreeLibrary(hMsvcrtDLL); | |
5054 hIconvDLL = 0; | |
5055 hMsvcrtDLL = 0; | |
5056 } | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5057 # endif // DYNAMIC_ICONV |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5058 # endif // USE_ICONV |
7 | 5059 |
18008
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5060 #if defined(FEAT_EVAL) || defined(PROTO) |
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5061 /* |
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5062 * "getimstatus()" function |
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5063 */ |
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5064 void |
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5065 f_getimstatus(typval_T *argvars UNUSED, typval_T *rettv) |
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5066 { |
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5067 # if defined(HAVE_INPUT_METHOD) |
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5068 rettv->vval.v_number = im_get_status(); |
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5069 # endif |
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5070 } |
25206
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5071 |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5072 /* |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5073 * iconv() function |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5074 */ |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5075 void |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5076 f_iconv(typval_T *argvars UNUSED, typval_T *rettv) |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5077 { |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5078 char_u buf1[NUMBUFLEN]; |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5079 char_u buf2[NUMBUFLEN]; |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5080 char_u *from, *to, *str; |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5081 vimconv_T vimconv; |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5082 |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5083 rettv->v_type = VAR_STRING; |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5084 rettv->vval.v_string = NULL; |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5085 |
25384
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25342
diff
changeset
|
5086 if (in_vim9script() |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25342
diff
changeset
|
5087 && (check_for_string_arg(argvars, 0) == FAIL |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25342
diff
changeset
|
5088 || check_for_string_arg(argvars, 1) == FAIL |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25342
diff
changeset
|
5089 || check_for_string_arg(argvars, 2) == FAIL)) |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25342
diff
changeset
|
5090 return; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25342
diff
changeset
|
5091 |
25206
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5092 str = tv_get_string(&argvars[0]); |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5093 from = enc_canonize(enc_skip(tv_get_string_buf(&argvars[1], buf1))); |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5094 to = enc_canonize(enc_skip(tv_get_string_buf(&argvars[2], buf2))); |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5095 vimconv.vc_type = CONV_NONE; |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5096 convert_setup(&vimconv, from, to); |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5097 |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5098 // If the encodings are equal, no conversion needed. |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5099 if (vimconv.vc_type == CONV_NONE) |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5100 rettv->vval.v_string = vim_strsave(str); |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5101 else |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5102 rettv->vval.v_string = string_convert(&vimconv, str, NULL); |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5103 |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5104 convert_setup(&vimconv, NULL, NULL); |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5105 vim_free(from); |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5106 vim_free(to); |
dc66d0284518
patch 8.2.3139: functions for string manipulation are spread out
Bram Moolenaar <Bram@vim.org>
parents:
25092
diff
changeset
|
5107 } |
18008
8ae333756614
patch 8.1.2000: plugin cannot get the current IME status
Bram Moolenaar <Bram@vim.org>
parents:
17312
diff
changeset
|
5108 #endif |
7 | 5109 |
5110 /* | |
5111 * Setup "vcp" for conversion from "from" to "to". | |
5112 * The names must have been made canonical with enc_canonize(). | |
5113 * vcp->vc_type must have been initialized to CONV_NONE. | |
5114 * Note: cannot be used for conversion from/to ucs-2 and ucs-4 (will use utf-8 | |
5115 * instead). | |
5116 * Afterwards invoke with "from" and "to" equal to NULL to cleanup. | |
5117 * Return FAIL when conversion is not supported, OK otherwise. | |
5118 */ | |
5119 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5120 convert_setup(vimconv_T *vcp, char_u *from, char_u *to) |
7 | 5121 { |
1904 | 5122 return convert_setup_ext(vcp, from, TRUE, to, TRUE); |
5123 } | |
5124 | |
5125 /* | |
5126 * As convert_setup(), but only when from_unicode_is_utf8 is TRUE will all | |
5127 * "from" unicode charsets be considered utf-8. Same for "to". | |
5128 */ | |
5129 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5130 convert_setup_ext( |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5131 vimconv_T *vcp, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5132 char_u *from, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5133 int from_unicode_is_utf8, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5134 char_u *to, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5135 int to_unicode_is_utf8) |
1904 | 5136 { |
7 | 5137 int from_prop; |
5138 int to_prop; | |
1904 | 5139 int from_is_utf8; |
5140 int to_is_utf8; | |
7 | 5141 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5142 // Reset to no conversion. |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
5143 #ifdef USE_ICONV |
7 | 5144 if (vcp->vc_type == CONV_ICONV && vcp->vc_fd != (iconv_t)-1) |
5145 iconv_close(vcp->vc_fd); | |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
5146 #endif |
7 | 5147 vcp->vc_type = CONV_NONE; |
5148 vcp->vc_factor = 1; | |
5149 vcp->vc_fail = FALSE; | |
5150 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5151 // No conversion when one of the names is empty or they are equal. |
7 | 5152 if (from == NULL || *from == NUL || to == NULL || *to == NUL |
5153 || STRCMP(from, to) == 0) | |
5154 return OK; | |
5155 | |
5156 from_prop = enc_canon_props(from); | |
5157 to_prop = enc_canon_props(to); | |
1904 | 5158 if (from_unicode_is_utf8) |
5159 from_is_utf8 = from_prop & ENC_UNICODE; | |
5160 else | |
5161 from_is_utf8 = from_prop == ENC_UNICODE; | |
5162 if (to_unicode_is_utf8) | |
5163 to_is_utf8 = to_prop & ENC_UNICODE; | |
5164 else | |
5165 to_is_utf8 = to_prop == ENC_UNICODE; | |
5166 | |
5167 if ((from_prop & ENC_LATIN1) && to_is_utf8) | |
7 | 5168 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5169 // Internal latin1 -> utf-8 conversion. |
7 | 5170 vcp->vc_type = CONV_TO_UTF8; |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5171 vcp->vc_factor = 2; // up to twice as long |
7 | 5172 } |
1904 | 5173 else if ((from_prop & ENC_LATIN9) && to_is_utf8) |
26 | 5174 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5175 // Internal latin9 -> utf-8 conversion. |
26 | 5176 vcp->vc_type = CONV_9_TO_UTF8; |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5177 vcp->vc_factor = 3; // up to three as long (euro sign) |
26 | 5178 } |
1904 | 5179 else if (from_is_utf8 && (to_prop & ENC_LATIN1)) |
7 | 5180 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5181 // Internal utf-8 -> latin1 conversion. |
7 | 5182 vcp->vc_type = CONV_TO_LATIN1; |
5183 } | |
1904 | 5184 else if (from_is_utf8 && (to_prop & ENC_LATIN9)) |
26 | 5185 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5186 // Internal utf-8 -> latin9 conversion. |
26 | 5187 vcp->vc_type = CONV_TO_LATIN9; |
5188 } | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
5189 #ifdef MSWIN |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5190 // Win32-specific codepage <-> codepage conversion without iconv. |
1904 | 5191 else if ((from_is_utf8 || encname2codepage(from) > 0) |
5192 && (to_is_utf8 || encname2codepage(to) > 0)) | |
7 | 5193 { |
5194 vcp->vc_type = CONV_CODEPAGE; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5195 vcp->vc_factor = 2; // up to twice as long |
1904 | 5196 vcp->vc_cpfrom = from_is_utf8 ? 0 : encname2codepage(from); |
5197 vcp->vc_cpto = to_is_utf8 ? 0 : encname2codepage(to); | |
7 | 5198 } |
5199 #endif | |
12716
351cf7c67bbe
patch 8.0.1236: Mac features are confusing
Christian Brabandt <cb@256bit.org>
parents:
12650
diff
changeset
|
5200 #ifdef MACOS_CONVERT |
7 | 5201 else if ((from_prop & ENC_MACROMAN) && (to_prop & ENC_LATIN1)) |
5202 { | |
5203 vcp->vc_type = CONV_MAC_LATIN1; | |
5204 } | |
1904 | 5205 else if ((from_prop & ENC_MACROMAN) && to_is_utf8) |
7 | 5206 { |
5207 vcp->vc_type = CONV_MAC_UTF8; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5208 vcp->vc_factor = 2; // up to twice as long |
7 | 5209 } |
5210 else if ((from_prop & ENC_LATIN1) && (to_prop & ENC_MACROMAN)) | |
5211 { | |
5212 vcp->vc_type = CONV_LATIN1_MAC; | |
5213 } | |
1904 | 5214 else if (from_is_utf8 && (to_prop & ENC_MACROMAN)) |
7 | 5215 { |
5216 vcp->vc_type = CONV_UTF8_MAC; | |
5217 } | |
5218 #endif | |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
5219 #ifdef USE_ICONV |
7 | 5220 else |
5221 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5222 // Use iconv() for conversion. |
7 | 5223 vcp->vc_fd = (iconv_t)my_iconv_open( |
1904 | 5224 to_is_utf8 ? (char_u *)"utf-8" : to, |
5225 from_is_utf8 ? (char_u *)"utf-8" : from); | |
7 | 5226 if (vcp->vc_fd != (iconv_t)-1) |
5227 { | |
5228 vcp->vc_type = CONV_ICONV; | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5229 vcp->vc_factor = 4; // could be longer too... |
7 | 5230 } |
5231 } | |
15597
536dd2bc5ac9
patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents:
15555
diff
changeset
|
5232 #endif |
7 | 5233 if (vcp->vc_type == CONV_NONE) |
5234 return FAIL; | |
167 | 5235 |
7 | 5236 return OK; |
5237 } | |
5238 | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
5239 #if defined(FEAT_GUI) || defined(AMIGA) || defined(MSWIN) \ |
8212
05b88224cea1
commit https://github.com/vim/vim/commit/48e330aff911be1c798c88a973af6437a8141fce
Christian Brabandt <cb@256bit.org>
parents:
8080
diff
changeset
|
5240 || defined(PROTO) |
7 | 5241 /* |
5242 * Do conversion on typed input characters in-place. | |
5243 * The input and output are not NUL terminated! | |
5244 * Returns the length after conversion. | |
5245 */ | |
5246 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5247 convert_input(char_u *ptr, int len, int maxlen) |
7 | 5248 { |
5249 return convert_input_safe(ptr, len, maxlen, NULL, NULL); | |
5250 } | |
5251 #endif | |
5252 | |
5253 /* | |
5254 * Like convert_input(), but when there is an incomplete byte sequence at the | |
5255 * end return that as an allocated string in "restp" and set "*restlenp" to | |
5256 * the length. If "restp" is NULL it is not used. | |
5257 */ | |
5258 int | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5259 convert_input_safe( |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5260 char_u *ptr, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5261 int len, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5262 int maxlen, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5263 char_u **restp, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5264 int *restlenp) |
7 | 5265 { |
5266 char_u *d; | |
5267 int dlen = len; | |
5268 int unconvertlen = 0; | |
5269 | |
5270 d = string_convert_ext(&input_conv, ptr, &dlen, | |
5271 restp == NULL ? NULL : &unconvertlen); | |
31728
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5272 if (d == NULL) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5273 return dlen; |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5274 |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5275 if (dlen <= maxlen) |
7 | 5276 { |
31728
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5277 if (unconvertlen > 0) |
7 | 5278 { |
31728
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5279 // Move the unconverted characters to allocated memory. |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5280 *restp = alloc(unconvertlen); |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5281 if (*restp != NULL) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5282 mch_memmove(*restp, ptr + len - unconvertlen, unconvertlen); |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5283 *restlenp = unconvertlen; |
7 | 5284 } |
31728
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5285 mch_memmove(ptr, d, dlen); |
7 | 5286 } |
31728
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5287 else |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5288 // result is too long, keep the unconverted text (the caller must |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5289 // have done something wrong!) |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5290 dlen = len; |
238ca27dbfd2
patch 9.0.1196: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents:
31678
diff
changeset
|
5291 vim_free(d); |
7 | 5292 return dlen; |
5293 } | |
5294 | |
5295 /* | |
5296 * Convert text "ptr[*lenp]" according to "vcp". | |
5297 * Returns the result in allocated memory and sets "*lenp". | |
5298 * When "lenp" is NULL, use NUL terminated strings. | |
5299 * Illegal chars are often changed to "?", unless vcp->vc_fail is set. | |
5300 * When something goes wrong, NULL is returned and "*lenp" is unchanged. | |
5301 */ | |
5302 char_u * | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5303 string_convert( |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5304 vimconv_T *vcp, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5305 char_u *ptr, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5306 int *lenp) |
7 | 5307 { |
5308 return string_convert_ext(vcp, ptr, lenp, NULL); | |
5309 } | |
5310 | |
5311 /* | |
5312 * Like string_convert(), but when "unconvlenp" is not NULL and there are is | |
5313 * an incomplete sequence at the end it is not converted and "*unconvlenp" is | |
5314 * set to the number of remaining bytes. | |
5315 */ | |
5316 char_u * | |
7827
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5317 string_convert_ext( |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5318 vimconv_T *vcp, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5319 char_u *ptr, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5320 int *lenp, |
41789f16d6b2
commit https://github.com/vim/vim/commit/52ea13da0fe86df1abf34de52841e367035170c0
Christian Brabandt <cb@256bit.org>
parents:
7803
diff
changeset
|
5321 int *unconvlenp) |
7 | 5322 { |
5323 char_u *retval = NULL; | |
5324 char_u *d; | |
5325 int len; | |
5326 int i; | |
5327 int l; | |
5328 int c; | |
5329 | |
5330 if (lenp == NULL) | |
5331 len = (int)STRLEN(ptr); | |
5332 else | |
5333 len = *lenp; | |
5334 if (len == 0) | |
5335 return vim_strsave((char_u *)""); | |
5336 | |
5337 switch (vcp->vc_type) | |
5338 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5339 case CONV_TO_UTF8: // latin1 to utf-8 conversion |
7 | 5340 retval = alloc(len * 2 + 1); |
5341 if (retval == NULL) | |
5342 break; | |
5343 d = retval; | |
5344 for (i = 0; i < len; ++i) | |
5345 { | |
26 | 5346 c = ptr[i]; |
5347 if (c < 0x80) | |
5348 *d++ = c; | |
7 | 5349 else |
5350 { | |
26 | 5351 *d++ = 0xc0 + ((unsigned)c >> 6); |
5352 *d++ = 0x80 + (c & 0x3f); | |
7 | 5353 } |
5354 } | |
5355 *d = NUL; | |
5356 if (lenp != NULL) | |
5357 *lenp = (int)(d - retval); | |
5358 break; | |
5359 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5360 case CONV_9_TO_UTF8: // latin9 to utf-8 conversion |
26 | 5361 retval = alloc(len * 3 + 1); |
5362 if (retval == NULL) | |
5363 break; | |
5364 d = retval; | |
5365 for (i = 0; i < len; ++i) | |
5366 { | |
5367 c = ptr[i]; | |
5368 switch (c) | |
5369 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5370 case 0xa4: c = 0x20ac; break; // euro |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5371 case 0xa6: c = 0x0160; break; // S hat |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5372 case 0xa8: c = 0x0161; break; // S -hat |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5373 case 0xb4: c = 0x017d; break; // Z hat |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5374 case 0xb8: c = 0x017e; break; // Z -hat |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5375 case 0xbc: c = 0x0152; break; // OE |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5376 case 0xbd: c = 0x0153; break; // oe |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5377 case 0xbe: c = 0x0178; break; // Y |
26 | 5378 } |
5379 d += utf_char2bytes(c, d); | |
5380 } | |
5381 *d = NUL; | |
5382 if (lenp != NULL) | |
5383 *lenp = (int)(d - retval); | |
5384 break; | |
5385 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5386 case CONV_TO_LATIN1: // utf-8 to latin1 conversion |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5387 case CONV_TO_LATIN9: // utf-8 to latin9 conversion |
7 | 5388 retval = alloc(len + 1); |
5389 if (retval == NULL) | |
5390 break; | |
5391 d = retval; | |
5392 for (i = 0; i < len; ++i) | |
5393 { | |
2015 | 5394 l = utf_ptr2len_len(ptr + i, len - i); |
7 | 5395 if (l == 0) |
5396 *d++ = NUL; | |
5397 else if (l == 1) | |
5398 { | |
2015 | 5399 int l_w = utf8len_tab_zero[ptr[i]]; |
5400 | |
5401 if (l_w == 0) | |
5402 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5403 // Illegal utf-8 byte cannot be converted |
2015 | 5404 vim_free(retval); |
5405 return NULL; | |
5406 } | |
5407 if (unconvlenp != NULL && l_w > len - i) | |
7 | 5408 { |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5409 // Incomplete sequence at the end. |
7 | 5410 *unconvlenp = len - i; |
5411 break; | |
5412 } | |
5413 *d++ = ptr[i]; | |
5414 } | |
5415 else | |
5416 { | |
5417 c = utf_ptr2char(ptr + i); | |
26 | 5418 if (vcp->vc_type == CONV_TO_LATIN9) |
5419 switch (c) | |
5420 { | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5421 case 0x20ac: c = 0xa4; break; // euro |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5422 case 0x0160: c = 0xa6; break; // S hat |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5423 case 0x0161: c = 0xa8; break; // S -hat |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5424 case 0x017d: c = 0xb4; break; // Z hat |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5425 case 0x017e: c = 0xb8; break; // Z -hat |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5426 case 0x0152: c = 0xbc; break; // OE |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5427 case 0x0153: c = 0xbd; break; // oe |
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5428 case 0x0178: c = 0xbe; break; // Y |
26 | 5429 case 0xa4: |
5430 case 0xa6: | |
5431 case 0xa8: | |
5432 case 0xb4: | |
5433 case 0xb8: | |
5434 case 0xbc: | |
5435 case 0xbd: | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5436 case 0xbe: c = 0x100; break; // not in latin9 |
26 | 5437 } |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5438 if (!utf_iscomposing(c)) // skip composing chars |
7 | 5439 { |
5440 if (c < 0x100) | |
5441 *d++ = c; | |
5442 else if (vcp->vc_fail) | |
5443 { | |
5444 vim_free(retval); | |
5445 return NULL; | |
5446 } | |
5447 else | |
5448 { | |
5449 *d++ = 0xbf; | |
5450 if (utf_char2cells(c) > 1) | |
5451 *d++ = '?'; | |
5452 } | |
5453 } | |
5454 i += l - 1; | |
5455 } | |
5456 } | |
5457 *d = NUL; | |
5458 if (lenp != NULL) | |
5459 *lenp = (int)(d - retval); | |
5460 break; | |
5461 | |
765 | 5462 # ifdef MACOS_CONVERT |
7 | 5463 case CONV_MAC_LATIN1: |
5464 retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail, | |
18 | 5465 'm', 'l', unconvlenp); |
7 | 5466 break; |
5467 | |
5468 case CONV_LATIN1_MAC: | |
5469 retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail, | |
18 | 5470 'l', 'm', unconvlenp); |
7 | 5471 break; |
5472 | |
5473 case CONV_MAC_UTF8: | |
5474 retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail, | |
18 | 5475 'm', 'u', unconvlenp); |
7 | 5476 break; |
5477 | |
5478 case CONV_UTF8_MAC: | |
5479 retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail, | |
18 | 5480 'u', 'm', unconvlenp); |
7 | 5481 break; |
5482 # endif | |
5483 | |
5484 # ifdef USE_ICONV | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5485 case CONV_ICONV: // conversion with output_conv.vc_fd |
1904 | 5486 retval = iconv_string(vcp, ptr, len, unconvlenp, lenp); |
7 | 5487 break; |
5488 # endif | |
15868
7fad90423bd2
patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents:
15636
diff
changeset
|
5489 # ifdef MSWIN |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5490 case CONV_CODEPAGE: // codepage -> codepage |
7 | 5491 { |
5492 int retlen; | |
5493 int tmp_len; | |
5494 short_u *tmp; | |
5495 | |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5496 // 1. codepage/UTF-8 -> ucs-2. |
7 | 5497 if (vcp->vc_cpfrom == 0) |
1752 | 5498 tmp_len = utf8_to_utf16(ptr, len, NULL, NULL); |
7 | 5499 else |
4122 | 5500 { |
5501 tmp_len = MultiByteToWideChar(vcp->vc_cpfrom, | |
5502 unconvlenp ? MB_ERR_INVALID_CHARS : 0, | |
8080
b6cb94ad97a4
commit https://github.com/vim/vim/commit/6aa2cd4be287f35f95f35c2cec6d5a24f53c4d3c
Christian Brabandt <cb@256bit.org>
parents:
7827
diff
changeset
|
5503 (char *)ptr, len, 0, 0); |
4122 | 5504 if (tmp_len == 0 |
5505 && GetLastError() == ERROR_NO_UNICODE_TRANSLATION) | |
5506 { | |
5507 if (lenp != NULL) | |
5508 *lenp = 0; | |
5509 if (unconvlenp != NULL) | |
5510 *unconvlenp = len; | |
5511 retval = alloc(1); | |
5512 if (retval) | |
5513 retval[0] = NUL; | |
5514 return retval; | |
5515 } | |
5516 } | |
16825
ce04ebdf26b8
patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents:
16764
diff
changeset
|
5517 tmp = ALLOC_MULT(short_u, tmp_len); |
7 | 5518 if (tmp == NULL) |
5519 break; | |
5520 if (vcp->vc_cpfrom == 0) | |
1752 | 5521 utf8_to_utf16(ptr, len, tmp, unconvlenp); |
7 | 5522 else |
8080
b6cb94ad97a4
commit https://github.com/vim/vim/commit/6aa2cd4be287f35f95f35c2cec6d5a24f53c4d3c
Christian Brabandt <cb@256bit.org>
parents:
7827
diff
changeset
|
5523 MultiByteToWideChar(vcp->vc_cpfrom, 0, |
b6cb94ad97a4
commit https://github.com/vim/vim/commit/6aa2cd4be287f35f95f35c2cec6d5a24f53c4d3c
Christian Brabandt <cb@256bit.org>
parents:
7827
diff
changeset
|
5524 (char *)ptr, len, tmp, tmp_len); |
7 | 5525 |
18800
f41b55f9357c
patch 8.1.2388: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents:
18742
diff
changeset
|
5526 // 2. ucs-2 -> codepage/UTF-8. |
7 | 5527 if (vcp->vc_cpto == 0) |
1752 | 5528 retlen = utf16_to_utf8(tmp, tmp_len, NULL); |
7 | 5529 else |
5530 retlen = WideCharToMultiByte(vcp->vc_cpto, 0, | |
5531 tmp, tmp_len, 0, 0, 0, 0); | |
5532 retval = alloc(retlen + 1); | |
5533 if (retval != NULL) | |
5534 { | |
5535 if (vcp->vc_cpto == 0) | |
1752 | 5536 utf16_to_utf8(tmp, tmp_len, retval); |
7 | 5537 else |
5538 WideCharToMultiByte(vcp->vc_cpto, 0, | |
8080
b6cb94ad97a4
commit https://github.com/vim/vim/commit/6aa2cd4be287f35f95f35c2cec6d5a24f53c4d3c
Christian Brabandt <cb@256bit.org>
parents:
7827
diff
changeset
|
5539 tmp, tmp_len, |
b6cb94ad97a4
commit https://github.com/vim/vim/commit/6aa2cd4be287f35f95f35c2cec6d5a24f53c4d3c
Christian Brabandt <cb@256bit.org>
parents:
7827
diff
changeset
|
5540 (char *)retval, retlen, 0, 0); |
7 | 5541 retval[retlen] = NUL; |
5542 if (lenp != NULL) | |
5543 *lenp = retlen; | |
5544 } | |
5545 vim_free(tmp); | |
5546 break; | |
5547 } | |
5548 # endif | |
5549 } | |
5550 | |
5551 return retval; | |
5552 } | |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5553 |
21973
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
5554 #if defined(FEAT_EVAL) || defined(PROTO) |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
5555 |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5556 /* |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5557 * Table set by setcellwidths(). |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5558 */ |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5559 typedef struct |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5560 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5561 long first; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5562 long last; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5563 char width; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5564 } cw_interval_T; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5565 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5566 static cw_interval_T *cw_table = NULL; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5567 static size_t cw_table_size = 0; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5568 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5569 /* |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5570 * Return 1 or 2 when "c" is in the cellwidth table. |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5571 * Return 0 if not. |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5572 */ |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5573 static int |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5574 cw_value(int c) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5575 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5576 int mid, bot, top; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5577 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5578 if (cw_table == NULL) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5579 return 0; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5580 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5581 // first quick check for Latin1 etc. characters |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5582 if (c < cw_table[0].first) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5583 return 0; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5584 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5585 // binary search in table |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5586 bot = 0; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5587 top = (int)cw_table_size - 1; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5588 while (top >= bot) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5589 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5590 mid = (bot + top) / 2; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5591 if (cw_table[mid].last < c) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5592 bot = mid + 1; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5593 else if (cw_table[mid].first > c) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5594 top = mid - 1; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5595 else |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5596 return cw_table[mid].width; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5597 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5598 return 0; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5599 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5600 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5601 static int |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5602 tv_nr_compare(const void *a1, const void *a2) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5603 { |
21975
2030f8267db9
patch 8.2.1537: memory acccess error when using setcellwidths()
Bram Moolenaar <Bram@vim.org>
parents:
21973
diff
changeset
|
5604 listitem_T *li1 = *(listitem_T **)a1; |
2030f8267db9
patch 8.2.1537: memory acccess error when using setcellwidths()
Bram Moolenaar <Bram@vim.org>
parents:
21973
diff
changeset
|
5605 listitem_T *li2 = *(listitem_T **)a2; |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5606 |
34309
d7cfd8fb1d75
patch 9.1.0089: qsort() comparison functions should be transitive
Christian Brabandt <cb@256bit.org>
parents:
34074
diff
changeset
|
5607 return li1->li_tv.vval.v_number == li2->li_tv.vval.v_number ? 0 : |
d7cfd8fb1d75
patch 9.1.0089: qsort() comparison functions should be transitive
Christian Brabandt <cb@256bit.org>
parents:
34074
diff
changeset
|
5608 li1->li_tv.vval.v_number > li2->li_tv.vval.v_number ? 1 : -1; |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5609 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5610 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5611 void |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5612 f_setcellwidths(typval_T *argvars, typval_T *rettv UNUSED) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5613 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5614 list_T *l; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5615 listitem_T *li; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5616 int item; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5617 int i; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5618 listitem_T **ptrs; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5619 cw_interval_T *table; |
26022
30e60bfd5fb3
patch 8.2.3545: setcellwidths() may make 'listchars' or 'fillchars' invalid
Bram Moolenaar <Bram@vim.org>
parents:
25384
diff
changeset
|
5620 cw_interval_T *cw_table_save; |
30e60bfd5fb3
patch 8.2.3545: setcellwidths() may make 'listchars' or 'fillchars' invalid
Bram Moolenaar <Bram@vim.org>
parents:
25384
diff
changeset
|
5621 size_t cw_table_size_save; |
29387
9dce192d1ac2
patch 9.0.0036: 'fillchars' cannot have window-local values
Bram Moolenaar <Bram@vim.org>
parents:
29105
diff
changeset
|
5622 char *error = NULL; |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5623 |
30015
adb0de8be4ce
patch 9.0.0345: error message for list argument could be clearer
Bram Moolenaar <Bram@vim.org>
parents:
29761
diff
changeset
|
5624 if (check_for_nonnull_list_arg(argvars, 0) == FAIL) |
25384
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25342
diff
changeset
|
5625 return; |
e8e2c4d33b9b
patch 8.2.3229: Vim9: runtime and compile time type checks are not the same
Bram Moolenaar <Bram@vim.org>
parents:
25342
diff
changeset
|
5626 |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5627 l = argvars[0].vval.v_list; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5628 if (l->lv_len == 0) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5629 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5630 // Clearing the table. |
32120
97255d909654
patch 9.0.1391: "clear" macros are not always used
Bram Moolenaar <Bram@vim.org>
parents:
32118
diff
changeset
|
5631 VIM_CLEAR(cw_table); |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5632 cw_table_size = 0; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5633 return; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5634 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5635 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5636 ptrs = ALLOC_MULT(listitem_T *, l->lv_len); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5637 if (ptrs == NULL) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5638 return; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5639 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5640 // Check that all entries are a list with three numbers, the range is |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5641 // valid and the cell width is valid. |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5642 item = 0; |
32118
04d9dff67d99
patch 9.0.1390: FOR_ALL_ macros are defined in an unexpected file
Bram Moolenaar <Bram@vim.org>
parents:
31782
diff
changeset
|
5643 FOR_ALL_LIST_ITEMS(l, li) |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5644 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5645 listitem_T *lili; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5646 varnumber_T n1; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5647 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5648 if (li->li_tv.v_type != VAR_LIST || li->li_tv.vval.v_list == NULL) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5649 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5650 semsg(_(e_list_item_nr_is_not_list), item); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5651 vim_free(ptrs); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5652 return; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5653 } |
21975
2030f8267db9
patch 8.2.1537: memory acccess error when using setcellwidths()
Bram Moolenaar <Bram@vim.org>
parents:
21973
diff
changeset
|
5654 |
2030f8267db9
patch 8.2.1537: memory acccess error when using setcellwidths()
Bram Moolenaar <Bram@vim.org>
parents:
21973
diff
changeset
|
5655 lili = li->li_tv.vval.v_list->lv_first; |
2030f8267db9
patch 8.2.1537: memory acccess error when using setcellwidths()
Bram Moolenaar <Bram@vim.org>
parents:
21973
diff
changeset
|
5656 ptrs[item] = lili; |
2030f8267db9
patch 8.2.1537: memory acccess error when using setcellwidths()
Bram Moolenaar <Bram@vim.org>
parents:
21973
diff
changeset
|
5657 for (i = 0; lili != NULL; lili = lili->li_next, ++i) |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5658 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5659 if (lili->li_tv.v_type != VAR_NUMBER) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5660 break; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5661 if (i == 0) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5662 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5663 n1 = lili->li_tv.vval.v_number; |
31782
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
5664 if (n1 < 0x80) |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5665 { |
31782
a19ef442c77a
patch 9.0.1223: cannot use setcellwidths() below 0x100
Bram Moolenaar <Bram@vim.org>
parents:
31768
diff
changeset
|
5666 emsg(_(e_only_values_of_0x80_and_higher_supported)); |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5667 vim_free(ptrs); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5668 return; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5669 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5670 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5671 else if (i == 1 && lili->li_tv.vval.v_number < n1) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5672 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5673 semsg(_(e_list_item_nr_range_invalid), item); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5674 vim_free(ptrs); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5675 return; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5676 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5677 else if (i == 2 && (lili->li_tv.vval.v_number < 1 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5678 || lili->li_tv.vval.v_number > 2)) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5679 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5680 semsg(_(e_list_item_nr_cell_width_invalid), item); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5681 vim_free(ptrs); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5682 return; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5683 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5684 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5685 if (i != 3) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5686 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5687 semsg(_(e_list_item_nr_does_not_contain_3_numbers), item); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5688 vim_free(ptrs); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5689 return; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5690 } |
21975
2030f8267db9
patch 8.2.1537: memory acccess error when using setcellwidths()
Bram Moolenaar <Bram@vim.org>
parents:
21973
diff
changeset
|
5691 ++item; |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5692 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5693 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5694 // Sort the list on the first number. |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5695 qsort((void *)ptrs, (size_t)l->lv_len, sizeof(listitem_T *), tv_nr_compare); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5696 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5697 table = ALLOC_MULT(cw_interval_T, l->lv_len); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5698 if (table == NULL) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5699 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5700 vim_free(ptrs); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5701 return; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5702 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5703 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5704 // Store the items in the new table. |
21975
2030f8267db9
patch 8.2.1537: memory acccess error when using setcellwidths()
Bram Moolenaar <Bram@vim.org>
parents:
21973
diff
changeset
|
5705 for (item = 0; item < l->lv_len; ++item) |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5706 { |
21975
2030f8267db9
patch 8.2.1537: memory acccess error when using setcellwidths()
Bram Moolenaar <Bram@vim.org>
parents:
21973
diff
changeset
|
5707 listitem_T *lili = ptrs[item]; |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5708 varnumber_T n1; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5709 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5710 n1 = lili->li_tv.vval.v_number; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5711 if (item > 0 && n1 <= table[item - 1].last) |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5712 { |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5713 semsg(_(e_overlapping_ranges_for_nr), (long)n1); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5714 vim_free(ptrs); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5715 vim_free(table); |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5716 return; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5717 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5718 table[item].first = n1; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5719 lili = lili->li_next; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5720 table[item].last = lili->li_tv.vval.v_number; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5721 lili = lili->li_next; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5722 table[item].width = lili->li_tv.vval.v_number; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5723 } |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5724 |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5725 vim_free(ptrs); |
26022
30e60bfd5fb3
patch 8.2.3545: setcellwidths() may make 'listchars' or 'fillchars' invalid
Bram Moolenaar <Bram@vim.org>
parents:
25384
diff
changeset
|
5726 |
30e60bfd5fb3
patch 8.2.3545: setcellwidths() may make 'listchars' or 'fillchars' invalid
Bram Moolenaar <Bram@vim.org>
parents:
25384
diff
changeset
|
5727 cw_table_save = cw_table; |
30e60bfd5fb3
patch 8.2.3545: setcellwidths() may make 'listchars' or 'fillchars' invalid
Bram Moolenaar <Bram@vim.org>
parents:
25384
diff
changeset
|
5728 cw_table_size_save = cw_table_size; |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5729 cw_table = table; |
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5730 cw_table_size = l->lv_len; |
26022
30e60bfd5fb3
patch 8.2.3545: setcellwidths() may make 'listchars' or 'fillchars' invalid
Bram Moolenaar <Bram@vim.org>
parents:
25384
diff
changeset
|
5731 |
29672
6b8aaf16af99
patch 9.0.0176: checking character options is duplicated and incomplete
Bram Moolenaar <Bram@vim.org>
parents:
29395
diff
changeset
|
5732 // Check that the new value does not conflict with 'listchars' or |
6b8aaf16af99
patch 9.0.0176: checking character options is duplicated and incomplete
Bram Moolenaar <Bram@vim.org>
parents:
29395
diff
changeset
|
5733 // 'fillchars'. |
6b8aaf16af99
patch 9.0.0176: checking character options is duplicated and incomplete
Bram Moolenaar <Bram@vim.org>
parents:
29395
diff
changeset
|
5734 error = check_chars_options(); |
29387
9dce192d1ac2
patch 9.0.0036: 'fillchars' cannot have window-local values
Bram Moolenaar <Bram@vim.org>
parents:
29105
diff
changeset
|
5735 if (error != NULL) |
9dce192d1ac2
patch 9.0.0036: 'fillchars' cannot have window-local values
Bram Moolenaar <Bram@vim.org>
parents:
29105
diff
changeset
|
5736 { |
9dce192d1ac2
patch 9.0.0036: 'fillchars' cannot have window-local values
Bram Moolenaar <Bram@vim.org>
parents:
29105
diff
changeset
|
5737 emsg(_(error)); |
9dce192d1ac2
patch 9.0.0036: 'fillchars' cannot have window-local values
Bram Moolenaar <Bram@vim.org>
parents:
29105
diff
changeset
|
5738 cw_table = cw_table_save; |
9dce192d1ac2
patch 9.0.0036: 'fillchars' cannot have window-local values
Bram Moolenaar <Bram@vim.org>
parents:
29105
diff
changeset
|
5739 cw_table_size = cw_table_size_save; |
9dce192d1ac2
patch 9.0.0036: 'fillchars' cannot have window-local values
Bram Moolenaar <Bram@vim.org>
parents:
29105
diff
changeset
|
5740 vim_free(table); |
9dce192d1ac2
patch 9.0.0036: 'fillchars' cannot have window-local values
Bram Moolenaar <Bram@vim.org>
parents:
29105
diff
changeset
|
5741 return; |
9dce192d1ac2
patch 9.0.0036: 'fillchars' cannot have window-local values
Bram Moolenaar <Bram@vim.org>
parents:
29105
diff
changeset
|
5742 } |
26022
30e60bfd5fb3
patch 8.2.3545: setcellwidths() may make 'listchars' or 'fillchars' invalid
Bram Moolenaar <Bram@vim.org>
parents:
25384
diff
changeset
|
5743 |
30e60bfd5fb3
patch 8.2.3545: setcellwidths() may make 'listchars' or 'fillchars' invalid
Bram Moolenaar <Bram@vim.org>
parents:
25384
diff
changeset
|
5744 vim_free(cw_table_save); |
31678
9e1062b4aa94
patch 9.0.1171: screen is not redrawn after using setcellwidths()
Bram Moolenaar <Bram@vim.org>
parents:
31014
diff
changeset
|
5745 redraw_all_later(UPD_CLEAR); |
21971
0bc43a704f56
patch 8.2.1535: it is not possible to specify cell widths of characters
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5746 } |
21973
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
5747 |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
5748 void |
31760
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5749 f_getcellwidths(typval_T *argvars UNUSED, typval_T *rettv) |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5750 { |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5751 if (rettv_list_alloc(rettv) == FAIL) |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5752 return; |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5753 |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5754 for (size_t i = 0; i < cw_table_size; i++) |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5755 { |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5756 list_T *entry = list_alloc(); |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5757 if (entry == NULL) |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5758 break; |
31768
3f0f639eed9a
patch 9.0.1216: Coverity warns for ignoring return value
Bram Moolenaar <Bram@vim.org>
parents:
31760
diff
changeset
|
5759 if (list_append_number(entry, (varnumber_T)cw_table[i].first) == FAIL |
3f0f639eed9a
patch 9.0.1216: Coverity warns for ignoring return value
Bram Moolenaar <Bram@vim.org>
parents:
31760
diff
changeset
|
5760 || list_append_number(entry, (varnumber_T)cw_table[i].last) == FAIL |
3f0f639eed9a
patch 9.0.1216: Coverity warns for ignoring return value
Bram Moolenaar <Bram@vim.org>
parents:
31760
diff
changeset
|
5761 || list_append_number(entry, (varnumber_T)cw_table[i].width) == FAIL |
3f0f639eed9a
patch 9.0.1216: Coverity warns for ignoring return value
Bram Moolenaar <Bram@vim.org>
parents:
31760
diff
changeset
|
5762 || list_append_list(rettv->vval.v_list, entry) == FAIL) |
3f0f639eed9a
patch 9.0.1216: Coverity warns for ignoring return value
Bram Moolenaar <Bram@vim.org>
parents:
31760
diff
changeset
|
5763 { |
3f0f639eed9a
patch 9.0.1216: Coverity warns for ignoring return value
Bram Moolenaar <Bram@vim.org>
parents:
31760
diff
changeset
|
5764 list_free(entry); |
3f0f639eed9a
patch 9.0.1216: Coverity warns for ignoring return value
Bram Moolenaar <Bram@vim.org>
parents:
31760
diff
changeset
|
5765 break; |
3f0f639eed9a
patch 9.0.1216: Coverity warns for ignoring return value
Bram Moolenaar <Bram@vim.org>
parents:
31760
diff
changeset
|
5766 } |
31760
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5767 } |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5768 } |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5769 |
f348559ce426
patch 9.0.1212: cannot read back what setcellwidths() has done
Bram Moolenaar <Bram@vim.org>
parents:
31728
diff
changeset
|
5770 void |
21973
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
5771 f_charclass(typval_T *argvars, typval_T *rettv UNUSED) |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
5772 { |
25092
cd5e8df05a64
patch 8.2.3083: crash when passing null string to charclass()
Bram Moolenaar <Bram@vim.org>
parents:
25062
diff
changeset
|
5773 if (check_for_string_arg(argvars, 0) == FAIL |
cd5e8df05a64
patch 8.2.3083: crash when passing null string to charclass()
Bram Moolenaar <Bram@vim.org>
parents:
25062
diff
changeset
|
5774 || argvars[0].vval.v_string == NULL) |
21973
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
5775 return; |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
5776 rettv->vval.v_number = mb_get_class(argvars[0].vval.v_string); |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
5777 } |
85add08e6a2d
patch 8.2.1536: cannot get the class of a character; emoji widths are wrong
Bram Moolenaar <Bram@vim.org>
parents:
21971
diff
changeset
|
5778 #endif |
33399
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5779 |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5780 /* |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5781 * Function given to ExpandGeneric() to obtain the possible arguments of the |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5782 * encoding options. |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5783 */ |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5784 char_u * |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5785 get_encoding_name(expand_T *xp UNUSED, int idx) |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5786 { |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5787 if (idx >= (int)(sizeof(enc_canon_table) / sizeof(enc_canon_table[0]))) |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5788 return NULL; |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5789 |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5790 return (char_u*)enc_canon_table[idx].name; |
95db67c7b754
patch 9.0.1958: cannot complete option values
Christian Brabandt <cb@256bit.org>
parents:
33223
diff
changeset
|
5791 } |