Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | | - |
7 | | - |
8 | | - |
9 | | - |
10 | | - |
11 | | - |
12 | | - |
13 | | - |
14 | | - |
15 | | - |
16 | | - |
17 | | - |
18 | | - |
19 | | - |
20 | | - |
21 | | - |
22 | #define READLINE_LIBRARY | - |
23 | | - |
24 | #if defined (HAVE_CONFIG_H) | - |
25 | # include <config.h> | - |
26 | #endif | - |
27 | | - |
28 | #include <sys/types.h> | - |
29 | | - |
30 | #if defined (HAVE_UNISTD_H) | - |
31 | # include <unistd.h> /* for _POSIX_VERSION */ | - |
32 | #endif /* HAVE_UNISTD_H */ | - |
33 | | - |
34 | #if defined (HAVE_STDLIB_H) | - |
35 | # include <stdlib.h> | - |
36 | #else | - |
37 | # include "ansi_stdlib.h" | - |
38 | #endif /* HAVE_STDLIB_H */ | - |
39 | | - |
40 | #include <stdio.h> | - |
41 | | - |
42 | | - |
43 | #include "rldefs.h" | - |
44 | | - |
45 | | - |
46 | #include "readline.h" | - |
47 | #include "history.h" | - |
48 | | - |
49 | #include "rlprivate.h" | - |
50 | #include "xmalloc.h" | - |
51 | | - |
52 | | - |
53 | | - |
54 | | - |
55 | | - |
56 | | - |
57 | | - |
58 | | - |
59 | #define DEFAULT_MAX_KILLS 10 | - |
60 | | - |
61 | | - |
62 | static int rl_max_kills = DEFAULT_MAX_KILLS; | - |
63 | | - |
64 | | - |
65 | static char **rl_kill_ring = (char **)NULL; | - |
66 | | - |
67 | | - |
68 | static int rl_kill_index; | - |
69 | | - |
70 | | - |
71 | static int rl_kill_ring_length; | - |
72 | | - |
73 | static int _rl_copy_to_kill_ring PARAMS((char *, int)); | - |
74 | static int region_kill_internal PARAMS((int)); | - |
75 | static int _rl_copy_word_as_kill PARAMS((int, int)); | - |
76 | static int rl_yank_nth_arg_internal PARAMS((int, int, int)); | - |
77 | | - |
78 | | - |
79 | | - |
80 | int | - |
81 | rl_set_retained_kills (int num) | - |
82 | { | - |
83 | return 0; never executed: return 0; | 0 |
84 | } | - |
85 | | - |
86 | | - |
87 | | - |
88 | | - |
89 | | - |
90 | static int | - |
91 | _rl_copy_to_kill_ring (char *text, int append) | - |
92 | { | - |
93 | char *old, *new; | - |
94 | int slot; | - |
95 | | - |
96 | | - |
97 | if (_rl_last_command_was_kill == 0 || rl_kill_ring == 0)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
98 | { | - |
99 | | - |
100 | if (rl_kill_ring == 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
101 | { | - |
102 | | - |
103 | rl_kill_ring = (char **) | - |
104 | xmalloc (((rl_kill_ring_length = 1) + 1) * sizeof (char *)); | - |
105 | rl_kill_ring[slot = 0] = (char *)NULL; | - |
106 | } never executed: end of block | 0 |
107 | else | - |
108 | { | - |
109 | | - |
110 | | - |
111 | slot = rl_kill_ring_length; | - |
112 | if (slot == rl_max_kills)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
113 | { | - |
114 | register int i; | - |
115 | xfree (rl_kill_ring[0]); | - |
116 | for (i = 0; i < slot; i++)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
117 | rl_kill_ring[i] = rl_kill_ring[i + 1]; never executed: rl_kill_ring[i] = rl_kill_ring[i + 1]; | 0 |
118 | } never executed: end of block | 0 |
119 | else | - |
120 | { | - |
121 | slot = rl_kill_ring_length += 1; | - |
122 | rl_kill_ring = (char **)xrealloc (rl_kill_ring, (slot + 1) * sizeof (char *)); | - |
123 | } never executed: end of block | 0 |
124 | rl_kill_ring[--slot] = (char *)NULL; | - |
125 | } never executed: end of block | 0 |
126 | } | - |
127 | else | - |
128 | slot = rl_kill_ring_length - 1; never executed: slot = rl_kill_ring_length - 1; | 0 |
129 | | - |
130 | | - |
131 | if (_rl_last_command_was_kill && rl_kill_ring[slot] && rl_editing_mode != vi_mode)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
132 | { | - |
133 | old = rl_kill_ring[slot]; | - |
134 | new = (char *)xmalloc (1 + strlen (old) + strlen (text)); | - |
135 | | - |
136 | if (append)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
137 | { | - |
138 | strcpy (new, old); | - |
139 | strcat (new, text); | - |
140 | } never executed: end of block | 0 |
141 | else | - |
142 | { | - |
143 | strcpy (new, text); | - |
144 | strcat (new, old); | - |
145 | } never executed: end of block | 0 |
146 | xfree (old); | - |
147 | xfree (text); | - |
148 | rl_kill_ring[slot] = new; | - |
149 | } never executed: end of block | 0 |
150 | else | - |
151 | rl_kill_ring[slot] = text; never executed: rl_kill_ring[slot] = text; | 0 |
152 | | - |
153 | rl_kill_index = slot; | - |
154 | return 0; never executed: return 0; | 0 |
155 | } | - |
156 | | - |
157 | | - |
158 | | - |
159 | | - |
160 | | - |
161 | | - |
162 | int | - |
163 | rl_kill_text (int from, int to) | - |
164 | { | - |
165 | char *text; | - |
166 | | - |
167 | | - |
168 | if (from == to)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
169 | { | - |
170 | _rl_last_command_was_kill++; | - |
171 | return 0; never executed: return 0; | 0 |
172 | } | - |
173 | | - |
174 | text = rl_copy_text (from, to); | - |
175 | | - |
176 | | - |
177 | rl_delete_text (from, to); | - |
178 | | - |
179 | _rl_copy_to_kill_ring (text, from < to); | - |
180 | | - |
181 | _rl_last_command_was_kill++; | - |
182 | return 0; never executed: return 0; | 0 |
183 | } | - |
184 | | - |
185 | | - |
186 | | - |
187 | | - |
188 | | - |
189 | | - |
190 | | - |
191 | | - |
192 | | - |
193 | | - |
194 | | - |
195 | | - |
196 | int | - |
197 | rl_kill_word (int count, int key) | - |
198 | { | - |
199 | int orig_point; | - |
200 | | - |
201 | if (count < 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
202 | return (rl_backward_kill_word (-count, key)); never executed: return (rl_backward_kill_word (-count, key)); | 0 |
203 | else | - |
204 | { | - |
205 | orig_point = rl_point; | - |
206 | rl_forward_word (count, key); | - |
207 | | - |
208 | if (rl_point != orig_point)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
209 | rl_kill_text (orig_point, rl_point); never executed: rl_kill_text (orig_point, rl_point); | 0 |
210 | | - |
211 | rl_point = orig_point; | - |
212 | if (rl_editing_mode == emacs_mode)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
213 | rl_mark = rl_point; never executed: rl_mark = rl_point; | 0 |
214 | } never executed: end of block | 0 |
215 | return 0; never executed: return 0; | 0 |
216 | } | - |
217 | | - |
218 | | - |
219 | int | - |
220 | rl_backward_kill_word (int count, int key) | - |
221 | { | - |
222 | int orig_point; | - |
223 | | - |
224 | if (count < 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
225 | return (rl_kill_word (-count, key)); never executed: return (rl_kill_word (-count, key)); | 0 |
226 | else | - |
227 | { | - |
228 | orig_point = rl_point; | - |
229 | rl_backward_word (count, key); | - |
230 | | - |
231 | if (rl_point != orig_point)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
232 | rl_kill_text (orig_point, rl_point); never executed: rl_kill_text (orig_point, rl_point); | 0 |
233 | | - |
234 | if (rl_editing_mode == emacs_mode)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
235 | rl_mark = rl_point; never executed: rl_mark = rl_point; | 0 |
236 | } never executed: end of block | 0 |
237 | return 0; never executed: return 0; | 0 |
238 | } | - |
239 | | - |
240 | | - |
241 | | - |
242 | int | - |
243 | rl_kill_line (int direction, int key) | - |
244 | { | - |
245 | int orig_point; | - |
246 | | - |
247 | if (direction < 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
248 | return (rl_backward_kill_line (1, key)); never executed: return (rl_backward_kill_line (1, key)); | 0 |
249 | else | - |
250 | { | - |
251 | orig_point = rl_point; | - |
252 | rl_end_of_line (1, key); | - |
253 | if (orig_point != rl_point)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
254 | rl_kill_text (orig_point, rl_point); never executed: rl_kill_text (orig_point, rl_point); | 0 |
255 | rl_point = orig_point; | - |
256 | if (rl_editing_mode == emacs_mode)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
257 | rl_mark = rl_point; never executed: rl_mark = rl_point; | 0 |
258 | } never executed: end of block | 0 |
259 | return 0; never executed: return 0; | 0 |
260 | } | - |
261 | | - |
262 | | - |
263 | | - |
264 | int | - |
265 | rl_backward_kill_line (int direction, int key) | - |
266 | { | - |
267 | int orig_point; | - |
268 | | - |
269 | if (direction < 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
270 | return (rl_kill_line (1, key)); never executed: return (rl_kill_line (1, key)); | 0 |
271 | else | - |
272 | { | - |
273 | if (rl_point == 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
274 | rl_ding (); never executed: rl_ding (); | 0 |
275 | else | - |
276 | { | - |
277 | orig_point = rl_point; | - |
278 | rl_beg_of_line (1, key); | - |
279 | if (rl_point != orig_point)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
280 | rl_kill_text (orig_point, rl_point); never executed: rl_kill_text (orig_point, rl_point); | 0 |
281 | if (rl_editing_mode == emacs_mode)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
282 | rl_mark = rl_point; never executed: rl_mark = rl_point; | 0 |
283 | } never executed: end of block | 0 |
284 | } | - |
285 | return 0; never executed: return 0; | 0 |
286 | } | - |
287 | | - |
288 | | - |
289 | int | - |
290 | rl_kill_full_line (int count, int key) | - |
291 | { | - |
292 | rl_begin_undo_group (); | - |
293 | rl_point = 0; | - |
294 | rl_kill_text (rl_point, rl_end); | - |
295 | rl_mark = 0; | - |
296 | rl_end_undo_group (); | - |
297 | return 0; never executed: return 0; | 0 |
298 | } | - |
299 | | - |
300 | | - |
301 | | - |
302 | | - |
303 | | - |
304 | | - |
305 | | - |
306 | int | - |
307 | rl_unix_word_rubout (int count, int key) | - |
308 | { | - |
309 | int orig_point; | - |
310 | | - |
311 | if (rl_point == 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
312 | rl_ding (); never executed: rl_ding (); | 0 |
313 | else | - |
314 | { | - |
315 | orig_point = rl_point; | - |
316 | if (count <= 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
317 | count = 1; never executed: count = 1; | 0 |
318 | | - |
319 | while (count--)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
320 | { | - |
321 | while (rl_point && whitespace (rl_line_buffer[rl_point - 1]))TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
322 | rl_point--; never executed: rl_point--; | 0 |
323 | | - |
324 | while (rl_point && (whitespace (rl_line_buffer[rl_point - 1]) == 0))TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
325 | rl_point--; never executed: rl_point--; | 0 |
326 | } never executed: end of block | 0 |
327 | | - |
328 | rl_kill_text (orig_point, rl_point); | - |
329 | if (rl_editing_mode == emacs_mode)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
330 | rl_mark = rl_point; never executed: rl_mark = rl_point; | 0 |
331 | } never executed: end of block | 0 |
332 | | - |
333 | return 0; never executed: return 0; | 0 |
334 | } | - |
335 | | - |
336 | | - |
337 | | - |
338 | int | - |
339 | rl_unix_filename_rubout (int count, int key) | - |
340 | { | - |
341 | int orig_point, c; | - |
342 | | - |
343 | if (rl_point == 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
344 | rl_ding (); never executed: rl_ding (); | 0 |
345 | else | - |
346 | { | - |
347 | orig_point = rl_point; | - |
348 | if (count <= 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
349 | count = 1; never executed: count = 1; | 0 |
350 | | - |
351 | while (count--)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
352 | { | - |
353 | c = rl_line_buffer[rl_point - 1]; | - |
354 | while (rl_point && (whitespace (c) || c == '/'))TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
355 | { | - |
356 | rl_point--; | - |
357 | c = rl_line_buffer[rl_point - 1]; | - |
358 | } never executed: end of block | 0 |
359 | | - |
360 | while (rl_point && (whitespace (c) == 0) && c != '/')TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
361 | { | - |
362 | rl_point--; | - |
363 | c = rl_line_buffer[rl_point - 1]; | - |
364 | } never executed: end of block | 0 |
365 | } never executed: end of block | 0 |
366 | | - |
367 | rl_kill_text (orig_point, rl_point); | - |
368 | if (rl_editing_mode == emacs_mode)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
369 | rl_mark = rl_point; never executed: rl_mark = rl_point; | 0 |
370 | } never executed: end of block | 0 |
371 | | - |
372 | return 0; never executed: return 0; | 0 |
373 | } | - |
374 | | - |
375 | | - |
376 | | - |
377 | | - |
378 | | - |
379 | | - |
380 | | - |
381 | int | - |
382 | rl_unix_line_discard (int count, int key) | - |
383 | { | - |
384 | if (rl_point == 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
385 | rl_ding (); never executed: rl_ding (); | 0 |
386 | else | - |
387 | { | - |
388 | rl_kill_text (rl_point, 0); | - |
389 | rl_point = 0; | - |
390 | if (rl_editing_mode == emacs_mode)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
391 | rl_mark = rl_point; never executed: rl_mark = rl_point; | 0 |
392 | } never executed: end of block | 0 |
393 | return 0; never executed: return 0; | 0 |
394 | } | - |
395 | | - |
396 | | - |
397 | | - |
398 | static int | - |
399 | region_kill_internal (int delete) | - |
400 | { | - |
401 | char *text; | - |
402 | | - |
403 | if (rl_mark != rl_point)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
404 | { | - |
405 | text = rl_copy_text (rl_point, rl_mark); | - |
406 | if (delete)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
407 | rl_delete_text (rl_point, rl_mark); never executed: rl_delete_text (rl_point, rl_mark); | 0 |
408 | _rl_copy_to_kill_ring (text, rl_point < rl_mark); | - |
409 | } never executed: end of block | 0 |
410 | | - |
411 | _rl_last_command_was_kill++; | - |
412 | return 0; never executed: return 0; | 0 |
413 | } | - |
414 | | - |
415 | | - |
416 | int | - |
417 | rl_copy_region_to_kill (int count, int key) | - |
418 | { | - |
419 | return (region_kill_internal (0)); never executed: return (region_kill_internal (0)); | 0 |
420 | } | - |
421 | | - |
422 | | - |
423 | int | - |
424 | rl_kill_region (int count, int key) | - |
425 | { | - |
426 | int r, npoint; | - |
427 | | - |
428 | npoint = (rl_point < rl_mark) ? rl_point : rl_mark;TRUE | never evaluated | FALSE | never evaluated |
| 0 |
429 | r = region_kill_internal (1); | - |
430 | _rl_fix_point (1); | - |
431 | rl_point = npoint; | - |
432 | return r; never executed: return r; | 0 |
433 | } | - |
434 | | - |
435 | | - |
436 | | - |
437 | static int | - |
438 | _rl_copy_word_as_kill (int count, int dir) | - |
439 | { | - |
440 | int om, op, r; | - |
441 | | - |
442 | om = rl_mark; | - |
443 | op = rl_point; | - |
444 | | - |
445 | if (dir > 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
446 | rl_forward_word (count, 0); never executed: rl_forward_word (count, 0); | 0 |
447 | else | - |
448 | rl_backward_word (count, 0); never executed: rl_backward_word (count, 0); | 0 |
449 | | - |
450 | rl_mark = rl_point; | - |
451 | | - |
452 | if (dir > 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
453 | rl_backward_word (count, 0); never executed: rl_backward_word (count, 0); | 0 |
454 | else | - |
455 | rl_forward_word (count, 0); never executed: rl_forward_word (count, 0); | 0 |
456 | | - |
457 | r = region_kill_internal (0); | - |
458 | | - |
459 | rl_mark = om; | - |
460 | rl_point = op; | - |
461 | | - |
462 | return r; never executed: return r; | 0 |
463 | } | - |
464 | | - |
465 | int | - |
466 | rl_copy_forward_word (int count, int key) | - |
467 | { | - |
468 | if (count < 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
469 | return (rl_copy_backward_word (-count, key)); never executed: return (rl_copy_backward_word (-count, key)); | 0 |
470 | | - |
471 | return (_rl_copy_word_as_kill (count, 1)); never executed: return (_rl_copy_word_as_kill (count, 1)); | 0 |
472 | } | - |
473 | | - |
474 | int | - |
475 | rl_copy_backward_word (int count, int key) | - |
476 | { | - |
477 | if (count < 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
478 | return (rl_copy_forward_word (-count, key)); never executed: return (rl_copy_forward_word (-count, key)); | 0 |
479 | | - |
480 | return (_rl_copy_word_as_kill (count, -1)); never executed: return (_rl_copy_word_as_kill (count, -1)); | 0 |
481 | } | - |
482 | | - |
483 | | - |
484 | int | - |
485 | rl_yank (int count, int key) | - |
486 | { | - |
487 | if (rl_kill_ring == 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
488 | { | - |
489 | _rl_abort_internal (); | - |
490 | return 1; never executed: return 1; | 0 |
491 | } | - |
492 | | - |
493 | _rl_set_mark_at_pos (rl_point); | - |
494 | rl_insert_text (rl_kill_ring[rl_kill_index]); | - |
495 | return 0; never executed: return 0; | 0 |
496 | } | - |
497 | | - |
498 | | - |
499 | | - |
500 | | - |
501 | | - |
502 | int | - |
503 | rl_yank_pop (int count, int key) | - |
504 | { | - |
505 | int l, n; | - |
506 | | - |
507 | if (((rl_last_func != rl_yank_pop) && (rl_last_func != rl_yank)) ||TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
508 | !rl_kill_ring)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
509 | { | - |
510 | _rl_abort_internal (); | - |
511 | return 1; never executed: return 1; | 0 |
512 | } | - |
513 | | - |
514 | l = strlen (rl_kill_ring[rl_kill_index]); | - |
515 | n = rl_point - l; | - |
516 | if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l)) never executed: __result = (((const unsigned char *) (const char *) ( (rl_line_buffer + n) ))[3] - __s2[3]); never executed: end of block never executed: end of block never executed: __result = (((const unsigned char *) (const char *) ( (rl_kill_ring[rl_kill_index]) ))[3] - __s2[3]); never executed: end of block never executed: end of block TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
517 | { | - |
518 | rl_delete_text (n, rl_point); | - |
519 | rl_point = n; | - |
520 | rl_kill_index--; | - |
521 | if (rl_kill_index < 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
522 | rl_kill_index = rl_kill_ring_length - 1; never executed: rl_kill_index = rl_kill_ring_length - 1; | 0 |
523 | rl_yank (1, 0); | - |
524 | return 0; never executed: return 0; | 0 |
525 | } | - |
526 | else | - |
527 | { | - |
528 | _rl_abort_internal (); | - |
529 | return 1; never executed: return 1; | 0 |
530 | } | - |
531 | } | - |
532 | | - |
533 | #if defined (VI_MODE) | - |
534 | int | - |
535 | rl_vi_yank_pop (int count, int key) | - |
536 | { | - |
537 | int l, n; | - |
538 | | - |
539 | if (((rl_last_func != rl_vi_yank_pop) && (rl_last_func != rl_vi_put)) ||TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
540 | !rl_kill_ring)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
541 | { | - |
542 | _rl_abort_internal (); | - |
543 | return 1; never executed: return 1; | 0 |
544 | } | - |
545 | | - |
546 | l = strlen (rl_kill_ring[rl_kill_index]); | - |
547 | n = rl_point - l; | - |
548 | if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l)) never executed: __result = (((const unsigned char *) (const char *) ( (rl_line_buffer + n) ))[3] - __s2[3]); never executed: end of block never executed: end of block never executed: __result = (((const unsigned char *) (const char *) ( (rl_kill_ring[rl_kill_index]) ))[3] - __s2[3]); never executed: end of block never executed: end of block TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
549 | { | - |
550 | rl_delete_text (n, rl_point); | - |
551 | rl_point = n; | - |
552 | rl_kill_index--; | - |
553 | if (rl_kill_index < 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
554 | rl_kill_index = rl_kill_ring_length - 1; never executed: rl_kill_index = rl_kill_ring_length - 1; | 0 |
555 | rl_vi_put (1, 'p'); | - |
556 | return 0; never executed: return 0; | 0 |
557 | } | - |
558 | else | - |
559 | { | - |
560 | _rl_abort_internal (); | - |
561 | return 1; never executed: return 1; | 0 |
562 | } | - |
563 | } | - |
564 | #endif /* VI_MODE */ | - |
565 | | - |
566 | | - |
567 | | - |
568 | static int | - |
569 | rl_yank_nth_arg_internal (int count, int key, int history_skip) | - |
570 | { | - |
571 | register HIST_ENTRY *entry; | - |
572 | char *arg; | - |
573 | int i, pos; | - |
574 | | - |
575 | pos = where_history (); | - |
576 | | - |
577 | if (history_skip)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
578 | { | - |
579 | for (i = 0; i < history_skip; i++)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
580 | entry = previous_history (); never executed: entry = previous_history (); | 0 |
581 | } never executed: end of block | 0 |
582 | | - |
583 | entry = previous_history (); | - |
584 | | - |
585 | history_set_pos (pos); | - |
586 | | - |
587 | if (entry == 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
588 | { | - |
589 | rl_ding (); | - |
590 | return 1; never executed: return 1; | 0 |
591 | } | - |
592 | | - |
593 | arg = history_arg_extract (count, count, entry->line); | - |
594 | if (!arg || !*arg)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
595 | { | - |
596 | rl_ding (); | - |
597 | FREE (arg); never executed: free (arg); TRUE | never evaluated | FALSE | never evaluated |
| 0 |
598 | return 1; never executed: return 1; | 0 |
599 | } | - |
600 | | - |
601 | rl_begin_undo_group (); | - |
602 | | - |
603 | _rl_set_mark_at_pos (rl_point); | - |
604 | | - |
605 | #if defined (VI_MODE) | - |
606 | | - |
607 | | - |
608 | if (rl_editing_mode == vi_mode)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
609 | { | - |
610 | rl_vi_append_mode (1, key); | - |
611 | rl_insert_text (" "); | - |
612 | } never executed: end of block | 0 |
613 | #endif /* VI_MODE */ | - |
614 | | - |
615 | rl_insert_text (arg); | - |
616 | xfree (arg); | - |
617 | | - |
618 | rl_end_undo_group (); | - |
619 | return 0; never executed: return 0; | 0 |
620 | } | - |
621 | | - |
622 | | - |
623 | int | - |
624 | rl_yank_nth_arg (int count, int key) | - |
625 | { | - |
626 | return (rl_yank_nth_arg_internal (count, key, 0)); never executed: return (rl_yank_nth_arg_internal (count, key, 0)); | 0 |
627 | } | - |
628 | | - |
629 | | - |
630 | | - |
631 | | - |
632 | int | - |
633 | rl_yank_last_arg (int count, int key) | - |
634 | { | - |
635 | static int history_skip = 0; | - |
636 | static int explicit_arg_p = 0; | - |
637 | static int count_passed = 1; | - |
638 | static int direction = 1; | - |
639 | static int undo_needed = 0; | - |
640 | int retval; | - |
641 | | - |
642 | if (rl_last_func != rl_yank_last_arg)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
643 | { | - |
644 | history_skip = 0; | - |
645 | explicit_arg_p = rl_explicit_arg; | - |
646 | count_passed = count; | - |
647 | direction = 1; | - |
648 | } never executed: end of block | 0 |
649 | else | - |
650 | { | - |
651 | if (undo_needed)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
652 | rl_do_undo (); never executed: rl_do_undo (); | 0 |
653 | if (count < 0) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
654 | direction = -direction; never executed: direction = -direction; | 0 |
655 | history_skip += direction; | - |
656 | if (history_skip < 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
657 | history_skip = 0; never executed: history_skip = 0; | 0 |
658 | } never executed: end of block | 0 |
659 | | - |
660 | if (explicit_arg_p)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
661 | retval = rl_yank_nth_arg_internal (count_passed, key, history_skip); never executed: retval = rl_yank_nth_arg_internal (count_passed, key, history_skip); | 0 |
662 | else | - |
663 | retval = rl_yank_nth_arg_internal ('$', key, history_skip); never executed: retval = rl_yank_nth_arg_internal ('$', key, history_skip); | 0 |
664 | | - |
665 | undo_needed = retval == 0; | - |
666 | return retval; never executed: return retval; | 0 |
667 | } | - |
668 | | - |
669 | | - |
670 | | - |
671 | | - |
672 | | - |
673 | int | - |
674 | rl_bracketed_paste_begin (int count, int key) | - |
675 | { | - |
676 | int retval, c; | - |
677 | size_t len, cap; | - |
678 | char *buf; | - |
679 | | - |
680 | retval = 1; | - |
681 | len = 0; | - |
682 | buf = xmalloc (cap = 64); | - |
683 | | - |
684 | RL_SETSTATE (RL_STATE_MOREINPUT); | - |
685 | while ((c = rl_read_key ()) >= 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
686 | { | - |
687 | if (RL_ISSTATE (RL_STATE_MACRODEF))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
688 | _rl_add_macro_char (c); never executed: _rl_add_macro_char (c); | 0 |
689 | | - |
690 | if (c == '\r') TRUE | never evaluated | FALSE | never evaluated |
| 0 |
691 | c = '\n'; never executed: c = '\n'; | 0 |
692 | | - |
693 | if (len == cap)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
694 | buf = xrealloc (buf, cap *= 2); never executed: buf = xrealloc (buf, cap *= 2); | 0 |
695 | | - |
696 | buf[len++] = c; | - |
697 | if (len >= BRACK_PASTE_SLEN && c == BRACK_PASTE_LAST &&TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
698 | STREQN (buf + len - BRACK_PASTE_SLEN, BRACK_PASTE_SUFF, BRACK_PASTE_SLEN)) never executed: __result = (((const unsigned char *) (const char *) ( (buf + len - 6) ))[3] - __s2[3]); never executed: end of block never executed: end of block never executed: __result = (((const unsigned char *) (const char *) ( ("\033[201~") ))[3] - __s2[3]); never executed: end of block never executed: end of block TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
699 | { | - |
700 | len -= BRACK_PASTE_SLEN; | - |
701 | break; never executed: break; | 0 |
702 | } | - |
703 | } never executed: end of block | 0 |
704 | RL_UNSETSTATE (RL_STATE_MOREINPUT); | - |
705 | | - |
706 | if (c >= 0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
707 | { | - |
708 | if (len == cap)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
709 | buf = xrealloc (buf, cap + 1); never executed: buf = xrealloc (buf, cap + 1); | 0 |
710 | buf[len] = '\0'; | - |
711 | retval = rl_insert_text (buf); | - |
712 | } never executed: end of block | 0 |
713 | | - |
714 | xfree (buf); | - |
715 | return (retval); never executed: return (retval); | 0 |
716 | } | - |
717 | | - |
718 | | - |
719 | #if defined (_WIN32) | - |
720 | #include <windows.h> | - |
721 | | - |
722 | int | - |
723 | rl_paste_from_clipboard (int count, int key) | - |
724 | { | - |
725 | char *data, *ptr; | - |
726 | int len; | - |
727 | | - |
728 | if (OpenClipboard (NULL) == 0) | - |
729 | return (0); | - |
730 | | - |
731 | data = (char *)GetClipboardData (CF_TEXT); | - |
732 | if (data) | - |
733 | { | - |
734 | ptr = strchr (data, '\r'); | - |
735 | if (ptr) | - |
736 | { | - |
737 | len = ptr - data; | - |
738 | ptr = (char *)xmalloc (len + 1); | - |
739 | ptr[len] = '\0'; | - |
740 | strncpy (ptr, data, len); | - |
741 | } | - |
742 | else | - |
743 | ptr = data; | - |
744 | _rl_set_mark_at_pos (rl_point); | - |
745 | rl_insert_text (ptr); | - |
746 | if (ptr != data) | - |
747 | xfree (ptr); | - |
748 | CloseClipboard (); | - |
749 | } | - |
750 | return (0); | - |
751 | } | - |
752 | #endif /* _WIN32 */ | - |
| | |