1 /* vi:set ts=8 sts=4 sw=4 noet: 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 */ 8 9 /* 10 * Definitions of various common control characters. 11 * For EBCDIC we have to use different values. 12 */ 13 14 #ifndef EBCDIC 15 16 // IF_EB(ASCII_constant, EBCDIC_constant) 17 #define IF_EB(a, b) a 18 19 #define CharOrd(x) ((x) < 'a' ? (x) - 'A' : (x) - 'a') 20 #define CharOrdLow(x) ((x) - 'a') 21 #define CharOrdUp(x) ((x) - 'A') 22 #define ROT13(c, a) (((((c) - (a)) + 13) % 26) + (a)) 23 24 #define NUL '\000' 25 #define BELL '\007' 26 #define BS '\010' 27 #define TAB '\011' 28 #define NL '\012' 29 #define NL_STR (char_u *)"\012" 30 #define FF '\014' 31 #define CAR '\015' // CR is used by Mac OS X 32 #define ESC '\033' 33 #define ESC_STR (char_u *)"\033" 34 #define ESC_STR_nc "\033" 35 #define DEL 0x7f 36 #define DEL_STR (char_u *)"\177" 37 38 #define POUND 0xA3 39 40 #define Ctrl_chr(x) (TOUPPER_ASC(x) ^ 0x40) // '?' -> DEL, '@' -> ^@, etc. 41 #define Meta(x) ((x) | 0x80) 42 43 #define CTRL_F_STR "\006" 44 #define CTRL_H_STR "\010" 45 #define CTRL_V_STR "\026" 46 47 #define Ctrl_AT 0 // @ 48 #define Ctrl_A 1 49 #define Ctrl_B 2 50 #define Ctrl_C 3 51 #define Ctrl_D 4 52 #define Ctrl_E 5 53 #define Ctrl_F 6 54 #define Ctrl_G 7 55 #define Ctrl_H 8 56 #define Ctrl_I 9 57 #define Ctrl_J 10 58 #define Ctrl_K 11 59 #define Ctrl_L 12 60 #define Ctrl_M 13 61 #define Ctrl_N 14 62 #define Ctrl_O 15 63 #define Ctrl_P 16 64 #define Ctrl_Q 17 65 #define Ctrl_R 18 66 #define Ctrl_S 19 67 #define Ctrl_T 20 68 #define Ctrl_U 21 69 #define Ctrl_V 22 70 #define Ctrl_W 23 71 #define Ctrl_X 24 72 #define Ctrl_Y 25 73 #define Ctrl_Z 26 74 // CTRL- [ Left Square Bracket == ESC 75 #define Ctrl_BSL 28 // \ BackSLash 76 #define Ctrl_RSB 29 // ] Right Square Bracket 77 #define Ctrl_HAT 30 // ^ 78 #define Ctrl__ 31 79 80 #else 81 82 // EBCDIC 83 84 // IF_EB(ASCII_constant, EBCDIC_constant) 85 #define IF_EB(a, b) b 86 87 /* 88 * Finding the position in the alphabet is not straightforward in EBCDIC. 89 * There are gaps in the code table. 90 * 'a' + 1 == 'b', but: 'i' + 7 == 'j' and 'r' + 8 == 's' 91 */ 92 #define CharOrd__(c) ((c) < ('j' - 'a') ? (c) : ((c) < ('s' - 'a') ? (c) - 7 : (c) - 7 - 8)) 93 #define CharOrdLow(x) (CharOrd__((x) - 'a')) 94 #define CharOrdUp(x) (CharOrd__((x) - 'A')) 95 #define CharOrd(x) (isupper(x) ? CharOrdUp(x) : CharOrdLow(x)) 96 97 #define EBCDIC_CHAR_ADD_(x) ((x) < 0?'a':(x)>25?'z':"abcdefghijklmnopqrstuvwxyz"[x]) 98 #define EBCDIC_CHAR_ADD(c,s) (isupper(c) ? toupper(EBCDIC_CHAR_ADD_(CharOrdUp(c)+(s))) : EBCDIC_CHAR_ADD_(CharOrdLow(c)+(s))) 99 100 #define R13_(c) ("abcdefghijklmnopqrstuvwxyz"[((c) + 13) % 26]) 101 #define ROT13(c, a) (isupper(c) ? toupper(R13_(CharOrdUp(c))) : R13_(CharOrdLow(c))) 102 103 #define NUL '\000' 104 #define BELL '\x2f' 105 #define BS '\x16' 106 #define TAB '\x05' 107 #define NL '\x15' 108 #define NL_STR (char_u *)"\x15" 109 #define FF '\x0C' 110 #define CAR '\x0D' 111 #define ESC '\x27' 112 #define ESC_STR (char_u *)"\x27" 113 #define ESC_STR_nc "\x27" 114 #define DEL 0x07 115 #define DEL_STR (char_u *)"\007" 116 117 #define POUND 0xB1 118 119 #define CTRL_F_STR "\056" 120 #define CTRL_H_STR "\026" 121 #define CTRL_V_STR "\062" 122 123 #define Ctrl_AT 0x00 // @ 124 #define Ctrl_A 0x01 125 #define Ctrl_B 0x02 126 #define Ctrl_C 0x03 127 #define Ctrl_D 0x37 128 #define Ctrl_E 0x2D 129 #define Ctrl_F 0x2E 130 #define Ctrl_G 0x2F 131 #define Ctrl_H 0x16 132 #define Ctrl_I 0x05 133 #define Ctrl_J 0x15 134 #define Ctrl_K 0x0B 135 #define Ctrl_L 0x0C 136 #define Ctrl_M 0x0D 137 #define Ctrl_N 0x0E 138 #define Ctrl_O 0x0F 139 #define Ctrl_P 0x10 140 #define Ctrl_Q 0x11 141 #define Ctrl_R 0x12 142 #define Ctrl_S 0x13 143 #define Ctrl_T 0x3C 144 #define Ctrl_U 0x3D 145 #define Ctrl_V 0x32 146 #define Ctrl_W 0x26 147 #define Ctrl_X 0x18 148 #define Ctrl_Y 0x19 149 #define Ctrl_Z 0x3F 150 // CTRL- [ Left Square Bracket == ESC 151 #define Ctrl_RSB 0x1D // ] Right Square Bracket 152 #define Ctrl_BSL 0x1C // \ BackSLash 153 #define Ctrl_HAT 0x1E // ^ 154 #define Ctrl__ 0x1F 155 156 #define Ctrl_chr(x) (CtrlTable[(x)]) 157 extern char CtrlTable[]; 158 159 #define CtrlChar(x) ((x < ' ') ? CtrlCharTable[(x)] : 0) 160 extern char CtrlCharTable[]; 161 162 #define MetaChar(x) ((x < ' ') ? MetaCharTable[(x)] : 0) 163 extern char MetaCharTable[]; 164 165 #endif // defined EBCDIC 166 167 // TODO: EBCDIC Code page dependent (here 1047) 168 #define CSI 0x9b // Control Sequence Introducer 169 #define CSI_STR "\233" 170 #define DCS 0x90 // Device Control String 171 #define OSC 0x9d // Operating System Command 172 #define STERM 0x9c // String Terminator 173 174 /* 175 * Character that separates dir names in a path. 176 * For MS-DOS, WIN32 and OS/2 we use a backslash. A slash mostly works 177 * fine, but there are places where it doesn't (e.g. in a command name). 178 * For Acorn we use a dot. 179 */ 180 #ifdef BACKSLASH_IN_FILENAME 181 # define PATHSEP psepc 182 # define PATHSEPSTR pseps 183 #else 184 # define PATHSEP '/' 185 # define PATHSEPSTR "/" 186 #endif 187