comparison src/digraph.c @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children 404aac550f35
comparison
equal deleted inserted replaced
6:c2daee826b8f 7:3fc0f57ecb91
1 /* vi:set ts=8 sts=4 sw=4:
2 *
3 * VIM - Vi IMproved by Bram Moolenaar
4 *
5 * Do ":help uganda" in Vim to read copying and usage conditions.
6 * Do ":help credits" in Vim to see a list of people who contributed.
7 * See README.txt for an overview of the Vim source code.
8 */
9
10 /*
11 * digraph.c: code for digraphs
12 */
13
14 #include "vim.h"
15
16 #if defined(FEAT_DIGRAPHS) || defined(PROTO)
17
18 #ifdef FEAT_MBYTE
19 typedef int result_T;
20 #else
21 typedef char_u result_T;
22 #endif
23
24 typedef struct digraph
25 {
26 char_u char1;
27 char_u char2;
28 result_T result;
29 } digr_T;
30
31 static int getexactdigraph __ARGS((int, int, int));
32 static void printdigraph __ARGS((digr_T *));
33
34 /* digraphs added by the user */
35 static garray_T user_digraphs = {0, 0, sizeof(digr_T), 10, NULL};
36
37 /*
38 * Note: Characters marked with XX are not included literally, because some
39 * compilers cannot handle them (Amiga SAS/C is the most picky one).
40 */
41 #if defined(MSDOS) || defined(OS2)
42 /*
43 * MSDOS digraphs.
44 */
45 digr_T digraphdefault[] =
46 {{'C', ',', 128}, /* ~@ XX */
47 {'u', '"', 129}, /* */
48 {'e', '\'', 130}, /* */
49 {'a', '^', 131}, /* */
50 {'a', '"', 132}, /* */
51 {'a', '`', 133}, /* */
52 {'a', '@', 134}, /* */
53 {'c', ',', 135}, /* ~G XX */
54 {'e', '^', 136}, /* ~H XX */
55 {'e', '"', 137}, /* */
56 {'e', '`', 138}, /* */
57 {'i', '"', 139}, /* */
58 {'i', '^', 140}, /* */
59 {'i', '`', 141}, /* */
60 {'A', '"', 142}, /* ~N XX */
61 {'A', '@', 143}, /* */
62 {'E', '\'', 144}, /* */
63 {'a', 'e', 145}, /* */
64 {'A', 'E', 146}, /* */
65 {'o', '^', 147}, /* */
66 {'o', '"', 148}, /* */
67 {'o', '`', 149}, /* */
68 {'u', '^', 150}, /* */
69 {'u', '`', 151}, /* */
70 {'y', '"', 152}, /* */
71 {'O', '"', 153}, /* */
72 {'U', '"', 154}, /* */
73 {'c', '|', 155}, /* */
74 {'$', '$', 156}, /* */
75 {'Y', '-', 157}, /* ~] XX */
76 {'P', 't', 158}, /* */
77 {'f', 'f', 159}, /* */
78 {'a', '\'', 160}, /* */
79 {'i', '\'', 161}, /* */
80 {'o', '\'', 162}, /* */
81 {'u', '\'', 163}, /* x XX */
82 {'n', '~', 164}, /* */
83 {'N', '~', 165}, /* */
84 {'a', 'a', 166}, /* */
85 {'o', 'o', 167}, /* */
86 {'~', '?', 168}, /* */
87 {'-', 'a', 169}, /* */
88 {'a', '-', 170}, /* */
89 {'1', '2', 171}, /* */
90 {'1', '4', 172}, /* */
91 {'~', '!', 173}, /* */
92 {'<', '<', 174}, /* */
93 {'>', '>', 175}, /* */
94
95 {'s', 's', 225}, /* */
96 {'j', 'u', 230}, /* */
97 {'o', '/', 237}, /* */
98 {'+', '-', 241}, /* */
99 {'>', '=', 242}, /* */
100 {'<', '=', 243}, /* */
101 {':', '-', 246}, /* */
102 {'~', '~', 247}, /* */
103 {'~', 'o', 248}, /* */
104 {'2', '2', 253}, /* */
105 {NUL, NUL, NUL}
106 };
107
108 #else /* !MSDOS && !OS2 */
109 # ifdef __MINT__
110
111 /*
112 * ATARI digraphs
113 */
114 digr_T digraphdefault[] =
115 {{'C', ',', 128}, /* ~@ XX */
116 {'u', '"', 129}, /* */
117 {'e', '\'', 130}, /* */
118 {'a', '^', 131}, /* */
119 {'a', '"', 132}, /* */
120 {'a', '`', 133}, /* */
121 {'a', '@', 134}, /* */
122 {'c', ',', 135}, /* ~G XX */
123 {'e', '^', 136}, /* ~H XX */
124 {'e', '"', 137}, /* */
125 {'e', '`', 138}, /* */
126 {'i', '"', 139}, /* */
127 {'i', '^', 140}, /* */
128 {'i', '`', 141}, /* */
129 {'A', '"', 142}, /* */
130 {'A', '@', 143}, /* */
131 {'E', '\'', 144}, /* */
132 {'a', 'e', 145}, /* */
133 {'A', 'E', 146}, /* */
134 {'o', '^', 147}, /* */
135 {'o', '"', 148}, /* */
136 {'o', '`', 149}, /* */
137 {'u', '^', 150}, /* */
138 {'u', '`', 151}, /* */
139 {'y', '"', 152}, /* */
140 {'O', '"', 153}, /* */
141 {'U', '"', 154}, /* */
142 {'c', '|', 155}, /* */
143 {'$', '$', 156}, /* */
144 {'Y', '-', 157}, /* ~] XX */
145 {'s', 's', 158}, /* */
146 {'f', 'f', 159}, /* */
147 {'a', '\'', 160}, /* */
148 {'i', '\'', 161}, /* */
149 {'o', '\'', 162}, /* */
150 {'u', '\'', 163}, /* */
151 {'n', '~', 164}, /* */
152 {'N', '~', 165}, /* */
153 {'a', 'a', 166}, /* */
154 {'o', 'o', 167}, /* */
155 {'~', '?', 168}, /* */
156 {'-', 'a', 169}, /* */
157 {'a', '-', 170}, /* */
158 {'1', '2', 171}, /* */
159 {'1', '4', 172}, /* */
160 {'~', '!', 173}, /* */
161 {'<', '<', 174}, /* */
162 {'>', '>', 175}, /* */
163 {'j', 'u', 230}, /* */
164 {'o', '/', 237}, /* */
165 {'+', '-', 241}, /* */
166 {'>', '=', 242}, /* */
167 {'<', '=', 243}, /* */
168 {':', '-', 246}, /* */
169 {'~', '~', 247}, /* */
170 {'~', 'o', 248}, /* */
171 {'2', '2', 253}, /* */
172 {NUL, NUL, NUL}
173 };
174
175 # else /* !__MINT__ */
176 # ifdef HPUX_DIGRAPHS
177
178 /*
179 * different HPUX digraphs
180 */
181 digr_T digraphdefault[] =
182 {{'A', '`', 161}, /* */
183 {'A', '^', 162}, /* */
184 {'E', '`', 163}, /* */
185 {'E', '^', 164}, /* */
186 {'E', '"', 165}, /* */
187 {'I', '^', 166}, /* */
188 {'I', '"', 167}, /* */
189 {'\'', '\'', 168}, /* */
190 {'`', '`', 169}, /* */
191 {'^', '^', 170}, /* */
192 {'"', '"', 171}, /* */
193 {'~', '~', 172}, /* */
194 {'U', '`', 173}, /* */
195 {'U', '^', 174}, /* */
196 {'L', '=', 175}, /* */
197 {'~', '_', 176}, /* */
198 {'Y', '\'', 177}, /* */
199 {'y', '\'', 178}, /* */
200 {'~', 'o', 179}, /* */
201 {'C', ',', 180}, /* */
202 {'c', ',', 181}, /* */
203 {'N', '~', 182}, /* */
204 {'n', '~', 183}, /* */
205 {'~', '!', 184}, /* */
206 {'~', '?', 185}, /* */
207 {'o', 'x', 186}, /* */
208 {'L', '-', 187}, /* */
209 {'Y', '=', 188}, /* */
210 {'p', 'p', 189}, /* */
211 {'f', 'l', 190}, /* */
212 {'c', '|', 191}, /* */
213 {'a', '^', 192}, /* */
214 {'e', '^', 193}, /* */
215 {'o', '^', 194}, /* */
216 {'u', '^', 195}, /* */
217 {'a', '\'', 196}, /* */
218 {'e', '\'', 197}, /* */
219 {'o', '\'', 198}, /* */
220 {'u', '\'', 199}, /* */
221 {'a', '`', 200}, /* */
222 {'e', '`', 201}, /* */
223 {'o', '`', 202}, /* */
224 {'u', '`', 203}, /* */
225 {'a', '"', 204}, /* */
226 {'e', '"', 205}, /* */
227 {'o', '"', 206}, /* */
228 {'u', '"', 207}, /* */
229 {'A', 'o', 208}, /* */
230 {'i', '^', 209}, /* */
231 {'O', '/', 210}, /* */
232 {'A', 'E', 211}, /* */
233 {'a', 'o', 212}, /* */
234 {'i', '\'', 213}, /* */
235 {'o', '/', 214}, /* */
236 {'a', 'e', 215}, /* */
237 {'A', '"', 216}, /* */
238 {'i', '`', 217}, /* */
239 {'O', '"', 218}, /* */
240 {'U', '"', 219}, /* */
241 {'E', '\'', 220}, /* */
242 {'i', '"', 221}, /* */
243 {'s', 's', 222}, /* */
244 {'O', '^', 223}, /* */
245 {'A', '\'', 224}, /* */
246 {'A', '~', 225}, /* */
247 {'a', '~', 226}, /* */
248 {'D', '-', 227}, /* */
249 {'d', '-', 228}, /* */
250 {'I', '\'', 229}, /* */
251 {'I', '`', 230}, /* */
252 {'O', '\'', 231}, /* */
253 {'O', '`', 232}, /* */
254 {'O', '~', 233}, /* */
255 {'o', '~', 234}, /* */
256 {'S', '~', 235}, /* */
257 {'s', '~', 236}, /* */
258 {'U', '\'', 237}, /* */
259 {'Y', '"', 238}, /* */
260 {'y', '"', 239}, /* */
261 {'p', '-', 240}, /* */
262 {'p', '~', 241}, /* */
263 {'~', '.', 242}, /* */
264 {'j', 'u', 243}, /* */
265 {'P', 'p', 244}, /* */
266 {'3', '4', 245}, /* */
267 {'-', '-', 246}, /* */
268 {'1', '4', 247}, /* */
269 {'1', '2', 248}, /* */
270 {'a', '_', 249}, /* */
271 {'o', '_', 250}, /* */
272 {'<', '<', 251}, /* */
273 {'x', 'x', 252}, /* */
274 {'>', '>', 253}, /* */
275 {'+', '-', 254}, /* */
276 {'n', 'u', 255}, /* x XX */
277 {NUL, NUL, NUL}
278 };
279
280 # else /* !HPUX_DIGRAPHS */
281
282 # ifdef EBCDIC
283
284 /*
285 * EBCDIC - ISO digraphs
286 * TODO: EBCDIC Table is Code-Page 1047
287 */
288 digr_T digraphdefault[] =
289 {{'a', '^', 66}, /* */
290 {'a', '"', 67}, /* */
291 {'a', '`', 68}, /* */
292 {'a', '\'', 69}, /* */
293 {'a', '~', 70}, /* */
294 {'a', '@', 71}, /* */
295 {'a', 'a', 71}, /* */
296 {'c', ',', 72}, /* */
297 {'n', '~', 73}, /* */
298 {'c', '|', 74}, /* */
299 {'e', '\'', 81}, /* */
300 {'e', '^', 82}, /* */
301 {'e', '"', 83}, /* */
302 {'e', '`', 84}, /* */
303 {'i', '\'', 85}, /* */
304 {'i', '^', 86}, /* */
305 {'i', '"', 87}, /* */
306 {'i', '`', 88}, /* */
307 {'s', 's', 89}, /* */
308 {'A', '^', 98}, /* */
309 {'A', '"', 99}, /* */
310 {'A', '`', 100}, /* */
311 {'A', '\'', 101}, /* */
312 {'A', '~', 102}, /* */
313 {'A', '@', 103}, /* */
314 {'A', 'A', 103}, /* */
315 {'C', ',', 104}, /* */
316 {'N', '~', 105}, /* */
317 {'|', '|', 106}, /* */
318 {'o', '/', 112}, /* */
319 {'E', '\'', 113}, /* */
320 {'E', '^', 114}, /* */
321 {'E', '"', 115}, /* */
322 {'E', '`', 116}, /* */
323 {'I', '\'', 117}, /* */
324 {'I', '^', 118}, /* */
325 {'I', '"', 119}, /* */
326 {'I', '`', 120}, /* */
327 {'O', '/', 128}, /* 0/ XX */
328 {'<', '<', 138}, /* */
329 {'>', '>', 139}, /* */
330 {'d', '-', 140}, /* */
331 {'y', '\'', 141}, /* */
332 {'i', 'p', 142}, /* */
333 {'+', '-', 143}, /* */
334 {'~', 'o', 144}, /* */
335 {'a', '-', 154}, /* */
336 {'o', '-', 155}, /* */
337 {'a', 'e', 156}, /* */
338 {',', ',', 157}, /* , XX */
339 {'A', 'E', 158}, /* */
340 {'o', 'x', 159}, /* - currency symbol in ISO 8859-1 */
341 {'e', '=', 159}, /* - euro symbol in ISO 8859-15 */
342 {'j', 'u', 160}, /* */
343 {'y', '"', 167}, /* x XX */
344 {'~', '!', 170}, /* */
345 {'~', '?', 171}, /* */
346 {'D', '-', 172}, /* */
347 {'I', 'p', 174}, /* */
348 {'r', 'O', 175}, /* */
349 {'-', ',', 176}, /* */
350 {'$', '$', 177}, /* */
351 {'Y', '-', 178}, /* */
352 {'~', '.', 179}, /* */
353 {'c', 'O', 180}, /* */
354 {'p', 'a', 181}, /* */
355 {'p', 'p', 182}, /* */
356 {'1', '4', 183}, /* */
357 {'1', '2', 184}, /* */
358 {'3', '4', 185}, /* */
359 {'Y', '\'', 186}, /* */
360 {'"', '"', 187}, /* */
361 {'-', '=', 188}, /* */
362 {'\'', '\'', 190}, /* */
363 {'O', 'E', 191}, /* - OE in ISO 8859-15 */
364 {'/', '\\', 191}, /* - multiplication symbol in ISO 8859-1 */
365 {'-', '-', 202}, /* */
366 {'o', '^', 203}, /* */
367 {'o', '"', 204}, /* */
368 {'o', '`', 205}, /* */
369 {'o', '\'', 206}, /* */
370 {'o', '~', 207}, /* */
371 {'1', '1', 218}, /* */
372 {'u', '^', 219}, /* */
373 {'u', '"', 220}, /* */
374 {'u', '`', 221}, /* */
375 {'u', '\'', 222}, /* */
376 {':', '-', 225}, /* - division symbol in ISO 8859-1 */
377 {'o', 'e', 225}, /* - oe in ISO 8859-15 */
378 {'2', '2', 234}, /* */
379 {'O', '^', 235}, /* */
380 {'O', '"', 236}, /* */
381 {'O', '`', 237}, /* */
382 {'O', '\'', 238}, /* */
383 {'O', '~', 239}, /* */
384 {'3', '3', 250}, /* */
385 {'U', '^', 251}, /* */
386 {'U', '"', 252}, /* */
387 {'U', '`', 253}, /* */
388 {'U', '\'', 254}, /* */
389 {NUL, NUL, NUL}
390 };
391
392 # else
393 # if defined(MACOS) && !defined(FEAT_MBYTE)
394
395 /*
396 * Macintosh digraphs
397 */
398 digr_T digraphdefault[] =
399 {{'a', 't', 64}, /* @ */
400 {'A', '"', 128}, /* ~@ XX */
401 {'A', 'o', 129}, /* */
402 {'C', ',', 130}, /* */
403 {'E', '\'', 131}, /* */
404 {'N', '~', 132}, /* */
405 {'O', '"', 133}, /* */
406 {'U', '"', 134}, /* */
407 {'a', '\'', 135}, /* ~G XX */
408 {'a', '`', 136}, /* ~H XX */
409 {'a', '^', 137}, /* */
410 {'a', '"', 138}, /* */
411 {'a', '~', 139}, /* */
412 {'a', 'o', 140}, /* */
413 {'c', ',', 141}, /* */
414 {'e', '\'', 142}, /* */
415 {'e', '`', 143}, /* */
416 {'e', '^', 144}, /* */
417 {'e', '"', 145}, /* */
418 {'i', '\'', 146}, /* */
419 {'i', '`', 147}, /* */
420 {'i', '^', 148}, /* */
421 {'i', '"', 149}, /* */
422 {'n', '~', 150}, /* */
423 {'o', '\'', 151}, /* */
424 {'o', '`', 152}, /* */
425 {'o', '^', 153}, /* */
426 {'o', '"', 154}, /* */
427 {'o', '~', 155}, /* o */
428 {'u', '\'', 156}, /* */
429 {'u', '`', 157}, /* ~] XX */
430 {'u', '^', 158}, /* */
431 {'u', '"', 159}, /* */
432 {'+', '_', 160}, /* */
433 {'~', 'o', 161}, /* */
434 {'c', '|', 162}, /* */
435 {'$', '$', 163}, /* */
436 {'p', 'a', 164}, /* */
437 {'.', '.', 165}, /* * */
438 {'P', 'P', 166}, /* */
439 {'s', 's', 167}, /* */
440 {'r', 'O', 168}, /* */
441 {'c', 'O', 169}, /* */
442 {'T', 'M', 170}, /* */
443 {'=', '/', 173}, /* */
444 {'A', 'E', 174}, /* */
445 {'O', '/', 175}, /* */
446 {'0', '0', 176}, /* */
447 {'+', '-', 177}, /* */
448 {'<', '=', 178}, /* */
449 {'>', '=', 179}, /* */
450 {'Y', '-', 180}, /* */
451 {'j', 'u', 181}, /* */
452 {'m', 'u', 181}, /* */
453 {'d', 'd', 182}, /* */
454 {'S', 'S', 183}, /* */
455 {'S', 'I', 183}, /* */
456 {'P', 'I', 184}, /* */
457 {'p', 'i', 185}, /* */
458 {'I', 'I', 186}, /* */
459 {'a', '-', 187}, /* */
460 {'o', '-', 188}, /* */
461 {'O', 'M', 189}, /* */
462 {'a', 'e', 190}, /* */
463 {'o', '/', 191}, /* */
464 {'~', '?', 192}, /* */
465 {'~', '!', 193}, /* */
466 {'-', ',', 194}, /* */
467 {'v', '-', 195}, /* ~H XX */
468 {'f', '-', 196}, /* */
469 {'~', '~', 197}, /* */
470 {'D', 'E', 198}, /* */
471 {'<', '<', 199}, /* */
472 {'>', '>', 200}, /* */
473 {'.', ':', 201}, /* */
474 {'A', '`', 203}, /* */
475 {'A', '~', 204}, /* */
476 {'O', '~', 205}, /* */
477 {'O', 'E', 206}, /* */
478 {'o', 'e', 207}, /* */
479 {'-', '.', 208}, /* - */
480 {'-', '-', 209}, /* - */
481 {'`', '`', 210}, /* " */
482 {'\'', '\'', 211}, /* " */
483 {'`', ' ', 212}, /* ' */
484 {'\'', ' ', 213}, /* ' */
485 {'-', ':', 214}, /* */
486 {'D', 'I', 215}, /* */
487 {'y', ':', 216}, /* */
488 {'Y', ':', 217}, /* */
489 {'/', '/', 218}, /* */
490 {'E', '=', 219}, /* Euro System >=8.5 */
491 {'o', 'x', 219}, /* Currency System <=8.1*/
492 {'<', ' ', 220}, /* */
493 {'>', ' ', 221}, /* */
494 {'f', 'i', 222}, /* */
495 {'f', 'l', 223}, /* */
496 {'+', '+', 224}, /* */
497 {'~', '.', 225}, /* */
498 {',', ' ', 226}, /* */
499 {',', ',', 227}, /* */
500 {'%', '.', 228}, /* */
501 {'%', '0', 228}, /* */
502 {'A', '^', 229}, /* */
503 {'E', '^', 230}, /* */
504 {'A', '\'', 231}, /* */
505 {'E', '"', 232}, /* */
506 {'E', '`', 233}, /* */
507 {'I', '\'', 234}, /* */
508 {'I', '^', 235}, /* */
509 {'I', '"', 236}, /* */
510 {'I', '`', 237}, /* */
511 {'O', '\'', 238}, /* */
512 {'O', '^', 239}, /* */
513 {'A', 'P', 240}, /* */
514 {'O', '`', 241}, /* */
515 {'U', '\'', 242}, /* */
516 {'U', '^', 243}, /* */
517 {'U', '`', 244}, /* */
518 {'i', '.', 245}, /* */
519 {NUL, NUL, NUL}
520 };
521
522 # else /* !MACOS */
523
524 # ifdef OLD_DIGRAPHS
525
526 /*
527 * digraphs compatible with Vim 5.x
528 */
529 digr_T digraphdefault[] =
530 {{'~', '!', 161}, /* */
531 {'c', '|', 162}, /* */
532 {'$', '$', 163}, /* */
533 {'o', 'x', 164}, /* - currency symbol in ISO 8859-1 */
534 {'e', '=', 164}, /* - euro symbol in ISO 8859-15 */
535 {'Y', '-', 165}, /* */
536 {'|', '|', 166}, /* */
537 {'p', 'a', 167}, /* */
538 {'"', '"', 168}, /* */
539 {'c', 'O', 169}, /* */
540 {'a', '-', 170}, /* */
541 {'<', '<', 171}, /* */
542 {'-', ',', 172}, /* */
543 {'-', '-', 173}, /* */
544 {'r', 'O', 174}, /* */
545 {'-', '=', 175}, /* */
546 {'~', 'o', 176}, /* */
547 {'+', '-', 177}, /* */
548 {'2', '2', 178}, /* */
549 {'3', '3', 179}, /* */
550 {'\'', '\'', 180}, /* */
551 {'j', 'u', 181}, /* */
552 {'p', 'p', 182}, /* */
553 {'~', '.', 183}, /* */
554 {',', ',', 184}, /* */
555 {'1', '1', 185}, /* */
556 {'o', '-', 186}, /* */
557 {'>', '>', 187}, /* */
558 {'1', '4', 188}, /* */
559 {'1', '2', 189}, /* */
560 {'3', '4', 190}, /* */
561 {'~', '?', 191}, /* */
562 {'A', '`', 192}, /* */
563 {'A', '\'', 193}, /* */
564 {'A', '^', 194}, /* */
565 {'A', '~', 195}, /* */
566 {'A', '"', 196}, /* */
567 {'A', '@', 197}, /* */
568 {'A', 'A', 197}, /* */
569 {'A', 'E', 198}, /* */
570 {'C', ',', 199}, /* */
571 {'E', '`', 200}, /* */
572 {'E', '\'', 201}, /* */
573 {'E', '^', 202}, /* */
574 {'E', '"', 203}, /* */
575 {'I', '`', 204}, /* */
576 {'I', '\'', 205}, /* */
577 {'I', '^', 206}, /* */
578 {'I', '"', 207}, /* */
579 {'D', '-', 208}, /* */
580 {'N', '~', 209}, /* */
581 {'O', '`', 210}, /* */
582 {'O', '\'', 211}, /* */
583 {'O', '^', 212}, /* */
584 {'O', '~', 213}, /* */
585 {'O', '"', 214}, /* */
586 {'/', '\\', 215}, /* - multiplication symbol in ISO 8859-1 */
587 {'O', 'E', 215}, /* - OE in ISO 8859-15 */
588 {'O', '/', 216}, /* */
589 {'U', '`', 217}, /* */
590 {'U', '\'', 218}, /* */
591 {'U', '^', 219}, /* */
592 {'U', '"', 220}, /* */
593 {'Y', '\'', 221}, /* */
594 {'I', 'p', 222}, /* */
595 {'s', 's', 223}, /* */
596 {'a', '`', 224}, /* */
597 {'a', '\'', 225}, /* */
598 {'a', '^', 226}, /* */
599 {'a', '~', 227}, /* */
600 {'a', '"', 228}, /* */
601 {'a', '@', 229}, /* */
602 {'a', 'a', 229}, /* */
603 {'a', 'e', 230}, /* */
604 {'c', ',', 231}, /* */
605 {'e', '`', 232}, /* */
606 {'e', '\'', 233}, /* */
607 {'e', '^', 234}, /* */
608 {'e', '"', 235}, /* */
609 {'i', '`', 236}, /* */
610 {'i', '\'', 237}, /* */
611 {'i', '^', 238}, /* */
612 {'i', '"', 239}, /* */
613 {'d', '-', 240}, /* */
614 {'n', '~', 241}, /* */
615 {'o', '`', 242}, /* */
616 {'o', '\'', 243}, /* */
617 {'o', '^', 244}, /* */
618 {'o', '~', 245}, /* */
619 {'o', '"', 246}, /* */
620 {':', '-', 247}, /* - division symbol in ISO 8859-1 */
621 {'o', 'e', 247}, /* - oe in ISO 8859-15 */
622 {'o', '/', 248}, /* */
623 {'u', '`', 249}, /* */
624 {'u', '\'', 250}, /* */
625 {'u', '^', 251}, /* */
626 {'u', '"', 252}, /* */
627 {'y', '\'', 253}, /* */
628 {'i', 'p', 254}, /* */
629 {'y', '"', 255}, /* x XX */
630 {NUL, NUL, NUL}
631 };
632 # else /* OLD_DIGRAPHS */
633
634 /*
635 * digraphs for Unicode from RFC1345
636 * (also work for ISO-8859-1 aka latin1)
637 */
638 digr_T digraphdefault[] =
639 {
640 {'N', 'U', 0x0a}, /* LF for NUL */
641 {'S', 'H', 0x01},
642 {'S', 'X', 0x02},
643 {'E', 'X', 0x03},
644 {'E', 'T', 0x04},
645 {'E', 'Q', 0x05},
646 {'A', 'K', 0x06},
647 {'B', 'L', 0x07},
648 {'B', 'S', 0x08},
649 {'H', 'T', 0x09},
650 {'L', 'F', 0x0a},
651 {'V', 'T', 0x0b},
652 {'F', 'F', 0x0c},
653 {'C', 'R', 0x0d},
654 {'S', 'O', 0x0e},
655 {'S', 'I', 0x0f},
656 {'D', 'L', 0x10},
657 {'D', '1', 0x11},
658 {'D', '2', 0x12},
659 {'D', '3', 0x13},
660 {'D', '4', 0x14},
661 {'N', 'K', 0x15},
662 {'S', 'Y', 0x16},
663 {'E', 'B', 0x17},
664 {'C', 'N', 0x18},
665 {'E', 'M', 0x19},
666 {'S', 'B', 0x1a},
667 {'E', 'C', 0x1b},
668 {'F', 'S', 0x1c},
669 {'G', 'S', 0x1d},
670 {'R', 'S', 0x1e},
671 {'U', 'S', 0x1f},
672 {'S', 'P', 0x20},
673 {'N', 'b', 0x23},
674 {'D', 'O', 0x24},
675 {'A', 't', 0x40},
676 {'<', '(', 0x5b},
677 {'/', '/', 0x5c},
678 {')', '>', 0x5d},
679 {'\'', '>', 0x5e},
680 {'\'', '!', 0x60},
681 {'(', '!', 0x7b},
682 {'!', '!', 0x7c},
683 {'!', ')', 0x7d},
684 {'\'', '?', 0x7e},
685 {'D', 'T', 0x7f},
686 {'P', 'A', 0x80},
687 {'H', 'O', 0x81},
688 {'B', 'H', 0x82},
689 {'N', 'H', 0x83},
690 {'I', 'N', 0x84},
691 {'N', 'L', 0x85},
692 {'S', 'A', 0x86},
693 {'E', 'S', 0x87},
694 {'H', 'S', 0x88},
695 {'H', 'J', 0x89},
696 {'V', 'S', 0x8a},
697 {'P', 'D', 0x8b},
698 {'P', 'U', 0x8c},
699 {'R', 'I', 0x8d},
700 {'S', '2', 0x8e},
701 {'S', '3', 0x8f},
702 {'D', 'C', 0x90},
703 {'P', '1', 0x91},
704 {'P', '2', 0x92},
705 {'T', 'S', 0x93},
706 {'C', 'C', 0x94},
707 {'M', 'W', 0x95},
708 {'S', 'G', 0x96},
709 {'E', 'G', 0x97},
710 {'S', 'S', 0x98},
711 {'G', 'C', 0x99},
712 {'S', 'C', 0x9a},
713 {'C', 'I', 0x9b},
714 {'S', 'T', 0x9c},
715 {'O', 'C', 0x9d},
716 {'P', 'M', 0x9e},
717 {'A', 'C', 0x9f},
718 {'N', 'S', 0xa0},
719 {'!', 'I', 0xa1},
720 {'C', 't', 0xa2},
721 {'P', 'd', 0xa3},
722 {'C', 'u', 0xa4},
723 {'Y', 'e', 0xa5},
724 {'B', 'B', 0xa6},
725 {'S', 'E', 0xa7},
726 {'\'', ':', 0xa8},
727 {'C', 'o', 0xa9},
728 {'-', 'a', 0xaa},
729 {'<', '<', 0xab},
730 {'N', 'O', 0xac},
731 {'-', '-', 0xad},
732 {'R', 'g', 0xae},
733 {'\'', 'm', 0xaf},
734 {'D', 'G', 0xb0},
735 {'+', '-', 0xb1},
736 {'2', 'S', 0xb2},
737 {'3', 'S', 0xb3},
738 {'\'', '\'', 0xb4},
739 {'M', 'y', 0xb5},
740 {'P', 'I', 0xb6},
741 {'.', 'M', 0xb7},
742 {'\'', ',', 0xb8},
743 {'1', 'S', 0xb9},
744 {'-', 'o', 0xba},
745 {'>', '>', 0xbb},
746 {'1', '4', 0xbc},
747 {'1', '2', 0xbd},
748 {'3', '4', 0xbe},
749 {'?', 'I', 0xbf},
750 {'A', '!', 0xc0},
751 {'A', '\'', 0xc1},
752 {'A', '>', 0xc2},
753 {'A', '?', 0xc3},
754 {'A', ':', 0xc4},
755 {'A', 'A', 0xc5},
756 {'A', 'E', 0xc6},
757 {'C', ',', 0xc7},
758 {'E', '!', 0xc8},
759 {'E', '\'', 0xc9},
760 {'E', '>', 0xca},
761 {'E', ':', 0xcb},
762 {'I', '!', 0xcc},
763 {'I', '\'', 0xcd},
764 {'I', '>', 0xce},
765 {'I', ':', 0xcf},
766 {'D', '-', 0xd0},
767 {'N', '?', 0xd1},
768 {'O', '!', 0xd2},
769 {'O', '\'', 0xd3},
770 {'O', '>', 0xd4},
771 {'O', '?', 0xd5},
772 {'O', ':', 0xd6},
773 {'*', 'X', 0xd7},
774 {'O', '/', 0xd8},
775 {'U', '!', 0xd9},
776 {'U', '\'', 0xda},
777 {'U', '>', 0xdb},
778 {'U', ':', 0xdc},
779 {'Y', '\'', 0xdd},
780 {'T', 'H', 0xde},
781 {'s', 's', 0xdf},
782 {'a', '!', 0xe0},
783 {'a', '\'', 0xe1},
784 {'a', '>', 0xe2},
785 {'a', '?', 0xe3},
786 {'a', ':', 0xe4},
787 {'a', 'a', 0xe5},
788 {'a', 'e', 0xe6},
789 {'c', ',', 0xe7},
790 {'e', '!', 0xe8},
791 {'e', '\'', 0xe9},
792 {'e', '>', 0xea},
793 {'e', ':', 0xeb},
794 {'i', '!', 0xec},
795 {'i', '\'', 0xed},
796 {'i', '>', 0xee},
797 {'i', ':', 0xef},
798 {'d', '-', 0xf0},
799 {'n', '?', 0xf1},
800 {'o', '!', 0xf2},
801 {'o', '\'', 0xf3},
802 {'o', '>', 0xf4},
803 {'o', '?', 0xf5},
804 {'o', ':', 0xf6},
805 {'-', ':', 0xf7},
806 {'o', '/', 0xf8},
807 {'u', '!', 0xf9},
808 {'u', '\'', 0xfa},
809 {'u', '>', 0xfb},
810 {'u', ':', 0xfc},
811 {'y', '\'', 0xfd},
812 {'t', 'h', 0xfe},
813 {'y', ':', 0xff},
814
815 # ifdef FEAT_MBYTE
816 # define USE_UNICODE_DIGRAPHS
817
818 {'A', '-', 0x0100},
819 {'a', '-', 0x0101},
820 {'A', '(', 0x0102},
821 {'a', '(', 0x0103},
822 {'A', ';', 0x0104},
823 {'a', ';', 0x0105},
824 {'C', '\'', 0x0106},
825 {'c', '\'', 0x0107},
826 {'C', '>', 0x0108},
827 {'c', '>', 0x0109},
828 {'C', '.', 0x010a},
829 {'c', '.', 0x010b},
830 {'C', '<', 0x010c},
831 {'c', '<', 0x010d},
832 {'D', '<', 0x010e},
833 {'d', '<', 0x010f},
834 {'D', '/', 0x0110},
835 {'d', '/', 0x0111},
836 {'E', '-', 0x0112},
837 {'e', '-', 0x0113},
838 {'E', '(', 0x0114},
839 {'e', '(', 0x0115},
840 {'E', '.', 0x0116},
841 {'e', '.', 0x0117},
842 {'E', ';', 0x0118},
843 {'e', ';', 0x0119},
844 {'E', '<', 0x011a},
845 {'e', '<', 0x011b},
846 {'G', '>', 0x011c},
847 {'g', '>', 0x011d},
848 {'G', '(', 0x011e},
849 {'g', '(', 0x011f},
850 {'G', '.', 0x0120},
851 {'g', '.', 0x0121},
852 {'G', ',', 0x0122},
853 {'g', ',', 0x0123},
854 {'H', '>', 0x0124},
855 {'h', '>', 0x0125},
856 {'H', '/', 0x0126},
857 {'h', '/', 0x0127},
858 {'I', '?', 0x0128},
859 {'i', '?', 0x0129},
860 {'I', '-', 0x012a},
861 {'i', '-', 0x012b},
862 {'I', '(', 0x012c},
863 {'i', '(', 0x012d},
864 {'I', ';', 0x012e},
865 {'i', ';', 0x012f},
866 {'I', '.', 0x0130},
867 {'i', '.', 0x0131},
868 {'I', 'J', 0x0132},
869 {'i', 'j', 0x0133},
870 {'J', '>', 0x0134},
871 {'j', '>', 0x0135},
872 {'K', ',', 0x0136},
873 {'k', ',', 0x0137},
874 {'k', 'k', 0x0138},
875 {'L', '\'', 0x0139},
876 {'l', '\'', 0x013a},
877 {'L', ',', 0x013b},
878 {'l', ',', 0x013c},
879 {'L', '<', 0x013d},
880 {'l', '<', 0x013e},
881 {'L', '.', 0x013f},
882 {'l', '.', 0x0140},
883 {'L', '/', 0x0141},
884 {'l', '/', 0x0142},
885 {'N', '\'', 0x0143},
886 {'n', '\'', 0x0144},
887 {'N', ',', 0x0145},
888 {'n', ',', 0x0146},
889 {'N', '<', 0x0147},
890 {'n', '<', 0x0148},
891 {'\'', 'n', 0x0149},
892 {'N', 'G', 0x014a},
893 {'n', 'g', 0x014b},
894 {'O', '-', 0x014c},
895 {'o', '-', 0x014d},
896 {'O', '(', 0x014e},
897 {'o', '(', 0x014f},
898 {'O', '"', 0x0150},
899 {'o', '"', 0x0151},
900 {'O', 'E', 0x0152},
901 {'o', 'e', 0x0153},
902 {'R', '\'', 0x0154},
903 {'r', '\'', 0x0155},
904 {'R', ',', 0x0156},
905 {'r', ',', 0x0157},
906 {'R', '<', 0x0158},
907 {'r', '<', 0x0159},
908 {'S', '\'', 0x015a},
909 {'s', '\'', 0x015b},
910 {'S', '>', 0x015c},
911 {'s', '>', 0x015d},
912 {'S', ',', 0x015e},
913 {'s', ',', 0x015f},
914 {'S', '<', 0x0160},
915 {'s', '<', 0x0161},
916 {'T', ',', 0x0162},
917 {'t', ',', 0x0163},
918 {'T', '<', 0x0164},
919 {'t', '<', 0x0165},
920 {'T', '/', 0x0166},
921 {'t', '/', 0x0167},
922 {'U', '?', 0x0168},
923 {'u', '?', 0x0169},
924 {'U', '-', 0x016a},
925 {'u', '-', 0x016b},
926 {'U', '(', 0x016c},
927 {'u', '(', 0x016d},
928 {'U', '0', 0x016e},
929 {'u', '0', 0x016f},
930 {'U', '"', 0x0170},
931 {'u', '"', 0x0171},
932 {'U', ';', 0x0172},
933 {'u', ';', 0x0173},
934 {'W', '>', 0x0174},
935 {'w', '>', 0x0175},
936 {'Y', '>', 0x0176},
937 {'y', '>', 0x0177},
938 {'Y', ':', 0x0178},
939 {'Z', '\'', 0x0179},
940 {'z', '\'', 0x017a},
941 {'Z', '.', 0x017b},
942 {'z', '.', 0x017c},
943 {'Z', '<', 0x017d},
944 {'z', '<', 0x017e},
945 {'O', '9', 0x01a0},
946 {'o', '9', 0x01a1},
947 {'O', 'I', 0x01a2},
948 {'o', 'i', 0x01a3},
949 {'y', 'r', 0x01a6},
950 {'U', '9', 0x01af},
951 {'u', '9', 0x01b0},
952 {'Z', '/', 0x01b5},
953 {'z', '/', 0x01b6},
954 {'E', 'D', 0x01b7},
955 {'A', '<', 0x01cd},
956 {'a', '<', 0x01ce},
957 {'I', '<', 0x01cf},
958 {'i', '<', 0x01d0},
959 {'O', '<', 0x01d1},
960 {'o', '<', 0x01d2},
961 {'U', '<', 0x01d3},
962 {'u', '<', 0x01d4},
963 {'A', '1', 0x01de},
964 {'a', '1', 0x01df},
965 {'A', '7', 0x01e0},
966 {'a', '7', 0x01e1},
967 {'A', '3', 0x01e2},
968 {'a', '3', 0x01e3},
969 {'G', '/', 0x01e4},
970 {'g', '/', 0x01e5},
971 {'G', '<', 0x01e6},
972 {'g', '<', 0x01e7},
973 {'K', '<', 0x01e8},
974 {'k', '<', 0x01e9},
975 {'O', ';', 0x01ea},
976 {'o', ';', 0x01eb},
977 {'O', '1', 0x01ec},
978 {'o', '1', 0x01ed},
979 {'E', 'Z', 0x01ee},
980 {'e', 'z', 0x01ef},
981 {'j', '<', 0x01f0},
982 {'G', '\'', 0x01f4},
983 {'g', '\'', 0x01f5},
984 {';', 'S', 0x02bf},
985 {'\'', '<', 0x02c7},
986 {'\'', '(', 0x02d8},
987 {'\'', '.', 0x02d9},
988 {'\'', '0', 0x02da},
989 {'\'', ';', 0x02db},
990 {'\'', '"', 0x02dd},
991 {'A', '%', 0x0386},
992 {'E', '%', 0x0388},
993 {'Y', '%', 0x0389},
994 {'I', '%', 0x038a},
995 {'O', '%', 0x038c},
996 {'U', '%', 0x038e},
997 {'W', '%', 0x038f},
998 {'i', '3', 0x0390},
999 {'A', '*', 0x0391},
1000 {'B', '*', 0x0392},
1001 {'G', '*', 0x0393},
1002 {'D', '*', 0x0394},
1003 {'E', '*', 0x0395},
1004 {'Z', '*', 0x0396},
1005 {'Y', '*', 0x0397},
1006 {'H', '*', 0x0398},
1007 {'I', '*', 0x0399},
1008 {'K', '*', 0x039a},
1009 {'L', '*', 0x039b},
1010 {'M', '*', 0x039c},
1011 {'N', '*', 0x039d},
1012 {'C', '*', 0x039e},
1013 {'O', '*', 0x039f},
1014 {'P', '*', 0x03a0},
1015 {'R', '*', 0x03a1},
1016 {'S', '*', 0x03a3},
1017 {'T', '*', 0x03a4},
1018 {'U', '*', 0x03a5},
1019 {'F', '*', 0x03a6},
1020 {'X', '*', 0x03a7},
1021 {'Q', '*', 0x03a8},
1022 {'W', '*', 0x03a9},
1023 {'J', '*', 0x03aa},
1024 {'V', '*', 0x03ab},
1025 {'a', '%', 0x03ac},
1026 {'e', '%', 0x03ad},
1027 {'y', '%', 0x03ae},
1028 {'i', '%', 0x03af},
1029 {'u', '3', 0x03b0},
1030 {'a', '*', 0x03b1},
1031 {'b', '*', 0x03b2},
1032 {'g', '*', 0x03b3},
1033 {'d', '*', 0x03b4},
1034 {'e', '*', 0x03b5},
1035 {'z', '*', 0x03b6},
1036 {'y', '*', 0x03b7},
1037 {'h', '*', 0x03b8},
1038 {'i', '*', 0x03b9},
1039 {'k', '*', 0x03ba},
1040 {'l', '*', 0x03bb},
1041 {'m', '*', 0x03bc},
1042 {'n', '*', 0x03bd},
1043 {'c', '*', 0x03be},
1044 {'o', '*', 0x03bf},
1045 {'p', '*', 0x03c0},
1046 {'r', '*', 0x03c1},
1047 {'*', 's', 0x03c2},
1048 {'s', '*', 0x03c3},
1049 {'t', '*', 0x03c4},
1050 {'u', '*', 0x03c5},
1051 {'f', '*', 0x03c6},
1052 {'x', '*', 0x03c7},
1053 {'q', '*', 0x03c8},
1054 {'w', '*', 0x03c9},
1055 {'j', '*', 0x03ca},
1056 {'v', '*', 0x03cb},
1057 {'o', '%', 0x03cc},
1058 {'u', '%', 0x03cd},
1059 {'w', '%', 0x03ce},
1060 {'\'', 'G', 0x03d8},
1061 {',', 'G', 0x03d9},
1062 {'T', '3', 0x03da},
1063 {'t', '3', 0x03db},
1064 {'M', '3', 0x03dc},
1065 {'m', '3', 0x03dd},
1066 {'K', '3', 0x03de},
1067 {'k', '3', 0x03df},
1068 {'P', '3', 0x03e0},
1069 {'p', '3', 0x03e1},
1070 {'\'', '%', 0x03f4},
1071 {'j', '3', 0x03f5},
1072 {'I', 'O', 0x0401},
1073 {'D', '%', 0x0402},
1074 {'G', '%', 0x0403},
1075 {'I', 'E', 0x0404},
1076 {'D', 'S', 0x0405},
1077 {'I', 'I', 0x0406},
1078 {'Y', 'I', 0x0407},
1079 {'J', '%', 0x0408},
1080 {'L', 'J', 0x0409},
1081 {'N', 'J', 0x040a},
1082 {'T', 's', 0x040b},
1083 {'K', 'J', 0x040c},
1084 {'V', '%', 0x040e},
1085 {'D', 'Z', 0x040f},
1086 {'A', '=', 0x0410},
1087 {'B', '=', 0x0411},
1088 {'V', '=', 0x0412},
1089 {'G', '=', 0x0413},
1090 {'D', '=', 0x0414},
1091 {'E', '=', 0x0415},
1092 {'Z', '%', 0x0416},
1093 {'Z', '=', 0x0417},
1094 {'I', '=', 0x0418},
1095 {'J', '=', 0x0419},
1096 {'K', '=', 0x041a},
1097 {'L', '=', 0x041b},
1098 {'M', '=', 0x041c},
1099 {'N', '=', 0x041d},
1100 {'O', '=', 0x041e},
1101 {'P', '=', 0x041f},
1102 {'R', '=', 0x0420},
1103 {'S', '=', 0x0421},
1104 {'T', '=', 0x0422},
1105 {'U', '=', 0x0423},
1106 {'F', '=', 0x0424},
1107 {'H', '=', 0x0425},
1108 {'C', '=', 0x0426},
1109 {'C', '%', 0x0427},
1110 {'S', '%', 0x0428},
1111 {'S', 'c', 0x0429},
1112 {'=', '"', 0x042a},
1113 {'Y', '=', 0x042b},
1114 {'%', '"', 0x042c},
1115 {'J', 'E', 0x042d},
1116 {'J', 'U', 0x042e},
1117 {'J', 'A', 0x042f},
1118 {'a', '=', 0x0430},
1119 {'b', '=', 0x0431},
1120 {'v', '=', 0x0432},
1121 {'g', '=', 0x0433},
1122 {'d', '=', 0x0434},
1123 {'e', '=', 0x0435},
1124 {'z', '%', 0x0436},
1125 {'z', '=', 0x0437},
1126 {'i', '=', 0x0438},
1127 {'j', '=', 0x0439},
1128 {'k', '=', 0x043a},
1129 {'l', '=', 0x043b},
1130 {'m', '=', 0x043c},
1131 {'n', '=', 0x043d},
1132 {'o', '=', 0x043e},
1133 {'p', '=', 0x043f},
1134 {'r', '=', 0x0440},
1135 {'s', '=', 0x0441},
1136 {'t', '=', 0x0442},
1137 {'u', '=', 0x0443},
1138 {'f', '=', 0x0444},
1139 {'h', '=', 0x0445},
1140 {'c', '=', 0x0446},
1141 {'c', '%', 0x0447},
1142 {'s', '%', 0x0448},
1143 {'s', 'c', 0x0449},
1144 {'=', '\'', 0x044a},
1145 {'y', '=', 0x044b},
1146 {'%', '\'', 0x044c},
1147 {'j', 'e', 0x044d},
1148 {'j', 'u', 0x044e},
1149 {'j', 'a', 0x044f},
1150 {'i', 'o', 0x0451},
1151 {'d', '%', 0x0452},
1152 {'g', '%', 0x0453},
1153 {'i', 'e', 0x0454},
1154 {'d', 's', 0x0455},
1155 {'i', 'i', 0x0456},
1156 {'y', 'i', 0x0457},
1157 {'j', '%', 0x0458},
1158 {'l', 'j', 0x0459},
1159 {'n', 'j', 0x045a},
1160 {'t', 's', 0x045b},
1161 {'k', 'j', 0x045c},
1162 {'v', '%', 0x045e},
1163 {'d', 'z', 0x045f},
1164 {'Y', '3', 0x0462},
1165 {'y', '3', 0x0463},
1166 {'O', '3', 0x046a},
1167 {'o', '3', 0x046b},
1168 {'F', '3', 0x0472},
1169 {'f', '3', 0x0473},
1170 {'V', '3', 0x0474},
1171 {'v', '3', 0x0475},
1172 {'C', '3', 0x0480},
1173 {'c', '3', 0x0481},
1174 {'G', '3', 0x0490},
1175 {'g', '3', 0x0491},
1176 {'A', '+', 0x05d0},
1177 {'B', '+', 0x05d1},
1178 {'G', '+', 0x05d2},
1179 {'D', '+', 0x05d3},
1180 {'H', '+', 0x05d4},
1181 {'W', '+', 0x05d5},
1182 {'Z', '+', 0x05d6},
1183 {'X', '+', 0x05d7},
1184 {'T', 'j', 0x05d8},
1185 {'J', '+', 0x05d9},
1186 {'K', '%', 0x05da},
1187 {'K', '+', 0x05db},
1188 {'L', '+', 0x05dc},
1189 {'M', '%', 0x05dd},
1190 {'M', '+', 0x05de},
1191 {'N', '%', 0x05df},
1192 {'N', '+', 0x05e0},
1193 {'S', '+', 0x05e1},
1194 {'E', '+', 0x05e2},
1195 {'P', '%', 0x05e3},
1196 {'P', '+', 0x05e4},
1197 {'Z', 'j', 0x05e5},
1198 {'Z', 'J', 0x05e6},
1199 {'Q', '+', 0x05e7},
1200 {'R', '+', 0x05e8},
1201 {'S', 'h', 0x05e9},
1202 {'T', '+', 0x05ea},
1203 {',', '+', 0x060c},
1204 {';', '+', 0x061b},
1205 {'?', '+', 0x061f},
1206 {'H', '\'', 0x0621},
1207 {'a', 'M', 0x0622},
1208 {'a', 'H', 0x0623},
1209 {'w', 'H', 0x0624},
1210 {'a', 'h', 0x0625},
1211 {'y', 'H', 0x0626},
1212 {'a', '+', 0x0627},
1213 {'b', '+', 0x0628},
1214 {'t', 'm', 0x0629},
1215 {'t', '+', 0x062a},
1216 {'t', 'k', 0x062b},
1217 {'g', '+', 0x062c},
1218 {'h', 'k', 0x062d},
1219 {'x', '+', 0x062e},
1220 {'d', '+', 0x062f},
1221 {'d', 'k', 0x0630},
1222 {'r', '+', 0x0631},
1223 {'z', '+', 0x0632},
1224 {'s', '+', 0x0633},
1225 {'s', 'n', 0x0634},
1226 {'c', '+', 0x0635},
1227 {'d', 'd', 0x0636},
1228 {'t', 'j', 0x0637},
1229 {'z', 'H', 0x0638},
1230 {'e', '+', 0x0639},
1231 {'i', '+', 0x063a},
1232 {'+', '+', 0x0640},
1233 {'f', '+', 0x0641},
1234 {'q', '+', 0x0642},
1235 {'k', '+', 0x0643},
1236 {'l', '+', 0x0644},
1237 {'m', '+', 0x0645},
1238 {'n', '+', 0x0646},
1239 {'h', '+', 0x0647},
1240 {'w', '+', 0x0648},
1241 {'j', '+', 0x0649},
1242 {'y', '+', 0x064a},
1243 {':', '+', 0x064b},
1244 {'"', '+', 0x064c},
1245 {'=', '+', 0x064d},
1246 {'/', '+', 0x064e},
1247 {'\'', '+', 0x064f},
1248 {'1', '+', 0x0650},
1249 {'3', '+', 0x0651},
1250 {'0', '+', 0x0652},
1251 {'a', 'S', 0x0670},
1252 {'p', '+', 0x067e},
1253 {'v', '+', 0x06a4},
1254 {'g', 'f', 0x06af},
1255 {'0', 'a', 0x06f0},
1256 {'1', 'a', 0x06f1},
1257 {'2', 'a', 0x06f2},
1258 {'3', 'a', 0x06f3},
1259 {'4', 'a', 0x06f4},
1260 {'5', 'a', 0x06f5},
1261 {'6', 'a', 0x06f6},
1262 {'7', 'a', 0x06f7},
1263 {'8', 'a', 0x06f8},
1264 {'9', 'a', 0x06f9},
1265 {'B', '.', 0x1e02},
1266 {'b', '.', 0x1e03},
1267 {'B', '_', 0x1e06},
1268 {'b', '_', 0x1e07},
1269 {'D', '.', 0x1e0a},
1270 {'d', '.', 0x1e0b},
1271 {'D', '_', 0x1e0e},
1272 {'d', '_', 0x1e0f},
1273 {'D', ',', 0x1e10},
1274 {'d', ',', 0x1e11},
1275 {'F', '.', 0x1e1e},
1276 {'f', '.', 0x1e1f},
1277 {'G', '-', 0x1e20},
1278 {'g', '-', 0x1e21},
1279 {'H', '.', 0x1e22},
1280 {'h', '.', 0x1e23},
1281 {'H', ':', 0x1e26},
1282 {'h', ':', 0x1e27},
1283 {'H', ',', 0x1e28},
1284 {'h', ',', 0x1e29},
1285 {'K', '\'', 0x1e30},
1286 {'k', '\'', 0x1e31},
1287 {'K', '_', 0x1e34},
1288 {'k', '_', 0x1e35},
1289 {'L', '_', 0x1e3a},
1290 {'l', '_', 0x1e3b},
1291 {'M', '\'', 0x1e3e},
1292 {'m', '\'', 0x1e3f},
1293 {'M', '.', 0x1e40},
1294 {'m', '.', 0x1e41},
1295 {'N', '.', 0x1e44},
1296 {'n', '.', 0x1e45},
1297 {'N', '_', 0x1e48},
1298 {'n', '_', 0x1e49},
1299 {'P', '\'', 0x1e54},
1300 {'p', '\'', 0x1e55},
1301 {'P', '.', 0x1e56},
1302 {'p', '.', 0x1e57},
1303 {'R', '.', 0x1e58},
1304 {'r', '.', 0x1e59},
1305 {'R', '_', 0x1e5e},
1306 {'r', '_', 0x1e5f},
1307 {'S', '.', 0x1e60},
1308 {'s', '.', 0x1e61},
1309 {'T', '.', 0x1e6a},
1310 {'t', '.', 0x1e6b},
1311 {'T', '_', 0x1e6e},
1312 {'t', '_', 0x1e6f},
1313 {'V', '?', 0x1e7c},
1314 {'v', '?', 0x1e7d},
1315 {'W', '!', 0x1e80},
1316 {'w', '!', 0x1e81},
1317 {'W', '\'', 0x1e82},
1318 {'w', '\'', 0x1e83},
1319 {'W', ':', 0x1e84},
1320 {'w', ':', 0x1e85},
1321 {'W', '.', 0x1e86},
1322 {'w', '.', 0x1e87},
1323 {'X', '.', 0x1e8a},
1324 {'x', '.', 0x1e8b},
1325 {'X', ':', 0x1e8c},
1326 {'x', ':', 0x1e8d},
1327 {'Y', '.', 0x1e8e},
1328 {'y', '.', 0x1e8f},
1329 {'Z', '>', 0x1e90},
1330 {'z', '>', 0x1e91},
1331 {'Z', '_', 0x1e94},
1332 {'z', '_', 0x1e95},
1333 {'h', '_', 0x1e96},
1334 {'t', ':', 0x1e97},
1335 {'w', '0', 0x1e98},
1336 {'y', '0', 0x1e99},
1337 {'A', '2', 0x1ea2},
1338 {'a', '2', 0x1ea3},
1339 {'E', '2', 0x1eba},
1340 {'e', '2', 0x1ebb},
1341 {'E', '?', 0x1ebc},
1342 {'e', '?', 0x1ebd},
1343 {'I', '2', 0x1ec8},
1344 {'i', '2', 0x1ec9},
1345 {'O', '2', 0x1ece},
1346 {'o', '2', 0x1ecf},
1347 {'U', '2', 0x1ee6},
1348 {'u', '2', 0x1ee7},
1349 {'Y', '!', 0x1ef2},
1350 {'y', '!', 0x1ef3},
1351 {'Y', '2', 0x1ef6},
1352 {'y', '2', 0x1ef7},
1353 {'Y', '?', 0x1ef8},
1354 {'y', '?', 0x1ef9},
1355 {';', '\'', 0x1f00},
1356 {',', '\'', 0x1f01},
1357 {';', '!', 0x1f02},
1358 {',', '!', 0x1f03},
1359 {'?', ';', 0x1f04},
1360 {'?', ',', 0x1f05},
1361 {'!', ':', 0x1f06},
1362 {'?', ':', 0x1f07},
1363 {'1', 'N', 0x2002},
1364 {'1', 'M', 0x2003},
1365 {'3', 'M', 0x2004},
1366 {'4', 'M', 0x2005},
1367 {'6', 'M', 0x2006},
1368 {'1', 'T', 0x2009},
1369 {'1', 'H', 0x200a},
1370 {'-', '1', 0x2010},
1371 {'-', 'N', 0x2013},
1372 {'-', 'M', 0x2014},
1373 {'-', '3', 0x2015},
1374 {'!', '2', 0x2016},
1375 {'=', '2', 0x2017},
1376 {'\'', '6', 0x2018},
1377 {'\'', '9', 0x2019},
1378 {'.', '9', 0x201a},
1379 {'9', '\'', 0x201b},
1380 {'"', '6', 0x201c},
1381 {'"', '9', 0x201d},
1382 {':', '9', 0x201e},
1383 {'9', '"', 0x201f},
1384 {'/', '-', 0x2020},
1385 {'/', '=', 0x2021},
1386 {'.', '.', 0x2025},
1387 {'%', '0', 0x2030},
1388 {'1', '\'', 0x2032},
1389 {'2', '\'', 0x2033},
1390 {'3', '\'', 0x2034},
1391 {'1', '"', 0x2035},
1392 {'2', '"', 0x2036},
1393 {'3', '"', 0x2037},
1394 {'C', 'a', 0x2038},
1395 {'<', '1', 0x2039},
1396 {'>', '1', 0x203a},
1397 {':', 'X', 0x203b},
1398 {'\'', '-', 0x203e},
1399 {'/', 'f', 0x2044},
1400 {'0', 'S', 0x2070},
1401 {'4', 'S', 0x2074},
1402 {'5', 'S', 0x2075},
1403 {'6', 'S', 0x2076},
1404 {'7', 'S', 0x2077},
1405 {'8', 'S', 0x2078},
1406 {'9', 'S', 0x2079},
1407 {'+', 'S', 0x207a},
1408 {'-', 'S', 0x207b},
1409 {'=', 'S', 0x207c},
1410 {'(', 'S', 0x207d},
1411 {')', 'S', 0x207e},
1412 {'n', 'S', 0x207f},
1413 {'0', 's', 0x2080},
1414 {'1', 's', 0x2081},
1415 {'2', 's', 0x2082},
1416 {'3', 's', 0x2083},
1417 {'4', 's', 0x2084},
1418 {'5', 's', 0x2085},
1419 {'6', 's', 0x2086},
1420 {'7', 's', 0x2087},
1421 {'8', 's', 0x2088},
1422 {'9', 's', 0x2089},
1423 {'+', 's', 0x208a},
1424 {'-', 's', 0x208b},
1425 {'=', 's', 0x208c},
1426 {'(', 's', 0x208d},
1427 {')', 's', 0x208e},
1428 {'L', 'i', 0x20a4},
1429 {'P', 't', 0x20a7},
1430 {'W', '=', 0x20a9},
1431 {'o', 'C', 0x2103},
1432 {'c', 'o', 0x2105},
1433 {'o', 'F', 0x2109},
1434 {'N', '0', 0x2116},
1435 {'P', 'O', 0x2117},
1436 {'R', 'x', 0x211e},
1437 {'S', 'M', 0x2120},
1438 {'T', 'M', 0x2122},
1439 {'O', 'm', 0x2126},
1440 {'A', 'O', 0x212b},
1441 {'1', '3', 0x2153},
1442 {'2', '3', 0x2154},
1443 {'1', '5', 0x2155},
1444 {'2', '5', 0x2156},
1445 {'3', '5', 0x2157},
1446 {'4', '5', 0x2158},
1447 {'1', '6', 0x2159},
1448 {'5', '6', 0x215a},
1449 {'1', '8', 0x215b},
1450 {'3', '8', 0x215c},
1451 {'5', '8', 0x215d},
1452 {'7', '8', 0x215e},
1453 {'1', 'R', 0x2160},
1454 {'2', 'R', 0x2161},
1455 {'3', 'R', 0x2162},
1456 {'4', 'R', 0x2163},
1457 {'5', 'R', 0x2164},
1458 {'6', 'R', 0x2165},
1459 {'7', 'R', 0x2166},
1460 {'8', 'R', 0x2167},
1461 {'9', 'R', 0x2168},
1462 {'a', 'R', 0x2169},
1463 {'b', 'R', 0x216a},
1464 {'c', 'R', 0x216b},
1465 {'1', 'r', 0x2170},
1466 {'2', 'r', 0x2171},
1467 {'3', 'r', 0x2172},
1468 {'4', 'r', 0x2173},
1469 {'5', 'r', 0x2174},
1470 {'6', 'r', 0x2175},
1471 {'7', 'r', 0x2176},
1472 {'8', 'r', 0x2177},
1473 {'9', 'r', 0x2178},
1474 {'a', 'r', 0x2179},
1475 {'b', 'r', 0x217a},
1476 {'c', 'r', 0x217b},
1477 {'<', '-', 0x2190},
1478 {'-', '!', 0x2191},
1479 {'-', '>', 0x2192},
1480 {'-', 'v', 0x2193},
1481 {'<', '>', 0x2194},
1482 {'U', 'D', 0x2195},
1483 {'<', '=', 0x21d0},
1484 {'=', '>', 0x21d2},
1485 {'=', '=', 0x21d4},
1486 {'F', 'A', 0x2200},
1487 {'d', 'P', 0x2202},
1488 {'T', 'E', 0x2203},
1489 {'/', '0', 0x2205},
1490 {'D', 'E', 0x2206},
1491 {'N', 'B', 0x2207},
1492 {'(', '-', 0x2208},
1493 {'-', ')', 0x220b},
1494 {'*', 'P', 0x220f},
1495 {'+', 'Z', 0x2211},
1496 {'-', '2', 0x2212},
1497 {'-', '+', 0x2213},
1498 {'*', '-', 0x2217},
1499 {'O', 'b', 0x2218},
1500 {'S', 'b', 0x2219},
1501 {'R', 'T', 0x221a},
1502 {'0', '(', 0x221d},
1503 {'0', '0', 0x221e},
1504 {'-', 'L', 0x221f},
1505 {'-', 'V', 0x2220},
1506 {'P', 'P', 0x2225},
1507 {'A', 'N', 0x2227},
1508 {'O', 'R', 0x2228},
1509 {'(', 'U', 0x2229},
1510 {')', 'U', 0x222a},
1511 {'I', 'n', 0x222b},
1512 {'D', 'I', 0x222c},
1513 {'I', 'o', 0x222e},
1514 {'.', ':', 0x2234},
1515 {':', '.', 0x2235},
1516 {':', 'R', 0x2236},
1517 {':', ':', 0x2237},
1518 {'?', '1', 0x223c},
1519 {'C', 'G', 0x223e},
1520 {'?', '-', 0x2243},
1521 {'?', '=', 0x2245},
1522 {'?', '2', 0x2248},
1523 {'=', '?', 0x224c},
1524 {'H', 'I', 0x2253},
1525 {'!', '=', 0x2260},
1526 {'=', '3', 0x2261},
1527 {'=', '<', 0x2264},
1528 {'>', '=', 0x2265},
1529 {'<', '*', 0x226a},
1530 {'*', '>', 0x226b},
1531 {'!', '<', 0x226e},
1532 {'!', '>', 0x226f},
1533 {'(', 'C', 0x2282},
1534 {')', 'C', 0x2283},
1535 {'(', '_', 0x2286},
1536 {')', '_', 0x2287},
1537 {'0', '.', 0x2299},
1538 {'0', '2', 0x229a},
1539 {'-', 'T', 0x22a5},
1540 {'.', 'P', 0x22c5},
1541 {':', '3', 0x22ee},
1542 {'.', '3', 0x22ef},
1543 {'E', 'h', 0x2302},
1544 {'<', '7', 0x2308},
1545 {'>', '7', 0x2309},
1546 {'7', '<', 0x230a},
1547 {'7', '>', 0x230b},
1548 {'N', 'I', 0x2310},
1549 {'(', 'A', 0x2312},
1550 {'T', 'R', 0x2315},
1551 {'I', 'u', 0x2320},
1552 {'I', 'l', 0x2321},
1553 {'<', '/', 0x2329},
1554 {'/', '>', 0x232a},
1555 {'V', 's', 0x2423},
1556 {'1', 'h', 0x2440},
1557 {'3', 'h', 0x2441},
1558 {'2', 'h', 0x2442},
1559 {'4', 'h', 0x2443},
1560 {'1', 'j', 0x2446},
1561 {'2', 'j', 0x2447},
1562 {'3', 'j', 0x2448},
1563 {'4', 'j', 0x2449},
1564 {'1', '.', 0x2488},
1565 {'2', '.', 0x2489},
1566 {'3', '.', 0x248a},
1567 {'4', '.', 0x248b},
1568 {'5', '.', 0x248c},
1569 {'6', '.', 0x248d},
1570 {'7', '.', 0x248e},
1571 {'8', '.', 0x248f},
1572 {'9', '.', 0x2490},
1573 {'h', 'h', 0x2500},
1574 {'H', 'H', 0x2501},
1575 {'v', 'v', 0x2502},
1576 {'V', 'V', 0x2503},
1577 {'3', '-', 0x2504},
1578 {'3', '_', 0x2505},
1579 {'3', '!', 0x2506},
1580 {'3', '/', 0x2507},
1581 {'4', '-', 0x2508},
1582 {'4', '_', 0x2509},
1583 {'4', '!', 0x250a},
1584 {'4', '/', 0x250b},
1585 {'d', 'r', 0x250c},
1586 {'d', 'R', 0x250d},
1587 {'D', 'r', 0x250e},
1588 {'D', 'R', 0x250f},
1589 {'d', 'l', 0x2510},
1590 {'d', 'L', 0x2511},
1591 {'D', 'l', 0x2512},
1592 {'L', 'D', 0x2513},
1593 {'u', 'r', 0x2514},
1594 {'u', 'R', 0x2515},
1595 {'U', 'r', 0x2516},
1596 {'U', 'R', 0x2517},
1597 {'u', 'l', 0x2518},
1598 {'u', 'L', 0x2519},
1599 {'U', 'l', 0x251a},
1600 {'U', 'L', 0x251b},
1601 {'v', 'r', 0x251c},
1602 {'v', 'R', 0x251d},
1603 {'V', 'r', 0x2520},
1604 {'V', 'R', 0x2523},
1605 {'v', 'l', 0x2524},
1606 {'v', 'L', 0x2525},
1607 {'V', 'l', 0x2528},
1608 {'V', 'L', 0x252b},
1609 {'d', 'h', 0x252c},
1610 {'d', 'H', 0x252f},
1611 {'D', 'h', 0x2530},
1612 {'D', 'H', 0x2533},
1613 {'u', 'h', 0x2534},
1614 {'u', 'H', 0x2537},
1615 {'U', 'h', 0x2538},
1616 {'U', 'H', 0x253b},
1617 {'v', 'h', 0x253c},
1618 {'v', 'H', 0x253f},
1619 {'V', 'h', 0x2542},
1620 {'V', 'H', 0x254b},
1621 {'F', 'D', 0x2571},
1622 {'B', 'D', 0x2572},
1623 {'T', 'B', 0x2580},
1624 {'L', 'B', 0x2584},
1625 {'F', 'B', 0x2588},
1626 {'l', 'B', 0x258c},
1627 {'R', 'B', 0x2590},
1628 {'.', 'S', 0x2591},
1629 {':', 'S', 0x2592},
1630 {'?', 'S', 0x2593},
1631 {'f', 'S', 0x25a0},
1632 {'O', 'S', 0x25a1},
1633 {'R', 'O', 0x25a2},
1634 {'R', 'r', 0x25a3},
1635 {'R', 'F', 0x25a4},
1636 {'R', 'Y', 0x25a5},
1637 {'R', 'H', 0x25a6},
1638 {'R', 'Z', 0x25a7},
1639 {'R', 'K', 0x25a8},
1640 {'R', 'X', 0x25a9},
1641 {'s', 'B', 0x25aa},
1642 {'S', 'R', 0x25ac},
1643 {'O', 'r', 0x25ad},
1644 {'U', 'T', 0x25b2},
1645 {'u', 'T', 0x25b3},
1646 {'P', 'R', 0x25b6},
1647 {'T', 'r', 0x25b7},
1648 {'D', 't', 0x25bc},
1649 {'d', 'T', 0x25bd},
1650 {'P', 'L', 0x25c0},
1651 {'T', 'l', 0x25c1},
1652 {'D', 'b', 0x25c6},
1653 {'D', 'w', 0x25c7},
1654 {'L', 'Z', 0x25ca},
1655 {'0', 'm', 0x25cb},
1656 {'0', 'o', 0x25ce},
1657 {'0', 'M', 0x25cf},
1658 {'0', 'L', 0x25d0},
1659 {'0', 'R', 0x25d1},
1660 {'S', 'n', 0x25d8},
1661 {'I', 'c', 0x25d9},
1662 {'F', 'd', 0x25e2},
1663 {'B', 'd', 0x25e3},
1664 {'*', '2', 0x2605},
1665 {'*', '1', 0x2606},
1666 {'<', 'H', 0x261c},
1667 {'>', 'H', 0x261e},
1668 {'0', 'u', 0x263a},
1669 {'0', 'U', 0x263b},
1670 {'S', 'U', 0x263c},
1671 {'F', 'm', 0x2640},
1672 {'M', 'l', 0x2642},
1673 {'c', 'S', 0x2660},
1674 {'c', 'H', 0x2661},
1675 {'c', 'D', 0x2662},
1676 {'c', 'C', 0x2663},
1677 {'M', 'd', 0x2669},
1678 {'M', '8', 0x266a},
1679 {'M', '2', 0x266b},
1680 {'M', 'b', 0x266d},
1681 {'M', 'x', 0x266e},
1682 {'M', 'X', 0x266f},
1683 {'O', 'K', 0x2713},
1684 {'X', 'X', 0x2717},
1685 {'-', 'X', 0x2720},
1686 {'I', 'S', 0x3000},
1687 {',', '_', 0x3001},
1688 {'.', '_', 0x3002},
1689 {'+', '"', 0x3003},
1690 {'+', '_', 0x3004},
1691 {'*', '_', 0x3005},
1692 {';', '_', 0x3006},
1693 {'0', '_', 0x3007},
1694 {'<', '+', 0x300a},
1695 {'>', '+', 0x300b},
1696 {'<', '\'', 0x300c},
1697 {'>', '\'', 0x300d},
1698 {'<', '"', 0x300e},
1699 {'>', '"', 0x300f},
1700 {'(', '"', 0x3010},
1701 {')', '"', 0x3011},
1702 {'=', 'T', 0x3012},
1703 {'=', '_', 0x3013},
1704 {'(', '\'', 0x3014},
1705 {')', '\'', 0x3015},
1706 {'(', 'I', 0x3016},
1707 {')', 'I', 0x3017},
1708 {'-', '?', 0x301c},
1709 {'A', '5', 0x3041},
1710 {'a', '5', 0x3042},
1711 {'I', '5', 0x3043},
1712 {'i', '5', 0x3044},
1713 {'U', '5', 0x3045},
1714 {'u', '5', 0x3046},
1715 {'E', '5', 0x3047},
1716 {'e', '5', 0x3048},
1717 {'O', '5', 0x3049},
1718 {'o', '5', 0x304a},
1719 {'k', 'a', 0x304b},
1720 {'g', 'a', 0x304c},
1721 {'k', 'i', 0x304d},
1722 {'g', 'i', 0x304e},
1723 {'k', 'u', 0x304f},
1724 {'g', 'u', 0x3050},
1725 {'k', 'e', 0x3051},
1726 {'g', 'e', 0x3052},
1727 {'k', 'o', 0x3053},
1728 {'g', 'o', 0x3054},
1729 {'s', 'a', 0x3055},
1730 {'z', 'a', 0x3056},
1731 {'s', 'i', 0x3057},
1732 {'z', 'i', 0x3058},
1733 {'s', 'u', 0x3059},
1734 {'z', 'u', 0x305a},
1735 {'s', 'e', 0x305b},
1736 {'z', 'e', 0x305c},
1737 {'s', 'o', 0x305d},
1738 {'z', 'o', 0x305e},
1739 {'t', 'a', 0x305f},
1740 {'d', 'a', 0x3060},
1741 {'t', 'i', 0x3061},
1742 {'d', 'i', 0x3062},
1743 {'t', 'U', 0x3063},
1744 {'t', 'u', 0x3064},
1745 {'d', 'u', 0x3065},
1746 {'t', 'e', 0x3066},
1747 {'d', 'e', 0x3067},
1748 {'t', 'o', 0x3068},
1749 {'d', 'o', 0x3069},
1750 {'n', 'a', 0x306a},
1751 {'n', 'i', 0x306b},
1752 {'n', 'u', 0x306c},
1753 {'n', 'e', 0x306d},
1754 {'n', 'o', 0x306e},
1755 {'h', 'a', 0x306f},
1756 {'b', 'a', 0x3070},
1757 {'p', 'a', 0x3071},
1758 {'h', 'i', 0x3072},
1759 {'b', 'i', 0x3073},
1760 {'p', 'i', 0x3074},
1761 {'h', 'u', 0x3075},
1762 {'b', 'u', 0x3076},
1763 {'p', 'u', 0x3077},
1764 {'h', 'e', 0x3078},
1765 {'b', 'e', 0x3079},
1766 {'p', 'e', 0x307a},
1767 {'h', 'o', 0x307b},
1768 {'b', 'o', 0x307c},
1769 {'p', 'o', 0x307d},
1770 {'m', 'a', 0x307e},
1771 {'m', 'i', 0x307f},
1772 {'m', 'u', 0x3080},
1773 {'m', 'e', 0x3081},
1774 {'m', 'o', 0x3082},
1775 {'y', 'A', 0x3083},
1776 {'y', 'a', 0x3084},
1777 {'y', 'U', 0x3085},
1778 {'y', 'u', 0x3086},
1779 {'y', 'O', 0x3087},
1780 {'y', 'o', 0x3088},
1781 {'r', 'a', 0x3089},
1782 {'r', 'i', 0x308a},
1783 {'r', 'u', 0x308b},
1784 {'r', 'e', 0x308c},
1785 {'r', 'o', 0x308d},
1786 {'w', 'A', 0x308e},
1787 {'w', 'a', 0x308f},
1788 {'w', 'i', 0x3090},
1789 {'w', 'e', 0x3091},
1790 {'w', 'o', 0x3092},
1791 {'n', '5', 0x3093},
1792 {'v', 'u', 0x3094},
1793 {'"', '5', 0x309b},
1794 {'0', '5', 0x309c},
1795 {'*', '5', 0x309d},
1796 {'+', '5', 0x309e},
1797 {'a', '6', 0x30a1},
1798 {'A', '6', 0x30a2},
1799 {'i', '6', 0x30a3},
1800 {'I', '6', 0x30a4},
1801 {'u', '6', 0x30a5},
1802 {'U', '6', 0x30a6},
1803 {'e', '6', 0x30a7},
1804 {'E', '6', 0x30a8},
1805 {'o', '6', 0x30a9},
1806 {'O', '6', 0x30aa},
1807 {'K', 'a', 0x30ab},
1808 {'G', 'a', 0x30ac},
1809 {'K', 'i', 0x30ad},
1810 {'G', 'i', 0x30ae},
1811 {'K', 'u', 0x30af},
1812 {'G', 'u', 0x30b0},
1813 {'K', 'e', 0x30b1},
1814 {'G', 'e', 0x30b2},
1815 {'K', 'o', 0x30b3},
1816 {'G', 'o', 0x30b4},
1817 {'S', 'a', 0x30b5},
1818 {'Z', 'a', 0x30b6},
1819 {'S', 'i', 0x30b7},
1820 {'Z', 'i', 0x30b8},
1821 {'S', 'u', 0x30b9},
1822 {'Z', 'u', 0x30ba},
1823 {'S', 'e', 0x30bb},
1824 {'Z', 'e', 0x30bc},
1825 {'S', 'o', 0x30bd},
1826 {'Z', 'o', 0x30be},
1827 {'T', 'a', 0x30bf},
1828 {'D', 'a', 0x30c0},
1829 {'T', 'i', 0x30c1},
1830 {'D', 'i', 0x30c2},
1831 {'T', 'U', 0x30c3},
1832 {'T', 'u', 0x30c4},
1833 {'D', 'u', 0x30c5},
1834 {'T', 'e', 0x30c6},
1835 {'D', 'e', 0x30c7},
1836 {'T', 'o', 0x30c8},
1837 {'D', 'o', 0x30c9},
1838 {'N', 'a', 0x30ca},
1839 {'N', 'i', 0x30cb},
1840 {'N', 'u', 0x30cc},
1841 {'N', 'e', 0x30cd},
1842 {'N', 'o', 0x30ce},
1843 {'H', 'a', 0x30cf},
1844 {'B', 'a', 0x30d0},
1845 {'P', 'a', 0x30d1},
1846 {'H', 'i', 0x30d2},
1847 {'B', 'i', 0x30d3},
1848 {'P', 'i', 0x30d4},
1849 {'H', 'u', 0x30d5},
1850 {'B', 'u', 0x30d6},
1851 {'P', 'u', 0x30d7},
1852 {'H', 'e', 0x30d8},
1853 {'B', 'e', 0x30d9},
1854 {'P', 'e', 0x30da},
1855 {'H', 'o', 0x30db},
1856 {'B', 'o', 0x30dc},
1857 {'P', 'o', 0x30dd},
1858 {'M', 'a', 0x30de},
1859 {'M', 'i', 0x30df},
1860 {'M', 'u', 0x30e0},
1861 {'M', 'e', 0x30e1},
1862 {'M', 'o', 0x30e2},
1863 {'Y', 'A', 0x30e3},
1864 {'Y', 'a', 0x30e4},
1865 {'Y', 'U', 0x30e5},
1866 {'Y', 'u', 0x30e6},
1867 {'Y', 'O', 0x30e7},
1868 {'Y', 'o', 0x30e8},
1869 {'R', 'a', 0x30e9},
1870 {'R', 'i', 0x30ea},
1871 {'R', 'u', 0x30eb},
1872 {'R', 'e', 0x30ec},
1873 {'R', 'o', 0x30ed},
1874 {'W', 'A', 0x30ee},
1875 {'W', 'a', 0x30ef},
1876 {'W', 'i', 0x30f0},
1877 {'W', 'e', 0x30f1},
1878 {'W', 'o', 0x30f2},
1879 {'N', '6', 0x30f3},
1880 {'V', 'u', 0x30f4},
1881 {'K', 'A', 0x30f5},
1882 {'K', 'E', 0x30f6},
1883 {'V', 'a', 0x30f7},
1884 {'V', 'i', 0x30f8},
1885 {'V', 'e', 0x30f9},
1886 {'V', 'o', 0x30fa},
1887 {'.', '6', 0x30fb},
1888 {'-', '6', 0x30fc},
1889 {'*', '6', 0x30fd},
1890 {'+', '6', 0x30fe},
1891 {'b', '4', 0x3105},
1892 {'p', '4', 0x3106},
1893 {'m', '4', 0x3107},
1894 {'f', '4', 0x3108},
1895 {'d', '4', 0x3109},
1896 {'t', '4', 0x310a},
1897 {'n', '4', 0x310b},
1898 {'l', '4', 0x310c},
1899 {'g', '4', 0x310d},
1900 {'k', '4', 0x310e},
1901 {'h', '4', 0x310f},
1902 {'j', '4', 0x3110},
1903 {'q', '4', 0x3111},
1904 {'x', '4', 0x3112},
1905 {'z', 'h', 0x3113},
1906 {'c', 'h', 0x3114},
1907 {'s', 'h', 0x3115},
1908 {'r', '4', 0x3116},
1909 {'z', '4', 0x3117},
1910 {'c', '4', 0x3118},
1911 {'s', '4', 0x3119},
1912 {'a', '4', 0x311a},
1913 {'o', '4', 0x311b},
1914 {'e', '4', 0x311c},
1915 {'a', 'i', 0x311e},
1916 {'e', 'i', 0x311f},
1917 {'a', 'u', 0x3120},
1918 {'o', 'u', 0x3121},
1919 {'a', 'n', 0x3122},
1920 {'e', 'n', 0x3123},
1921 {'a', 'N', 0x3124},
1922 {'e', 'N', 0x3125},
1923 {'e', 'r', 0x3126},
1924 {'i', '4', 0x3127},
1925 {'u', '4', 0x3128},
1926 {'i', 'u', 0x3129},
1927 {'v', '4', 0x312a},
1928 {'n', 'G', 0x312b},
1929 {'g', 'n', 0x312c},
1930 {'1', 'c', 0x3220},
1931 {'2', 'c', 0x3221},
1932 {'3', 'c', 0x3222},
1933 {'4', 'c', 0x3223},
1934 {'5', 'c', 0x3224},
1935 {'6', 'c', 0x3225},
1936 {'7', 'c', 0x3226},
1937 {'8', 'c', 0x3227},
1938 {'9', 'c', 0x3228},
1939 {' ', ' ', 0xe000},
1940 {'/', 'c', 0xe001},
1941 {'U', 'A', 0xe002},
1942 {'U', 'B', 0xe003},
1943 {'"', '3', 0xe004},
1944 {'"', '1', 0xe005},
1945 {'"', '!', 0xe006},
1946 {'"', '\'', 0xe007},
1947 {'"', '>', 0xe008},
1948 {'"', '?', 0xe009},
1949 {'"', '-', 0xe00a},
1950 {'"', '(', 0xe00b},
1951 {'"', '.', 0xe00c},
1952 {'"', ':', 0xe00d},
1953 {'"', '0', 0xe00e},
1954 {'"', '"', 0xe00f},
1955 {'"', '<', 0xe010},
1956 {'"', ',', 0xe011},
1957 {'"', ';', 0xe012},
1958 {'"', '_', 0xe013},
1959 {'"', '=', 0xe014},
1960 {'"', '/', 0xe015},
1961 {'"', 'i', 0xe016},
1962 {'"', 'd', 0xe017},
1963 {'"', 'p', 0xe018},
1964 {';', ';', 0xe019},
1965 {',', ',', 0xe01a},
1966 {'b', '3', 0xe01b},
1967 {'C', 'i', 0xe01c},
1968 {'f', '(', 0xe01d},
1969 {'e', 'd', 0xe01e},
1970 {'a', 'm', 0xe01f},
1971 {'p', 'm', 0xe020},
1972 {'F', 'l', 0xe023},
1973 {'G', 'F', 0xe024},
1974 {'>', 'V', 0xe025},
1975 {'!', '*', 0xe026},
1976 {'?', '*', 0xe027},
1977 {'J', '<', 0xe028},
1978 {'f', 'f', 0xfb00},
1979 {'f', 'i', 0xfb01},
1980 {'f', 'l', 0xfb02},
1981 {'f', 't', 0xfb05},
1982 {'s', 't', 0xfb06},
1983 # endif /* FEAT_MBYTE */
1984 {NUL, NUL, NUL}
1985 };
1986
1987 # endif /* OLD_DIGRAPHS */
1988
1989 # endif /* Macintosh */
1990 # endif /* EBCDIC */
1991 # endif /* !HPUX_DIGRAPHS */
1992 # endif /* !__MINT__ */
1993 #endif /* !MSDOS && !OS2 */
1994
1995 /*
1996 * handle digraphs after typing a character
1997 */
1998 int
1999 do_digraph(c)
2000 int c;
2001 {
2002 static int backspaced; /* character before K_BS */
2003 static int lastchar; /* last typed character */
2004
2005 if (c == -1) /* init values */
2006 {
2007 backspaced = -1;
2008 }
2009 else if (p_dg)
2010 {
2011 if (backspaced >= 0)
2012 c = getdigraph(backspaced, c, FALSE);
2013 backspaced = -1;
2014 if ((c == K_BS || c == Ctrl_H) && lastchar >= 0)
2015 backspaced = lastchar;
2016 }
2017 lastchar = c;
2018 return c;
2019 }
2020
2021 /*
2022 * Get a digraph. Used after typing CTRL-K on the command line or in normal
2023 * mode.
2024 * Returns composed character, or NUL when ESC was used.
2025 */
2026 int
2027 get_digraph(cmdline)
2028 int cmdline; /* TRUE when called from the cmdline */
2029 {
2030 int c, cc;
2031
2032 ++no_mapping;
2033 ++allow_keys;
2034 c = safe_vgetc();
2035 --no_mapping;
2036 --allow_keys;
2037 if (c != ESC) /* ESC cancels CTRL-K */
2038 {
2039 if (IS_SPECIAL(c)) /* insert special key code */
2040 return c;
2041 if (cmdline)
2042 {
2043 if (char2cells(c) == 1
2044 #if defined(FEAT_CRYPT) || defined(FEAT_EVAL)
2045 && cmdline_star == 0
2046 #endif
2047 )
2048 putcmdline(c, TRUE);
2049 }
2050 #ifdef FEAT_CMDL_INFO
2051 else
2052 add_to_showcmd(c);
2053 #endif
2054 ++no_mapping;
2055 ++allow_keys;
2056 cc = safe_vgetc();
2057 --no_mapping;
2058 --allow_keys;
2059 if (cc != ESC) /* ESC cancels CTRL-K */
2060 return getdigraph(c, cc, TRUE);
2061 }
2062 return NUL;
2063 }
2064
2065 /*
2066 * Lookup the pair "char1", "char2" in the digraph tables.
2067 * If no match, return "char2".
2068 * If "meta" is TRUE and "char1" is a space, return "char2" | 0x80.
2069 */
2070 static int
2071 getexactdigraph(char1, char2, meta)
2072 int char1;
2073 int char2;
2074 int meta;
2075 {
2076 int i;
2077 int retval = 0;
2078 digr_T *dp;
2079
2080 if (IS_SPECIAL(char1) || IS_SPECIAL(char2))
2081 return char2;
2082
2083 /*
2084 * Search user digraphs first.
2085 */
2086 dp = (digr_T *)user_digraphs.ga_data;
2087 for (i = 0; i < user_digraphs.ga_len; ++i)
2088 {
2089 if ((int)dp->char1 == char1 && (int)dp->char2 == char2)
2090 {
2091 retval = dp->result;
2092 break;
2093 }
2094 ++dp;
2095 }
2096
2097 /*
2098 * Search default digraphs.
2099 */
2100 if (retval == 0)
2101 {
2102 dp = digraphdefault;
2103 for (i = 0; dp->char1 != 0; ++i)
2104 {
2105 if ((int)dp->char1 == char1 && (int)dp->char2 == char2)
2106 {
2107 retval = dp->result;
2108 break;
2109 }
2110 ++dp;
2111 }
2112 }
2113 #ifdef FEAT_MBYTE
2114 # ifdef USE_UNICODE_DIGRAPHS
2115 if (retval != 0 && !enc_utf8)
2116 {
2117 char_u buf[6], *to;
2118 vimconv_T vc;
2119
2120 /*
2121 * Convert the Unicode digraph to 'encoding'.
2122 */
2123 i = utf_char2bytes(retval, buf);
2124 retval = 0;
2125 vc.vc_type = CONV_NONE;
2126 if (convert_setup(&vc, (char_u *)"utf-8", p_enc) == OK)
2127 {
2128 vc.vc_fail = TRUE;
2129 to = string_convert(&vc, buf, &i);
2130 if (to != NULL)
2131 {
2132 retval = (*mb_ptr2char)(to);
2133 vim_free(to);
2134 }
2135 (void)convert_setup(&vc, NULL, NULL);
2136 }
2137 }
2138 # endif
2139
2140 /* Ignore multi-byte characters when not in multi-byte mode. */
2141 if (!has_mbyte && retval > 0xff)
2142 retval = 0;
2143 #endif
2144
2145 if (retval == 0) /* digraph deleted or not found */
2146 {
2147 if (char1 == ' ' && meta) /* <space> <char> --> meta-char */
2148 return (char2 | 0x80);
2149 return char2;
2150 }
2151 return retval;
2152 }
2153
2154 /*
2155 * Get digraph.
2156 * Allow for both char1-char2 and char2-char1
2157 */
2158 int
2159 getdigraph(char1, char2, meta)
2160 int char1;
2161 int char2;
2162 int meta;
2163 {
2164 int retval;
2165
2166 if (((retval = getexactdigraph(char1, char2, meta)) == char2)
2167 && (char1 != char2)
2168 && ((retval = getexactdigraph(char2, char1, meta)) == char1))
2169 return char2;
2170 return retval;
2171 }
2172
2173 /*
2174 * Add the digraphs in the argument to the digraph table.
2175 * format: {c1}{c2} char {c1}{c2} char ...
2176 */
2177 void
2178 putdigraph(str)
2179 char_u *str;
2180 {
2181 int char1, char2, n;
2182 int i;
2183 digr_T *dp;
2184
2185 while (*str != NUL)
2186 {
2187 str = skipwhite(str);
2188 if (*str == NUL)
2189 return;
2190 char1 = *str++;
2191 char2 = *str++;
2192 if (char2 == 0)
2193 {
2194 EMSG(_(e_invarg));
2195 return;
2196 }
2197 if (char1 == ESC || char2 == ESC)
2198 {
2199 EMSG(_("E104: Escape not allowed in digraph"));
2200 return;
2201 }
2202 str = skipwhite(str);
2203 if (!VIM_ISDIGIT(*str))
2204 {
2205 EMSG(_(e_number_exp));
2206 return;
2207 }
2208 n = getdigits(&str);
2209
2210 /* If the digraph already exists, replace the result. */
2211 dp = (digr_T *)user_digraphs.ga_data;
2212 for (i = 0; i < user_digraphs.ga_len; ++i)
2213 {
2214 if ((int)dp->char1 == char1 && (int)dp->char2 == char2)
2215 {
2216 dp->result = n;
2217 break;
2218 }
2219 ++dp;
2220 }
2221
2222 /* Add a new digraph to the table. */
2223 if (i == user_digraphs.ga_len)
2224 {
2225 if (ga_grow(&user_digraphs, 1) == OK)
2226 {
2227 dp = (digr_T *)user_digraphs.ga_data + user_digraphs.ga_len;
2228 dp->char1 = char1;
2229 dp->char2 = char2;
2230 dp->result = n;
2231 ++user_digraphs.ga_len;
2232 --user_digraphs.ga_room;
2233 }
2234 }
2235 }
2236 }
2237
2238 void
2239 listdigraphs()
2240 {
2241 int i;
2242 digr_T *dp;
2243
2244 msg_putchar('\n');
2245
2246 dp = digraphdefault;
2247 for (i = 0; dp->char1 != NUL && !got_int; ++i)
2248 {
2249 #if defined(USE_UNICODE_DIGRAPHS) && defined(FEAT_MBYTE)
2250 digr_T tmp;
2251
2252 /* May need to convert the result to 'encoding'. */
2253 tmp.char1 = dp->char1;
2254 tmp.char2 = dp->char2;
2255 tmp.result = getexactdigraph(tmp.char1, tmp.char2, FALSE);
2256 if (tmp.result != 0 && tmp.result != tmp.char2
2257 && (has_mbyte || tmp.result <= 255))
2258 printdigraph(&tmp);
2259 #else
2260
2261 if (getexactdigraph(dp->char1, dp->char2, FALSE) == dp->result
2262 # ifdef FEAT_MBYTE
2263 && (has_mbyte || dp->result <= 255)
2264 # endif
2265 )
2266 printdigraph(dp);
2267 #endif
2268 ++dp;
2269 ui_breakcheck();
2270 }
2271
2272 dp = (digr_T *)user_digraphs.ga_data;
2273 for (i = 0; i < user_digraphs.ga_len && !got_int; ++i)
2274 {
2275 printdigraph(dp);
2276 ui_breakcheck();
2277 ++dp;
2278 }
2279 must_redraw = CLEAR; /* clear screen, because some digraphs may be
2280 wrong, in which case we messed up ScreenLines */
2281 }
2282
2283 static void
2284 printdigraph(dp)
2285 digr_T *dp;
2286 {
2287 char_u buf[30];
2288 char_u *p;
2289
2290 int list_width;
2291
2292 if ((dy_flags & DY_UHEX)
2293 #ifdef FEAT_MBYTE
2294 || has_mbyte
2295 #endif
2296 )
2297 list_width = 13;
2298 else
2299 list_width = 11;
2300
2301 if (dp->result != 0)
2302 {
2303 if (msg_col > Columns - list_width)
2304 msg_putchar('\n');
2305 if (msg_col)
2306 while (msg_col % list_width != 0)
2307 msg_putchar(' ');
2308
2309 p = buf;
2310 *p++ = dp->char1;
2311 *p++ = dp->char2;
2312 *p++ = ' ';
2313 #ifdef FEAT_MBYTE
2314 if (has_mbyte)
2315 {
2316 /* add a space to draw a composing char on */
2317 if (enc_utf8 && utf_iscomposing(dp->result))
2318 *p++ = ' ';
2319 p += (*mb_char2bytes)(dp->result, p);
2320 }
2321 else
2322 #endif
2323 *p++ = dp->result;
2324 if (char2cells(dp->result) == 1)
2325 *p++ = ' ';
2326 sprintf((char *)p, " %3d", dp->result);
2327 msg_outtrans(buf);
2328 }
2329 }
2330
2331 #endif /* FEAT_DIGRAPHS */
2332
2333 #if defined(FEAT_KEYMAP) || defined(PROTO)
2334
2335 /* structure used for b_kmap_ga.ga_data */
2336 typedef struct
2337 {
2338 char_u *from;
2339 char_u *to;
2340 } kmap_T;
2341
2342 #define KMAP_MAXLEN 20 /* maximum length of "from" or "to" */
2343
2344 static void keymap_unload __ARGS((void));
2345
2346 /*
2347 * Set up key mapping tables for the 'keymap' option
2348 */
2349 char_u *
2350 keymap_init()
2351 {
2352 curbuf->b_kmap_state &= ~KEYMAP_INIT;
2353
2354 if (*curbuf->b_p_keymap == NUL)
2355 {
2356 /* Stop any active keymap and clear the table. */
2357 keymap_unload();
2358 }
2359 else
2360 {
2361 char_u *buf;
2362
2363 /* Source the keymap file. It will contain a ":loadkeymap" command
2364 * which will call ex_loadkeymap() below. */
2365 buf = alloc((unsigned)(STRLEN(curbuf->b_p_keymap)
2366 # ifdef FEAT_MBYTE
2367 + STRLEN(p_enc)
2368 # endif
2369 + 14));
2370 if (buf == NULL)
2371 return e_outofmem;
2372
2373 # ifdef FEAT_MBYTE
2374 /* try finding "keymap/'keymap'_'encoding'.vim" in 'runtimepath' */
2375 sprintf((char *)buf, "keymap/%s_%s.vim", curbuf->b_p_keymap, p_enc);
2376 if (cmd_runtime(buf, FALSE) == FAIL)
2377 # endif
2378 {
2379 /* try finding "keymap/'keymap'.vim" in 'runtimepath' */
2380 sprintf((char *)buf, "keymap/%s.vim", curbuf->b_p_keymap);
2381 if (cmd_runtime(buf, FALSE) == FAIL)
2382 {
2383 vim_free(buf);
2384 return (char_u *)N_("E544: Keymap file not found");
2385 }
2386 }
2387 vim_free(buf);
2388 }
2389
2390 return NULL;
2391 }
2392
2393 /*
2394 * ":loadkeymap" command: load the following lines as the keymap.
2395 */
2396 void
2397 ex_loadkeymap(eap)
2398 exarg_T *eap;
2399 {
2400 char_u *line;
2401 char_u *p;
2402 char_u *s;
2403 kmap_T *kp;
2404 #define KMAP_LLEN 200 /* max length of "to" and "from" together */
2405 char_u buf[KMAP_LLEN + 11];
2406 int i;
2407 char_u *save_cpo = p_cpo;
2408
2409 if (!getline_equal(eap->getline, eap->cookie, getsourceline))
2410 {
2411 EMSG(_("E105: Using :loadkeymap not in a sourced file"));
2412 return;
2413 }
2414
2415 /*
2416 * Stop any active keymap and clear the table.
2417 */
2418 keymap_unload();
2419
2420 curbuf->b_kmap_state = 0;
2421 ga_init2(&curbuf->b_kmap_ga, (int)sizeof(kmap_T), 20);
2422
2423 /* Set 'cpoptions' to "C" to avoid line continuation. */
2424 p_cpo = (char_u *)"C";
2425
2426 /*
2427 * Get each line of the sourced file, break at the end.
2428 */
2429 for (;;)
2430 {
2431 line = eap->getline(0, eap->cookie, 0);
2432 if (line == NULL)
2433 break;
2434
2435 p = skipwhite(line);
2436 if (*p != '"' && *p != NUL && ga_grow(&curbuf->b_kmap_ga, 1) == OK)
2437 {
2438 kp = (kmap_T *)curbuf->b_kmap_ga.ga_data + curbuf->b_kmap_ga.ga_len;
2439 s = skiptowhite(p);
2440 kp->from = vim_strnsave(p, (int)(s - p));
2441 p = skipwhite(s);
2442 s = skiptowhite(p);
2443 kp->to = vim_strnsave(p, (int)(s - p));
2444
2445 if (kp->from == NULL || kp->to == NULL
2446 || STRLEN(kp->from) + STRLEN(kp->to) >= KMAP_LLEN)
2447 {
2448 vim_free(kp->from);
2449 vim_free(kp->to);
2450 }
2451 else
2452 {
2453 ++curbuf->b_kmap_ga.ga_len;
2454 --curbuf->b_kmap_ga.ga_room;
2455 }
2456 }
2457 vim_free(line);
2458 }
2459
2460 /*
2461 * setup ":lnoremap" to map the keys
2462 */
2463 for (i = 0; i < curbuf->b_kmap_ga.ga_len; ++i)
2464 {
2465 sprintf((char *)buf, "<buffer> %s %s",
2466 ((kmap_T *)curbuf->b_kmap_ga.ga_data)[i].from,
2467 ((kmap_T *)curbuf->b_kmap_ga.ga_data)[i].to);
2468 (void)do_map(2, buf, LANGMAP, FALSE);
2469 }
2470
2471 p_cpo = save_cpo;
2472
2473 curbuf->b_kmap_state |= KEYMAP_LOADED;
2474 #ifdef FEAT_WINDOWS
2475 status_redraw_curbuf();
2476 #endif
2477 }
2478
2479 /*
2480 * Stop using 'keymap'.
2481 */
2482 static void
2483 keymap_unload()
2484 {
2485 char_u buf[KMAP_MAXLEN + 10];
2486 int i;
2487 char_u *save_cpo = p_cpo;
2488
2489 if (!(curbuf->b_kmap_state & KEYMAP_LOADED))
2490 return;
2491
2492 /* Set 'cpoptions' to "C" to avoid line continuation. */
2493 p_cpo = (char_u *)"C";
2494
2495 /* clear the ":lmap"s */
2496 for (i = 0; i < curbuf->b_kmap_ga.ga_len; ++i)
2497 {
2498 sprintf((char *)buf, "<buffer> %s",
2499 ((kmap_T *)curbuf->b_kmap_ga.ga_data)[i].from);
2500 (void)do_map(1, buf, LANGMAP, FALSE);
2501 }
2502
2503 p_cpo = save_cpo;
2504
2505 ga_clear(&curbuf->b_kmap_ga);
2506 curbuf->b_kmap_state &= ~KEYMAP_LOADED;
2507 #ifdef FEAT_WINDOWS
2508 status_redraw_curbuf();
2509 #endif
2510 }
2511
2512 #endif /* FEAT_KEYMAP */
2513