1 |
|
|
/* $OpenBSD: map.c,v 1.27 2016/05/06 13:12:52 schwarze Exp $ */ |
2 |
|
|
/* $NetBSD: map.c,v 1.25 2009/12/30 22:37:40 christos Exp $ */ |
3 |
|
|
|
4 |
|
|
/*- |
5 |
|
|
* Copyright (c) 1992, 1993 |
6 |
|
|
* The Regents of the University of California. All rights reserved. |
7 |
|
|
* |
8 |
|
|
* This code is derived from software contributed to Berkeley by |
9 |
|
|
* Christos Zoulas of Cornell University. |
10 |
|
|
* |
11 |
|
|
* Redistribution and use in source and binary forms, with or without |
12 |
|
|
* modification, are permitted provided that the following conditions |
13 |
|
|
* are met: |
14 |
|
|
* 1. Redistributions of source code must retain the above copyright |
15 |
|
|
* notice, this list of conditions and the following disclaimer. |
16 |
|
|
* 2. Redistributions in binary form must reproduce the above copyright |
17 |
|
|
* notice, this list of conditions and the following disclaimer in the |
18 |
|
|
* documentation and/or other materials provided with the distribution. |
19 |
|
|
* 3. Neither the name of the University nor the names of its contributors |
20 |
|
|
* may be used to endorse or promote products derived from this software |
21 |
|
|
* without specific prior written permission. |
22 |
|
|
* |
23 |
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
24 |
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
25 |
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
26 |
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
27 |
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
28 |
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
29 |
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
30 |
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
31 |
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
32 |
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
33 |
|
|
* SUCH DAMAGE. |
34 |
|
|
*/ |
35 |
|
|
|
36 |
|
|
#include "config.h" |
37 |
|
|
|
38 |
|
|
/* |
39 |
|
|
* map.c: Editor function definitions |
40 |
|
|
*/ |
41 |
|
|
#include <ctype.h> |
42 |
|
|
#include <stdlib.h> |
43 |
|
|
#include <string.h> |
44 |
|
|
|
45 |
|
|
#include "el.h" |
46 |
|
|
#include "common.h" |
47 |
|
|
#include "emacs.h" |
48 |
|
|
#include "vi.h" |
49 |
|
|
#include "fcns.h" |
50 |
|
|
#include "func.h" |
51 |
|
|
#include "help.h" |
52 |
|
|
#include "parse.h" |
53 |
|
|
|
54 |
|
|
static void map_print_key(EditLine *, el_action_t *, const wchar_t *); |
55 |
|
|
static void map_print_some_keys(EditLine *, el_action_t *, wint_t, wint_t); |
56 |
|
|
static void map_print_all_keys(EditLine *); |
57 |
|
|
static void map_init_nls(EditLine *); |
58 |
|
|
static void map_init_meta(EditLine *); |
59 |
|
|
|
60 |
|
|
/* keymap tables ; should be N_KEYS*sizeof(KEYCMD) bytes long */ |
61 |
|
|
|
62 |
|
|
|
63 |
|
|
static const el_action_t el_map_emacs[] = { |
64 |
|
|
/* 0 */ EM_SET_MARK, /* ^@ */ |
65 |
|
|
/* 1 */ ED_MOVE_TO_BEG, /* ^A */ |
66 |
|
|
/* 2 */ ED_PREV_CHAR, /* ^B */ |
67 |
|
|
/* 3 */ ED_IGNORE, /* ^C */ |
68 |
|
|
/* 4 */ EM_DELETE_OR_LIST, /* ^D */ |
69 |
|
|
/* 5 */ ED_MOVE_TO_END, /* ^E */ |
70 |
|
|
/* 6 */ ED_NEXT_CHAR, /* ^F */ |
71 |
|
|
/* 7 */ ED_UNASSIGNED, /* ^G */ |
72 |
|
|
/* 8 */ EM_DELETE_PREV_CHAR, /* ^H */ |
73 |
|
|
/* 9 */ ED_UNASSIGNED, /* ^I */ |
74 |
|
|
/* 10 */ ED_NEWLINE, /* ^J */ |
75 |
|
|
/* 11 */ ED_KILL_LINE, /* ^K */ |
76 |
|
|
/* 12 */ ED_CLEAR_SCREEN, /* ^L */ |
77 |
|
|
/* 13 */ ED_NEWLINE, /* ^M */ |
78 |
|
|
/* 14 */ ED_NEXT_HISTORY, /* ^N */ |
79 |
|
|
/* 15 */ ED_IGNORE, /* ^O */ |
80 |
|
|
/* 16 */ ED_PREV_HISTORY, /* ^P */ |
81 |
|
|
/* 17 */ ED_IGNORE, /* ^Q */ |
82 |
|
|
/* 18 */ ED_REDISPLAY, /* ^R */ |
83 |
|
|
/* 19 */ ED_IGNORE, /* ^S */ |
84 |
|
|
/* 20 */ ED_TRANSPOSE_CHARS, /* ^T */ |
85 |
|
|
/* 21 */ EM_KILL_LINE, /* ^U */ |
86 |
|
|
/* 22 */ ED_QUOTED_INSERT, /* ^V */ |
87 |
|
|
/* 23 */ EM_KILL_REGION, /* ^W */ |
88 |
|
|
/* 24 */ ED_SEQUENCE_LEAD_IN, /* ^X */ |
89 |
|
|
/* 25 */ EM_YANK, /* ^Y */ |
90 |
|
|
/* 26 */ ED_IGNORE, /* ^Z */ |
91 |
|
|
/* 27 */ EM_META_NEXT, /* ^[ */ |
92 |
|
|
/* 28 */ ED_IGNORE, /* ^\ */ |
93 |
|
|
/* 29 */ ED_IGNORE, /* ^] */ |
94 |
|
|
/* 30 */ ED_UNASSIGNED, /* ^^ */ |
95 |
|
|
/* 31 */ ED_UNASSIGNED, /* ^_ */ |
96 |
|
|
/* 32 */ ED_INSERT, /* SPACE */ |
97 |
|
|
/* 33 */ ED_INSERT, /* ! */ |
98 |
|
|
/* 34 */ ED_INSERT, /* " */ |
99 |
|
|
/* 35 */ ED_INSERT, /* # */ |
100 |
|
|
/* 36 */ ED_INSERT, /* $ */ |
101 |
|
|
/* 37 */ ED_INSERT, /* % */ |
102 |
|
|
/* 38 */ ED_INSERT, /* & */ |
103 |
|
|
/* 39 */ ED_INSERT, /* ' */ |
104 |
|
|
/* 40 */ ED_INSERT, /* ( */ |
105 |
|
|
/* 41 */ ED_INSERT, /* ) */ |
106 |
|
|
/* 42 */ ED_INSERT, /* * */ |
107 |
|
|
/* 43 */ ED_INSERT, /* + */ |
108 |
|
|
/* 44 */ ED_INSERT, /* , */ |
109 |
|
|
/* 45 */ ED_INSERT, /* - */ |
110 |
|
|
/* 46 */ ED_INSERT, /* . */ |
111 |
|
|
/* 47 */ ED_INSERT, /* / */ |
112 |
|
|
/* 48 */ ED_DIGIT, /* 0 */ |
113 |
|
|
/* 49 */ ED_DIGIT, /* 1 */ |
114 |
|
|
/* 50 */ ED_DIGIT, /* 2 */ |
115 |
|
|
/* 51 */ ED_DIGIT, /* 3 */ |
116 |
|
|
/* 52 */ ED_DIGIT, /* 4 */ |
117 |
|
|
/* 53 */ ED_DIGIT, /* 5 */ |
118 |
|
|
/* 54 */ ED_DIGIT, /* 6 */ |
119 |
|
|
/* 55 */ ED_DIGIT, /* 7 */ |
120 |
|
|
/* 56 */ ED_DIGIT, /* 8 */ |
121 |
|
|
/* 57 */ ED_DIGIT, /* 9 */ |
122 |
|
|
/* 58 */ ED_INSERT, /* : */ |
123 |
|
|
/* 59 */ ED_INSERT, /* ; */ |
124 |
|
|
/* 60 */ ED_INSERT, /* < */ |
125 |
|
|
/* 61 */ ED_INSERT, /* = */ |
126 |
|
|
/* 62 */ ED_INSERT, /* > */ |
127 |
|
|
/* 63 */ ED_INSERT, /* ? */ |
128 |
|
|
/* 64 */ ED_INSERT, /* @ */ |
129 |
|
|
/* 65 */ ED_INSERT, /* A */ |
130 |
|
|
/* 66 */ ED_INSERT, /* B */ |
131 |
|
|
/* 67 */ ED_INSERT, /* C */ |
132 |
|
|
/* 68 */ ED_INSERT, /* D */ |
133 |
|
|
/* 69 */ ED_INSERT, /* E */ |
134 |
|
|
/* 70 */ ED_INSERT, /* F */ |
135 |
|
|
/* 71 */ ED_INSERT, /* G */ |
136 |
|
|
/* 72 */ ED_INSERT, /* H */ |
137 |
|
|
/* 73 */ ED_INSERT, /* I */ |
138 |
|
|
/* 74 */ ED_INSERT, /* J */ |
139 |
|
|
/* 75 */ ED_INSERT, /* K */ |
140 |
|
|
/* 76 */ ED_INSERT, /* L */ |
141 |
|
|
/* 77 */ ED_INSERT, /* M */ |
142 |
|
|
/* 78 */ ED_INSERT, /* N */ |
143 |
|
|
/* 79 */ ED_INSERT, /* O */ |
144 |
|
|
/* 80 */ ED_INSERT, /* P */ |
145 |
|
|
/* 81 */ ED_INSERT, /* Q */ |
146 |
|
|
/* 82 */ ED_INSERT, /* R */ |
147 |
|
|
/* 83 */ ED_INSERT, /* S */ |
148 |
|
|
/* 84 */ ED_INSERT, /* T */ |
149 |
|
|
/* 85 */ ED_INSERT, /* U */ |
150 |
|
|
/* 86 */ ED_INSERT, /* V */ |
151 |
|
|
/* 87 */ ED_INSERT, /* W */ |
152 |
|
|
/* 88 */ ED_INSERT, /* X */ |
153 |
|
|
/* 89 */ ED_INSERT, /* Y */ |
154 |
|
|
/* 90 */ ED_INSERT, /* Z */ |
155 |
|
|
/* 91 */ ED_INSERT, /* [ */ |
156 |
|
|
/* 92 */ ED_INSERT, /* \ */ |
157 |
|
|
/* 93 */ ED_INSERT, /* ] */ |
158 |
|
|
/* 94 */ ED_INSERT, /* ^ */ |
159 |
|
|
/* 95 */ ED_INSERT, /* _ */ |
160 |
|
|
/* 96 */ ED_INSERT, /* ` */ |
161 |
|
|
/* 97 */ ED_INSERT, /* a */ |
162 |
|
|
/* 98 */ ED_INSERT, /* b */ |
163 |
|
|
/* 99 */ ED_INSERT, /* c */ |
164 |
|
|
/* 100 */ ED_INSERT, /* d */ |
165 |
|
|
/* 101 */ ED_INSERT, /* e */ |
166 |
|
|
/* 102 */ ED_INSERT, /* f */ |
167 |
|
|
/* 103 */ ED_INSERT, /* g */ |
168 |
|
|
/* 104 */ ED_INSERT, /* h */ |
169 |
|
|
/* 105 */ ED_INSERT, /* i */ |
170 |
|
|
/* 106 */ ED_INSERT, /* j */ |
171 |
|
|
/* 107 */ ED_INSERT, /* k */ |
172 |
|
|
/* 108 */ ED_INSERT, /* l */ |
173 |
|
|
/* 109 */ ED_INSERT, /* m */ |
174 |
|
|
/* 110 */ ED_INSERT, /* n */ |
175 |
|
|
/* 111 */ ED_INSERT, /* o */ |
176 |
|
|
/* 112 */ ED_INSERT, /* p */ |
177 |
|
|
/* 113 */ ED_INSERT, /* q */ |
178 |
|
|
/* 114 */ ED_INSERT, /* r */ |
179 |
|
|
/* 115 */ ED_INSERT, /* s */ |
180 |
|
|
/* 116 */ ED_INSERT, /* t */ |
181 |
|
|
/* 117 */ ED_INSERT, /* u */ |
182 |
|
|
/* 118 */ ED_INSERT, /* v */ |
183 |
|
|
/* 119 */ ED_INSERT, /* w */ |
184 |
|
|
/* 120 */ ED_INSERT, /* x */ |
185 |
|
|
/* 121 */ ED_INSERT, /* y */ |
186 |
|
|
/* 122 */ ED_INSERT, /* z */ |
187 |
|
|
/* 123 */ ED_INSERT, /* { */ |
188 |
|
|
/* 124 */ ED_INSERT, /* | */ |
189 |
|
|
/* 125 */ ED_INSERT, /* } */ |
190 |
|
|
/* 126 */ ED_INSERT, /* ~ */ |
191 |
|
|
/* 127 */ EM_DELETE_PREV_CHAR, /* ^? */ |
192 |
|
|
/* 128 */ ED_UNASSIGNED, /* M-^@ */ |
193 |
|
|
/* 129 */ ED_UNASSIGNED, /* M-^A */ |
194 |
|
|
/* 130 */ ED_UNASSIGNED, /* M-^B */ |
195 |
|
|
/* 131 */ ED_UNASSIGNED, /* M-^C */ |
196 |
|
|
/* 132 */ ED_UNASSIGNED, /* M-^D */ |
197 |
|
|
/* 133 */ ED_UNASSIGNED, /* M-^E */ |
198 |
|
|
/* 134 */ ED_UNASSIGNED, /* M-^F */ |
199 |
|
|
/* 135 */ ED_UNASSIGNED, /* M-^G */ |
200 |
|
|
/* 136 */ ED_DELETE_PREV_WORD, /* M-^H */ |
201 |
|
|
/* 137 */ ED_UNASSIGNED, /* M-^I */ |
202 |
|
|
/* 138 */ ED_UNASSIGNED, /* M-^J */ |
203 |
|
|
/* 139 */ ED_UNASSIGNED, /* M-^K */ |
204 |
|
|
/* 140 */ ED_CLEAR_SCREEN, /* M-^L */ |
205 |
|
|
/* 141 */ ED_UNASSIGNED, /* M-^M */ |
206 |
|
|
/* 142 */ ED_UNASSIGNED, /* M-^N */ |
207 |
|
|
/* 143 */ ED_UNASSIGNED, /* M-^O */ |
208 |
|
|
/* 144 */ ED_UNASSIGNED, /* M-^P */ |
209 |
|
|
/* 145 */ ED_UNASSIGNED, /* M-^Q */ |
210 |
|
|
/* 146 */ ED_UNASSIGNED, /* M-^R */ |
211 |
|
|
/* 147 */ ED_UNASSIGNED, /* M-^S */ |
212 |
|
|
/* 148 */ ED_UNASSIGNED, /* M-^T */ |
213 |
|
|
/* 149 */ ED_UNASSIGNED, /* M-^U */ |
214 |
|
|
/* 150 */ ED_UNASSIGNED, /* M-^V */ |
215 |
|
|
/* 151 */ ED_UNASSIGNED, /* M-^W */ |
216 |
|
|
/* 152 */ ED_UNASSIGNED, /* M-^X */ |
217 |
|
|
/* 153 */ ED_UNASSIGNED, /* M-^Y */ |
218 |
|
|
/* 154 */ ED_UNASSIGNED, /* M-^Z */ |
219 |
|
|
/* 155 */ ED_UNASSIGNED, /* M-^[ */ |
220 |
|
|
/* 156 */ ED_UNASSIGNED, /* M-^\ */ |
221 |
|
|
/* 157 */ ED_UNASSIGNED, /* M-^] */ |
222 |
|
|
/* 158 */ ED_UNASSIGNED, /* M-^^ */ |
223 |
|
|
/* 159 */ EM_COPY_PREV_WORD, /* M-^_ */ |
224 |
|
|
/* 160 */ ED_UNASSIGNED, /* M-SPACE */ |
225 |
|
|
/* 161 */ ED_UNASSIGNED, /* M-! */ |
226 |
|
|
/* 162 */ ED_UNASSIGNED, /* M-" */ |
227 |
|
|
/* 163 */ ED_UNASSIGNED, /* M-# */ |
228 |
|
|
/* 164 */ ED_UNASSIGNED, /* M-$ */ |
229 |
|
|
/* 165 */ ED_UNASSIGNED, /* M-% */ |
230 |
|
|
/* 166 */ ED_UNASSIGNED, /* M-& */ |
231 |
|
|
/* 167 */ ED_UNASSIGNED, /* M-' */ |
232 |
|
|
/* 168 */ ED_UNASSIGNED, /* M-( */ |
233 |
|
|
/* 169 */ ED_UNASSIGNED, /* M-) */ |
234 |
|
|
/* 170 */ ED_UNASSIGNED, /* M-* */ |
235 |
|
|
/* 171 */ ED_UNASSIGNED, /* M-+ */ |
236 |
|
|
/* 172 */ ED_UNASSIGNED, /* M-, */ |
237 |
|
|
/* 173 */ ED_UNASSIGNED, /* M-- */ |
238 |
|
|
/* 174 */ ED_UNASSIGNED, /* M-. */ |
239 |
|
|
/* 175 */ ED_UNASSIGNED, /* M-/ */ |
240 |
|
|
/* 176 */ ED_ARGUMENT_DIGIT, /* M-0 */ |
241 |
|
|
/* 177 */ ED_ARGUMENT_DIGIT, /* M-1 */ |
242 |
|
|
/* 178 */ ED_ARGUMENT_DIGIT, /* M-2 */ |
243 |
|
|
/* 179 */ ED_ARGUMENT_DIGIT, /* M-3 */ |
244 |
|
|
/* 180 */ ED_ARGUMENT_DIGIT, /* M-4 */ |
245 |
|
|
/* 181 */ ED_ARGUMENT_DIGIT, /* M-5 */ |
246 |
|
|
/* 182 */ ED_ARGUMENT_DIGIT, /* M-6 */ |
247 |
|
|
/* 183 */ ED_ARGUMENT_DIGIT, /* M-7 */ |
248 |
|
|
/* 184 */ ED_ARGUMENT_DIGIT, /* M-8 */ |
249 |
|
|
/* 185 */ ED_ARGUMENT_DIGIT, /* M-9 */ |
250 |
|
|
/* 186 */ ED_UNASSIGNED, /* M-: */ |
251 |
|
|
/* 187 */ ED_UNASSIGNED, /* M-; */ |
252 |
|
|
/* 188 */ ED_UNASSIGNED, /* M-< */ |
253 |
|
|
/* 189 */ ED_UNASSIGNED, /* M-= */ |
254 |
|
|
/* 190 */ ED_UNASSIGNED, /* M-> */ |
255 |
|
|
/* 191 */ ED_UNASSIGNED, /* M-? */ |
256 |
|
|
/* 192 */ ED_UNASSIGNED, /* M-@ */ |
257 |
|
|
/* 193 */ ED_UNASSIGNED, /* M-A */ |
258 |
|
|
/* 194 */ ED_PREV_WORD, /* M-B */ |
259 |
|
|
/* 195 */ EM_CAPITOL_CASE, /* M-C */ |
260 |
|
|
/* 196 */ EM_DELETE_NEXT_WORD, /* M-D */ |
261 |
|
|
/* 197 */ ED_UNASSIGNED, /* M-E */ |
262 |
|
|
/* 198 */ EM_NEXT_WORD, /* M-F */ |
263 |
|
|
/* 199 */ ED_UNASSIGNED, /* M-G */ |
264 |
|
|
/* 200 */ ED_UNASSIGNED, /* M-H */ |
265 |
|
|
/* 201 */ ED_UNASSIGNED, /* M-I */ |
266 |
|
|
/* 202 */ ED_UNASSIGNED, /* M-J */ |
267 |
|
|
/* 203 */ ED_UNASSIGNED, /* M-K */ |
268 |
|
|
/* 204 */ EM_LOWER_CASE, /* M-L */ |
269 |
|
|
/* 205 */ ED_UNASSIGNED, /* M-M */ |
270 |
|
|
/* 206 */ ED_SEARCH_NEXT_HISTORY, /* M-N */ |
271 |
|
|
/* 207 */ ED_SEQUENCE_LEAD_IN, /* M-O */ |
272 |
|
|
/* 208 */ ED_SEARCH_PREV_HISTORY, /* M-P */ |
273 |
|
|
/* 209 */ ED_UNASSIGNED, /* M-Q */ |
274 |
|
|
/* 210 */ ED_UNASSIGNED, /* M-R */ |
275 |
|
|
/* 211 */ ED_UNASSIGNED, /* M-S */ |
276 |
|
|
/* 212 */ ED_UNASSIGNED, /* M-T */ |
277 |
|
|
/* 213 */ EM_UPPER_CASE, /* M-U */ |
278 |
|
|
/* 214 */ ED_UNASSIGNED, /* M-V */ |
279 |
|
|
/* 215 */ EM_COPY_REGION, /* M-W */ |
280 |
|
|
/* 216 */ ED_COMMAND, /* M-X */ |
281 |
|
|
/* 217 */ ED_UNASSIGNED, /* M-Y */ |
282 |
|
|
/* 218 */ ED_UNASSIGNED, /* M-Z */ |
283 |
|
|
/* 219 */ ED_SEQUENCE_LEAD_IN, /* M-[ */ |
284 |
|
|
/* 220 */ ED_UNASSIGNED, /* M-\ */ |
285 |
|
|
/* 221 */ ED_UNASSIGNED, /* M-] */ |
286 |
|
|
/* 222 */ ED_UNASSIGNED, /* M-^ */ |
287 |
|
|
/* 223 */ ED_UNASSIGNED, /* M-_ */ |
288 |
|
|
/* 223 */ ED_UNASSIGNED, /* M-` */ |
289 |
|
|
/* 224 */ ED_UNASSIGNED, /* M-a */ |
290 |
|
|
/* 225 */ ED_PREV_WORD, /* M-b */ |
291 |
|
|
/* 226 */ EM_CAPITOL_CASE, /* M-c */ |
292 |
|
|
/* 227 */ EM_DELETE_NEXT_WORD, /* M-d */ |
293 |
|
|
/* 228 */ ED_UNASSIGNED, /* M-e */ |
294 |
|
|
/* 229 */ EM_NEXT_WORD, /* M-f */ |
295 |
|
|
/* 230 */ ED_UNASSIGNED, /* M-g */ |
296 |
|
|
/* 231 */ ED_UNASSIGNED, /* M-h */ |
297 |
|
|
/* 232 */ ED_UNASSIGNED, /* M-i */ |
298 |
|
|
/* 233 */ ED_UNASSIGNED, /* M-j */ |
299 |
|
|
/* 234 */ ED_UNASSIGNED, /* M-k */ |
300 |
|
|
/* 235 */ EM_LOWER_CASE, /* M-l */ |
301 |
|
|
/* 236 */ ED_UNASSIGNED, /* M-m */ |
302 |
|
|
/* 237 */ ED_SEARCH_NEXT_HISTORY, /* M-n */ |
303 |
|
|
/* 238 */ ED_UNASSIGNED, /* M-o */ |
304 |
|
|
/* 239 */ ED_SEARCH_PREV_HISTORY, /* M-p */ |
305 |
|
|
/* 240 */ ED_UNASSIGNED, /* M-q */ |
306 |
|
|
/* 241 */ ED_UNASSIGNED, /* M-r */ |
307 |
|
|
/* 242 */ ED_UNASSIGNED, /* M-s */ |
308 |
|
|
/* 243 */ ED_UNASSIGNED, /* M-t */ |
309 |
|
|
/* 244 */ EM_UPPER_CASE, /* M-u */ |
310 |
|
|
/* 245 */ ED_UNASSIGNED, /* M-v */ |
311 |
|
|
/* 246 */ EM_COPY_REGION, /* M-w */ |
312 |
|
|
/* 247 */ ED_COMMAND, /* M-x */ |
313 |
|
|
/* 248 */ ED_UNASSIGNED, /* M-y */ |
314 |
|
|
/* 249 */ ED_UNASSIGNED, /* M-z */ |
315 |
|
|
/* 250 */ ED_UNASSIGNED, /* M-{ */ |
316 |
|
|
/* 251 */ ED_UNASSIGNED, /* M-| */ |
317 |
|
|
/* 252 */ ED_UNASSIGNED, /* M-} */ |
318 |
|
|
/* 253 */ ED_UNASSIGNED, /* M-~ */ |
319 |
|
|
/* 254 */ ED_DELETE_PREV_WORD /* M-^? */ |
320 |
|
|
/* 255 */ |
321 |
|
|
}; |
322 |
|
|
|
323 |
|
|
|
324 |
|
|
/* |
325 |
|
|
* keymap table for vi. Each index into above tbl; should be |
326 |
|
|
* N_KEYS entries long. Vi mode uses a sticky-extend to do command mode: |
327 |
|
|
* insert mode characters are in the normal keymap, and command mode |
328 |
|
|
* in the extended keymap. |
329 |
|
|
*/ |
330 |
|
|
static const el_action_t el_map_vi_insert[] = { |
331 |
|
|
#ifdef KSHVI |
332 |
|
|
/* 0 */ ED_UNASSIGNED, /* ^@ */ |
333 |
|
|
/* 1 */ ED_INSERT, /* ^A */ |
334 |
|
|
/* 2 */ ED_INSERT, /* ^B */ |
335 |
|
|
/* 3 */ ED_INSERT, /* ^C */ |
336 |
|
|
/* 4 */ VI_LIST_OR_EOF, /* ^D */ |
337 |
|
|
/* 5 */ ED_INSERT, /* ^E */ |
338 |
|
|
/* 6 */ ED_INSERT, /* ^F */ |
339 |
|
|
/* 7 */ ED_INSERT, /* ^G */ |
340 |
|
|
/* 8 */ VI_DELETE_PREV_CHAR, /* ^H */ /* BackSpace key */ |
341 |
|
|
/* 9 */ ED_INSERT, /* ^I */ /* Tab Key */ |
342 |
|
|
/* 10 */ ED_NEWLINE, /* ^J */ |
343 |
|
|
/* 11 */ ED_INSERT, /* ^K */ |
344 |
|
|
/* 12 */ ED_INSERT, /* ^L */ |
345 |
|
|
/* 13 */ ED_NEWLINE, /* ^M */ |
346 |
|
|
/* 14 */ ED_INSERT, /* ^N */ |
347 |
|
|
/* 15 */ ED_INSERT, /* ^O */ |
348 |
|
|
/* 16 */ ED_INSERT, /* ^P */ |
349 |
|
|
/* 17 */ ED_IGNORE, /* ^Q */ |
350 |
|
|
/* 18 */ ED_INSERT, /* ^R */ |
351 |
|
|
/* 19 */ ED_IGNORE, /* ^S */ |
352 |
|
|
/* 20 */ ED_INSERT, /* ^T */ |
353 |
|
|
/* 21 */ VI_KILL_LINE_PREV, /* ^U */ |
354 |
|
|
/* 22 */ ED_QUOTED_INSERT, /* ^V */ |
355 |
|
|
/* 23 */ ED_DELETE_PREV_WORD, /* ^W */ |
356 |
|
|
/* ED_DELETE_PREV_WORD: Only until strt edit pos */ |
357 |
|
|
/* 24 */ ED_INSERT, /* ^X */ |
358 |
|
|
/* 25 */ ED_INSERT, /* ^Y */ |
359 |
|
|
/* 26 */ ED_INSERT, /* ^Z */ |
360 |
|
|
/* 27 */ VI_COMMAND_MODE, /* ^[ */ /* [ Esc ] key */ |
361 |
|
|
/* 28 */ ED_IGNORE, /* ^\ */ |
362 |
|
|
/* 29 */ ED_INSERT, /* ^] */ |
363 |
|
|
/* 30 */ ED_INSERT, /* ^^ */ |
364 |
|
|
/* 31 */ ED_INSERT, /* ^_ */ |
365 |
|
|
#else /* !KSHVI */ |
366 |
|
|
/* |
367 |
|
|
* NOTE: These mappings do NOT Correspond well |
368 |
|
|
* to the KSH VI editing assignments. |
369 |
|
|
* On the other and they are convenient and |
370 |
|
|
* many people have have gotten used to them. |
371 |
|
|
*/ |
372 |
|
|
/* 0 */ ED_UNASSIGNED, /* ^@ */ |
373 |
|
|
/* 1 */ ED_MOVE_TO_BEG, /* ^A */ |
374 |
|
|
/* 2 */ ED_PREV_CHAR, /* ^B */ |
375 |
|
|
/* 3 */ ED_IGNORE, /* ^C */ |
376 |
|
|
/* 4 */ VI_LIST_OR_EOF, /* ^D */ |
377 |
|
|
/* 5 */ ED_MOVE_TO_END, /* ^E */ |
378 |
|
|
/* 6 */ ED_NEXT_CHAR, /* ^F */ |
379 |
|
|
/* 7 */ ED_UNASSIGNED, /* ^G */ |
380 |
|
|
/* 8 */ VI_DELETE_PREV_CHAR, /* ^H */ /* BackSpace key */ |
381 |
|
|
/* 9 */ ED_UNASSIGNED, /* ^I */ /* Tab Key */ |
382 |
|
|
/* 10 */ ED_NEWLINE, /* ^J */ |
383 |
|
|
/* 11 */ ED_KILL_LINE, /* ^K */ |
384 |
|
|
/* 12 */ ED_CLEAR_SCREEN, /* ^L */ |
385 |
|
|
/* 13 */ ED_NEWLINE, /* ^M */ |
386 |
|
|
/* 14 */ ED_NEXT_HISTORY, /* ^N */ |
387 |
|
|
/* 15 */ ED_IGNORE, /* ^O */ |
388 |
|
|
/* 16 */ ED_PREV_HISTORY, /* ^P */ |
389 |
|
|
/* 17 */ ED_IGNORE, /* ^Q */ |
390 |
|
|
/* 18 */ ED_REDISPLAY, /* ^R */ |
391 |
|
|
/* 19 */ ED_IGNORE, /* ^S */ |
392 |
|
|
/* 20 */ ED_TRANSPOSE_CHARS, /* ^T */ |
393 |
|
|
/* 21 */ VI_KILL_LINE_PREV, /* ^U */ |
394 |
|
|
/* 22 */ ED_QUOTED_INSERT, /* ^V */ |
395 |
|
|
/* 23 */ ED_DELETE_PREV_WORD, /* ^W */ |
396 |
|
|
/* 24 */ ED_UNASSIGNED, /* ^X */ |
397 |
|
|
/* 25 */ ED_IGNORE, /* ^Y */ |
398 |
|
|
/* 26 */ ED_IGNORE, /* ^Z */ |
399 |
|
|
/* 27 */ VI_COMMAND_MODE, /* ^[ */ |
400 |
|
|
/* 28 */ ED_IGNORE, /* ^\ */ |
401 |
|
|
/* 29 */ ED_UNASSIGNED, /* ^] */ |
402 |
|
|
/* 30 */ ED_UNASSIGNED, /* ^^ */ |
403 |
|
|
/* 31 */ ED_UNASSIGNED, /* ^_ */ |
404 |
|
|
#endif /* KSHVI */ |
405 |
|
|
/* 32 */ ED_INSERT, /* SPACE */ |
406 |
|
|
/* 33 */ ED_INSERT, /* ! */ |
407 |
|
|
/* 34 */ ED_INSERT, /* " */ |
408 |
|
|
/* 35 */ ED_INSERT, /* # */ |
409 |
|
|
/* 36 */ ED_INSERT, /* $ */ |
410 |
|
|
/* 37 */ ED_INSERT, /* % */ |
411 |
|
|
/* 38 */ ED_INSERT, /* & */ |
412 |
|
|
/* 39 */ ED_INSERT, /* ' */ |
413 |
|
|
/* 40 */ ED_INSERT, /* ( */ |
414 |
|
|
/* 41 */ ED_INSERT, /* ) */ |
415 |
|
|
/* 42 */ ED_INSERT, /* * */ |
416 |
|
|
/* 43 */ ED_INSERT, /* + */ |
417 |
|
|
/* 44 */ ED_INSERT, /* , */ |
418 |
|
|
/* 45 */ ED_INSERT, /* - */ |
419 |
|
|
/* 46 */ ED_INSERT, /* . */ |
420 |
|
|
/* 47 */ ED_INSERT, /* / */ |
421 |
|
|
/* 48 */ ED_INSERT, /* 0 */ |
422 |
|
|
/* 49 */ ED_INSERT, /* 1 */ |
423 |
|
|
/* 50 */ ED_INSERT, /* 2 */ |
424 |
|
|
/* 51 */ ED_INSERT, /* 3 */ |
425 |
|
|
/* 52 */ ED_INSERT, /* 4 */ |
426 |
|
|
/* 53 */ ED_INSERT, /* 5 */ |
427 |
|
|
/* 54 */ ED_INSERT, /* 6 */ |
428 |
|
|
/* 55 */ ED_INSERT, /* 7 */ |
429 |
|
|
/* 56 */ ED_INSERT, /* 8 */ |
430 |
|
|
/* 57 */ ED_INSERT, /* 9 */ |
431 |
|
|
/* 58 */ ED_INSERT, /* : */ |
432 |
|
|
/* 59 */ ED_INSERT, /* ; */ |
433 |
|
|
/* 60 */ ED_INSERT, /* < */ |
434 |
|
|
/* 61 */ ED_INSERT, /* = */ |
435 |
|
|
/* 62 */ ED_INSERT, /* > */ |
436 |
|
|
/* 63 */ ED_INSERT, /* ? */ |
437 |
|
|
/* 64 */ ED_INSERT, /* @ */ |
438 |
|
|
/* 65 */ ED_INSERT, /* A */ |
439 |
|
|
/* 66 */ ED_INSERT, /* B */ |
440 |
|
|
/* 67 */ ED_INSERT, /* C */ |
441 |
|
|
/* 68 */ ED_INSERT, /* D */ |
442 |
|
|
/* 69 */ ED_INSERT, /* E */ |
443 |
|
|
/* 70 */ ED_INSERT, /* F */ |
444 |
|
|
/* 71 */ ED_INSERT, /* G */ |
445 |
|
|
/* 72 */ ED_INSERT, /* H */ |
446 |
|
|
/* 73 */ ED_INSERT, /* I */ |
447 |
|
|
/* 74 */ ED_INSERT, /* J */ |
448 |
|
|
/* 75 */ ED_INSERT, /* K */ |
449 |
|
|
/* 76 */ ED_INSERT, /* L */ |
450 |
|
|
/* 77 */ ED_INSERT, /* M */ |
451 |
|
|
/* 78 */ ED_INSERT, /* N */ |
452 |
|
|
/* 79 */ ED_INSERT, /* O */ |
453 |
|
|
/* 80 */ ED_INSERT, /* P */ |
454 |
|
|
/* 81 */ ED_INSERT, /* Q */ |
455 |
|
|
/* 82 */ ED_INSERT, /* R */ |
456 |
|
|
/* 83 */ ED_INSERT, /* S */ |
457 |
|
|
/* 84 */ ED_INSERT, /* T */ |
458 |
|
|
/* 85 */ ED_INSERT, /* U */ |
459 |
|
|
/* 86 */ ED_INSERT, /* V */ |
460 |
|
|
/* 87 */ ED_INSERT, /* W */ |
461 |
|
|
/* 88 */ ED_INSERT, /* X */ |
462 |
|
|
/* 89 */ ED_INSERT, /* Y */ |
463 |
|
|
/* 90 */ ED_INSERT, /* Z */ |
464 |
|
|
/* 91 */ ED_INSERT, /* [ */ |
465 |
|
|
/* 92 */ ED_INSERT, /* \ */ |
466 |
|
|
/* 93 */ ED_INSERT, /* ] */ |
467 |
|
|
/* 94 */ ED_INSERT, /* ^ */ |
468 |
|
|
/* 95 */ ED_INSERT, /* _ */ |
469 |
|
|
/* 96 */ ED_INSERT, /* ` */ |
470 |
|
|
/* 97 */ ED_INSERT, /* a */ |
471 |
|
|
/* 98 */ ED_INSERT, /* b */ |
472 |
|
|
/* 99 */ ED_INSERT, /* c */ |
473 |
|
|
/* 100 */ ED_INSERT, /* d */ |
474 |
|
|
/* 101 */ ED_INSERT, /* e */ |
475 |
|
|
/* 102 */ ED_INSERT, /* f */ |
476 |
|
|
/* 103 */ ED_INSERT, /* g */ |
477 |
|
|
/* 104 */ ED_INSERT, /* h */ |
478 |
|
|
/* 105 */ ED_INSERT, /* i */ |
479 |
|
|
/* 106 */ ED_INSERT, /* j */ |
480 |
|
|
/* 107 */ ED_INSERT, /* k */ |
481 |
|
|
/* 108 */ ED_INSERT, /* l */ |
482 |
|
|
/* 109 */ ED_INSERT, /* m */ |
483 |
|
|
/* 110 */ ED_INSERT, /* n */ |
484 |
|
|
/* 111 */ ED_INSERT, /* o */ |
485 |
|
|
/* 112 */ ED_INSERT, /* p */ |
486 |
|
|
/* 113 */ ED_INSERT, /* q */ |
487 |
|
|
/* 114 */ ED_INSERT, /* r */ |
488 |
|
|
/* 115 */ ED_INSERT, /* s */ |
489 |
|
|
/* 116 */ ED_INSERT, /* t */ |
490 |
|
|
/* 117 */ ED_INSERT, /* u */ |
491 |
|
|
/* 118 */ ED_INSERT, /* v */ |
492 |
|
|
/* 119 */ ED_INSERT, /* w */ |
493 |
|
|
/* 120 */ ED_INSERT, /* x */ |
494 |
|
|
/* 121 */ ED_INSERT, /* y */ |
495 |
|
|
/* 122 */ ED_INSERT, /* z */ |
496 |
|
|
/* 123 */ ED_INSERT, /* { */ |
497 |
|
|
/* 124 */ ED_INSERT, /* | */ |
498 |
|
|
/* 125 */ ED_INSERT, /* } */ |
499 |
|
|
/* 126 */ ED_INSERT, /* ~ */ |
500 |
|
|
/* 127 */ VI_DELETE_PREV_CHAR, /* ^? */ |
501 |
|
|
/* 128 */ ED_INSERT, /* M-^@ */ |
502 |
|
|
/* 129 */ ED_INSERT, /* M-^A */ |
503 |
|
|
/* 130 */ ED_INSERT, /* M-^B */ |
504 |
|
|
/* 131 */ ED_INSERT, /* M-^C */ |
505 |
|
|
/* 132 */ ED_INSERT, /* M-^D */ |
506 |
|
|
/* 133 */ ED_INSERT, /* M-^E */ |
507 |
|
|
/* 134 */ ED_INSERT, /* M-^F */ |
508 |
|
|
/* 135 */ ED_INSERT, /* M-^G */ |
509 |
|
|
/* 136 */ ED_INSERT, /* M-^H */ |
510 |
|
|
/* 137 */ ED_INSERT, /* M-^I */ |
511 |
|
|
/* 138 */ ED_INSERT, /* M-^J */ |
512 |
|
|
/* 139 */ ED_INSERT, /* M-^K */ |
513 |
|
|
/* 140 */ ED_INSERT, /* M-^L */ |
514 |
|
|
/* 141 */ ED_INSERT, /* M-^M */ |
515 |
|
|
/* 142 */ ED_INSERT, /* M-^N */ |
516 |
|
|
/* 143 */ ED_INSERT, /* M-^O */ |
517 |
|
|
/* 144 */ ED_INSERT, /* M-^P */ |
518 |
|
|
/* 145 */ ED_INSERT, /* M-^Q */ |
519 |
|
|
/* 146 */ ED_INSERT, /* M-^R */ |
520 |
|
|
/* 147 */ ED_INSERT, /* M-^S */ |
521 |
|
|
/* 148 */ ED_INSERT, /* M-^T */ |
522 |
|
|
/* 149 */ ED_INSERT, /* M-^U */ |
523 |
|
|
/* 150 */ ED_INSERT, /* M-^V */ |
524 |
|
|
/* 151 */ ED_INSERT, /* M-^W */ |
525 |
|
|
/* 152 */ ED_INSERT, /* M-^X */ |
526 |
|
|
/* 153 */ ED_INSERT, /* M-^Y */ |
527 |
|
|
/* 154 */ ED_INSERT, /* M-^Z */ |
528 |
|
|
/* 155 */ ED_INSERT, /* M-^[ */ |
529 |
|
|
/* 156 */ ED_INSERT, /* M-^\ */ |
530 |
|
|
/* 157 */ ED_INSERT, /* M-^] */ |
531 |
|
|
/* 158 */ ED_INSERT, /* M-^^ */ |
532 |
|
|
/* 159 */ ED_INSERT, /* M-^_ */ |
533 |
|
|
/* 160 */ ED_INSERT, /* M-SPACE */ |
534 |
|
|
/* 161 */ ED_INSERT, /* M-! */ |
535 |
|
|
/* 162 */ ED_INSERT, /* M-" */ |
536 |
|
|
/* 163 */ ED_INSERT, /* M-# */ |
537 |
|
|
/* 164 */ ED_INSERT, /* M-$ */ |
538 |
|
|
/* 165 */ ED_INSERT, /* M-% */ |
539 |
|
|
/* 166 */ ED_INSERT, /* M-& */ |
540 |
|
|
/* 167 */ ED_INSERT, /* M-' */ |
541 |
|
|
/* 168 */ ED_INSERT, /* M-( */ |
542 |
|
|
/* 169 */ ED_INSERT, /* M-) */ |
543 |
|
|
/* 170 */ ED_INSERT, /* M-* */ |
544 |
|
|
/* 171 */ ED_INSERT, /* M-+ */ |
545 |
|
|
/* 172 */ ED_INSERT, /* M-, */ |
546 |
|
|
/* 173 */ ED_INSERT, /* M-- */ |
547 |
|
|
/* 174 */ ED_INSERT, /* M-. */ |
548 |
|
|
/* 175 */ ED_INSERT, /* M-/ */ |
549 |
|
|
/* 176 */ ED_INSERT, /* M-0 */ |
550 |
|
|
/* 177 */ ED_INSERT, /* M-1 */ |
551 |
|
|
/* 178 */ ED_INSERT, /* M-2 */ |
552 |
|
|
/* 179 */ ED_INSERT, /* M-3 */ |
553 |
|
|
/* 180 */ ED_INSERT, /* M-4 */ |
554 |
|
|
/* 181 */ ED_INSERT, /* M-5 */ |
555 |
|
|
/* 182 */ ED_INSERT, /* M-6 */ |
556 |
|
|
/* 183 */ ED_INSERT, /* M-7 */ |
557 |
|
|
/* 184 */ ED_INSERT, /* M-8 */ |
558 |
|
|
/* 185 */ ED_INSERT, /* M-9 */ |
559 |
|
|
/* 186 */ ED_INSERT, /* M-: */ |
560 |
|
|
/* 187 */ ED_INSERT, /* M-; */ |
561 |
|
|
/* 188 */ ED_INSERT, /* M-< */ |
562 |
|
|
/* 189 */ ED_INSERT, /* M-= */ |
563 |
|
|
/* 190 */ ED_INSERT, /* M-> */ |
564 |
|
|
/* 191 */ ED_INSERT, /* M-? */ |
565 |
|
|
/* 192 */ ED_INSERT, /* M-@ */ |
566 |
|
|
/* 193 */ ED_INSERT, /* M-A */ |
567 |
|
|
/* 194 */ ED_INSERT, /* M-B */ |
568 |
|
|
/* 195 */ ED_INSERT, /* M-C */ |
569 |
|
|
/* 196 */ ED_INSERT, /* M-D */ |
570 |
|
|
/* 197 */ ED_INSERT, /* M-E */ |
571 |
|
|
/* 198 */ ED_INSERT, /* M-F */ |
572 |
|
|
/* 199 */ ED_INSERT, /* M-G */ |
573 |
|
|
/* 200 */ ED_INSERT, /* M-H */ |
574 |
|
|
/* 201 */ ED_INSERT, /* M-I */ |
575 |
|
|
/* 202 */ ED_INSERT, /* M-J */ |
576 |
|
|
/* 203 */ ED_INSERT, /* M-K */ |
577 |
|
|
/* 204 */ ED_INSERT, /* M-L */ |
578 |
|
|
/* 205 */ ED_INSERT, /* M-M */ |
579 |
|
|
/* 206 */ ED_INSERT, /* M-N */ |
580 |
|
|
/* 207 */ ED_INSERT, /* M-O */ |
581 |
|
|
/* 208 */ ED_INSERT, /* M-P */ |
582 |
|
|
/* 209 */ ED_INSERT, /* M-Q */ |
583 |
|
|
/* 210 */ ED_INSERT, /* M-R */ |
584 |
|
|
/* 211 */ ED_INSERT, /* M-S */ |
585 |
|
|
/* 212 */ ED_INSERT, /* M-T */ |
586 |
|
|
/* 213 */ ED_INSERT, /* M-U */ |
587 |
|
|
/* 214 */ ED_INSERT, /* M-V */ |
588 |
|
|
/* 215 */ ED_INSERT, /* M-W */ |
589 |
|
|
/* 216 */ ED_INSERT, /* M-X */ |
590 |
|
|
/* 217 */ ED_INSERT, /* M-Y */ |
591 |
|
|
/* 218 */ ED_INSERT, /* M-Z */ |
592 |
|
|
/* 219 */ ED_INSERT, /* M-[ */ |
593 |
|
|
/* 220 */ ED_INSERT, /* M-\ */ |
594 |
|
|
/* 221 */ ED_INSERT, /* M-] */ |
595 |
|
|
/* 222 */ ED_INSERT, /* M-^ */ |
596 |
|
|
/* 223 */ ED_INSERT, /* M-_ */ |
597 |
|
|
/* 224 */ ED_INSERT, /* M-` */ |
598 |
|
|
/* 225 */ ED_INSERT, /* M-a */ |
599 |
|
|
/* 226 */ ED_INSERT, /* M-b */ |
600 |
|
|
/* 227 */ ED_INSERT, /* M-c */ |
601 |
|
|
/* 228 */ ED_INSERT, /* M-d */ |
602 |
|
|
/* 229 */ ED_INSERT, /* M-e */ |
603 |
|
|
/* 230 */ ED_INSERT, /* M-f */ |
604 |
|
|
/* 231 */ ED_INSERT, /* M-g */ |
605 |
|
|
/* 232 */ ED_INSERT, /* M-h */ |
606 |
|
|
/* 233 */ ED_INSERT, /* M-i */ |
607 |
|
|
/* 234 */ ED_INSERT, /* M-j */ |
608 |
|
|
/* 235 */ ED_INSERT, /* M-k */ |
609 |
|
|
/* 236 */ ED_INSERT, /* M-l */ |
610 |
|
|
/* 237 */ ED_INSERT, /* M-m */ |
611 |
|
|
/* 238 */ ED_INSERT, /* M-n */ |
612 |
|
|
/* 239 */ ED_INSERT, /* M-o */ |
613 |
|
|
/* 240 */ ED_INSERT, /* M-p */ |
614 |
|
|
/* 241 */ ED_INSERT, /* M-q */ |
615 |
|
|
/* 242 */ ED_INSERT, /* M-r */ |
616 |
|
|
/* 243 */ ED_INSERT, /* M-s */ |
617 |
|
|
/* 244 */ ED_INSERT, /* M-t */ |
618 |
|
|
/* 245 */ ED_INSERT, /* M-u */ |
619 |
|
|
/* 246 */ ED_INSERT, /* M-v */ |
620 |
|
|
/* 247 */ ED_INSERT, /* M-w */ |
621 |
|
|
/* 248 */ ED_INSERT, /* M-x */ |
622 |
|
|
/* 249 */ ED_INSERT, /* M-y */ |
623 |
|
|
/* 250 */ ED_INSERT, /* M-z */ |
624 |
|
|
/* 251 */ ED_INSERT, /* M-{ */ |
625 |
|
|
/* 252 */ ED_INSERT, /* M-| */ |
626 |
|
|
/* 253 */ ED_INSERT, /* M-} */ |
627 |
|
|
/* 254 */ ED_INSERT, /* M-~ */ |
628 |
|
|
/* 255 */ ED_INSERT /* M-^? */ |
629 |
|
|
}; |
630 |
|
|
|
631 |
|
|
static const el_action_t el_map_vi_command[] = { |
632 |
|
|
/* 0 */ ED_UNASSIGNED, /* ^@ */ |
633 |
|
|
/* 1 */ ED_MOVE_TO_BEG, /* ^A */ |
634 |
|
|
/* 2 */ ED_UNASSIGNED, /* ^B */ |
635 |
|
|
/* 3 */ ED_IGNORE, /* ^C */ |
636 |
|
|
/* 4 */ ED_UNASSIGNED, /* ^D */ |
637 |
|
|
/* 5 */ ED_MOVE_TO_END, /* ^E */ |
638 |
|
|
/* 6 */ ED_UNASSIGNED, /* ^F */ |
639 |
|
|
/* 7 */ ED_UNASSIGNED, /* ^G */ |
640 |
|
|
/* 8 */ ED_DELETE_PREV_CHAR, /* ^H */ |
641 |
|
|
/* 9 */ ED_UNASSIGNED, /* ^I */ |
642 |
|
|
/* 10 */ ED_NEWLINE, /* ^J */ |
643 |
|
|
/* 11 */ ED_KILL_LINE, /* ^K */ |
644 |
|
|
/* 12 */ ED_CLEAR_SCREEN, /* ^L */ |
645 |
|
|
/* 13 */ ED_NEWLINE, /* ^M */ |
646 |
|
|
/* 14 */ ED_NEXT_HISTORY, /* ^N */ |
647 |
|
|
/* 15 */ ED_IGNORE, /* ^O */ |
648 |
|
|
/* 16 */ ED_PREV_HISTORY, /* ^P */ |
649 |
|
|
/* 17 */ ED_IGNORE, /* ^Q */ |
650 |
|
|
/* 18 */ ED_REDISPLAY, /* ^R */ |
651 |
|
|
/* 19 */ ED_IGNORE, /* ^S */ |
652 |
|
|
/* 20 */ ED_UNASSIGNED, /* ^T */ |
653 |
|
|
/* 21 */ VI_KILL_LINE_PREV, /* ^U */ |
654 |
|
|
/* 22 */ ED_UNASSIGNED, /* ^V */ |
655 |
|
|
/* 23 */ ED_DELETE_PREV_WORD, /* ^W */ |
656 |
|
|
/* 24 */ ED_UNASSIGNED, /* ^X */ |
657 |
|
|
/* 25 */ ED_UNASSIGNED, /* ^Y */ |
658 |
|
|
/* 26 */ ED_UNASSIGNED, /* ^Z */ |
659 |
|
|
/* 27 */ EM_META_NEXT, /* ^[ */ |
660 |
|
|
/* 28 */ ED_IGNORE, /* ^\ */ |
661 |
|
|
/* 29 */ ED_UNASSIGNED, /* ^] */ |
662 |
|
|
/* 30 */ ED_UNASSIGNED, /* ^^ */ |
663 |
|
|
/* 31 */ ED_UNASSIGNED, /* ^_ */ |
664 |
|
|
/* 32 */ ED_NEXT_CHAR, /* SPACE */ |
665 |
|
|
/* 33 */ ED_UNASSIGNED, /* ! */ |
666 |
|
|
/* 34 */ ED_UNASSIGNED, /* " */ |
667 |
|
|
/* 35 */ VI_COMMENT_OUT, /* # */ |
668 |
|
|
/* 36 */ ED_MOVE_TO_END, /* $ */ |
669 |
|
|
/* 37 */ VI_MATCH, /* % */ |
670 |
|
|
/* 38 */ ED_UNASSIGNED, /* & */ |
671 |
|
|
/* 39 */ ED_UNASSIGNED, /* ' */ |
672 |
|
|
/* 40 */ ED_UNASSIGNED, /* ( */ |
673 |
|
|
/* 41 */ ED_UNASSIGNED, /* ) */ |
674 |
|
|
/* 42 */ ED_UNASSIGNED, /* * */ |
675 |
|
|
/* 43 */ ED_NEXT_HISTORY, /* + */ |
676 |
|
|
/* 44 */ VI_REPEAT_PREV_CHAR, /* , */ |
677 |
|
|
/* 45 */ ED_PREV_HISTORY, /* - */ |
678 |
|
|
/* 46 */ VI_REDO, /* . */ |
679 |
|
|
/* 47 */ VI_SEARCH_PREV, /* / */ |
680 |
|
|
/* 48 */ VI_ZERO, /* 0 */ |
681 |
|
|
/* 49 */ ED_ARGUMENT_DIGIT, /* 1 */ |
682 |
|
|
/* 50 */ ED_ARGUMENT_DIGIT, /* 2 */ |
683 |
|
|
/* 51 */ ED_ARGUMENT_DIGIT, /* 3 */ |
684 |
|
|
/* 52 */ ED_ARGUMENT_DIGIT, /* 4 */ |
685 |
|
|
/* 53 */ ED_ARGUMENT_DIGIT, /* 5 */ |
686 |
|
|
/* 54 */ ED_ARGUMENT_DIGIT, /* 6 */ |
687 |
|
|
/* 55 */ ED_ARGUMENT_DIGIT, /* 7 */ |
688 |
|
|
/* 56 */ ED_ARGUMENT_DIGIT, /* 8 */ |
689 |
|
|
/* 57 */ ED_ARGUMENT_DIGIT, /* 9 */ |
690 |
|
|
/* 58 */ ED_COMMAND, /* : */ |
691 |
|
|
/* 59 */ VI_REPEAT_NEXT_CHAR, /* ; */ |
692 |
|
|
/* 60 */ ED_UNASSIGNED, /* < */ |
693 |
|
|
/* 61 */ ED_UNASSIGNED, /* = */ |
694 |
|
|
/* 62 */ ED_UNASSIGNED, /* > */ |
695 |
|
|
/* 63 */ VI_SEARCH_NEXT, /* ? */ |
696 |
|
|
/* 64 */ VI_ALIAS, /* @ */ |
697 |
|
|
/* 65 */ VI_ADD_AT_EOL, /* A */ |
698 |
|
|
/* 66 */ VI_PREV_BIG_WORD, /* B */ |
699 |
|
|
/* 67 */ VI_CHANGE_TO_EOL, /* C */ |
700 |
|
|
/* 68 */ ED_KILL_LINE, /* D */ |
701 |
|
|
/* 69 */ VI_END_BIG_WORD, /* E */ |
702 |
|
|
/* 70 */ VI_PREV_CHAR, /* F */ |
703 |
|
|
/* 71 */ VI_TO_HISTORY_LINE, /* G */ |
704 |
|
|
/* 72 */ ED_UNASSIGNED, /* H */ |
705 |
|
|
/* 73 */ VI_INSERT_AT_BOL, /* I */ |
706 |
|
|
/* 74 */ ED_SEARCH_NEXT_HISTORY, /* J */ |
707 |
|
|
/* 75 */ ED_SEARCH_PREV_HISTORY, /* K */ |
708 |
|
|
/* 76 */ ED_UNASSIGNED, /* L */ |
709 |
|
|
/* 77 */ ED_UNASSIGNED, /* M */ |
710 |
|
|
/* 78 */ VI_REPEAT_SEARCH_PREV, /* N */ |
711 |
|
|
/* 79 */ ED_SEQUENCE_LEAD_IN, /* O */ |
712 |
|
|
/* 80 */ VI_PASTE_PREV, /* P */ |
713 |
|
|
/* 81 */ ED_UNASSIGNED, /* Q */ |
714 |
|
|
/* 82 */ VI_REPLACE_MODE, /* R */ |
715 |
|
|
/* 83 */ VI_SUBSTITUTE_LINE, /* S */ |
716 |
|
|
/* 84 */ VI_TO_PREV_CHAR, /* T */ |
717 |
|
|
/* 85 */ VI_UNDO_LINE, /* U */ |
718 |
|
|
/* 86 */ ED_UNASSIGNED, /* V */ |
719 |
|
|
/* 87 */ VI_NEXT_BIG_WORD, /* W */ |
720 |
|
|
/* 88 */ ED_DELETE_PREV_CHAR, /* X */ |
721 |
|
|
/* 89 */ VI_YANK_END, /* Y */ |
722 |
|
|
/* 90 */ ED_UNASSIGNED, /* Z */ |
723 |
|
|
/* 91 */ ED_SEQUENCE_LEAD_IN, /* [ */ |
724 |
|
|
/* 92 */ ED_UNASSIGNED, /* \ */ |
725 |
|
|
/* 93 */ ED_UNASSIGNED, /* ] */ |
726 |
|
|
/* 94 */ ED_MOVE_TO_BEG, /* ^ */ |
727 |
|
|
/* 95 */ VI_HISTORY_WORD, /* _ */ |
728 |
|
|
/* 96 */ ED_UNASSIGNED, /* ` */ |
729 |
|
|
/* 97 */ VI_ADD, /* a */ |
730 |
|
|
/* 98 */ VI_PREV_WORD, /* b */ |
731 |
|
|
/* 99 */ VI_CHANGE_META, /* c */ |
732 |
|
|
/* 100 */ VI_DELETE_META, /* d */ |
733 |
|
|
/* 101 */ VI_END_WORD, /* e */ |
734 |
|
|
/* 102 */ VI_NEXT_CHAR, /* f */ |
735 |
|
|
/* 103 */ ED_UNASSIGNED, /* g */ |
736 |
|
|
/* 104 */ ED_PREV_CHAR, /* h */ |
737 |
|
|
/* 105 */ VI_INSERT, /* i */ |
738 |
|
|
/* 106 */ ED_NEXT_HISTORY, /* j */ |
739 |
|
|
/* 107 */ ED_PREV_HISTORY, /* k */ |
740 |
|
|
/* 108 */ ED_NEXT_CHAR, /* l */ |
741 |
|
|
/* 109 */ ED_UNASSIGNED, /* m */ |
742 |
|
|
/* 110 */ VI_REPEAT_SEARCH_NEXT, /* n */ |
743 |
|
|
/* 111 */ ED_UNASSIGNED, /* o */ |
744 |
|
|
/* 112 */ VI_PASTE_NEXT, /* p */ |
745 |
|
|
/* 113 */ ED_UNASSIGNED, /* q */ |
746 |
|
|
/* 114 */ VI_REPLACE_CHAR, /* r */ |
747 |
|
|
/* 115 */ VI_SUBSTITUTE_CHAR, /* s */ |
748 |
|
|
/* 116 */ VI_TO_NEXT_CHAR, /* t */ |
749 |
|
|
/* 117 */ VI_UNDO, /* u */ |
750 |
|
|
/* 118 */ VI_HISTEDIT, /* v */ |
751 |
|
|
/* 119 */ VI_NEXT_WORD, /* w */ |
752 |
|
|
/* 120 */ ED_DELETE_NEXT_CHAR, /* x */ |
753 |
|
|
/* 121 */ VI_YANK, /* y */ |
754 |
|
|
/* 122 */ ED_UNASSIGNED, /* z */ |
755 |
|
|
/* 123 */ ED_UNASSIGNED, /* { */ |
756 |
|
|
/* 124 */ VI_TO_COLUMN, /* | */ |
757 |
|
|
/* 125 */ ED_UNASSIGNED, /* } */ |
758 |
|
|
/* 126 */ VI_CHANGE_CASE, /* ~ */ |
759 |
|
|
/* 127 */ ED_DELETE_PREV_CHAR, /* ^? */ |
760 |
|
|
/* 128 */ ED_UNASSIGNED, /* M-^@ */ |
761 |
|
|
/* 129 */ ED_UNASSIGNED, /* M-^A */ |
762 |
|
|
/* 130 */ ED_UNASSIGNED, /* M-^B */ |
763 |
|
|
/* 131 */ ED_UNASSIGNED, /* M-^C */ |
764 |
|
|
/* 132 */ ED_UNASSIGNED, /* M-^D */ |
765 |
|
|
/* 133 */ ED_UNASSIGNED, /* M-^E */ |
766 |
|
|
/* 134 */ ED_UNASSIGNED, /* M-^F */ |
767 |
|
|
/* 135 */ ED_UNASSIGNED, /* M-^G */ |
768 |
|
|
/* 136 */ ED_UNASSIGNED, /* M-^H */ |
769 |
|
|
/* 137 */ ED_UNASSIGNED, /* M-^I */ |
770 |
|
|
/* 138 */ ED_UNASSIGNED, /* M-^J */ |
771 |
|
|
/* 139 */ ED_UNASSIGNED, /* M-^K */ |
772 |
|
|
/* 140 */ ED_UNASSIGNED, /* M-^L */ |
773 |
|
|
/* 141 */ ED_UNASSIGNED, /* M-^M */ |
774 |
|
|
/* 142 */ ED_UNASSIGNED, /* M-^N */ |
775 |
|
|
/* 143 */ ED_UNASSIGNED, /* M-^O */ |
776 |
|
|
/* 144 */ ED_UNASSIGNED, /* M-^P */ |
777 |
|
|
/* 145 */ ED_UNASSIGNED, /* M-^Q */ |
778 |
|
|
/* 146 */ ED_UNASSIGNED, /* M-^R */ |
779 |
|
|
/* 147 */ ED_UNASSIGNED, /* M-^S */ |
780 |
|
|
/* 148 */ ED_UNASSIGNED, /* M-^T */ |
781 |
|
|
/* 149 */ ED_UNASSIGNED, /* M-^U */ |
782 |
|
|
/* 150 */ ED_UNASSIGNED, /* M-^V */ |
783 |
|
|
/* 151 */ ED_UNASSIGNED, /* M-^W */ |
784 |
|
|
/* 152 */ ED_UNASSIGNED, /* M-^X */ |
785 |
|
|
/* 153 */ ED_UNASSIGNED, /* M-^Y */ |
786 |
|
|
/* 154 */ ED_UNASSIGNED, /* M-^Z */ |
787 |
|
|
/* 155 */ ED_UNASSIGNED, /* M-^[ */ |
788 |
|
|
/* 156 */ ED_UNASSIGNED, /* M-^\ */ |
789 |
|
|
/* 157 */ ED_UNASSIGNED, /* M-^] */ |
790 |
|
|
/* 158 */ ED_UNASSIGNED, /* M-^^ */ |
791 |
|
|
/* 159 */ ED_UNASSIGNED, /* M-^_ */ |
792 |
|
|
/* 160 */ ED_UNASSIGNED, /* M-SPACE */ |
793 |
|
|
/* 161 */ ED_UNASSIGNED, /* M-! */ |
794 |
|
|
/* 162 */ ED_UNASSIGNED, /* M-" */ |
795 |
|
|
/* 163 */ ED_UNASSIGNED, /* M-# */ |
796 |
|
|
/* 164 */ ED_UNASSIGNED, /* M-$ */ |
797 |
|
|
/* 165 */ ED_UNASSIGNED, /* M-% */ |
798 |
|
|
/* 166 */ ED_UNASSIGNED, /* M-& */ |
799 |
|
|
/* 167 */ ED_UNASSIGNED, /* M-' */ |
800 |
|
|
/* 168 */ ED_UNASSIGNED, /* M-( */ |
801 |
|
|
/* 169 */ ED_UNASSIGNED, /* M-) */ |
802 |
|
|
/* 170 */ ED_UNASSIGNED, /* M-* */ |
803 |
|
|
/* 171 */ ED_UNASSIGNED, /* M-+ */ |
804 |
|
|
/* 172 */ ED_UNASSIGNED, /* M-, */ |
805 |
|
|
/* 173 */ ED_UNASSIGNED, /* M-- */ |
806 |
|
|
/* 174 */ ED_UNASSIGNED, /* M-. */ |
807 |
|
|
/* 175 */ ED_UNASSIGNED, /* M-/ */ |
808 |
|
|
/* 176 */ ED_UNASSIGNED, /* M-0 */ |
809 |
|
|
/* 177 */ ED_UNASSIGNED, /* M-1 */ |
810 |
|
|
/* 178 */ ED_UNASSIGNED, /* M-2 */ |
811 |
|
|
/* 179 */ ED_UNASSIGNED, /* M-3 */ |
812 |
|
|
/* 180 */ ED_UNASSIGNED, /* M-4 */ |
813 |
|
|
/* 181 */ ED_UNASSIGNED, /* M-5 */ |
814 |
|
|
/* 182 */ ED_UNASSIGNED, /* M-6 */ |
815 |
|
|
/* 183 */ ED_UNASSIGNED, /* M-7 */ |
816 |
|
|
/* 184 */ ED_UNASSIGNED, /* M-8 */ |
817 |
|
|
/* 185 */ ED_UNASSIGNED, /* M-9 */ |
818 |
|
|
/* 186 */ ED_UNASSIGNED, /* M-: */ |
819 |
|
|
/* 187 */ ED_UNASSIGNED, /* M-; */ |
820 |
|
|
/* 188 */ ED_UNASSIGNED, /* M-< */ |
821 |
|
|
/* 189 */ ED_UNASSIGNED, /* M-= */ |
822 |
|
|
/* 190 */ ED_UNASSIGNED, /* M-> */ |
823 |
|
|
/* 191 */ ED_UNASSIGNED, /* M-? */ |
824 |
|
|
/* 192 */ ED_UNASSIGNED, /* M-@ */ |
825 |
|
|
/* 193 */ ED_UNASSIGNED, /* M-A */ |
826 |
|
|
/* 194 */ ED_UNASSIGNED, /* M-B */ |
827 |
|
|
/* 195 */ ED_UNASSIGNED, /* M-C */ |
828 |
|
|
/* 196 */ ED_UNASSIGNED, /* M-D */ |
829 |
|
|
/* 197 */ ED_UNASSIGNED, /* M-E */ |
830 |
|
|
/* 198 */ ED_UNASSIGNED, /* M-F */ |
831 |
|
|
/* 199 */ ED_UNASSIGNED, /* M-G */ |
832 |
|
|
/* 200 */ ED_UNASSIGNED, /* M-H */ |
833 |
|
|
/* 201 */ ED_UNASSIGNED, /* M-I */ |
834 |
|
|
/* 202 */ ED_UNASSIGNED, /* M-J */ |
835 |
|
|
/* 203 */ ED_UNASSIGNED, /* M-K */ |
836 |
|
|
/* 204 */ ED_UNASSIGNED, /* M-L */ |
837 |
|
|
/* 205 */ ED_UNASSIGNED, /* M-M */ |
838 |
|
|
/* 206 */ ED_UNASSIGNED, /* M-N */ |
839 |
|
|
/* 207 */ ED_SEQUENCE_LEAD_IN, /* M-O */ |
840 |
|
|
/* 208 */ ED_UNASSIGNED, /* M-P */ |
841 |
|
|
/* 209 */ ED_UNASSIGNED, /* M-Q */ |
842 |
|
|
/* 210 */ ED_UNASSIGNED, /* M-R */ |
843 |
|
|
/* 211 */ ED_UNASSIGNED, /* M-S */ |
844 |
|
|
/* 212 */ ED_UNASSIGNED, /* M-T */ |
845 |
|
|
/* 213 */ ED_UNASSIGNED, /* M-U */ |
846 |
|
|
/* 214 */ ED_UNASSIGNED, /* M-V */ |
847 |
|
|
/* 215 */ ED_UNASSIGNED, /* M-W */ |
848 |
|
|
/* 216 */ ED_UNASSIGNED, /* M-X */ |
849 |
|
|
/* 217 */ ED_UNASSIGNED, /* M-Y */ |
850 |
|
|
/* 218 */ ED_UNASSIGNED, /* M-Z */ |
851 |
|
|
/* 219 */ ED_SEQUENCE_LEAD_IN, /* M-[ */ |
852 |
|
|
/* 220 */ ED_UNASSIGNED, /* M-\ */ |
853 |
|
|
/* 221 */ ED_UNASSIGNED, /* M-] */ |
854 |
|
|
/* 222 */ ED_UNASSIGNED, /* M-^ */ |
855 |
|
|
/* 223 */ ED_UNASSIGNED, /* M-_ */ |
856 |
|
|
/* 224 */ ED_UNASSIGNED, /* M-` */ |
857 |
|
|
/* 225 */ ED_UNASSIGNED, /* M-a */ |
858 |
|
|
/* 226 */ ED_UNASSIGNED, /* M-b */ |
859 |
|
|
/* 227 */ ED_UNASSIGNED, /* M-c */ |
860 |
|
|
/* 228 */ ED_UNASSIGNED, /* M-d */ |
861 |
|
|
/* 229 */ ED_UNASSIGNED, /* M-e */ |
862 |
|
|
/* 230 */ ED_UNASSIGNED, /* M-f */ |
863 |
|
|
/* 231 */ ED_UNASSIGNED, /* M-g */ |
864 |
|
|
/* 232 */ ED_UNASSIGNED, /* M-h */ |
865 |
|
|
/* 233 */ ED_UNASSIGNED, /* M-i */ |
866 |
|
|
/* 234 */ ED_UNASSIGNED, /* M-j */ |
867 |
|
|
/* 235 */ ED_UNASSIGNED, /* M-k */ |
868 |
|
|
/* 236 */ ED_UNASSIGNED, /* M-l */ |
869 |
|
|
/* 237 */ ED_UNASSIGNED, /* M-m */ |
870 |
|
|
/* 238 */ ED_UNASSIGNED, /* M-n */ |
871 |
|
|
/* 239 */ ED_UNASSIGNED, /* M-o */ |
872 |
|
|
/* 240 */ ED_UNASSIGNED, /* M-p */ |
873 |
|
|
/* 241 */ ED_UNASSIGNED, /* M-q */ |
874 |
|
|
/* 242 */ ED_UNASSIGNED, /* M-r */ |
875 |
|
|
/* 243 */ ED_UNASSIGNED, /* M-s */ |
876 |
|
|
/* 244 */ ED_UNASSIGNED, /* M-t */ |
877 |
|
|
/* 245 */ ED_UNASSIGNED, /* M-u */ |
878 |
|
|
/* 246 */ ED_UNASSIGNED, /* M-v */ |
879 |
|
|
/* 247 */ ED_UNASSIGNED, /* M-w */ |
880 |
|
|
/* 248 */ ED_UNASSIGNED, /* M-x */ |
881 |
|
|
/* 249 */ ED_UNASSIGNED, /* M-y */ |
882 |
|
|
/* 250 */ ED_UNASSIGNED, /* M-z */ |
883 |
|
|
/* 251 */ ED_UNASSIGNED, /* M-{ */ |
884 |
|
|
/* 252 */ ED_UNASSIGNED, /* M-| */ |
885 |
|
|
/* 253 */ ED_UNASSIGNED, /* M-} */ |
886 |
|
|
/* 254 */ ED_UNASSIGNED, /* M-~ */ |
887 |
|
|
/* 255 */ ED_UNASSIGNED /* M-^? */ |
888 |
|
|
}; |
889 |
|
|
|
890 |
|
|
|
891 |
|
|
/* map_init(): |
892 |
|
|
* Initialize and allocate the maps |
893 |
|
|
*/ |
894 |
|
|
protected int |
895 |
|
|
map_init(EditLine *el) |
896 |
|
|
{ |
897 |
|
|
|
898 |
|
|
/* |
899 |
|
|
* Make sure those are correct before starting. |
900 |
|
|
*/ |
901 |
|
|
#ifdef MAP_DEBUG |
902 |
|
|
if (sizeof(el_map_emacs) != N_KEYS * sizeof(el_action_t)) |
903 |
|
|
EL_ABORT((el->errfile, "Emacs map incorrect\n")); |
904 |
|
|
if (sizeof(el_map_vi_command) != N_KEYS * sizeof(el_action_t)) |
905 |
|
|
EL_ABORT((el->errfile, "Vi command map incorrect\n")); |
906 |
|
|
if (sizeof(el_map_vi_insert) != N_KEYS * sizeof(el_action_t)) |
907 |
|
|
EL_ABORT((el->errfile, "Vi insert map incorrect\n")); |
908 |
|
|
#endif |
909 |
|
|
|
910 |
|
6 |
el->el_map.alt = reallocarray(NULL, N_KEYS, sizeof(el_action_t)); |
911 |
✗✓ |
3 |
if (el->el_map.alt == NULL) |
912 |
|
|
return -1; |
913 |
|
3 |
el->el_map.key = reallocarray(NULL, N_KEYS, sizeof(el_action_t)); |
914 |
✗✓ |
3 |
if (el->el_map.key == NULL) |
915 |
|
|
return -1; |
916 |
|
3 |
el->el_map.emacs = el_map_emacs; |
917 |
|
3 |
el->el_map.vic = el_map_vi_command; |
918 |
|
3 |
el->el_map.vii = el_map_vi_insert; |
919 |
|
3 |
el->el_map.help = reallocarray(NULL, EL_NUM_FCNS, |
920 |
|
|
sizeof(el_bindings_t)); |
921 |
✗✓ |
3 |
if (el->el_map.help == NULL) |
922 |
|
|
return -1; |
923 |
|
3 |
(void) memcpy(el->el_map.help, el_func_help, |
924 |
|
|
sizeof(el_bindings_t) * EL_NUM_FCNS); |
925 |
|
3 |
el->el_map.func = reallocarray(NULL, EL_NUM_FCNS, |
926 |
|
|
sizeof(el_func_t)); |
927 |
✗✓ |
3 |
if (el->el_map.func == NULL) |
928 |
|
|
return -1; |
929 |
|
3 |
memcpy(el->el_map.func, el_func, sizeof(el_func_t) * EL_NUM_FCNS); |
930 |
|
3 |
el->el_map.nfunc = EL_NUM_FCNS; |
931 |
|
|
|
932 |
|
|
#ifdef VIDEFAULT |
933 |
|
3 |
map_init_vi(el); |
934 |
|
|
#else |
935 |
|
|
map_init_emacs(el); |
936 |
|
|
#endif /* VIDEFAULT */ |
937 |
|
3 |
return 0; |
938 |
|
3 |
} |
939 |
|
|
|
940 |
|
|
|
941 |
|
|
/* map_end(): |
942 |
|
|
* Free the space taken by the editor maps |
943 |
|
|
*/ |
944 |
|
|
protected void |
945 |
|
|
map_end(EditLine *el) |
946 |
|
|
{ |
947 |
|
|
|
948 |
|
|
free(el->el_map.alt); |
949 |
|
|
el->el_map.alt = NULL; |
950 |
|
|
free(el->el_map.key); |
951 |
|
|
el->el_map.key = NULL; |
952 |
|
|
el->el_map.emacs = NULL; |
953 |
|
|
el->el_map.vic = NULL; |
954 |
|
|
el->el_map.vii = NULL; |
955 |
|
|
free(el->el_map.help); |
956 |
|
|
el->el_map.help = NULL; |
957 |
|
|
free(el->el_map.func); |
958 |
|
|
el->el_map.func = NULL; |
959 |
|
|
} |
960 |
|
|
|
961 |
|
|
|
962 |
|
|
/* map_init_nls(): |
963 |
|
|
* Find all the printable keys and bind them to self insert |
964 |
|
|
*/ |
965 |
|
|
static void |
966 |
|
|
map_init_nls(EditLine *el) |
967 |
|
|
{ |
968 |
|
|
int i; |
969 |
|
|
|
970 |
|
12 |
el_action_t *map = el->el_map.key; |
971 |
|
|
|
972 |
✓✓ |
1548 |
for (i = 0200; i <= 0377; i++) |
973 |
✗✓ |
768 |
if (iswprint(i)) |
974 |
|
|
map[i] = ED_INSERT; |
975 |
|
6 |
} |
976 |
|
|
|
977 |
|
|
|
978 |
|
|
/* map_init_meta(): |
979 |
|
|
* Bind all the meta keys to the appropriate ESC-<key> sequence |
980 |
|
|
*/ |
981 |
|
|
static void |
982 |
|
|
map_init_meta(EditLine *el) |
983 |
|
|
{ |
984 |
|
12 |
wchar_t buf[3]; |
985 |
|
|
int i; |
986 |
|
6 |
el_action_t *map = el->el_map.key; |
987 |
|
6 |
el_action_t *alt = el->el_map.alt; |
988 |
|
|
|
989 |
✓✓✓✓
|
2562 |
for (i = 0; i <= 0377 && map[i] != EM_META_NEXT; i++) |
990 |
|
|
continue; |
991 |
|
|
|
992 |
✓✓ |
6 |
if (i > 0377) { |
993 |
✓✗✓✓
|
252 |
for (i = 0; i <= 0377 && alt[i] != EM_META_NEXT; i++) |
994 |
|
|
continue; |
995 |
✗✓ |
3 |
if (i > 0377) { |
996 |
|
|
i = 033; |
997 |
|
|
if (el->el_map.type == MAP_VI) |
998 |
|
|
map = alt; |
999 |
|
|
} else |
1000 |
|
|
map = alt; |
1001 |
|
|
} |
1002 |
|
6 |
buf[0] = (wchar_t)i; |
1003 |
|
6 |
buf[2] = 0; |
1004 |
✓✓ |
1548 |
for (i = 0200; i <= 0377; i++) |
1005 |
✓✗✗✓
|
870 |
switch (map[i]) { |
1006 |
|
|
case ED_INSERT: |
1007 |
|
|
case ED_UNASSIGNED: |
1008 |
|
|
case ED_SEQUENCE_LEAD_IN: |
1009 |
|
|
break; |
1010 |
|
|
default: |
1011 |
|
102 |
buf[1] = i & 0177; |
1012 |
|
102 |
keymacro_add(el, buf, keymacro_map_cmd(el, (int) map[i]), XK_CMD); |
1013 |
|
102 |
break; |
1014 |
|
|
} |
1015 |
|
6 |
map[(int) buf[0]] = ED_SEQUENCE_LEAD_IN; |
1016 |
|
6 |
} |
1017 |
|
|
|
1018 |
|
|
|
1019 |
|
|
/* map_init_vi(): |
1020 |
|
|
* Initialize the vi bindings |
1021 |
|
|
*/ |
1022 |
|
|
protected void |
1023 |
|
|
map_init_vi(EditLine *el) |
1024 |
|
|
{ |
1025 |
|
|
int i; |
1026 |
|
6 |
el_action_t *key = el->el_map.key; |
1027 |
|
3 |
el_action_t *alt = el->el_map.alt; |
1028 |
|
3 |
const el_action_t *vii = el->el_map.vii; |
1029 |
|
3 |
const el_action_t *vic = el->el_map.vic; |
1030 |
|
|
|
1031 |
|
3 |
el->el_map.type = MAP_VI; |
1032 |
|
3 |
el->el_map.current = el->el_map.key; |
1033 |
|
|
|
1034 |
|
3 |
keymacro_reset(el); |
1035 |
|
|
|
1036 |
✓✓ |
1542 |
for (i = 0; i < N_KEYS; i++) { |
1037 |
|
768 |
key[i] = vii[i]; |
1038 |
|
768 |
alt[i] = vic[i]; |
1039 |
|
|
} |
1040 |
|
|
|
1041 |
|
3 |
map_init_meta(el); |
1042 |
|
3 |
map_init_nls(el); |
1043 |
|
|
|
1044 |
|
3 |
tty_bind_char(el, 1); |
1045 |
|
3 |
terminal_bind_arrow(el); |
1046 |
|
3 |
} |
1047 |
|
|
|
1048 |
|
|
|
1049 |
|
|
/* map_init_emacs(): |
1050 |
|
|
* Initialize the emacs bindings |
1051 |
|
|
*/ |
1052 |
|
|
protected void |
1053 |
|
|
map_init_emacs(EditLine *el) |
1054 |
|
|
{ |
1055 |
|
|
int i; |
1056 |
|
6 |
wchar_t buf[3]; |
1057 |
|
3 |
el_action_t *key = el->el_map.key; |
1058 |
|
3 |
el_action_t *alt = el->el_map.alt; |
1059 |
|
3 |
const el_action_t *emacs = el->el_map.emacs; |
1060 |
|
|
|
1061 |
|
3 |
el->el_map.type = MAP_EMACS; |
1062 |
|
3 |
el->el_map.current = el->el_map.key; |
1063 |
|
3 |
keymacro_reset(el); |
1064 |
|
|
|
1065 |
✓✓ |
1542 |
for (i = 0; i < N_KEYS; i++) { |
1066 |
|
768 |
key[i] = emacs[i]; |
1067 |
|
768 |
alt[i] = ED_UNASSIGNED; |
1068 |
|
|
} |
1069 |
|
|
|
1070 |
|
3 |
map_init_meta(el); |
1071 |
|
3 |
map_init_nls(el); |
1072 |
|
|
|
1073 |
|
3 |
buf[0] = CONTROL('X'); |
1074 |
|
3 |
buf[1] = CONTROL('X'); |
1075 |
|
3 |
buf[2] = 0; |
1076 |
|
3 |
keymacro_add(el, buf, keymacro_map_cmd(el, EM_EXCHANGE_MARK), XK_CMD); |
1077 |
|
|
|
1078 |
|
3 |
tty_bind_char(el, 1); |
1079 |
|
3 |
terminal_bind_arrow(el); |
1080 |
|
3 |
} |
1081 |
|
|
|
1082 |
|
|
|
1083 |
|
|
/* map_set_editor(): |
1084 |
|
|
* Set the editor |
1085 |
|
|
*/ |
1086 |
|
|
protected int |
1087 |
|
|
map_set_editor(EditLine *el, wchar_t *editor) |
1088 |
|
|
{ |
1089 |
|
|
|
1090 |
✓✗ |
6 |
if (wcscmp(editor, L"emacs") == 0) { |
1091 |
|
3 |
map_init_emacs(el); |
1092 |
|
3 |
return 0; |
1093 |
|
|
} |
1094 |
|
|
if (wcscmp(editor, L"vi") == 0) { |
1095 |
|
|
map_init_vi(el); |
1096 |
|
|
return 0; |
1097 |
|
|
} |
1098 |
|
|
return -1; |
1099 |
|
3 |
} |
1100 |
|
|
|
1101 |
|
|
|
1102 |
|
|
/* map_get_editor(): |
1103 |
|
|
* Retrieve the editor |
1104 |
|
|
*/ |
1105 |
|
|
protected int |
1106 |
|
|
map_get_editor(EditLine *el, const wchar_t **editor) |
1107 |
|
|
{ |
1108 |
|
|
|
1109 |
|
|
if (editor == NULL) |
1110 |
|
|
return -1; |
1111 |
|
|
switch (el->el_map.type) { |
1112 |
|
|
case MAP_EMACS: |
1113 |
|
|
*editor = L"emacs"; |
1114 |
|
|
return 0; |
1115 |
|
|
case MAP_VI: |
1116 |
|
|
*editor = L"vi"; |
1117 |
|
|
return 0; |
1118 |
|
|
} |
1119 |
|
|
return -1; |
1120 |
|
|
} |
1121 |
|
|
|
1122 |
|
|
|
1123 |
|
|
/* map_print_key(): |
1124 |
|
|
* Print the function description for 1 key |
1125 |
|
|
*/ |
1126 |
|
|
static void |
1127 |
|
|
map_print_key(EditLine *el, el_action_t *map, const wchar_t *in) |
1128 |
|
|
{ |
1129 |
|
|
char outbuf[EL_BUFSIZ]; |
1130 |
|
|
el_bindings_t *bp, *ep; |
1131 |
|
|
|
1132 |
|
|
if (in[0] == '\0' || in[1] == '\0') { |
1133 |
|
|
(void) keymacro__decode_str(in, outbuf, sizeof(outbuf), ""); |
1134 |
|
|
ep = &el->el_map.help[el->el_map.nfunc]; |
1135 |
|
|
for (bp = el->el_map.help; bp < ep; bp++) |
1136 |
|
|
if (bp->func == map[(unsigned char) *in]) { |
1137 |
|
|
(void) fprintf(el->el_outfile, |
1138 |
|
|
"%s\t->\t%ls\n", outbuf, bp->name); |
1139 |
|
|
return; |
1140 |
|
|
} |
1141 |
|
|
} else |
1142 |
|
|
keymacro_print(el, in); |
1143 |
|
|
} |
1144 |
|
|
|
1145 |
|
|
|
1146 |
|
|
/* map_print_some_keys(): |
1147 |
|
|
* Print keys from first to last |
1148 |
|
|
*/ |
1149 |
|
|
static void |
1150 |
|
|
map_print_some_keys(EditLine *el, el_action_t *map, wint_t first, wint_t last) |
1151 |
|
|
{ |
1152 |
|
|
el_bindings_t *bp, *ep; |
1153 |
|
|
wchar_t firstbuf[2], lastbuf[2]; |
1154 |
|
|
char unparsbuf[EL_BUFSIZ], extrabuf[EL_BUFSIZ]; |
1155 |
|
|
|
1156 |
|
|
firstbuf[0] = first; |
1157 |
|
|
firstbuf[1] = 0; |
1158 |
|
|
lastbuf[0] = last; |
1159 |
|
|
lastbuf[1] = 0; |
1160 |
|
|
if (map[first] == ED_UNASSIGNED) { |
1161 |
|
|
if (first == last) { |
1162 |
|
|
(void) keymacro__decode_str(firstbuf, unparsbuf, |
1163 |
|
|
sizeof(unparsbuf), STRQQ); |
1164 |
|
|
(void) fprintf(el->el_outfile, |
1165 |
|
|
"%-15s-> is undefined\n", unparsbuf); |
1166 |
|
|
} |
1167 |
|
|
return; |
1168 |
|
|
} |
1169 |
|
|
ep = &el->el_map.help[el->el_map.nfunc]; |
1170 |
|
|
for (bp = el->el_map.help; bp < ep; bp++) { |
1171 |
|
|
if (bp->func == map[first]) { |
1172 |
|
|
if (first == last) { |
1173 |
|
|
(void) keymacro__decode_str(firstbuf, unparsbuf, |
1174 |
|
|
sizeof(unparsbuf), STRQQ); |
1175 |
|
|
(void) fprintf(el->el_outfile, "%-15s-> %ls\n", |
1176 |
|
|
unparsbuf, bp->name); |
1177 |
|
|
} else { |
1178 |
|
|
(void) keymacro__decode_str(firstbuf, unparsbuf, |
1179 |
|
|
sizeof(unparsbuf), STRQQ); |
1180 |
|
|
(void) keymacro__decode_str(lastbuf, extrabuf, |
1181 |
|
|
sizeof(extrabuf), STRQQ); |
1182 |
|
|
(void) fprintf(el->el_outfile, |
1183 |
|
|
"%-4s to %-7s-> %ls\n", |
1184 |
|
|
unparsbuf, extrabuf, bp->name); |
1185 |
|
|
} |
1186 |
|
|
return; |
1187 |
|
|
} |
1188 |
|
|
} |
1189 |
|
|
#ifdef MAP_DEBUG |
1190 |
|
|
if (map == el->el_map.key) { |
1191 |
|
|
(void) keymacro__decode_str(firstbuf, unparsbuf, |
1192 |
|
|
sizeof(unparsbuf), STRQQ); |
1193 |
|
|
(void) fprintf(el->el_outfile, |
1194 |
|
|
"BUG!!! %s isn't bound to anything.\n", unparsbuf); |
1195 |
|
|
(void) fprintf(el->el_outfile, "el->el_map.key[%d] == %d\n", |
1196 |
|
|
first, el->el_map.key[first]); |
1197 |
|
|
} else { |
1198 |
|
|
(void) keymacro__decode_str(firstbuf, unparsbuf, |
1199 |
|
|
sizeof(unparsbuf), STRQQ); |
1200 |
|
|
(void) fprintf(el->el_outfile, |
1201 |
|
|
"BUG!!! %s isn't bound to anything.\n", unparsbuf); |
1202 |
|
|
(void) fprintf(el->el_outfile, "el->el_map.alt[%d] == %d\n", |
1203 |
|
|
first, el->el_map.alt[first]); |
1204 |
|
|
} |
1205 |
|
|
#endif |
1206 |
|
|
EL_ABORT((el->el_errfile, "Error printing keys\n")); |
1207 |
|
|
} |
1208 |
|
|
|
1209 |
|
|
|
1210 |
|
|
/* map_print_all_keys(): |
1211 |
|
|
* Print the function description for all keys. |
1212 |
|
|
*/ |
1213 |
|
|
static void |
1214 |
|
|
map_print_all_keys(EditLine *el) |
1215 |
|
|
{ |
1216 |
|
|
int prev, i; |
1217 |
|
|
|
1218 |
|
|
(void) fprintf(el->el_outfile, "Standard key bindings\n"); |
1219 |
|
|
prev = 0; |
1220 |
|
|
for (i = 0; i < N_KEYS; i++) { |
1221 |
|
|
if (el->el_map.key[prev] == el->el_map.key[i]) |
1222 |
|
|
continue; |
1223 |
|
|
map_print_some_keys(el, el->el_map.key, prev, i - 1); |
1224 |
|
|
prev = i; |
1225 |
|
|
} |
1226 |
|
|
map_print_some_keys(el, el->el_map.key, prev, i - 1); |
1227 |
|
|
|
1228 |
|
|
(void) fprintf(el->el_outfile, "Alternative key bindings\n"); |
1229 |
|
|
prev = 0; |
1230 |
|
|
for (i = 0; i < N_KEYS; i++) { |
1231 |
|
|
if (el->el_map.alt[prev] == el->el_map.alt[i]) |
1232 |
|
|
continue; |
1233 |
|
|
map_print_some_keys(el, el->el_map.alt, prev, i - 1); |
1234 |
|
|
prev = i; |
1235 |
|
|
} |
1236 |
|
|
map_print_some_keys(el, el->el_map.alt, prev, i - 1); |
1237 |
|
|
|
1238 |
|
|
(void) fprintf(el->el_outfile, "Multi-character bindings\n"); |
1239 |
|
|
keymacro_print(el, L""); |
1240 |
|
|
(void) fprintf(el->el_outfile, "Arrow key bindings\n"); |
1241 |
|
|
terminal_print_arrow(el, L""); |
1242 |
|
|
} |
1243 |
|
|
|
1244 |
|
|
|
1245 |
|
|
/* map_bind(): |
1246 |
|
|
* Add/remove/change bindings |
1247 |
|
|
*/ |
1248 |
|
|
protected int |
1249 |
|
|
map_bind(EditLine *el, int argc, const wchar_t **argv) |
1250 |
|
|
{ |
1251 |
|
|
el_action_t *map; |
1252 |
|
|
int ntype, rem; |
1253 |
|
|
const wchar_t *p; |
1254 |
|
12 |
wchar_t inbuf[EL_BUFSIZ]; |
1255 |
|
6 |
wchar_t outbuf[EL_BUFSIZ]; |
1256 |
|
|
const wchar_t *in = NULL; |
1257 |
|
|
wchar_t *out = NULL; |
1258 |
|
|
el_bindings_t *bp, *ep; |
1259 |
|
|
int cmd; |
1260 |
|
|
int key; |
1261 |
|
|
|
1262 |
✗✓ |
6 |
if (argv == NULL) |
1263 |
|
|
return -1; |
1264 |
|
|
|
1265 |
|
6 |
map = el->el_map.key; |
1266 |
|
|
ntype = XK_CMD; |
1267 |
|
|
key = rem = 0; |
1268 |
✓✗ |
12 |
for (argc = 1; (p = argv[argc]) != NULL; argc++) |
1269 |
✗✓ |
6 |
if (p[0] == '-') |
1270 |
|
|
switch (p[1]) { |
1271 |
|
|
case 'a': |
1272 |
|
|
map = el->el_map.alt; |
1273 |
|
|
break; |
1274 |
|
|
|
1275 |
|
|
case 's': |
1276 |
|
|
ntype = XK_STR; |
1277 |
|
|
break; |
1278 |
|
|
case 'k': |
1279 |
|
|
key = 1; |
1280 |
|
|
break; |
1281 |
|
|
|
1282 |
|
|
case 'r': |
1283 |
|
|
rem = 1; |
1284 |
|
|
break; |
1285 |
|
|
|
1286 |
|
|
case 'v': |
1287 |
|
|
map_init_vi(el); |
1288 |
|
|
return 0; |
1289 |
|
|
|
1290 |
|
|
case 'e': |
1291 |
|
|
map_init_emacs(el); |
1292 |
|
|
return 0; |
1293 |
|
|
|
1294 |
|
|
case 'l': |
1295 |
|
|
ep = &el->el_map.help[el->el_map.nfunc]; |
1296 |
|
|
for (bp = el->el_map.help; bp < ep; bp++) |
1297 |
|
|
(void) fprintf(el->el_outfile, |
1298 |
|
|
"%ls\n\t%ls\n", |
1299 |
|
|
bp->name, bp->description); |
1300 |
|
|
return 0; |
1301 |
|
|
default: |
1302 |
|
|
(void) fprintf(el->el_errfile, |
1303 |
|
|
"%ls: Invalid switch `%lc'.\n", |
1304 |
|
|
argv[0], (wint_t)p[1]); |
1305 |
|
|
} |
1306 |
|
|
else |
1307 |
|
|
break; |
1308 |
|
|
|
1309 |
✗✓ |
6 |
if (argv[argc] == NULL) { |
1310 |
|
|
map_print_all_keys(el); |
1311 |
|
|
return 0; |
1312 |
|
|
} |
1313 |
✗✓ |
6 |
if (key) |
1314 |
|
|
in = argv[argc++]; |
1315 |
✗✓ |
6 |
else if ((in = parse__string(inbuf, argv[argc++])) == NULL) { |
1316 |
|
|
(void) fprintf(el->el_errfile, |
1317 |
|
|
"%ls: Invalid \\ or ^ in instring.\n", |
1318 |
|
|
argv[0]); |
1319 |
|
|
return -1; |
1320 |
|
|
} |
1321 |
✗✓ |
6 |
if (rem) { |
1322 |
|
|
if (key) { |
1323 |
|
|
(void) terminal_clear_arrow(el, in); |
1324 |
|
|
return -1; |
1325 |
|
|
} |
1326 |
|
|
if (in[1]) |
1327 |
|
|
(void) keymacro_delete(el, in); |
1328 |
|
|
else if (map[(unsigned char) *in] == ED_SEQUENCE_LEAD_IN) |
1329 |
|
|
(void) keymacro_delete(el, in); |
1330 |
|
|
else |
1331 |
|
|
map[(unsigned char) *in] = ED_UNASSIGNED; |
1332 |
|
|
return 0; |
1333 |
|
|
} |
1334 |
✗✓ |
6 |
if (argv[argc] == NULL) { |
1335 |
|
|
if (key) |
1336 |
|
|
terminal_print_arrow(el, in); |
1337 |
|
|
else |
1338 |
|
|
map_print_key(el, map, in); |
1339 |
|
|
return 0; |
1340 |
|
|
} |
1341 |
|
|
#ifdef notyet |
1342 |
|
|
if (argv[argc + 1] != NULL) { |
1343 |
|
|
bindkey_usage(); |
1344 |
|
|
return -1; |
1345 |
|
|
} |
1346 |
|
|
#endif |
1347 |
|
|
|
1348 |
✗✓✗ |
6 |
switch (ntype) { |
1349 |
|
|
case XK_STR: |
1350 |
|
|
if ((out = parse__string(outbuf, argv[argc])) == NULL) { |
1351 |
|
|
(void) fprintf(el->el_errfile, |
1352 |
|
|
"%ls: Invalid \\ or ^ in outstring.\n", argv[0]); |
1353 |
|
|
return -1; |
1354 |
|
|
} |
1355 |
|
|
if (key) |
1356 |
|
|
terminal_set_arrow(el, in, keymacro_map_str(el, out), ntype); |
1357 |
|
|
else |
1358 |
|
|
keymacro_add(el, in, keymacro_map_str(el, out), ntype); |
1359 |
|
|
map[(unsigned char) *in] = ED_SEQUENCE_LEAD_IN; |
1360 |
|
|
break; |
1361 |
|
|
|
1362 |
|
|
case XK_CMD: |
1363 |
✗✓ |
6 |
if ((cmd = parse_cmd(el, argv[argc])) == -1) { |
1364 |
|
|
(void) fprintf(el->el_errfile, |
1365 |
|
|
"%ls: Invalid command `%ls'.\n", |
1366 |
|
|
argv[0], argv[argc]); |
1367 |
|
|
return -1; |
1368 |
|
|
} |
1369 |
✗✓ |
6 |
if (key) |
1370 |
|
|
terminal_set_arrow(el, in, keymacro_map_str(el, out), ntype); |
1371 |
|
|
else { |
1372 |
✗✓ |
6 |
if (in[1]) { |
1373 |
|
|
keymacro_add(el, in, keymacro_map_cmd(el, cmd), ntype); |
1374 |
|
|
map[(unsigned char) *in] = ED_SEQUENCE_LEAD_IN; |
1375 |
|
|
} else { |
1376 |
|
6 |
keymacro_clear(el, map, in); |
1377 |
|
6 |
map[(unsigned char) *in] = cmd; |
1378 |
|
|
} |
1379 |
|
|
} |
1380 |
|
|
break; |
1381 |
|
|
|
1382 |
|
|
default: |
1383 |
|
|
EL_ABORT((el->el_errfile, "Bad XK_ type %d\n", ntype)); |
1384 |
|
|
break; |
1385 |
|
|
} |
1386 |
|
6 |
return 0; |
1387 |
|
6 |
} |
1388 |
|
|
|
1389 |
|
|
|
1390 |
|
|
/* map_addfunc(): |
1391 |
|
|
* add a user defined function |
1392 |
|
|
*/ |
1393 |
|
|
protected int |
1394 |
|
|
map_addfunc(EditLine *el, const wchar_t *name, const wchar_t *help, |
1395 |
|
|
el_func_t func) |
1396 |
|
|
{ |
1397 |
|
|
void *p; |
1398 |
|
12 |
int nf = el->el_map.nfunc + 1; |
1399 |
|
|
|
1400 |
✗✓ |
6 |
if (name == NULL || help == NULL || func == NULL) |
1401 |
|
|
return -1; |
1402 |
|
|
|
1403 |
✗✓ |
6 |
if ((p = reallocarray(el->el_map.func, nf, sizeof(el_func_t))) == NULL) |
1404 |
|
|
return -1; |
1405 |
|
6 |
el->el_map.func = (el_func_t *) p; |
1406 |
✗✓ |
12 |
if ((p = reallocarray(el->el_map.help, nf, sizeof(el_bindings_t))) |
1407 |
|
6 |
== NULL) |
1408 |
|
|
return -1; |
1409 |
|
6 |
el->el_map.help = (el_bindings_t *) p; |
1410 |
|
|
|
1411 |
|
6 |
nf = el->el_map.nfunc; |
1412 |
|
6 |
el->el_map.func[nf] = func; |
1413 |
|
|
|
1414 |
|
6 |
el->el_map.help[nf].name = name; |
1415 |
|
6 |
el->el_map.help[nf].func = nf; |
1416 |
|
6 |
el->el_map.help[nf].description = help; |
1417 |
|
6 |
el->el_map.nfunc++; |
1418 |
|
|
|
1419 |
|
6 |
return 0; |
1420 |
|
6 |
} |