mirror of
https://github.com/vim/vim
synced 2025-04-30 05:17:45 +02:00
2504 lines
54 KiB
C
2504 lines
54 KiB
C
/* vi:set ts=8 sts=4 sw=4:
|
||
*
|
||
* VIM - Vi IMproved by Bram Moolenaar
|
||
*
|
||
* Do ":help uganda" in Vim to read copying and usage conditions.
|
||
* Do ":help credits" in Vim to see a list of people who contributed.
|
||
* See README.txt for an overview of the Vim source code.
|
||
*/
|
||
|
||
/*
|
||
* digraph.c: code for digraphs
|
||
*/
|
||
|
||
#include "vim.h"
|
||
|
||
#if defined(FEAT_DIGRAPHS) || defined(PROTO)
|
||
|
||
#ifdef FEAT_MBYTE
|
||
typedef int result_T;
|
||
#else
|
||
typedef char_u result_T;
|
||
#endif
|
||
|
||
typedef struct digraph
|
||
{
|
||
char_u char1;
|
||
char_u char2;
|
||
result_T result;
|
||
} digr_T;
|
||
|
||
static int getexactdigraph __ARGS((int, int, int));
|
||
static void printdigraph __ARGS((digr_T *));
|
||
|
||
/* digraphs added by the user */
|
||
static garray_T user_digraphs = {0, 0, sizeof(digr_T), 10, NULL};
|
||
|
||
/*
|
||
* Note: Characters marked with XX are not included literally, because some
|
||
* compilers cannot handle them (Amiga SAS/C is the most picky one).
|
||
*/
|
||
static digr_T digraphdefault[] =
|
||
#if defined(MSDOS) || defined(OS2)
|
||
/*
|
||
* MSDOS digraphs.
|
||
*/
|
||
{{'C', ',', 128}, /* ~@ XX */
|
||
{'u', '"', 129}, /* <20> */
|
||
{'e', '\'', 130}, /* ‚ */
|
||
{'a', '^', 131}, /* ƒ */
|
||
{'a', '"', 132}, /* „ */
|
||
{'a', '`', 133}, /* … */
|
||
{'a', '@', 134}, /* † */
|
||
{'c', ',', 135}, /* ~G XX */
|
||
{'e', '^', 136}, /* ~H XX */
|
||
{'e', '"', 137}, /* ‰ */
|
||
{'e', '`', 138}, /* Š */
|
||
{'i', '"', 139}, /* ‹ */
|
||
{'i', '^', 140}, /* Œ */
|
||
{'i', '`', 141}, /* <20> */
|
||
{'A', '"', 142}, /* ~N XX */
|
||
{'A', '@', 143}, /* <20> */
|
||
{'E', '\'', 144}, /* <20> */
|
||
{'a', 'e', 145}, /* ‘ */
|
||
{'A', 'E', 146}, /* ’ */
|
||
{'o', '^', 147}, /* “ */
|
||
{'o', '"', 148}, /* ” */
|
||
{'o', '`', 149}, /* • */
|
||
{'u', '^', 150}, /* – */
|
||
{'u', '`', 151}, /* — */
|
||
{'y', '"', 152}, /* ˜ */
|
||
{'O', '"', 153}, /* ™ */
|
||
{'U', '"', 154}, /* š */
|
||
{'c', '|', 155}, /* › */
|
||
{'$', '$', 156}, /* œ */
|
||
{'Y', '-', 157}, /* ~] XX */
|
||
{'P', 't', 158}, /* ž */
|
||
{'f', 'f', 159}, /* Ÿ */
|
||
{'a', '\'', 160}, /* */
|
||
{'i', '\'', 161}, /* ¡ */
|
||
{'o', '\'', 162}, /* ¢ */
|
||
{'u', '\'', 163}, /* x XX */
|
||
{'n', '~', 164}, /* ¤ */
|
||
{'N', '~', 165}, /* ¥ */
|
||
{'a', 'a', 166}, /* ¦ */
|
||
{'o', 'o', 167}, /* § */
|
||
{'~', '?', 168}, /* ¨ */
|
||
{'-', 'a', 169}, /* © */
|
||
{'a', '-', 170}, /* ª */
|
||
{'1', '2', 171}, /* « */
|
||
{'1', '4', 172}, /* ¬ */
|
||
{'~', '!', 173}, /* */
|
||
{'<', '<', 174}, /* ® */
|
||
{'>', '>', 175}, /* ¯ */
|
||
|
||
{'s', 's', 225}, /* á */
|
||
{'j', 'u', 230}, /* æ */
|
||
{'o', '/', 237}, /* í */
|
||
{'+', '-', 241}, /* ñ */
|
||
{'>', '=', 242}, /* ò */
|
||
{'<', '=', 243}, /* ó */
|
||
{':', '-', 246}, /* ö */
|
||
{'~', '~', 247}, /* ÷ */
|
||
{'~', 'o', 248}, /* ø */
|
||
{'2', '2', 253}, /* ý */
|
||
{NUL, NUL, NUL}
|
||
};
|
||
|
||
#else /* !MSDOS && !OS2 */
|
||
# ifdef __MINT__
|
||
|
||
/*
|
||
* ATARI digraphs
|
||
*/
|
||
{{'C', ',', 128}, /* ~@ XX */
|
||
{'u', '"', 129}, /* <20> */
|
||
{'e', '\'', 130}, /* ‚ */
|
||
{'a', '^', 131}, /* ƒ */
|
||
{'a', '"', 132}, /* „ */
|
||
{'a', '`', 133}, /* … */
|
||
{'a', '@', 134}, /* † */
|
||
{'c', ',', 135}, /* ~G XX */
|
||
{'e', '^', 136}, /* ~H XX */
|
||
{'e', '"', 137}, /* ‰ */
|
||
{'e', '`', 138}, /* Š */
|
||
{'i', '"', 139}, /* ‹ */
|
||
{'i', '^', 140}, /* Œ */
|
||
{'i', '`', 141}, /* <20> */
|
||
{'A', '"', 142}, /* Ž */
|
||
{'A', '@', 143}, /* <20> */
|
||
{'E', '\'', 144}, /* <20> */
|
||
{'a', 'e', 145}, /* ‘ */
|
||
{'A', 'E', 146}, /* ’ */
|
||
{'o', '^', 147}, /* “ */
|
||
{'o', '"', 148}, /* ” */
|
||
{'o', '`', 149}, /* • */
|
||
{'u', '^', 150}, /* – */
|
||
{'u', '`', 151}, /* — */
|
||
{'y', '"', 152}, /* ˜ */
|
||
{'O', '"', 153}, /* ™ */
|
||
{'U', '"', 154}, /* š */
|
||
{'c', '|', 155}, /* › */
|
||
{'$', '$', 156}, /* œ */
|
||
{'Y', '-', 157}, /* ~] XX */
|
||
{'s', 's', 158}, /* ž */
|
||
{'f', 'f', 159}, /* Ÿ */
|
||
{'a', '\'', 160}, /* */
|
||
{'i', '\'', 161}, /* ¡ */
|
||
{'o', '\'', 162}, /* ¢ */
|
||
{'u', '\'', 163}, /* £ */
|
||
{'n', '~', 164}, /* ¤ */
|
||
{'N', '~', 165}, /* ¥ */
|
||
{'a', 'a', 166}, /* ¦ */
|
||
{'o', 'o', 167}, /* § */
|
||
{'~', '?', 168}, /* ¨ */
|
||
{'-', 'a', 169}, /* © */
|
||
{'a', '-', 170}, /* ª */
|
||
{'1', '2', 171}, /* « */
|
||
{'1', '4', 172}, /* ¬ */
|
||
{'~', '!', 173}, /* */
|
||
{'<', '<', 174}, /* ® */
|
||
{'>', '>', 175}, /* ¯ */
|
||
{'j', 'u', 230}, /* æ */
|
||
{'o', '/', 237}, /* í */
|
||
{'+', '-', 241}, /* ñ */
|
||
{'>', '=', 242}, /* ò */
|
||
{'<', '=', 243}, /* ó */
|
||
{':', '-', 246}, /* ö */
|
||
{'~', '~', 247}, /* ÷ */
|
||
{'~', 'o', 248}, /* ø */
|
||
{'2', '2', 253}, /* ý */
|
||
{NUL, NUL, NUL}
|
||
};
|
||
|
||
# else /* !__MINT__ */
|
||
# ifdef HPUX_DIGRAPHS
|
||
|
||
/*
|
||
* different HPUX digraphs
|
||
*/
|
||
{{'A', '`', 161}, /* ¡ */
|
||
{'A', '^', 162}, /* ¢ */
|
||
{'E', '`', 163}, /* £ */
|
||
{'E', '^', 164}, /* ¤ */
|
||
{'E', '"', 165}, /* ¥ */
|
||
{'I', '^', 166}, /* ¦ */
|
||
{'I', '"', 167}, /* § */
|
||
{'\'', '\'', 168}, /* ¨ */
|
||
{'`', '`', 169}, /* © */
|
||
{'^', '^', 170}, /* ª */
|
||
{'"', '"', 171}, /* « */
|
||
{'~', '~', 172}, /* ¬ */
|
||
{'U', '`', 173}, /* */
|
||
{'U', '^', 174}, /* ® */
|
||
{'L', '=', 175}, /* ¯ */
|
||
{'~', '_', 176}, /* ° */
|
||
{'Y', '\'', 177}, /* ± */
|
||
{'y', '\'', 178}, /* ² */
|
||
{'~', 'o', 179}, /* ³ */
|
||
{'C', ',', 180}, /* ´ */
|
||
{'c', ',', 181}, /* µ */
|
||
{'N', '~', 182}, /* ¶ */
|
||
{'n', '~', 183}, /* · */
|
||
{'~', '!', 184}, /* ¸ */
|
||
{'~', '?', 185}, /* ¹ */
|
||
{'o', 'x', 186}, /* º */
|
||
{'L', '-', 187}, /* » */
|
||
{'Y', '=', 188}, /* ¼ */
|
||
{'p', 'p', 189}, /* ½ */
|
||
{'f', 'l', 190}, /* ¾ */
|
||
{'c', '|', 191}, /* ¿ */
|
||
{'a', '^', 192}, /* À */
|
||
{'e', '^', 193}, /* Á */
|
||
{'o', '^', 194}, /* Â */
|
||
{'u', '^', 195}, /* Ã */
|
||
{'a', '\'', 196}, /* Ä */
|
||
{'e', '\'', 197}, /* Å */
|
||
{'o', '\'', 198}, /* Æ */
|
||
{'u', '\'', 199}, /* Ç */
|
||
{'a', '`', 200}, /* È */
|
||
{'e', '`', 201}, /* É */
|
||
{'o', '`', 202}, /* Ê */
|
||
{'u', '`', 203}, /* Ë */
|
||
{'a', '"', 204}, /* Ì */
|
||
{'e', '"', 205}, /* Í */
|
||
{'o', '"', 206}, /* Î */
|
||
{'u', '"', 207}, /* Ï */
|
||
{'A', 'o', 208}, /* Ð */
|
||
{'i', '^', 209}, /* Ñ */
|
||
{'O', '/', 210}, /* Ò */
|
||
{'A', 'E', 211}, /* Ó */
|
||
{'a', 'o', 212}, /* Ô */
|
||
{'i', '\'', 213}, /* Õ */
|
||
{'o', '/', 214}, /* Ö */
|
||
{'a', 'e', 215}, /* × */
|
||
{'A', '"', 216}, /* Ø */
|
||
{'i', '`', 217}, /* Ù */
|
||
{'O', '"', 218}, /* Ú */
|
||
{'U', '"', 219}, /* Û */
|
||
{'E', '\'', 220}, /* Ü */
|
||
{'i', '"', 221}, /* Ý */
|
||
{'s', 's', 222}, /* Þ */
|
||
{'O', '^', 223}, /* ß */
|
||
{'A', '\'', 224}, /* à */
|
||
{'A', '~', 225}, /* á */
|
||
{'a', '~', 226}, /* â */
|
||
{'D', '-', 227}, /* ã */
|
||
{'d', '-', 228}, /* ä */
|
||
{'I', '\'', 229}, /* å */
|
||
{'I', '`', 230}, /* æ */
|
||
{'O', '\'', 231}, /* ç */
|
||
{'O', '`', 232}, /* è */
|
||
{'O', '~', 233}, /* é */
|
||
{'o', '~', 234}, /* ê */
|
||
{'S', '~', 235}, /* ë */
|
||
{'s', '~', 236}, /* ì */
|
||
{'U', '\'', 237}, /* í */
|
||
{'Y', '"', 238}, /* î */
|
||
{'y', '"', 239}, /* ï */
|
||
{'p', '-', 240}, /* ð */
|
||
{'p', '~', 241}, /* ñ */
|
||
{'~', '.', 242}, /* ò */
|
||
{'j', 'u', 243}, /* ó */
|
||
{'P', 'p', 244}, /* ô */
|
||
{'3', '4', 245}, /* õ */
|
||
{'-', '-', 246}, /* ö */
|
||
{'1', '4', 247}, /* ÷ */
|
||
{'1', '2', 248}, /* ø */
|
||
{'a', '_', 249}, /* ù */
|
||
{'o', '_', 250}, /* ú */
|
||
{'<', '<', 251}, /* û */
|
||
{'x', 'x', 252}, /* ü */
|
||
{'>', '>', 253}, /* ý */
|
||
{'+', '-', 254}, /* þ */
|
||
{'n', 'u', 255}, /* x XX */
|
||
{NUL, NUL, NUL}
|
||
};
|
||
|
||
# else /* !HPUX_DIGRAPHS */
|
||
|
||
# ifdef EBCDIC
|
||
|
||
/*
|
||
* EBCDIC - ISO digraphs
|
||
* TODO: EBCDIC Table is Code-Page 1047
|
||
*/
|
||
{{'a', '^', 66}, /* â */
|
||
{'a', '"', 67}, /* ä */
|
||
{'a', '`', 68}, /* à */
|
||
{'a', '\'', 69}, /* á */
|
||
{'a', '~', 70}, /* ã */
|
||
{'a', '@', 71}, /* å */
|
||
{'a', 'a', 71}, /* å */
|
||
{'c', ',', 72}, /* ç */
|
||
{'n', '~', 73}, /* ñ */
|
||
{'c', '|', 74}, /* ¢ */
|
||
{'e', '\'', 81}, /* é */
|
||
{'e', '^', 82}, /* ê */
|
||
{'e', '"', 83}, /* ë */
|
||
{'e', '`', 84}, /* è */
|
||
{'i', '\'', 85}, /* í */
|
||
{'i', '^', 86}, /* î */
|
||
{'i', '"', 87}, /* ï */
|
||
{'i', '`', 88}, /* ì */
|
||
{'s', 's', 89}, /* ß */
|
||
{'A', '^', 98}, /* Â */
|
||
{'A', '"', 99}, /* Ä */
|
||
{'A', '`', 100}, /* À */
|
||
{'A', '\'', 101}, /* Á */
|
||
{'A', '~', 102}, /* Ã */
|
||
{'A', '@', 103}, /* Å */
|
||
{'A', 'A', 103}, /* Å */
|
||
{'C', ',', 104}, /* Ç */
|
||
{'N', '~', 105}, /* Ñ */
|
||
{'|', '|', 106}, /* ¦ */
|
||
{'o', '/', 112}, /* ø */
|
||
{'E', '\'', 113}, /* É */
|
||
{'E', '^', 114}, /* Ê */
|
||
{'E', '"', 115}, /* Ë */
|
||
{'E', '`', 116}, /* È */
|
||
{'I', '\'', 117}, /* Í */
|
||
{'I', '^', 118}, /* Î */
|
||
{'I', '"', 119}, /* Ï */
|
||
{'I', '`', 120}, /* Ì */
|
||
{'O', '/', 128}, /* 0/ XX */
|
||
{'<', '<', 138}, /* « */
|
||
{'>', '>', 139}, /* » */
|
||
{'d', '-', 140}, /* ð */
|
||
{'y', '\'', 141}, /* ý */
|
||
{'i', 'p', 142}, /* þ */
|
||
{'+', '-', 143}, /* ± */
|
||
{'~', 'o', 144}, /* ° */
|
||
{'a', '-', 154}, /* ª */
|
||
{'o', '-', 155}, /* º */
|
||
{'a', 'e', 156}, /* æ */
|
||
{',', ',', 157}, /* , XX */
|
||
{'A', 'E', 158}, /* Æ */
|
||
{'o', 'x', 159}, /* ¤ - currency symbol in ISO 8859-1 */
|
||
{'e', '=', 159}, /* ¤ - euro symbol in ISO 8859-15 */
|
||
{'j', 'u', 160}, /* µ */
|
||
{'y', '"', 167}, /* x XX */
|
||
{'~', '!', 170}, /* ¡ */
|
||
{'~', '?', 171}, /* ¿ */
|
||
{'D', '-', 172}, /* Ð */
|
||
{'I', 'p', 174}, /* Þ */
|
||
{'r', 'O', 175}, /* ® */
|
||
{'-', ',', 176}, /* ¬ */
|
||
{'$', '$', 177}, /* £ */
|
||
{'Y', '-', 178}, /* ¥ */
|
||
{'~', '.', 179}, /* · */
|
||
{'c', 'O', 180}, /* © */
|
||
{'p', 'a', 181}, /* § */
|
||
{'p', 'p', 182}, /* ¶ */
|
||
{'1', '4', 183}, /* ¼ */
|
||
{'1', '2', 184}, /* ½ */
|
||
{'3', '4', 185}, /* ¾ */
|
||
{'Y', '\'', 186}, /* Ý */
|
||
{'"', '"', 187}, /* ¨ */
|
||
{'-', '=', 188}, /* ¯ */
|
||
{'\'', '\'', 190}, /* ´ */
|
||
{'O', 'E', 191}, /* × - OE in ISO 8859-15 */
|
||
{'/', '\\', 191}, /* × - multiplication symbol in ISO 8859-1 */
|
||
{'-', '-', 202}, /* */
|
||
{'o', '^', 203}, /* ô */
|
||
{'o', '"', 204}, /* ö */
|
||
{'o', '`', 205}, /* ò */
|
||
{'o', '\'', 206}, /* ó */
|
||
{'o', '~', 207}, /* õ */
|
||
{'1', '1', 218}, /* ¹ */
|
||
{'u', '^', 219}, /* û */
|
||
{'u', '"', 220}, /* ü */
|
||
{'u', '`', 221}, /* ù */
|
||
{'u', '\'', 222}, /* ú */
|
||
{':', '-', 225}, /* ÷ - division symbol in ISO 8859-1 */
|
||
{'o', 'e', 225}, /* ÷ - oe in ISO 8859-15 */
|
||
{'2', '2', 234}, /* ² */
|
||
{'O', '^', 235}, /* Ô */
|
||
{'O', '"', 236}, /* Ö */
|
||
{'O', '`', 237}, /* Ò */
|
||
{'O', '\'', 238}, /* Ó */
|
||
{'O', '~', 239}, /* Õ */
|
||
{'3', '3', 250}, /* ³ */
|
||
{'U', '^', 251}, /* Û */
|
||
{'U', '"', 252}, /* Ü */
|
||
{'U', '`', 253}, /* Ù */
|
||
{'U', '\'', 254}, /* Ú */
|
||
{NUL, NUL, NUL}
|
||
};
|
||
|
||
# else
|
||
# if defined(MACOS) && !defined(FEAT_MBYTE)
|
||
|
||
/*
|
||
* Macintosh digraphs
|
||
*/
|
||
{{'a', 't', 64}, /* @ */
|
||
{'A', '"', 128}, /* ~@ XX */
|
||
{'A', 'o', 129}, /* Å */
|
||
{'C', ',', 130}, /* Ç */
|
||
{'E', '\'', 131}, /* É */
|
||
{'N', '~', 132}, /* Ñ */
|
||
{'O', '"', 133}, /* Ö */
|
||
{'U', '"', 134}, /* Ü */
|
||
{'a', '\'', 135}, /* ~G XX */
|
||
{'a', '`', 136}, /* ~H XX */
|
||
{'a', '^', 137}, /* â */
|
||
{'a', '"', 138}, /* ä */
|
||
{'a', '~', 139}, /* ã */
|
||
{'a', 'o', 140}, /* å */
|
||
{'c', ',', 141}, /* ç */
|
||
{'e', '\'', 142}, /* é */
|
||
{'e', '`', 143}, /* è */
|
||
{'e', '^', 144}, /* ê */
|
||
{'e', '"', 145}, /* ë */
|
||
{'i', '\'', 146}, /* í */
|
||
{'i', '`', 147}, /* ì */
|
||
{'i', '^', 148}, /* î */
|
||
{'i', '"', 149}, /* ï */
|
||
{'n', '~', 150}, /* ñ */
|
||
{'o', '\'', 151}, /* ó */
|
||
{'o', '`', 152}, /* ò */
|
||
{'o', '^', 153}, /* ô */
|
||
{'o', '"', 154}, /* ö */
|
||
{'o', '~', 155}, /* o */
|
||
{'u', '\'', 156}, /* ú */
|
||
{'u', '`', 157}, /* ~] XX */
|
||
{'u', '^', 158}, /* û */
|
||
{'u', '"', 159}, /* ü */
|
||
{'+', '_', 160}, /* Ý */
|
||
{'~', 'o', 161}, /* ° */
|
||
{'c', '|', 162}, /* ¢ */
|
||
{'$', '$', 163}, /* £ */
|
||
{'p', 'a', 164}, /* § */
|
||
{'.', '.', 165}, /* * */
|
||
{'P', 'P', 166}, /* ¶ */
|
||
{'s', 's', 167}, /* ß */
|
||
{'r', 'O', 168}, /* ® */
|
||
{'c', 'O', 169}, /* © */
|
||
{'T', 'M', 170}, /* <20> */
|
||
{'=', '/', 173}, /* ‚ */
|
||
{'A', 'E', 174}, /* Æ */
|
||
{'O', '/', 175}, /* Ø */
|
||
{'0', '0', 176}, /* ƒ */
|
||
{'+', '-', 177}, /* ± */
|
||
{'<', '=', 178}, /* ¾ */
|
||
{'>', '=', 179}, /* „ */
|
||
{'Y', '-', 180}, /* ¥ */
|
||
{'j', 'u', 181}, /* µ */
|
||
{'m', 'u', 181}, /* µ */
|
||
{'d', 'd', 182}, /* <20> */
|
||
{'S', 'S', 183}, /* … */
|
||
{'S', 'I', 183}, /* … */
|
||
{'P', 'I', 184}, /* ½ */
|
||
{'p', 'i', 185}, /* ¼ */
|
||
{'I', 'I', 186}, /* † */
|
||
{'a', '-', 187}, /* » */
|
||
{'o', '-', 188}, /* º */
|
||
{'O', 'M', 189}, /* ½ */
|
||
{'a', 'e', 190}, /* æ */
|
||
{'o', '/', 191}, /* ø */
|
||
{'~', '?', 192}, /* ¿ */
|
||
{'~', '!', 193}, /* ¡ */
|
||
{'-', ',', 194}, /* ¬ */
|
||
{'v', '-', 195}, /* ~H XX */
|
||
{'f', '-', 196}, /* Ÿ */
|
||
{'~', '~', 197}, /* ‰ */
|
||
{'D', 'E', 198}, /* <20> */
|
||
{'<', '<', 199}, /* « */
|
||
{'>', '>', 200}, /* » */
|
||
{'.', ':', 201}, /* Š */
|
||
{'A', '`', 203}, /* À */
|
||
{'A', '~', 204}, /* Ã */
|
||
{'O', '~', 205}, /* Õ */
|
||
{'O', 'E', 206}, /* ‘ */
|
||
{'o', 'e', 207}, /* ¦ */
|
||
{'-', '.', 208}, /* - */
|
||
{'-', '-', 209}, /* - */
|
||
{'`', '`', 210}, /* " */
|
||
{'\'', '\'', 211}, /* " */
|
||
{'`', ' ', 212}, /* ' */
|
||
{'\'', ' ', 213}, /* ' */
|
||
{'-', ':', 214}, /* ÷ */
|
||
{'D', 'I', 215}, /* × */
|
||
{'y', ':', 216}, /* ÿ */
|
||
{'Y', ':', 217}, /* <20> */
|
||
{'/', '/', 218}, /* Ž */
|
||
{'E', '=', 219}, /* ¤ Euro System >=8.5 */
|
||
{'o', 'x', 219}, /* ¤ Currency System <=8.1*/
|
||
{'<', ' ', 220}, /* Ð */
|
||
{'>', ' ', 221}, /* ð */
|
||
{'f', 'i', 222}, /* Þ */
|
||
{'f', 'l', 223}, /* þ */
|
||
{'+', '+', 224}, /* ý */
|
||
{'~', '.', 225}, /* · */
|
||
{',', ' ', 226}, /* ’ */
|
||
{',', ',', 227}, /* “ */
|
||
{'%', '.', 228}, /* ” */
|
||
{'%', '0', 228}, /* ” */
|
||
{'A', '^', 229}, /* Â */
|
||
{'E', '^', 230}, /* Ê */
|
||
{'A', '\'', 231}, /* Á */
|
||
{'E', '"', 232}, /* Ë */
|
||
{'E', '`', 233}, /* È */
|
||
{'I', '\'', 234}, /* Í */
|
||
{'I', '^', 235}, /* Î */
|
||
{'I', '"', 236}, /* Ï */
|
||
{'I', '`', 237}, /* Ì */
|
||
{'O', '\'', 238}, /* Ó */
|
||
{'O', '^', 239}, /* Ô */
|
||
{'A', 'P', 240}, /* • */
|
||
{'O', '`', 241}, /* Ò */
|
||
{'U', '\'', 242}, /* Ú */
|
||
{'U', '^', 243}, /* Û */
|
||
{'U', '`', 244}, /* Ù */
|
||
{'i', '.', 245}, /* ž */
|
||
{NUL, NUL, NUL}
|
||
};
|
||
|
||
# else /* !MACOS */
|
||
|
||
# ifdef OLD_DIGRAPHS
|
||
|
||
/*
|
||
* digraphs compatible with Vim 5.x
|
||
*/
|
||
{{'~', '!', 161}, /* ¡ */
|
||
{'c', '|', 162}, /* ¢ */
|
||
{'$', '$', 163}, /* £ */
|
||
{'o', 'x', 164}, /* ¤ - currency symbol in ISO 8859-1 */
|
||
{'e', '=', 164}, /* ¤ - euro symbol in ISO 8859-15 */
|
||
{'Y', '-', 165}, /* ¥ */
|
||
{'|', '|', 166}, /* ¦ */
|
||
{'p', 'a', 167}, /* § */
|
||
{'"', '"', 168}, /* ¨ */
|
||
{'c', 'O', 169}, /* © */
|
||
{'a', '-', 170}, /* ª */
|
||
{'<', '<', 171}, /* « */
|
||
{'-', ',', 172}, /* ¬ */
|
||
{'-', '-', 173}, /* */
|
||
{'r', 'O', 174}, /* ® */
|
||
{'-', '=', 175}, /* ¯ */
|
||
{'~', 'o', 176}, /* ° */
|
||
{'+', '-', 177}, /* ± */
|
||
{'2', '2', 178}, /* ² */
|
||
{'3', '3', 179}, /* ³ */
|
||
{'\'', '\'', 180}, /* ´ */
|
||
{'j', 'u', 181}, /* µ */
|
||
{'p', 'p', 182}, /* ¶ */
|
||
{'~', '.', 183}, /* · */
|
||
{',', ',', 184}, /* ¸ */
|
||
{'1', '1', 185}, /* ¹ */
|
||
{'o', '-', 186}, /* º */
|
||
{'>', '>', 187}, /* » */
|
||
{'1', '4', 188}, /* ¼ */
|
||
{'1', '2', 189}, /* ½ */
|
||
{'3', '4', 190}, /* ¾ */
|
||
{'~', '?', 191}, /* ¿ */
|
||
{'A', '`', 192}, /* À */
|
||
{'A', '\'', 193}, /* Á */
|
||
{'A', '^', 194}, /* Â */
|
||
{'A', '~', 195}, /* Ã */
|
||
{'A', '"', 196}, /* Ä */
|
||
{'A', '@', 197}, /* Å */
|
||
{'A', 'A', 197}, /* Å */
|
||
{'A', 'E', 198}, /* Æ */
|
||
{'C', ',', 199}, /* Ç */
|
||
{'E', '`', 200}, /* È */
|
||
{'E', '\'', 201}, /* É */
|
||
{'E', '^', 202}, /* Ê */
|
||
{'E', '"', 203}, /* Ë */
|
||
{'I', '`', 204}, /* Ì */
|
||
{'I', '\'', 205}, /* Í */
|
||
{'I', '^', 206}, /* Î */
|
||
{'I', '"', 207}, /* Ï */
|
||
{'D', '-', 208}, /* Ð */
|
||
{'N', '~', 209}, /* Ñ */
|
||
{'O', '`', 210}, /* Ò */
|
||
{'O', '\'', 211}, /* Ó */
|
||
{'O', '^', 212}, /* Ô */
|
||
{'O', '~', 213}, /* Õ */
|
||
{'O', '"', 214}, /* Ö */
|
||
{'/', '\\', 215}, /* × - multiplication symbol in ISO 8859-1 */
|
||
{'O', 'E', 215}, /* × - OE in ISO 8859-15 */
|
||
{'O', '/', 216}, /* Ø */
|
||
{'U', '`', 217}, /* Ù */
|
||
{'U', '\'', 218}, /* Ú */
|
||
{'U', '^', 219}, /* Û */
|
||
{'U', '"', 220}, /* Ü */
|
||
{'Y', '\'', 221}, /* Ý */
|
||
{'I', 'p', 222}, /* Þ */
|
||
{'s', 's', 223}, /* ß */
|
||
{'a', '`', 224}, /* à */
|
||
{'a', '\'', 225}, /* á */
|
||
{'a', '^', 226}, /* â */
|
||
{'a', '~', 227}, /* ã */
|
||
{'a', '"', 228}, /* ä */
|
||
{'a', '@', 229}, /* å */
|
||
{'a', 'a', 229}, /* å */
|
||
{'a', 'e', 230}, /* æ */
|
||
{'c', ',', 231}, /* ç */
|
||
{'e', '`', 232}, /* è */
|
||
{'e', '\'', 233}, /* é */
|
||
{'e', '^', 234}, /* ê */
|
||
{'e', '"', 235}, /* ë */
|
||
{'i', '`', 236}, /* ì */
|
||
{'i', '\'', 237}, /* í */
|
||
{'i', '^', 238}, /* î */
|
||
{'i', '"', 239}, /* ï */
|
||
{'d', '-', 240}, /* ð */
|
||
{'n', '~', 241}, /* ñ */
|
||
{'o', '`', 242}, /* ò */
|
||
{'o', '\'', 243}, /* ó */
|
||
{'o', '^', 244}, /* ô */
|
||
{'o', '~', 245}, /* õ */
|
||
{'o', '"', 246}, /* ö */
|
||
{':', '-', 247}, /* ÷ - division symbol in ISO 8859-1 */
|
||
{'o', 'e', 247}, /* ÷ - oe in ISO 8859-15 */
|
||
{'o', '/', 248}, /* ø */
|
||
{'u', '`', 249}, /* ù */
|
||
{'u', '\'', 250}, /* ú */
|
||
{'u', '^', 251}, /* û */
|
||
{'u', '"', 252}, /* ü */
|
||
{'y', '\'', 253}, /* ý */
|
||
{'i', 'p', 254}, /* þ */
|
||
{'y', '"', 255}, /* x XX */
|
||
{NUL, NUL, NUL}
|
||
};
|
||
# else /* OLD_DIGRAPHS */
|
||
|
||
/*
|
||
* digraphs for Unicode from RFC1345
|
||
* (also work for ISO-8859-1 aka latin1)
|
||
*/
|
||
{
|
||
{'N', 'U', 0x0a}, /* LF for NUL */
|
||
{'S', 'H', 0x01},
|
||
{'S', 'X', 0x02},
|
||
{'E', 'X', 0x03},
|
||
{'E', 'T', 0x04},
|
||
{'E', 'Q', 0x05},
|
||
{'A', 'K', 0x06},
|
||
{'B', 'L', 0x07},
|
||
{'B', 'S', 0x08},
|
||
{'H', 'T', 0x09},
|
||
{'L', 'F', 0x0a},
|
||
{'V', 'T', 0x0b},
|
||
{'F', 'F', 0x0c},
|
||
{'C', 'R', 0x0d},
|
||
{'S', 'O', 0x0e},
|
||
{'S', 'I', 0x0f},
|
||
{'D', 'L', 0x10},
|
||
{'D', '1', 0x11},
|
||
{'D', '2', 0x12},
|
||
{'D', '3', 0x13},
|
||
{'D', '4', 0x14},
|
||
{'N', 'K', 0x15},
|
||
{'S', 'Y', 0x16},
|
||
{'E', 'B', 0x17},
|
||
{'C', 'N', 0x18},
|
||
{'E', 'M', 0x19},
|
||
{'S', 'B', 0x1a},
|
||
{'E', 'C', 0x1b},
|
||
{'F', 'S', 0x1c},
|
||
{'G', 'S', 0x1d},
|
||
{'R', 'S', 0x1e},
|
||
{'U', 'S', 0x1f},
|
||
{'S', 'P', 0x20},
|
||
{'N', 'b', 0x23},
|
||
{'D', 'O', 0x24},
|
||
{'A', 't', 0x40},
|
||
{'<', '(', 0x5b},
|
||
{'/', '/', 0x5c},
|
||
{')', '>', 0x5d},
|
||
{'\'', '>', 0x5e},
|
||
{'\'', '!', 0x60},
|
||
{'(', '!', 0x7b},
|
||
{'!', '!', 0x7c},
|
||
{'!', ')', 0x7d},
|
||
{'\'', '?', 0x7e},
|
||
{'D', 'T', 0x7f},
|
||
{'P', 'A', 0x80},
|
||
{'H', 'O', 0x81},
|
||
{'B', 'H', 0x82},
|
||
{'N', 'H', 0x83},
|
||
{'I', 'N', 0x84},
|
||
{'N', 'L', 0x85},
|
||
{'S', 'A', 0x86},
|
||
{'E', 'S', 0x87},
|
||
{'H', 'S', 0x88},
|
||
{'H', 'J', 0x89},
|
||
{'V', 'S', 0x8a},
|
||
{'P', 'D', 0x8b},
|
||
{'P', 'U', 0x8c},
|
||
{'R', 'I', 0x8d},
|
||
{'S', '2', 0x8e},
|
||
{'S', '3', 0x8f},
|
||
{'D', 'C', 0x90},
|
||
{'P', '1', 0x91},
|
||
{'P', '2', 0x92},
|
||
{'T', 'S', 0x93},
|
||
{'C', 'C', 0x94},
|
||
{'M', 'W', 0x95},
|
||
{'S', 'G', 0x96},
|
||
{'E', 'G', 0x97},
|
||
{'S', 'S', 0x98},
|
||
{'G', 'C', 0x99},
|
||
{'S', 'C', 0x9a},
|
||
{'C', 'I', 0x9b},
|
||
{'S', 'T', 0x9c},
|
||
{'O', 'C', 0x9d},
|
||
{'P', 'M', 0x9e},
|
||
{'A', 'C', 0x9f},
|
||
{'N', 'S', 0xa0},
|
||
{'!', 'I', 0xa1},
|
||
{'C', 't', 0xa2},
|
||
{'P', 'd', 0xa3},
|
||
{'C', 'u', 0xa4},
|
||
{'Y', 'e', 0xa5},
|
||
{'B', 'B', 0xa6},
|
||
{'S', 'E', 0xa7},
|
||
{'\'', ':', 0xa8},
|
||
{'C', 'o', 0xa9},
|
||
{'-', 'a', 0xaa},
|
||
{'<', '<', 0xab},
|
||
{'N', 'O', 0xac},
|
||
{'-', '-', 0xad},
|
||
{'R', 'g', 0xae},
|
||
{'\'', 'm', 0xaf},
|
||
{'D', 'G', 0xb0},
|
||
{'+', '-', 0xb1},
|
||
{'2', 'S', 0xb2},
|
||
{'3', 'S', 0xb3},
|
||
{'\'', '\'', 0xb4},
|
||
{'M', 'y', 0xb5},
|
||
{'P', 'I', 0xb6},
|
||
{'.', 'M', 0xb7},
|
||
{'\'', ',', 0xb8},
|
||
{'1', 'S', 0xb9},
|
||
{'-', 'o', 0xba},
|
||
{'>', '>', 0xbb},
|
||
{'1', '4', 0xbc},
|
||
{'1', '2', 0xbd},
|
||
{'3', '4', 0xbe},
|
||
{'?', 'I', 0xbf},
|
||
{'A', '!', 0xc0},
|
||
{'A', '\'', 0xc1},
|
||
{'A', '>', 0xc2},
|
||
{'A', '?', 0xc3},
|
||
{'A', ':', 0xc4},
|
||
{'A', 'A', 0xc5},
|
||
{'A', 'E', 0xc6},
|
||
{'C', ',', 0xc7},
|
||
{'E', '!', 0xc8},
|
||
{'E', '\'', 0xc9},
|
||
{'E', '>', 0xca},
|
||
{'E', ':', 0xcb},
|
||
{'I', '!', 0xcc},
|
||
{'I', '\'', 0xcd},
|
||
{'I', '>', 0xce},
|
||
{'I', ':', 0xcf},
|
||
{'D', '-', 0xd0},
|
||
{'N', '?', 0xd1},
|
||
{'O', '!', 0xd2},
|
||
{'O', '\'', 0xd3},
|
||
{'O', '>', 0xd4},
|
||
{'O', '?', 0xd5},
|
||
{'O', ':', 0xd6},
|
||
{'*', 'X', 0xd7},
|
||
{'O', '/', 0xd8},
|
||
{'U', '!', 0xd9},
|
||
{'U', '\'', 0xda},
|
||
{'U', '>', 0xdb},
|
||
{'U', ':', 0xdc},
|
||
{'Y', '\'', 0xdd},
|
||
{'T', 'H', 0xde},
|
||
{'s', 's', 0xdf},
|
||
{'a', '!', 0xe0},
|
||
{'a', '\'', 0xe1},
|
||
{'a', '>', 0xe2},
|
||
{'a', '?', 0xe3},
|
||
{'a', ':', 0xe4},
|
||
{'a', 'a', 0xe5},
|
||
{'a', 'e', 0xe6},
|
||
{'c', ',', 0xe7},
|
||
{'e', '!', 0xe8},
|
||
{'e', '\'', 0xe9},
|
||
{'e', '>', 0xea},
|
||
{'e', ':', 0xeb},
|
||
{'i', '!', 0xec},
|
||
{'i', '\'', 0xed},
|
||
{'i', '>', 0xee},
|
||
{'i', ':', 0xef},
|
||
{'d', '-', 0xf0},
|
||
{'n', '?', 0xf1},
|
||
{'o', '!', 0xf2},
|
||
{'o', '\'', 0xf3},
|
||
{'o', '>', 0xf4},
|
||
{'o', '?', 0xf5},
|
||
{'o', ':', 0xf6},
|
||
{'-', ':', 0xf7},
|
||
{'o', '/', 0xf8},
|
||
{'u', '!', 0xf9},
|
||
{'u', '\'', 0xfa},
|
||
{'u', '>', 0xfb},
|
||
{'u', ':', 0xfc},
|
||
{'y', '\'', 0xfd},
|
||
{'t', 'h', 0xfe},
|
||
{'y', ':', 0xff},
|
||
|
||
# ifdef FEAT_MBYTE
|
||
# define USE_UNICODE_DIGRAPHS
|
||
|
||
{'A', '-', 0x0100},
|
||
{'a', '-', 0x0101},
|
||
{'A', '(', 0x0102},
|
||
{'a', '(', 0x0103},
|
||
{'A', ';', 0x0104},
|
||
{'a', ';', 0x0105},
|
||
{'C', '\'', 0x0106},
|
||
{'c', '\'', 0x0107},
|
||
{'C', '>', 0x0108},
|
||
{'c', '>', 0x0109},
|
||
{'C', '.', 0x010a},
|
||
{'c', '.', 0x010b},
|
||
{'C', '<', 0x010c},
|
||
{'c', '<', 0x010d},
|
||
{'D', '<', 0x010e},
|
||
{'d', '<', 0x010f},
|
||
{'D', '/', 0x0110},
|
||
{'d', '/', 0x0111},
|
||
{'E', '-', 0x0112},
|
||
{'e', '-', 0x0113},
|
||
{'E', '(', 0x0114},
|
||
{'e', '(', 0x0115},
|
||
{'E', '.', 0x0116},
|
||
{'e', '.', 0x0117},
|
||
{'E', ';', 0x0118},
|
||
{'e', ';', 0x0119},
|
||
{'E', '<', 0x011a},
|
||
{'e', '<', 0x011b},
|
||
{'G', '>', 0x011c},
|
||
{'g', '>', 0x011d},
|
||
{'G', '(', 0x011e},
|
||
{'g', '(', 0x011f},
|
||
{'G', '.', 0x0120},
|
||
{'g', '.', 0x0121},
|
||
{'G', ',', 0x0122},
|
||
{'g', ',', 0x0123},
|
||
{'H', '>', 0x0124},
|
||
{'h', '>', 0x0125},
|
||
{'H', '/', 0x0126},
|
||
{'h', '/', 0x0127},
|
||
{'I', '?', 0x0128},
|
||
{'i', '?', 0x0129},
|
||
{'I', '-', 0x012a},
|
||
{'i', '-', 0x012b},
|
||
{'I', '(', 0x012c},
|
||
{'i', '(', 0x012d},
|
||
{'I', ';', 0x012e},
|
||
{'i', ';', 0x012f},
|
||
{'I', '.', 0x0130},
|
||
{'i', '.', 0x0131},
|
||
{'I', 'J', 0x0132},
|
||
{'i', 'j', 0x0133},
|
||
{'J', '>', 0x0134},
|
||
{'j', '>', 0x0135},
|
||
{'K', ',', 0x0136},
|
||
{'k', ',', 0x0137},
|
||
{'k', 'k', 0x0138},
|
||
{'L', '\'', 0x0139},
|
||
{'l', '\'', 0x013a},
|
||
{'L', ',', 0x013b},
|
||
{'l', ',', 0x013c},
|
||
{'L', '<', 0x013d},
|
||
{'l', '<', 0x013e},
|
||
{'L', '.', 0x013f},
|
||
{'l', '.', 0x0140},
|
||
{'L', '/', 0x0141},
|
||
{'l', '/', 0x0142},
|
||
{'N', '\'', 0x0143},
|
||
{'n', '\'', 0x0144},
|
||
{'N', ',', 0x0145},
|
||
{'n', ',', 0x0146},
|
||
{'N', '<', 0x0147},
|
||
{'n', '<', 0x0148},
|
||
{'\'', 'n', 0x0149},
|
||
{'N', 'G', 0x014a},
|
||
{'n', 'g', 0x014b},
|
||
{'O', '-', 0x014c},
|
||
{'o', '-', 0x014d},
|
||
{'O', '(', 0x014e},
|
||
{'o', '(', 0x014f},
|
||
{'O', '"', 0x0150},
|
||
{'o', '"', 0x0151},
|
||
{'O', 'E', 0x0152},
|
||
{'o', 'e', 0x0153},
|
||
{'R', '\'', 0x0154},
|
||
{'r', '\'', 0x0155},
|
||
{'R', ',', 0x0156},
|
||
{'r', ',', 0x0157},
|
||
{'R', '<', 0x0158},
|
||
{'r', '<', 0x0159},
|
||
{'S', '\'', 0x015a},
|
||
{'s', '\'', 0x015b},
|
||
{'S', '>', 0x015c},
|
||
{'s', '>', 0x015d},
|
||
{'S', ',', 0x015e},
|
||
{'s', ',', 0x015f},
|
||
{'S', '<', 0x0160},
|
||
{'s', '<', 0x0161},
|
||
{'T', ',', 0x0162},
|
||
{'t', ',', 0x0163},
|
||
{'T', '<', 0x0164},
|
||
{'t', '<', 0x0165},
|
||
{'T', '/', 0x0166},
|
||
{'t', '/', 0x0167},
|
||
{'U', '?', 0x0168},
|
||
{'u', '?', 0x0169},
|
||
{'U', '-', 0x016a},
|
||
{'u', '-', 0x016b},
|
||
{'U', '(', 0x016c},
|
||
{'u', '(', 0x016d},
|
||
{'U', '0', 0x016e},
|
||
{'u', '0', 0x016f},
|
||
{'U', '"', 0x0170},
|
||
{'u', '"', 0x0171},
|
||
{'U', ';', 0x0172},
|
||
{'u', ';', 0x0173},
|
||
{'W', '>', 0x0174},
|
||
{'w', '>', 0x0175},
|
||
{'Y', '>', 0x0176},
|
||
{'y', '>', 0x0177},
|
||
{'Y', ':', 0x0178},
|
||
{'Z', '\'', 0x0179},
|
||
{'z', '\'', 0x017a},
|
||
{'Z', '.', 0x017b},
|
||
{'z', '.', 0x017c},
|
||
{'Z', '<', 0x017d},
|
||
{'z', '<', 0x017e},
|
||
{'O', '9', 0x01a0},
|
||
{'o', '9', 0x01a1},
|
||
{'O', 'I', 0x01a2},
|
||
{'o', 'i', 0x01a3},
|
||
{'y', 'r', 0x01a6},
|
||
{'U', '9', 0x01af},
|
||
{'u', '9', 0x01b0},
|
||
{'Z', '/', 0x01b5},
|
||
{'z', '/', 0x01b6},
|
||
{'E', 'D', 0x01b7},
|
||
{'A', '<', 0x01cd},
|
||
{'a', '<', 0x01ce},
|
||
{'I', '<', 0x01cf},
|
||
{'i', '<', 0x01d0},
|
||
{'O', '<', 0x01d1},
|
||
{'o', '<', 0x01d2},
|
||
{'U', '<', 0x01d3},
|
||
{'u', '<', 0x01d4},
|
||
{'A', '1', 0x01de},
|
||
{'a', '1', 0x01df},
|
||
{'A', '7', 0x01e0},
|
||
{'a', '7', 0x01e1},
|
||
{'A', '3', 0x01e2},
|
||
{'a', '3', 0x01e3},
|
||
{'G', '/', 0x01e4},
|
||
{'g', '/', 0x01e5},
|
||
{'G', '<', 0x01e6},
|
||
{'g', '<', 0x01e7},
|
||
{'K', '<', 0x01e8},
|
||
{'k', '<', 0x01e9},
|
||
{'O', ';', 0x01ea},
|
||
{'o', ';', 0x01eb},
|
||
{'O', '1', 0x01ec},
|
||
{'o', '1', 0x01ed},
|
||
{'E', 'Z', 0x01ee},
|
||
{'e', 'z', 0x01ef},
|
||
{'j', '<', 0x01f0},
|
||
{'G', '\'', 0x01f4},
|
||
{'g', '\'', 0x01f5},
|
||
{';', 'S', 0x02bf},
|
||
{'\'', '<', 0x02c7},
|
||
{'\'', '(', 0x02d8},
|
||
{'\'', '.', 0x02d9},
|
||
{'\'', '0', 0x02da},
|
||
{'\'', ';', 0x02db},
|
||
{'\'', '"', 0x02dd},
|
||
{'A', '%', 0x0386},
|
||
{'E', '%', 0x0388},
|
||
{'Y', '%', 0x0389},
|
||
{'I', '%', 0x038a},
|
||
{'O', '%', 0x038c},
|
||
{'U', '%', 0x038e},
|
||
{'W', '%', 0x038f},
|
||
{'i', '3', 0x0390},
|
||
{'A', '*', 0x0391},
|
||
{'B', '*', 0x0392},
|
||
{'G', '*', 0x0393},
|
||
{'D', '*', 0x0394},
|
||
{'E', '*', 0x0395},
|
||
{'Z', '*', 0x0396},
|
||
{'Y', '*', 0x0397},
|
||
{'H', '*', 0x0398},
|
||
{'I', '*', 0x0399},
|
||
{'K', '*', 0x039a},
|
||
{'L', '*', 0x039b},
|
||
{'M', '*', 0x039c},
|
||
{'N', '*', 0x039d},
|
||
{'C', '*', 0x039e},
|
||
{'O', '*', 0x039f},
|
||
{'P', '*', 0x03a0},
|
||
{'R', '*', 0x03a1},
|
||
{'S', '*', 0x03a3},
|
||
{'T', '*', 0x03a4},
|
||
{'U', '*', 0x03a5},
|
||
{'F', '*', 0x03a6},
|
||
{'X', '*', 0x03a7},
|
||
{'Q', '*', 0x03a8},
|
||
{'W', '*', 0x03a9},
|
||
{'J', '*', 0x03aa},
|
||
{'V', '*', 0x03ab},
|
||
{'a', '%', 0x03ac},
|
||
{'e', '%', 0x03ad},
|
||
{'y', '%', 0x03ae},
|
||
{'i', '%', 0x03af},
|
||
{'u', '3', 0x03b0},
|
||
{'a', '*', 0x03b1},
|
||
{'b', '*', 0x03b2},
|
||
{'g', '*', 0x03b3},
|
||
{'d', '*', 0x03b4},
|
||
{'e', '*', 0x03b5},
|
||
{'z', '*', 0x03b6},
|
||
{'y', '*', 0x03b7},
|
||
{'h', '*', 0x03b8},
|
||
{'i', '*', 0x03b9},
|
||
{'k', '*', 0x03ba},
|
||
{'l', '*', 0x03bb},
|
||
{'m', '*', 0x03bc},
|
||
{'n', '*', 0x03bd},
|
||
{'c', '*', 0x03be},
|
||
{'o', '*', 0x03bf},
|
||
{'p', '*', 0x03c0},
|
||
{'r', '*', 0x03c1},
|
||
{'*', 's', 0x03c2},
|
||
{'s', '*', 0x03c3},
|
||
{'t', '*', 0x03c4},
|
||
{'u', '*', 0x03c5},
|
||
{'f', '*', 0x03c6},
|
||
{'x', '*', 0x03c7},
|
||
{'q', '*', 0x03c8},
|
||
{'w', '*', 0x03c9},
|
||
{'j', '*', 0x03ca},
|
||
{'v', '*', 0x03cb},
|
||
{'o', '%', 0x03cc},
|
||
{'u', '%', 0x03cd},
|
||
{'w', '%', 0x03ce},
|
||
{'\'', 'G', 0x03d8},
|
||
{',', 'G', 0x03d9},
|
||
{'T', '3', 0x03da},
|
||
{'t', '3', 0x03db},
|
||
{'M', '3', 0x03dc},
|
||
{'m', '3', 0x03dd},
|
||
{'K', '3', 0x03de},
|
||
{'k', '3', 0x03df},
|
||
{'P', '3', 0x03e0},
|
||
{'p', '3', 0x03e1},
|
||
{'\'', '%', 0x03f4},
|
||
{'j', '3', 0x03f5},
|
||
{'I', 'O', 0x0401},
|
||
{'D', '%', 0x0402},
|
||
{'G', '%', 0x0403},
|
||
{'I', 'E', 0x0404},
|
||
{'D', 'S', 0x0405},
|
||
{'I', 'I', 0x0406},
|
||
{'Y', 'I', 0x0407},
|
||
{'J', '%', 0x0408},
|
||
{'L', 'J', 0x0409},
|
||
{'N', 'J', 0x040a},
|
||
{'T', 's', 0x040b},
|
||
{'K', 'J', 0x040c},
|
||
{'V', '%', 0x040e},
|
||
{'D', 'Z', 0x040f},
|
||
{'A', '=', 0x0410},
|
||
{'B', '=', 0x0411},
|
||
{'V', '=', 0x0412},
|
||
{'G', '=', 0x0413},
|
||
{'D', '=', 0x0414},
|
||
{'E', '=', 0x0415},
|
||
{'Z', '%', 0x0416},
|
||
{'Z', '=', 0x0417},
|
||
{'I', '=', 0x0418},
|
||
{'J', '=', 0x0419},
|
||
{'K', '=', 0x041a},
|
||
{'L', '=', 0x041b},
|
||
{'M', '=', 0x041c},
|
||
{'N', '=', 0x041d},
|
||
{'O', '=', 0x041e},
|
||
{'P', '=', 0x041f},
|
||
{'R', '=', 0x0420},
|
||
{'S', '=', 0x0421},
|
||
{'T', '=', 0x0422},
|
||
{'U', '=', 0x0423},
|
||
{'F', '=', 0x0424},
|
||
{'H', '=', 0x0425},
|
||
{'C', '=', 0x0426},
|
||
{'C', '%', 0x0427},
|
||
{'S', '%', 0x0428},
|
||
{'S', 'c', 0x0429},
|
||
{'=', '"', 0x042a},
|
||
{'Y', '=', 0x042b},
|
||
{'%', '"', 0x042c},
|
||
{'J', 'E', 0x042d},
|
||
{'J', 'U', 0x042e},
|
||
{'J', 'A', 0x042f},
|
||
{'a', '=', 0x0430},
|
||
{'b', '=', 0x0431},
|
||
{'v', '=', 0x0432},
|
||
{'g', '=', 0x0433},
|
||
{'d', '=', 0x0434},
|
||
{'e', '=', 0x0435},
|
||
{'z', '%', 0x0436},
|
||
{'z', '=', 0x0437},
|
||
{'i', '=', 0x0438},
|
||
{'j', '=', 0x0439},
|
||
{'k', '=', 0x043a},
|
||
{'l', '=', 0x043b},
|
||
{'m', '=', 0x043c},
|
||
{'n', '=', 0x043d},
|
||
{'o', '=', 0x043e},
|
||
{'p', '=', 0x043f},
|
||
{'r', '=', 0x0440},
|
||
{'s', '=', 0x0441},
|
||
{'t', '=', 0x0442},
|
||
{'u', '=', 0x0443},
|
||
{'f', '=', 0x0444},
|
||
{'h', '=', 0x0445},
|
||
{'c', '=', 0x0446},
|
||
{'c', '%', 0x0447},
|
||
{'s', '%', 0x0448},
|
||
{'s', 'c', 0x0449},
|
||
{'=', '\'', 0x044a},
|
||
{'y', '=', 0x044b},
|
||
{'%', '\'', 0x044c},
|
||
{'j', 'e', 0x044d},
|
||
{'j', 'u', 0x044e},
|
||
{'j', 'a', 0x044f},
|
||
{'i', 'o', 0x0451},
|
||
{'d', '%', 0x0452},
|
||
{'g', '%', 0x0453},
|
||
{'i', 'e', 0x0454},
|
||
{'d', 's', 0x0455},
|
||
{'i', 'i', 0x0456},
|
||
{'y', 'i', 0x0457},
|
||
{'j', '%', 0x0458},
|
||
{'l', 'j', 0x0459},
|
||
{'n', 'j', 0x045a},
|
||
{'t', 's', 0x045b},
|
||
{'k', 'j', 0x045c},
|
||
{'v', '%', 0x045e},
|
||
{'d', 'z', 0x045f},
|
||
{'Y', '3', 0x0462},
|
||
{'y', '3', 0x0463},
|
||
{'O', '3', 0x046a},
|
||
{'o', '3', 0x046b},
|
||
{'F', '3', 0x0472},
|
||
{'f', '3', 0x0473},
|
||
{'V', '3', 0x0474},
|
||
{'v', '3', 0x0475},
|
||
{'C', '3', 0x0480},
|
||
{'c', '3', 0x0481},
|
||
{'G', '3', 0x0490},
|
||
{'g', '3', 0x0491},
|
||
{'A', '+', 0x05d0},
|
||
{'B', '+', 0x05d1},
|
||
{'G', '+', 0x05d2},
|
||
{'D', '+', 0x05d3},
|
||
{'H', '+', 0x05d4},
|
||
{'W', '+', 0x05d5},
|
||
{'Z', '+', 0x05d6},
|
||
{'X', '+', 0x05d7},
|
||
{'T', 'j', 0x05d8},
|
||
{'J', '+', 0x05d9},
|
||
{'K', '%', 0x05da},
|
||
{'K', '+', 0x05db},
|
||
{'L', '+', 0x05dc},
|
||
{'M', '%', 0x05dd},
|
||
{'M', '+', 0x05de},
|
||
{'N', '%', 0x05df},
|
||
{'N', '+', 0x05e0},
|
||
{'S', '+', 0x05e1},
|
||
{'E', '+', 0x05e2},
|
||
{'P', '%', 0x05e3},
|
||
{'P', '+', 0x05e4},
|
||
{'Z', 'j', 0x05e5},
|
||
{'Z', 'J', 0x05e6},
|
||
{'Q', '+', 0x05e7},
|
||
{'R', '+', 0x05e8},
|
||
{'S', 'h', 0x05e9},
|
||
{'T', '+', 0x05ea},
|
||
{',', '+', 0x060c},
|
||
{';', '+', 0x061b},
|
||
{'?', '+', 0x061f},
|
||
{'H', '\'', 0x0621},
|
||
{'a', 'M', 0x0622},
|
||
{'a', 'H', 0x0623},
|
||
{'w', 'H', 0x0624},
|
||
{'a', 'h', 0x0625},
|
||
{'y', 'H', 0x0626},
|
||
{'a', '+', 0x0627},
|
||
{'b', '+', 0x0628},
|
||
{'t', 'm', 0x0629},
|
||
{'t', '+', 0x062a},
|
||
{'t', 'k', 0x062b},
|
||
{'g', '+', 0x062c},
|
||
{'h', 'k', 0x062d},
|
||
{'x', '+', 0x062e},
|
||
{'d', '+', 0x062f},
|
||
{'d', 'k', 0x0630},
|
||
{'r', '+', 0x0631},
|
||
{'z', '+', 0x0632},
|
||
{'s', '+', 0x0633},
|
||
{'s', 'n', 0x0634},
|
||
{'c', '+', 0x0635},
|
||
{'d', 'd', 0x0636},
|
||
{'t', 'j', 0x0637},
|
||
{'z', 'H', 0x0638},
|
||
{'e', '+', 0x0639},
|
||
{'i', '+', 0x063a},
|
||
{'+', '+', 0x0640},
|
||
{'f', '+', 0x0641},
|
||
{'q', '+', 0x0642},
|
||
{'k', '+', 0x0643},
|
||
{'l', '+', 0x0644},
|
||
{'m', '+', 0x0645},
|
||
{'n', '+', 0x0646},
|
||
{'h', '+', 0x0647},
|
||
{'w', '+', 0x0648},
|
||
{'j', '+', 0x0649},
|
||
{'y', '+', 0x064a},
|
||
{':', '+', 0x064b},
|
||
{'"', '+', 0x064c},
|
||
{'=', '+', 0x064d},
|
||
{'/', '+', 0x064e},
|
||
{'\'', '+', 0x064f},
|
||
{'1', '+', 0x0650},
|
||
{'3', '+', 0x0651},
|
||
{'0', '+', 0x0652},
|
||
{'a', 'S', 0x0670},
|
||
{'p', '+', 0x067e},
|
||
{'v', '+', 0x06a4},
|
||
{'g', 'f', 0x06af},
|
||
{'0', 'a', 0x06f0},
|
||
{'1', 'a', 0x06f1},
|
||
{'2', 'a', 0x06f2},
|
||
{'3', 'a', 0x06f3},
|
||
{'4', 'a', 0x06f4},
|
||
{'5', 'a', 0x06f5},
|
||
{'6', 'a', 0x06f6},
|
||
{'7', 'a', 0x06f7},
|
||
{'8', 'a', 0x06f8},
|
||
{'9', 'a', 0x06f9},
|
||
{'B', '.', 0x1e02},
|
||
{'b', '.', 0x1e03},
|
||
{'B', '_', 0x1e06},
|
||
{'b', '_', 0x1e07},
|
||
{'D', '.', 0x1e0a},
|
||
{'d', '.', 0x1e0b},
|
||
{'D', '_', 0x1e0e},
|
||
{'d', '_', 0x1e0f},
|
||
{'D', ',', 0x1e10},
|
||
{'d', ',', 0x1e11},
|
||
{'F', '.', 0x1e1e},
|
||
{'f', '.', 0x1e1f},
|
||
{'G', '-', 0x1e20},
|
||
{'g', '-', 0x1e21},
|
||
{'H', '.', 0x1e22},
|
||
{'h', '.', 0x1e23},
|
||
{'H', ':', 0x1e26},
|
||
{'h', ':', 0x1e27},
|
||
{'H', ',', 0x1e28},
|
||
{'h', ',', 0x1e29},
|
||
{'K', '\'', 0x1e30},
|
||
{'k', '\'', 0x1e31},
|
||
{'K', '_', 0x1e34},
|
||
{'k', '_', 0x1e35},
|
||
{'L', '_', 0x1e3a},
|
||
{'l', '_', 0x1e3b},
|
||
{'M', '\'', 0x1e3e},
|
||
{'m', '\'', 0x1e3f},
|
||
{'M', '.', 0x1e40},
|
||
{'m', '.', 0x1e41},
|
||
{'N', '.', 0x1e44},
|
||
{'n', '.', 0x1e45},
|
||
{'N', '_', 0x1e48},
|
||
{'n', '_', 0x1e49},
|
||
{'P', '\'', 0x1e54},
|
||
{'p', '\'', 0x1e55},
|
||
{'P', '.', 0x1e56},
|
||
{'p', '.', 0x1e57},
|
||
{'R', '.', 0x1e58},
|
||
{'r', '.', 0x1e59},
|
||
{'R', '_', 0x1e5e},
|
||
{'r', '_', 0x1e5f},
|
||
{'S', '.', 0x1e60},
|
||
{'s', '.', 0x1e61},
|
||
{'T', '.', 0x1e6a},
|
||
{'t', '.', 0x1e6b},
|
||
{'T', '_', 0x1e6e},
|
||
{'t', '_', 0x1e6f},
|
||
{'V', '?', 0x1e7c},
|
||
{'v', '?', 0x1e7d},
|
||
{'W', '!', 0x1e80},
|
||
{'w', '!', 0x1e81},
|
||
{'W', '\'', 0x1e82},
|
||
{'w', '\'', 0x1e83},
|
||
{'W', ':', 0x1e84},
|
||
{'w', ':', 0x1e85},
|
||
{'W', '.', 0x1e86},
|
||
{'w', '.', 0x1e87},
|
||
{'X', '.', 0x1e8a},
|
||
{'x', '.', 0x1e8b},
|
||
{'X', ':', 0x1e8c},
|
||
{'x', ':', 0x1e8d},
|
||
{'Y', '.', 0x1e8e},
|
||
{'y', '.', 0x1e8f},
|
||
{'Z', '>', 0x1e90},
|
||
{'z', '>', 0x1e91},
|
||
{'Z', '_', 0x1e94},
|
||
{'z', '_', 0x1e95},
|
||
{'h', '_', 0x1e96},
|
||
{'t', ':', 0x1e97},
|
||
{'w', '0', 0x1e98},
|
||
{'y', '0', 0x1e99},
|
||
{'A', '2', 0x1ea2},
|
||
{'a', '2', 0x1ea3},
|
||
{'E', '2', 0x1eba},
|
||
{'e', '2', 0x1ebb},
|
||
{'E', '?', 0x1ebc},
|
||
{'e', '?', 0x1ebd},
|
||
{'I', '2', 0x1ec8},
|
||
{'i', '2', 0x1ec9},
|
||
{'O', '2', 0x1ece},
|
||
{'o', '2', 0x1ecf},
|
||
{'U', '2', 0x1ee6},
|
||
{'u', '2', 0x1ee7},
|
||
{'Y', '!', 0x1ef2},
|
||
{'y', '!', 0x1ef3},
|
||
{'Y', '2', 0x1ef6},
|
||
{'y', '2', 0x1ef7},
|
||
{'Y', '?', 0x1ef8},
|
||
{'y', '?', 0x1ef9},
|
||
{';', '\'', 0x1f00},
|
||
{',', '\'', 0x1f01},
|
||
{';', '!', 0x1f02},
|
||
{',', '!', 0x1f03},
|
||
{'?', ';', 0x1f04},
|
||
{'?', ',', 0x1f05},
|
||
{'!', ':', 0x1f06},
|
||
{'?', ':', 0x1f07},
|
||
{'1', 'N', 0x2002},
|
||
{'1', 'M', 0x2003},
|
||
{'3', 'M', 0x2004},
|
||
{'4', 'M', 0x2005},
|
||
{'6', 'M', 0x2006},
|
||
{'1', 'T', 0x2009},
|
||
{'1', 'H', 0x200a},
|
||
{'-', '1', 0x2010},
|
||
{'-', 'N', 0x2013},
|
||
{'-', 'M', 0x2014},
|
||
{'-', '3', 0x2015},
|
||
{'!', '2', 0x2016},
|
||
{'=', '2', 0x2017},
|
||
{'\'', '6', 0x2018},
|
||
{'\'', '9', 0x2019},
|
||
{'.', '9', 0x201a},
|
||
{'9', '\'', 0x201b},
|
||
{'"', '6', 0x201c},
|
||
{'"', '9', 0x201d},
|
||
{':', '9', 0x201e},
|
||
{'9', '"', 0x201f},
|
||
{'/', '-', 0x2020},
|
||
{'/', '=', 0x2021},
|
||
{'.', '.', 0x2025},
|
||
{'%', '0', 0x2030},
|
||
{'1', '\'', 0x2032},
|
||
{'2', '\'', 0x2033},
|
||
{'3', '\'', 0x2034},
|
||
{'1', '"', 0x2035},
|
||
{'2', '"', 0x2036},
|
||
{'3', '"', 0x2037},
|
||
{'C', 'a', 0x2038},
|
||
{'<', '1', 0x2039},
|
||
{'>', '1', 0x203a},
|
||
{':', 'X', 0x203b},
|
||
{'\'', '-', 0x203e},
|
||
{'/', 'f', 0x2044},
|
||
{'0', 'S', 0x2070},
|
||
{'4', 'S', 0x2074},
|
||
{'5', 'S', 0x2075},
|
||
{'6', 'S', 0x2076},
|
||
{'7', 'S', 0x2077},
|
||
{'8', 'S', 0x2078},
|
||
{'9', 'S', 0x2079},
|
||
{'+', 'S', 0x207a},
|
||
{'-', 'S', 0x207b},
|
||
{'=', 'S', 0x207c},
|
||
{'(', 'S', 0x207d},
|
||
{')', 'S', 0x207e},
|
||
{'n', 'S', 0x207f},
|
||
{'0', 's', 0x2080},
|
||
{'1', 's', 0x2081},
|
||
{'2', 's', 0x2082},
|
||
{'3', 's', 0x2083},
|
||
{'4', 's', 0x2084},
|
||
{'5', 's', 0x2085},
|
||
{'6', 's', 0x2086},
|
||
{'7', 's', 0x2087},
|
||
{'8', 's', 0x2088},
|
||
{'9', 's', 0x2089},
|
||
{'+', 's', 0x208a},
|
||
{'-', 's', 0x208b},
|
||
{'=', 's', 0x208c},
|
||
{'(', 's', 0x208d},
|
||
{')', 's', 0x208e},
|
||
{'L', 'i', 0x20a4},
|
||
{'P', 't', 0x20a7},
|
||
{'W', '=', 0x20a9},
|
||
{'=', 'e', 0x20ac}, /* euro */
|
||
{'o', 'C', 0x2103},
|
||
{'c', 'o', 0x2105},
|
||
{'o', 'F', 0x2109},
|
||
{'N', '0', 0x2116},
|
||
{'P', 'O', 0x2117},
|
||
{'R', 'x', 0x211e},
|
||
{'S', 'M', 0x2120},
|
||
{'T', 'M', 0x2122},
|
||
{'O', 'm', 0x2126},
|
||
{'A', 'O', 0x212b},
|
||
{'1', '3', 0x2153},
|
||
{'2', '3', 0x2154},
|
||
{'1', '5', 0x2155},
|
||
{'2', '5', 0x2156},
|
||
{'3', '5', 0x2157},
|
||
{'4', '5', 0x2158},
|
||
{'1', '6', 0x2159},
|
||
{'5', '6', 0x215a},
|
||
{'1', '8', 0x215b},
|
||
{'3', '8', 0x215c},
|
||
{'5', '8', 0x215d},
|
||
{'7', '8', 0x215e},
|
||
{'1', 'R', 0x2160},
|
||
{'2', 'R', 0x2161},
|
||
{'3', 'R', 0x2162},
|
||
{'4', 'R', 0x2163},
|
||
{'5', 'R', 0x2164},
|
||
{'6', 'R', 0x2165},
|
||
{'7', 'R', 0x2166},
|
||
{'8', 'R', 0x2167},
|
||
{'9', 'R', 0x2168},
|
||
{'a', 'R', 0x2169},
|
||
{'b', 'R', 0x216a},
|
||
{'c', 'R', 0x216b},
|
||
{'1', 'r', 0x2170},
|
||
{'2', 'r', 0x2171},
|
||
{'3', 'r', 0x2172},
|
||
{'4', 'r', 0x2173},
|
||
{'5', 'r', 0x2174},
|
||
{'6', 'r', 0x2175},
|
||
{'7', 'r', 0x2176},
|
||
{'8', 'r', 0x2177},
|
||
{'9', 'r', 0x2178},
|
||
{'a', 'r', 0x2179},
|
||
{'b', 'r', 0x217a},
|
||
{'c', 'r', 0x217b},
|
||
{'<', '-', 0x2190},
|
||
{'-', '!', 0x2191},
|
||
{'-', '>', 0x2192},
|
||
{'-', 'v', 0x2193},
|
||
{'<', '>', 0x2194},
|
||
{'U', 'D', 0x2195},
|
||
{'<', '=', 0x21d0},
|
||
{'=', '>', 0x21d2},
|
||
{'=', '=', 0x21d4},
|
||
{'F', 'A', 0x2200},
|
||
{'d', 'P', 0x2202},
|
||
{'T', 'E', 0x2203},
|
||
{'/', '0', 0x2205},
|
||
{'D', 'E', 0x2206},
|
||
{'N', 'B', 0x2207},
|
||
{'(', '-', 0x2208},
|
||
{'-', ')', 0x220b},
|
||
{'*', 'P', 0x220f},
|
||
{'+', 'Z', 0x2211},
|
||
{'-', '2', 0x2212},
|
||
{'-', '+', 0x2213},
|
||
{'*', '-', 0x2217},
|
||
{'O', 'b', 0x2218},
|
||
{'S', 'b', 0x2219},
|
||
{'R', 'T', 0x221a},
|
||
{'0', '(', 0x221d},
|
||
{'0', '0', 0x221e},
|
||
{'-', 'L', 0x221f},
|
||
{'-', 'V', 0x2220},
|
||
{'P', 'P', 0x2225},
|
||
{'A', 'N', 0x2227},
|
||
{'O', 'R', 0x2228},
|
||
{'(', 'U', 0x2229},
|
||
{')', 'U', 0x222a},
|
||
{'I', 'n', 0x222b},
|
||
{'D', 'I', 0x222c},
|
||
{'I', 'o', 0x222e},
|
||
{'.', ':', 0x2234},
|
||
{':', '.', 0x2235},
|
||
{':', 'R', 0x2236},
|
||
{':', ':', 0x2237},
|
||
{'?', '1', 0x223c},
|
||
{'C', 'G', 0x223e},
|
||
{'?', '-', 0x2243},
|
||
{'?', '=', 0x2245},
|
||
{'?', '2', 0x2248},
|
||
{'=', '?', 0x224c},
|
||
{'H', 'I', 0x2253},
|
||
{'!', '=', 0x2260},
|
||
{'=', '3', 0x2261},
|
||
{'=', '<', 0x2264},
|
||
{'>', '=', 0x2265},
|
||
{'<', '*', 0x226a},
|
||
{'*', '>', 0x226b},
|
||
{'!', '<', 0x226e},
|
||
{'!', '>', 0x226f},
|
||
{'(', 'C', 0x2282},
|
||
{')', 'C', 0x2283},
|
||
{'(', '_', 0x2286},
|
||
{')', '_', 0x2287},
|
||
{'0', '.', 0x2299},
|
||
{'0', '2', 0x229a},
|
||
{'-', 'T', 0x22a5},
|
||
{'.', 'P', 0x22c5},
|
||
{':', '3', 0x22ee},
|
||
{'.', '3', 0x22ef},
|
||
{'E', 'h', 0x2302},
|
||
{'<', '7', 0x2308},
|
||
{'>', '7', 0x2309},
|
||
{'7', '<', 0x230a},
|
||
{'7', '>', 0x230b},
|
||
{'N', 'I', 0x2310},
|
||
{'(', 'A', 0x2312},
|
||
{'T', 'R', 0x2315},
|
||
{'I', 'u', 0x2320},
|
||
{'I', 'l', 0x2321},
|
||
{'<', '/', 0x2329},
|
||
{'/', '>', 0x232a},
|
||
{'V', 's', 0x2423},
|
||
{'1', 'h', 0x2440},
|
||
{'3', 'h', 0x2441},
|
||
{'2', 'h', 0x2442},
|
||
{'4', 'h', 0x2443},
|
||
{'1', 'j', 0x2446},
|
||
{'2', 'j', 0x2447},
|
||
{'3', 'j', 0x2448},
|
||
{'4', 'j', 0x2449},
|
||
{'1', '.', 0x2488},
|
||
{'2', '.', 0x2489},
|
||
{'3', '.', 0x248a},
|
||
{'4', '.', 0x248b},
|
||
{'5', '.', 0x248c},
|
||
{'6', '.', 0x248d},
|
||
{'7', '.', 0x248e},
|
||
{'8', '.', 0x248f},
|
||
{'9', '.', 0x2490},
|
||
{'h', 'h', 0x2500},
|
||
{'H', 'H', 0x2501},
|
||
{'v', 'v', 0x2502},
|
||
{'V', 'V', 0x2503},
|
||
{'3', '-', 0x2504},
|
||
{'3', '_', 0x2505},
|
||
{'3', '!', 0x2506},
|
||
{'3', '/', 0x2507},
|
||
{'4', '-', 0x2508},
|
||
{'4', '_', 0x2509},
|
||
{'4', '!', 0x250a},
|
||
{'4', '/', 0x250b},
|
||
{'d', 'r', 0x250c},
|
||
{'d', 'R', 0x250d},
|
||
{'D', 'r', 0x250e},
|
||
{'D', 'R', 0x250f},
|
||
{'d', 'l', 0x2510},
|
||
{'d', 'L', 0x2511},
|
||
{'D', 'l', 0x2512},
|
||
{'L', 'D', 0x2513},
|
||
{'u', 'r', 0x2514},
|
||
{'u', 'R', 0x2515},
|
||
{'U', 'r', 0x2516},
|
||
{'U', 'R', 0x2517},
|
||
{'u', 'l', 0x2518},
|
||
{'u', 'L', 0x2519},
|
||
{'U', 'l', 0x251a},
|
||
{'U', 'L', 0x251b},
|
||
{'v', 'r', 0x251c},
|
||
{'v', 'R', 0x251d},
|
||
{'V', 'r', 0x2520},
|
||
{'V', 'R', 0x2523},
|
||
{'v', 'l', 0x2524},
|
||
{'v', 'L', 0x2525},
|
||
{'V', 'l', 0x2528},
|
||
{'V', 'L', 0x252b},
|
||
{'d', 'h', 0x252c},
|
||
{'d', 'H', 0x252f},
|
||
{'D', 'h', 0x2530},
|
||
{'D', 'H', 0x2533},
|
||
{'u', 'h', 0x2534},
|
||
{'u', 'H', 0x2537},
|
||
{'U', 'h', 0x2538},
|
||
{'U', 'H', 0x253b},
|
||
{'v', 'h', 0x253c},
|
||
{'v', 'H', 0x253f},
|
||
{'V', 'h', 0x2542},
|
||
{'V', 'H', 0x254b},
|
||
{'F', 'D', 0x2571},
|
||
{'B', 'D', 0x2572},
|
||
{'T', 'B', 0x2580},
|
||
{'L', 'B', 0x2584},
|
||
{'F', 'B', 0x2588},
|
||
{'l', 'B', 0x258c},
|
||
{'R', 'B', 0x2590},
|
||
{'.', 'S', 0x2591},
|
||
{':', 'S', 0x2592},
|
||
{'?', 'S', 0x2593},
|
||
{'f', 'S', 0x25a0},
|
||
{'O', 'S', 0x25a1},
|
||
{'R', 'O', 0x25a2},
|
||
{'R', 'r', 0x25a3},
|
||
{'R', 'F', 0x25a4},
|
||
{'R', 'Y', 0x25a5},
|
||
{'R', 'H', 0x25a6},
|
||
{'R', 'Z', 0x25a7},
|
||
{'R', 'K', 0x25a8},
|
||
{'R', 'X', 0x25a9},
|
||
{'s', 'B', 0x25aa},
|
||
{'S', 'R', 0x25ac},
|
||
{'O', 'r', 0x25ad},
|
||
{'U', 'T', 0x25b2},
|
||
{'u', 'T', 0x25b3},
|
||
{'P', 'R', 0x25b6},
|
||
{'T', 'r', 0x25b7},
|
||
{'D', 't', 0x25bc},
|
||
{'d', 'T', 0x25bd},
|
||
{'P', 'L', 0x25c0},
|
||
{'T', 'l', 0x25c1},
|
||
{'D', 'b', 0x25c6},
|
||
{'D', 'w', 0x25c7},
|
||
{'L', 'Z', 0x25ca},
|
||
{'0', 'm', 0x25cb},
|
||
{'0', 'o', 0x25ce},
|
||
{'0', 'M', 0x25cf},
|
||
{'0', 'L', 0x25d0},
|
||
{'0', 'R', 0x25d1},
|
||
{'S', 'n', 0x25d8},
|
||
{'I', 'c', 0x25d9},
|
||
{'F', 'd', 0x25e2},
|
||
{'B', 'd', 0x25e3},
|
||
{'*', '2', 0x2605},
|
||
{'*', '1', 0x2606},
|
||
{'<', 'H', 0x261c},
|
||
{'>', 'H', 0x261e},
|
||
{'0', 'u', 0x263a},
|
||
{'0', 'U', 0x263b},
|
||
{'S', 'U', 0x263c},
|
||
{'F', 'm', 0x2640},
|
||
{'M', 'l', 0x2642},
|
||
{'c', 'S', 0x2660},
|
||
{'c', 'H', 0x2661},
|
||
{'c', 'D', 0x2662},
|
||
{'c', 'C', 0x2663},
|
||
{'M', 'd', 0x2669},
|
||
{'M', '8', 0x266a},
|
||
{'M', '2', 0x266b},
|
||
{'M', 'b', 0x266d},
|
||
{'M', 'x', 0x266e},
|
||
{'M', 'X', 0x266f},
|
||
{'O', 'K', 0x2713},
|
||
{'X', 'X', 0x2717},
|
||
{'-', 'X', 0x2720},
|
||
{'I', 'S', 0x3000},
|
||
{',', '_', 0x3001},
|
||
{'.', '_', 0x3002},
|
||
{'+', '"', 0x3003},
|
||
{'+', '_', 0x3004},
|
||
{'*', '_', 0x3005},
|
||
{';', '_', 0x3006},
|
||
{'0', '_', 0x3007},
|
||
{'<', '+', 0x300a},
|
||
{'>', '+', 0x300b},
|
||
{'<', '\'', 0x300c},
|
||
{'>', '\'', 0x300d},
|
||
{'<', '"', 0x300e},
|
||
{'>', '"', 0x300f},
|
||
{'(', '"', 0x3010},
|
||
{')', '"', 0x3011},
|
||
{'=', 'T', 0x3012},
|
||
{'=', '_', 0x3013},
|
||
{'(', '\'', 0x3014},
|
||
{')', '\'', 0x3015},
|
||
{'(', 'I', 0x3016},
|
||
{')', 'I', 0x3017},
|
||
{'-', '?', 0x301c},
|
||
{'A', '5', 0x3041},
|
||
{'a', '5', 0x3042},
|
||
{'I', '5', 0x3043},
|
||
{'i', '5', 0x3044},
|
||
{'U', '5', 0x3045},
|
||
{'u', '5', 0x3046},
|
||
{'E', '5', 0x3047},
|
||
{'e', '5', 0x3048},
|
||
{'O', '5', 0x3049},
|
||
{'o', '5', 0x304a},
|
||
{'k', 'a', 0x304b},
|
||
{'g', 'a', 0x304c},
|
||
{'k', 'i', 0x304d},
|
||
{'g', 'i', 0x304e},
|
||
{'k', 'u', 0x304f},
|
||
{'g', 'u', 0x3050},
|
||
{'k', 'e', 0x3051},
|
||
{'g', 'e', 0x3052},
|
||
{'k', 'o', 0x3053},
|
||
{'g', 'o', 0x3054},
|
||
{'s', 'a', 0x3055},
|
||
{'z', 'a', 0x3056},
|
||
{'s', 'i', 0x3057},
|
||
{'z', 'i', 0x3058},
|
||
{'s', 'u', 0x3059},
|
||
{'z', 'u', 0x305a},
|
||
{'s', 'e', 0x305b},
|
||
{'z', 'e', 0x305c},
|
||
{'s', 'o', 0x305d},
|
||
{'z', 'o', 0x305e},
|
||
{'t', 'a', 0x305f},
|
||
{'d', 'a', 0x3060},
|
||
{'t', 'i', 0x3061},
|
||
{'d', 'i', 0x3062},
|
||
{'t', 'U', 0x3063},
|
||
{'t', 'u', 0x3064},
|
||
{'d', 'u', 0x3065},
|
||
{'t', 'e', 0x3066},
|
||
{'d', 'e', 0x3067},
|
||
{'t', 'o', 0x3068},
|
||
{'d', 'o', 0x3069},
|
||
{'n', 'a', 0x306a},
|
||
{'n', 'i', 0x306b},
|
||
{'n', 'u', 0x306c},
|
||
{'n', 'e', 0x306d},
|
||
{'n', 'o', 0x306e},
|
||
{'h', 'a', 0x306f},
|
||
{'b', 'a', 0x3070},
|
||
{'p', 'a', 0x3071},
|
||
{'h', 'i', 0x3072},
|
||
{'b', 'i', 0x3073},
|
||
{'p', 'i', 0x3074},
|
||
{'h', 'u', 0x3075},
|
||
{'b', 'u', 0x3076},
|
||
{'p', 'u', 0x3077},
|
||
{'h', 'e', 0x3078},
|
||
{'b', 'e', 0x3079},
|
||
{'p', 'e', 0x307a},
|
||
{'h', 'o', 0x307b},
|
||
{'b', 'o', 0x307c},
|
||
{'p', 'o', 0x307d},
|
||
{'m', 'a', 0x307e},
|
||
{'m', 'i', 0x307f},
|
||
{'m', 'u', 0x3080},
|
||
{'m', 'e', 0x3081},
|
||
{'m', 'o', 0x3082},
|
||
{'y', 'A', 0x3083},
|
||
{'y', 'a', 0x3084},
|
||
{'y', 'U', 0x3085},
|
||
{'y', 'u', 0x3086},
|
||
{'y', 'O', 0x3087},
|
||
{'y', 'o', 0x3088},
|
||
{'r', 'a', 0x3089},
|
||
{'r', 'i', 0x308a},
|
||
{'r', 'u', 0x308b},
|
||
{'r', 'e', 0x308c},
|
||
{'r', 'o', 0x308d},
|
||
{'w', 'A', 0x308e},
|
||
{'w', 'a', 0x308f},
|
||
{'w', 'i', 0x3090},
|
||
{'w', 'e', 0x3091},
|
||
{'w', 'o', 0x3092},
|
||
{'n', '5', 0x3093},
|
||
{'v', 'u', 0x3094},
|
||
{'"', '5', 0x309b},
|
||
{'0', '5', 0x309c},
|
||
{'*', '5', 0x309d},
|
||
{'+', '5', 0x309e},
|
||
{'a', '6', 0x30a1},
|
||
{'A', '6', 0x30a2},
|
||
{'i', '6', 0x30a3},
|
||
{'I', '6', 0x30a4},
|
||
{'u', '6', 0x30a5},
|
||
{'U', '6', 0x30a6},
|
||
{'e', '6', 0x30a7},
|
||
{'E', '6', 0x30a8},
|
||
{'o', '6', 0x30a9},
|
||
{'O', '6', 0x30aa},
|
||
{'K', 'a', 0x30ab},
|
||
{'G', 'a', 0x30ac},
|
||
{'K', 'i', 0x30ad},
|
||
{'G', 'i', 0x30ae},
|
||
{'K', 'u', 0x30af},
|
||
{'G', 'u', 0x30b0},
|
||
{'K', 'e', 0x30b1},
|
||
{'G', 'e', 0x30b2},
|
||
{'K', 'o', 0x30b3},
|
||
{'G', 'o', 0x30b4},
|
||
{'S', 'a', 0x30b5},
|
||
{'Z', 'a', 0x30b6},
|
||
{'S', 'i', 0x30b7},
|
||
{'Z', 'i', 0x30b8},
|
||
{'S', 'u', 0x30b9},
|
||
{'Z', 'u', 0x30ba},
|
||
{'S', 'e', 0x30bb},
|
||
{'Z', 'e', 0x30bc},
|
||
{'S', 'o', 0x30bd},
|
||
{'Z', 'o', 0x30be},
|
||
{'T', 'a', 0x30bf},
|
||
{'D', 'a', 0x30c0},
|
||
{'T', 'i', 0x30c1},
|
||
{'D', 'i', 0x30c2},
|
||
{'T', 'U', 0x30c3},
|
||
{'T', 'u', 0x30c4},
|
||
{'D', 'u', 0x30c5},
|
||
{'T', 'e', 0x30c6},
|
||
{'D', 'e', 0x30c7},
|
||
{'T', 'o', 0x30c8},
|
||
{'D', 'o', 0x30c9},
|
||
{'N', 'a', 0x30ca},
|
||
{'N', 'i', 0x30cb},
|
||
{'N', 'u', 0x30cc},
|
||
{'N', 'e', 0x30cd},
|
||
{'N', 'o', 0x30ce},
|
||
{'H', 'a', 0x30cf},
|
||
{'B', 'a', 0x30d0},
|
||
{'P', 'a', 0x30d1},
|
||
{'H', 'i', 0x30d2},
|
||
{'B', 'i', 0x30d3},
|
||
{'P', 'i', 0x30d4},
|
||
{'H', 'u', 0x30d5},
|
||
{'B', 'u', 0x30d6},
|
||
{'P', 'u', 0x30d7},
|
||
{'H', 'e', 0x30d8},
|
||
{'B', 'e', 0x30d9},
|
||
{'P', 'e', 0x30da},
|
||
{'H', 'o', 0x30db},
|
||
{'B', 'o', 0x30dc},
|
||
{'P', 'o', 0x30dd},
|
||
{'M', 'a', 0x30de},
|
||
{'M', 'i', 0x30df},
|
||
{'M', 'u', 0x30e0},
|
||
{'M', 'e', 0x30e1},
|
||
{'M', 'o', 0x30e2},
|
||
{'Y', 'A', 0x30e3},
|
||
{'Y', 'a', 0x30e4},
|
||
{'Y', 'U', 0x30e5},
|
||
{'Y', 'u', 0x30e6},
|
||
{'Y', 'O', 0x30e7},
|
||
{'Y', 'o', 0x30e8},
|
||
{'R', 'a', 0x30e9},
|
||
{'R', 'i', 0x30ea},
|
||
{'R', 'u', 0x30eb},
|
||
{'R', 'e', 0x30ec},
|
||
{'R', 'o', 0x30ed},
|
||
{'W', 'A', 0x30ee},
|
||
{'W', 'a', 0x30ef},
|
||
{'W', 'i', 0x30f0},
|
||
{'W', 'e', 0x30f1},
|
||
{'W', 'o', 0x30f2},
|
||
{'N', '6', 0x30f3},
|
||
{'V', 'u', 0x30f4},
|
||
{'K', 'A', 0x30f5},
|
||
{'K', 'E', 0x30f6},
|
||
{'V', 'a', 0x30f7},
|
||
{'V', 'i', 0x30f8},
|
||
{'V', 'e', 0x30f9},
|
||
{'V', 'o', 0x30fa},
|
||
{'.', '6', 0x30fb},
|
||
{'-', '6', 0x30fc},
|
||
{'*', '6', 0x30fd},
|
||
{'+', '6', 0x30fe},
|
||
{'b', '4', 0x3105},
|
||
{'p', '4', 0x3106},
|
||
{'m', '4', 0x3107},
|
||
{'f', '4', 0x3108},
|
||
{'d', '4', 0x3109},
|
||
{'t', '4', 0x310a},
|
||
{'n', '4', 0x310b},
|
||
{'l', '4', 0x310c},
|
||
{'g', '4', 0x310d},
|
||
{'k', '4', 0x310e},
|
||
{'h', '4', 0x310f},
|
||
{'j', '4', 0x3110},
|
||
{'q', '4', 0x3111},
|
||
{'x', '4', 0x3112},
|
||
{'z', 'h', 0x3113},
|
||
{'c', 'h', 0x3114},
|
||
{'s', 'h', 0x3115},
|
||
{'r', '4', 0x3116},
|
||
{'z', '4', 0x3117},
|
||
{'c', '4', 0x3118},
|
||
{'s', '4', 0x3119},
|
||
{'a', '4', 0x311a},
|
||
{'o', '4', 0x311b},
|
||
{'e', '4', 0x311c},
|
||
{'a', 'i', 0x311e},
|
||
{'e', 'i', 0x311f},
|
||
{'a', 'u', 0x3120},
|
||
{'o', 'u', 0x3121},
|
||
{'a', 'n', 0x3122},
|
||
{'e', 'n', 0x3123},
|
||
{'a', 'N', 0x3124},
|
||
{'e', 'N', 0x3125},
|
||
{'e', 'r', 0x3126},
|
||
{'i', '4', 0x3127},
|
||
{'u', '4', 0x3128},
|
||
{'i', 'u', 0x3129},
|
||
{'v', '4', 0x312a},
|
||
{'n', 'G', 0x312b},
|
||
{'g', 'n', 0x312c},
|
||
{'1', 'c', 0x3220},
|
||
{'2', 'c', 0x3221},
|
||
{'3', 'c', 0x3222},
|
||
{'4', 'c', 0x3223},
|
||
{'5', 'c', 0x3224},
|
||
{'6', 'c', 0x3225},
|
||
{'7', 'c', 0x3226},
|
||
{'8', 'c', 0x3227},
|
||
{'9', 'c', 0x3228},
|
||
{' ', ' ', 0xe000},
|
||
{'/', 'c', 0xe001},
|
||
{'U', 'A', 0xe002},
|
||
{'U', 'B', 0xe003},
|
||
{'"', '3', 0xe004},
|
||
{'"', '1', 0xe005},
|
||
{'"', '!', 0xe006},
|
||
{'"', '\'', 0xe007},
|
||
{'"', '>', 0xe008},
|
||
{'"', '?', 0xe009},
|
||
{'"', '-', 0xe00a},
|
||
{'"', '(', 0xe00b},
|
||
{'"', '.', 0xe00c},
|
||
{'"', ':', 0xe00d},
|
||
{'"', '0', 0xe00e},
|
||
{'"', '"', 0xe00f},
|
||
{'"', '<', 0xe010},
|
||
{'"', ',', 0xe011},
|
||
{'"', ';', 0xe012},
|
||
{'"', '_', 0xe013},
|
||
{'"', '=', 0xe014},
|
||
{'"', '/', 0xe015},
|
||
{'"', 'i', 0xe016},
|
||
{'"', 'd', 0xe017},
|
||
{'"', 'p', 0xe018},
|
||
{';', ';', 0xe019},
|
||
{',', ',', 0xe01a},
|
||
{'b', '3', 0xe01b},
|
||
{'C', 'i', 0xe01c},
|
||
{'f', '(', 0xe01d},
|
||
{'e', 'd', 0xe01e},
|
||
{'a', 'm', 0xe01f},
|
||
{'p', 'm', 0xe020},
|
||
{'F', 'l', 0xe023},
|
||
{'G', 'F', 0xe024},
|
||
{'>', 'V', 0xe025},
|
||
{'!', '*', 0xe026},
|
||
{'?', '*', 0xe027},
|
||
{'J', '<', 0xe028},
|
||
{'f', 'f', 0xfb00},
|
||
{'f', 'i', 0xfb01},
|
||
{'f', 'l', 0xfb02},
|
||
{'f', 't', 0xfb05},
|
||
{'s', 't', 0xfb06},
|
||
# endif /* FEAT_MBYTE */
|
||
{NUL, NUL, NUL}
|
||
};
|
||
|
||
# endif /* OLD_DIGRAPHS */
|
||
|
||
# endif /* Macintosh */
|
||
# endif /* EBCDIC */
|
||
# endif /* !HPUX_DIGRAPHS */
|
||
# endif /* !__MINT__ */
|
||
#endif /* !MSDOS && !OS2 */
|
||
|
||
/*
|
||
* handle digraphs after typing a character
|
||
*/
|
||
int
|
||
do_digraph(c)
|
||
int c;
|
||
{
|
||
static int backspaced; /* character before K_BS */
|
||
static int lastchar; /* last typed character */
|
||
|
||
if (c == -1) /* init values */
|
||
{
|
||
backspaced = -1;
|
||
}
|
||
else if (p_dg)
|
||
{
|
||
if (backspaced >= 0)
|
||
c = getdigraph(backspaced, c, FALSE);
|
||
backspaced = -1;
|
||
if ((c == K_BS || c == Ctrl_H) && lastchar >= 0)
|
||
backspaced = lastchar;
|
||
}
|
||
lastchar = c;
|
||
return c;
|
||
}
|
||
|
||
/*
|
||
* Get a digraph. Used after typing CTRL-K on the command line or in normal
|
||
* mode.
|
||
* Returns composed character, or NUL when ESC was used.
|
||
*/
|
||
int
|
||
get_digraph(cmdline)
|
||
int cmdline; /* TRUE when called from the cmdline */
|
||
{
|
||
int c, cc;
|
||
|
||
++no_mapping;
|
||
++allow_keys;
|
||
c = safe_vgetc();
|
||
--no_mapping;
|
||
--allow_keys;
|
||
if (c != ESC) /* ESC cancels CTRL-K */
|
||
{
|
||
if (IS_SPECIAL(c)) /* insert special key code */
|
||
return c;
|
||
if (cmdline)
|
||
{
|
||
if (char2cells(c) == 1
|
||
#if defined(FEAT_CRYPT) || defined(FEAT_EVAL)
|
||
&& cmdline_star == 0
|
||
#endif
|
||
)
|
||
putcmdline(c, TRUE);
|
||
}
|
||
#ifdef FEAT_CMDL_INFO
|
||
else
|
||
add_to_showcmd(c);
|
||
#endif
|
||
++no_mapping;
|
||
++allow_keys;
|
||
cc = safe_vgetc();
|
||
--no_mapping;
|
||
--allow_keys;
|
||
if (cc != ESC) /* ESC cancels CTRL-K */
|
||
return getdigraph(c, cc, TRUE);
|
||
}
|
||
return NUL;
|
||
}
|
||
|
||
/*
|
||
* Lookup the pair "char1", "char2" in the digraph tables.
|
||
* If no match, return "char2".
|
||
* If "meta" is TRUE and "char1" is a space, return "char2" | 0x80.
|
||
*/
|
||
static int
|
||
getexactdigraph(char1, char2, meta)
|
||
int char1;
|
||
int char2;
|
||
int meta;
|
||
{
|
||
int i;
|
||
int retval = 0;
|
||
digr_T *dp;
|
||
|
||
if (IS_SPECIAL(char1) || IS_SPECIAL(char2))
|
||
return char2;
|
||
|
||
/*
|
||
* Search user digraphs first.
|
||
*/
|
||
dp = (digr_T *)user_digraphs.ga_data;
|
||
for (i = 0; i < user_digraphs.ga_len; ++i)
|
||
{
|
||
if ((int)dp->char1 == char1 && (int)dp->char2 == char2)
|
||
{
|
||
retval = dp->result;
|
||
break;
|
||
}
|
||
++dp;
|
||
}
|
||
|
||
/*
|
||
* Search default digraphs.
|
||
*/
|
||
if (retval == 0)
|
||
{
|
||
dp = digraphdefault;
|
||
for (i = 0; dp->char1 != 0; ++i)
|
||
{
|
||
if ((int)dp->char1 == char1 && (int)dp->char2 == char2)
|
||
{
|
||
retval = dp->result;
|
||
break;
|
||
}
|
||
++dp;
|
||
}
|
||
}
|
||
#ifdef FEAT_MBYTE
|
||
# ifdef USE_UNICODE_DIGRAPHS
|
||
if (retval != 0 && !enc_utf8)
|
||
{
|
||
char_u buf[6], *to;
|
||
vimconv_T vc;
|
||
|
||
/*
|
||
* Convert the Unicode digraph to 'encoding'.
|
||
*/
|
||
i = utf_char2bytes(retval, buf);
|
||
retval = 0;
|
||
vc.vc_type = CONV_NONE;
|
||
if (convert_setup(&vc, (char_u *)"utf-8", p_enc) == OK)
|
||
{
|
||
vc.vc_fail = TRUE;
|
||
to = string_convert(&vc, buf, &i);
|
||
if (to != NULL)
|
||
{
|
||
retval = (*mb_ptr2char)(to);
|
||
vim_free(to);
|
||
}
|
||
(void)convert_setup(&vc, NULL, NULL);
|
||
}
|
||
}
|
||
# endif
|
||
|
||
/* Ignore multi-byte characters when not in multi-byte mode. */
|
||
if (!has_mbyte && retval > 0xff)
|
||
retval = 0;
|
||
#endif
|
||
|
||
if (retval == 0) /* digraph deleted or not found */
|
||
{
|
||
if (char1 == ' ' && meta) /* <space> <char> --> meta-char */
|
||
return (char2 | 0x80);
|
||
return char2;
|
||
}
|
||
return retval;
|
||
}
|
||
|
||
/*
|
||
* Get digraph.
|
||
* Allow for both char1-char2 and char2-char1
|
||
*/
|
||
int
|
||
getdigraph(char1, char2, meta)
|
||
int char1;
|
||
int char2;
|
||
int meta;
|
||
{
|
||
int retval;
|
||
|
||
if (((retval = getexactdigraph(char1, char2, meta)) == char2)
|
||
&& (char1 != char2)
|
||
&& ((retval = getexactdigraph(char2, char1, meta)) == char1))
|
||
return char2;
|
||
return retval;
|
||
}
|
||
|
||
/*
|
||
* Add the digraphs in the argument to the digraph table.
|
||
* format: {c1}{c2} char {c1}{c2} char ...
|
||
*/
|
||
void
|
||
putdigraph(str)
|
||
char_u *str;
|
||
{
|
||
int char1, char2, n;
|
||
int i;
|
||
digr_T *dp;
|
||
|
||
while (*str != NUL)
|
||
{
|
||
str = skipwhite(str);
|
||
if (*str == NUL)
|
||
return;
|
||
char1 = *str++;
|
||
char2 = *str++;
|
||
if (char2 == 0)
|
||
{
|
||
EMSG(_(e_invarg));
|
||
return;
|
||
}
|
||
if (char1 == ESC || char2 == ESC)
|
||
{
|
||
EMSG(_("E104: Escape not allowed in digraph"));
|
||
return;
|
||
}
|
||
str = skipwhite(str);
|
||
if (!VIM_ISDIGIT(*str))
|
||
{
|
||
EMSG(_(e_number_exp));
|
||
return;
|
||
}
|
||
n = getdigits(&str);
|
||
|
||
/* If the digraph already exists, replace the result. */
|
||
dp = (digr_T *)user_digraphs.ga_data;
|
||
for (i = 0; i < user_digraphs.ga_len; ++i)
|
||
{
|
||
if ((int)dp->char1 == char1 && (int)dp->char2 == char2)
|
||
{
|
||
dp->result = n;
|
||
break;
|
||
}
|
||
++dp;
|
||
}
|
||
|
||
/* Add a new digraph to the table. */
|
||
if (i == user_digraphs.ga_len)
|
||
{
|
||
if (ga_grow(&user_digraphs, 1) == OK)
|
||
{
|
||
dp = (digr_T *)user_digraphs.ga_data + user_digraphs.ga_len;
|
||
dp->char1 = char1;
|
||
dp->char2 = char2;
|
||
dp->result = n;
|
||
++user_digraphs.ga_len;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
void
|
||
listdigraphs()
|
||
{
|
||
int i;
|
||
digr_T *dp;
|
||
|
||
msg_putchar('\n');
|
||
|
||
dp = digraphdefault;
|
||
for (i = 0; dp->char1 != NUL && !got_int; ++i)
|
||
{
|
||
#if defined(USE_UNICODE_DIGRAPHS) && defined(FEAT_MBYTE)
|
||
digr_T tmp;
|
||
|
||
/* May need to convert the result to 'encoding'. */
|
||
tmp.char1 = dp->char1;
|
||
tmp.char2 = dp->char2;
|
||
tmp.result = getexactdigraph(tmp.char1, tmp.char2, FALSE);
|
||
if (tmp.result != 0 && tmp.result != tmp.char2
|
||
&& (has_mbyte || tmp.result <= 255))
|
||
printdigraph(&tmp);
|
||
#else
|
||
|
||
if (getexactdigraph(dp->char1, dp->char2, FALSE) == dp->result
|
||
# ifdef FEAT_MBYTE
|
||
&& (has_mbyte || dp->result <= 255)
|
||
# endif
|
||
)
|
||
printdigraph(dp);
|
||
#endif
|
||
++dp;
|
||
ui_breakcheck();
|
||
}
|
||
|
||
dp = (digr_T *)user_digraphs.ga_data;
|
||
for (i = 0; i < user_digraphs.ga_len && !got_int; ++i)
|
||
{
|
||
printdigraph(dp);
|
||
ui_breakcheck();
|
||
++dp;
|
||
}
|
||
must_redraw = CLEAR; /* clear screen, because some digraphs may be
|
||
wrong, in which case we messed up ScreenLines */
|
||
}
|
||
|
||
static void
|
||
printdigraph(dp)
|
||
digr_T *dp;
|
||
{
|
||
char_u buf[30];
|
||
char_u *p;
|
||
|
||
int list_width;
|
||
|
||
if ((dy_flags & DY_UHEX)
|
||
#ifdef FEAT_MBYTE
|
||
|| has_mbyte
|
||
#endif
|
||
)
|
||
list_width = 13;
|
||
else
|
||
list_width = 11;
|
||
|
||
if (dp->result != 0)
|
||
{
|
||
if (msg_col > Columns - list_width)
|
||
msg_putchar('\n');
|
||
if (msg_col)
|
||
while (msg_col % list_width != 0)
|
||
msg_putchar(' ');
|
||
|
||
p = buf;
|
||
*p++ = dp->char1;
|
||
*p++ = dp->char2;
|
||
*p++ = ' ';
|
||
#ifdef FEAT_MBYTE
|
||
if (has_mbyte)
|
||
{
|
||
/* add a space to draw a composing char on */
|
||
if (enc_utf8 && utf_iscomposing(dp->result))
|
||
*p++ = ' ';
|
||
p += (*mb_char2bytes)(dp->result, p);
|
||
}
|
||
else
|
||
#endif
|
||
*p++ = dp->result;
|
||
if (char2cells(dp->result) == 1)
|
||
*p++ = ' ';
|
||
sprintf((char *)p, " %3d", dp->result);
|
||
msg_outtrans(buf);
|
||
}
|
||
}
|
||
|
||
#endif /* FEAT_DIGRAPHS */
|
||
|
||
#if defined(FEAT_KEYMAP) || defined(PROTO)
|
||
|
||
/* structure used for b_kmap_ga.ga_data */
|
||
typedef struct
|
||
{
|
||
char_u *from;
|
||
char_u *to;
|
||
} kmap_T;
|
||
|
||
#define KMAP_MAXLEN 20 /* maximum length of "from" or "to" */
|
||
|
||
static void keymap_unload __ARGS((void));
|
||
|
||
/*
|
||
* Set up key mapping tables for the 'keymap' option
|
||
*/
|
||
char_u *
|
||
keymap_init()
|
||
{
|
||
curbuf->b_kmap_state &= ~KEYMAP_INIT;
|
||
|
||
if (*curbuf->b_p_keymap == NUL)
|
||
{
|
||
/* Stop any active keymap and clear the table. */
|
||
keymap_unload();
|
||
}
|
||
else
|
||
{
|
||
char_u *buf;
|
||
|
||
/* Source the keymap file. It will contain a ":loadkeymap" command
|
||
* which will call ex_loadkeymap() below. */
|
||
buf = alloc((unsigned)(STRLEN(curbuf->b_p_keymap)
|
||
# ifdef FEAT_MBYTE
|
||
+ STRLEN(p_enc)
|
||
# endif
|
||
+ 14));
|
||
if (buf == NULL)
|
||
return e_outofmem;
|
||
|
||
# ifdef FEAT_MBYTE
|
||
/* try finding "keymap/'keymap'_'encoding'.vim" in 'runtimepath' */
|
||
sprintf((char *)buf, "keymap/%s_%s.vim", curbuf->b_p_keymap, p_enc);
|
||
if (cmd_runtime(buf, FALSE) == FAIL)
|
||
# endif
|
||
{
|
||
/* try finding "keymap/'keymap'.vim" in 'runtimepath' */
|
||
sprintf((char *)buf, "keymap/%s.vim", curbuf->b_p_keymap);
|
||
if (cmd_runtime(buf, FALSE) == FAIL)
|
||
{
|
||
vim_free(buf);
|
||
return (char_u *)N_("E544: Keymap file not found");
|
||
}
|
||
}
|
||
vim_free(buf);
|
||
}
|
||
|
||
return NULL;
|
||
}
|
||
|
||
/*
|
||
* ":loadkeymap" command: load the following lines as the keymap.
|
||
*/
|
||
void
|
||
ex_loadkeymap(eap)
|
||
exarg_T *eap;
|
||
{
|
||
char_u *line;
|
||
char_u *p;
|
||
char_u *s;
|
||
kmap_T *kp;
|
||
#define KMAP_LLEN 200 /* max length of "to" and "from" together */
|
||
char_u buf[KMAP_LLEN + 11];
|
||
int i;
|
||
char_u *save_cpo = p_cpo;
|
||
|
||
if (!getline_equal(eap->getline, eap->cookie, getsourceline))
|
||
{
|
||
EMSG(_("E105: Using :loadkeymap not in a sourced file"));
|
||
return;
|
||
}
|
||
|
||
/*
|
||
* Stop any active keymap and clear the table.
|
||
*/
|
||
keymap_unload();
|
||
|
||
curbuf->b_kmap_state = 0;
|
||
ga_init2(&curbuf->b_kmap_ga, (int)sizeof(kmap_T), 20);
|
||
|
||
/* Set 'cpoptions' to "C" to avoid line continuation. */
|
||
p_cpo = (char_u *)"C";
|
||
|
||
/*
|
||
* Get each line of the sourced file, break at the end.
|
||
*/
|
||
for (;;)
|
||
{
|
||
line = eap->getline(0, eap->cookie, 0);
|
||
if (line == NULL)
|
||
break;
|
||
|
||
p = skipwhite(line);
|
||
if (*p != '"' && *p != NUL && ga_grow(&curbuf->b_kmap_ga, 1) == OK)
|
||
{
|
||
kp = (kmap_T *)curbuf->b_kmap_ga.ga_data + curbuf->b_kmap_ga.ga_len;
|
||
s = skiptowhite(p);
|
||
kp->from = vim_strnsave(p, (int)(s - p));
|
||
p = skipwhite(s);
|
||
s = skiptowhite(p);
|
||
kp->to = vim_strnsave(p, (int)(s - p));
|
||
|
||
if (kp->from == NULL || kp->to == NULL
|
||
|| STRLEN(kp->from) + STRLEN(kp->to) >= KMAP_LLEN)
|
||
{
|
||
vim_free(kp->from);
|
||
vim_free(kp->to);
|
||
}
|
||
else
|
||
++curbuf->b_kmap_ga.ga_len;
|
||
}
|
||
vim_free(line);
|
||
}
|
||
|
||
/*
|
||
* setup ":lnoremap" to map the keys
|
||
*/
|
||
for (i = 0; i < curbuf->b_kmap_ga.ga_len; ++i)
|
||
{
|
||
vim_snprintf((char *)buf, sizeof(buf), "<buffer> %s %s",
|
||
((kmap_T *)curbuf->b_kmap_ga.ga_data)[i].from,
|
||
((kmap_T *)curbuf->b_kmap_ga.ga_data)[i].to);
|
||
(void)do_map(2, buf, LANGMAP, FALSE);
|
||
}
|
||
|
||
p_cpo = save_cpo;
|
||
|
||
curbuf->b_kmap_state |= KEYMAP_LOADED;
|
||
#ifdef FEAT_WINDOWS
|
||
status_redraw_curbuf();
|
||
#endif
|
||
}
|
||
|
||
/*
|
||
* Stop using 'keymap'.
|
||
*/
|
||
static void
|
||
keymap_unload()
|
||
{
|
||
char_u buf[KMAP_MAXLEN + 10];
|
||
int i;
|
||
char_u *save_cpo = p_cpo;
|
||
|
||
if (!(curbuf->b_kmap_state & KEYMAP_LOADED))
|
||
return;
|
||
|
||
/* Set 'cpoptions' to "C" to avoid line continuation. */
|
||
p_cpo = (char_u *)"C";
|
||
|
||
/* clear the ":lmap"s */
|
||
for (i = 0; i < curbuf->b_kmap_ga.ga_len; ++i)
|
||
{
|
||
vim_snprintf((char *)buf, sizeof(buf), "<buffer> %s",
|
||
((kmap_T *)curbuf->b_kmap_ga.ga_data)[i].from);
|
||
(void)do_map(1, buf, LANGMAP, FALSE);
|
||
}
|
||
|
||
p_cpo = save_cpo;
|
||
|
||
ga_clear(&curbuf->b_kmap_ga);
|
||
curbuf->b_kmap_state &= ~KEYMAP_LOADED;
|
||
#ifdef FEAT_WINDOWS
|
||
status_redraw_curbuf();
|
||
#endif
|
||
}
|
||
|
||
#endif /* FEAT_KEYMAP */
|
||
|