1
/* Readline.h -- the names of functions callable from within readline. */
3
/* Copyright (C) 1987-2005 Free Software Foundation, Inc.
5
This file is part of the GNU Readline Library, a library for
6
reading lines of text with interactive input and history editing.
8
The GNU Readline Library is free software; you can redistribute it
9
and/or modify it under the terms of the GNU General Public License
10
as published by the Free Software Foundation; either version 2, or
11
(at your option) any later version.
13
The GNU Readline Library is distributed in the hope that it will be
14
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
15
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
GNU General Public License for more details.
18
The GNU General Public License is often shipped with GNU software, and
19
is generally kept in a file called COPYING or LICENSE. If you do not
20
have a copy of the license, write to the Free Software Foundation,
21
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
23
#if !defined (_READLINE_H_)
30
#if defined (READLINE_LIBRARY)
32
# include "rltypedefs.h"
36
# include <readline/rlstdc.h>
37
# include <readline/rltypedefs.h>
38
# include <readline/keymaps.h>
39
# include <readline/tilde.h>
42
/* Hex-encoded Readline version number. */
43
#define RL_READLINE_VERSION 0x0502 /* Readline 5.2 */
44
#define RL_VERSION_MAJOR 5
45
#define RL_VERSION_MINOR 2
47
/* Readline data structures. */
49
/* Maintaining the state of undo. We remember individual deletes and inserts
50
on a chain of things to do. */
52
/* The actions that undo knows how to undo. Notice that UNDO_DELETE means
53
to insert some text, and UNDO_INSERT means to delete some text. I.e.,
54
the code tells undo what to undo, not how to undo it. */
55
enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
57
/* What an element of THE_UNDO_LIST looks like. */
58
typedef struct undo_list {
59
struct undo_list *next;
60
int start, end; /* Where the change took place. */
61
char *text; /* The text to insert, if undoing a delete. */
62
enum undo_code what; /* Delete, Insert, Begin, End. */
65
/* The current undo list for RL_LINE_BUFFER. */
66
extern UNDO_LIST *rl_undo_list;
68
/* The data structure for mapping textual names to code addresses. */
69
typedef struct _funmap {
71
rl_command_func_t *function;
74
extern FUNMAP **funmap;
76
/* **************************************************************** */
78
/* Functions available to bind to key sequences */
80
/* **************************************************************** */
82
/* Bindable commands for numeric arguments. */
83
extern int rl_digit_argument PARAMS((int, int));
84
extern int rl_universal_argument PARAMS((int, int));
86
/* Bindable commands for moving the cursor. */
87
extern int rl_forward_byte PARAMS((int, int));
88
extern int rl_forward_char PARAMS((int, int));
89
extern int rl_forward PARAMS((int, int));
90
extern int rl_backward_byte PARAMS((int, int));
91
extern int rl_backward_char PARAMS((int, int));
92
extern int rl_backward PARAMS((int, int));
93
extern int rl_beg_of_line PARAMS((int, int));
94
extern int rl_end_of_line PARAMS((int, int));
95
extern int rl_forward_word PARAMS((int, int));
96
extern int rl_backward_word PARAMS((int, int));
97
extern int rl_refresh_line PARAMS((int, int));
98
extern int rl_clear_screen PARAMS((int, int));
99
extern int rl_arrow_keys PARAMS((int, int));
101
/* Bindable commands for inserting and deleting text. */
102
extern int rl_insert PARAMS((int, int));
103
extern int rl_quoted_insert PARAMS((int, int));
104
extern int rl_tab_insert PARAMS((int, int));
105
extern int rl_newline PARAMS((int, int));
106
extern int rl_do_lowercase_version PARAMS((int, int));
107
extern int rl_rubout PARAMS((int, int));
108
extern int rl_delete PARAMS((int, int));
109
extern int rl_rubout_or_delete PARAMS((int, int));
110
extern int rl_delete_horizontal_space PARAMS((int, int));
111
extern int rl_delete_or_show_completions PARAMS((int, int));
112
extern int rl_insert_comment PARAMS((int, int));
114
/* Bindable commands for changing case. */
115
extern int rl_upcase_word PARAMS((int, int));
116
extern int rl_downcase_word PARAMS((int, int));
117
extern int rl_capitalize_word PARAMS((int, int));
119
/* Bindable commands for transposing characters and words. */
120
extern int rl_transpose_words PARAMS((int, int));
121
extern int rl_transpose_chars PARAMS((int, int));
123
/* Bindable commands for searching within a line. */
124
extern int rl_char_search PARAMS((int, int));
125
extern int rl_backward_char_search PARAMS((int, int));
127
/* Bindable commands for readline's interface to the command history. */
128
extern int rl_beginning_of_history PARAMS((int, int));
129
extern int rl_end_of_history PARAMS((int, int));
130
extern int rl_get_next_history PARAMS((int, int));
131
extern int rl_get_previous_history PARAMS((int, int));
133
/* Bindable commands for managing the mark and region. */
134
extern int rl_set_mark PARAMS((int, int));
135
extern int rl_exchange_point_and_mark PARAMS((int, int));
137
/* Bindable commands to set the editing mode (emacs or vi). */
138
extern int rl_vi_editing_mode PARAMS((int, int));
139
extern int rl_emacs_editing_mode PARAMS((int, int));
141
/* Bindable commands to change the insert mode (insert or overwrite) */
142
extern int rl_overwrite_mode PARAMS((int, int));
144
/* Bindable commands for managing key bindings. */
145
extern int rl_re_read_init_file PARAMS((int, int));
146
extern int rl_dump_functions PARAMS((int, int));
147
extern int rl_dump_macros PARAMS((int, int));
148
extern int rl_dump_variables PARAMS((int, int));
150
/* Bindable commands for word completion. */
151
extern int rl_complete PARAMS((int, int));
152
extern int rl_possible_completions PARAMS((int, int));
153
extern int rl_insert_completions PARAMS((int, int));
154
extern int rl_menu_complete PARAMS((int, int));
156
/* Bindable commands for killing and yanking text, and managing the kill ring. */
157
extern int rl_kill_word PARAMS((int, int));
158
extern int rl_backward_kill_word PARAMS((int, int));
159
extern int rl_kill_line PARAMS((int, int));
160
extern int rl_backward_kill_line PARAMS((int, int));
161
extern int rl_kill_full_line PARAMS((int, int));
162
extern int rl_unix_word_rubout PARAMS((int, int));
163
extern int rl_unix_filename_rubout PARAMS((int, int));
164
extern int rl_unix_line_discard PARAMS((int, int));
165
extern int rl_copy_region_to_kill PARAMS((int, int));
166
extern int rl_kill_region PARAMS((int, int));
167
extern int rl_copy_forward_word PARAMS((int, int));
168
extern int rl_copy_backward_word PARAMS((int, int));
169
extern int rl_yank PARAMS((int, int));
170
extern int rl_yank_pop PARAMS((int, int));
171
extern int rl_yank_nth_arg PARAMS((int, int));
172
extern int rl_yank_last_arg PARAMS((int, int));
173
/* Not available unless __CYGWIN__ is defined. */
175
extern int rl_paste_from_clipboard PARAMS((int, int));
178
/* Bindable commands for incremental searching. */
179
extern int rl_reverse_search_history PARAMS((int, int));
180
extern int rl_forward_search_history PARAMS((int, int));
182
/* Bindable keyboard macro commands. */
183
extern int rl_start_kbd_macro PARAMS((int, int));
184
extern int rl_end_kbd_macro PARAMS((int, int));
185
extern int rl_call_last_kbd_macro PARAMS((int, int));
187
/* Bindable undo commands. */
188
extern int rl_revert_line PARAMS((int, int));
189
extern int rl_undo_command PARAMS((int, int));
191
/* Bindable tilde expansion commands. */
192
extern int rl_tilde_expand PARAMS((int, int));
194
/* Bindable terminal control commands. */
195
extern int rl_restart_output PARAMS((int, int));
196
extern int rl_stop_output PARAMS((int, int));
198
/* Miscellaneous bindable commands. */
199
extern int rl_abort PARAMS((int, int));
200
extern int rl_tty_status PARAMS((int, int));
202
/* Bindable commands for incremental and non-incremental history searching. */
203
extern int rl_history_search_forward PARAMS((int, int));
204
extern int rl_history_search_backward PARAMS((int, int));
205
extern int rl_noninc_forward_search PARAMS((int, int));
206
extern int rl_noninc_reverse_search PARAMS((int, int));
207
extern int rl_noninc_forward_search_again PARAMS((int, int));
208
extern int rl_noninc_reverse_search_again PARAMS((int, int));
210
/* Bindable command used when inserting a matching close character. */
211
extern int rl_insert_close PARAMS((int, int));
213
/* Not available unless READLINE_CALLBACKS is defined. */
214
extern void rl_callback_handler_install PARAMS((const char *, rl_vcpfunc_t *));
215
extern void rl_callback_read_char PARAMS((void));
216
extern void rl_callback_handler_remove PARAMS((void));
218
/* Things for vi mode. Not available unless readline is compiled -DVI_MODE. */
219
/* VI-mode bindable commands. */
220
extern int rl_vi_redo PARAMS((int, int));
221
extern int rl_vi_undo PARAMS((int, int));
222
extern int rl_vi_yank_arg PARAMS((int, int));
223
extern int rl_vi_fetch_history PARAMS((int, int));
224
extern int rl_vi_search_again PARAMS((int, int));
225
extern int rl_vi_search PARAMS((int, int));
226
extern int rl_vi_complete PARAMS((int, int));
227
extern int rl_vi_tilde_expand PARAMS((int, int));
228
extern int rl_vi_prev_word PARAMS((int, int));
229
extern int rl_vi_next_word PARAMS((int, int));
230
extern int rl_vi_end_word PARAMS((int, int));
231
extern int rl_vi_insert_beg PARAMS((int, int));
232
extern int rl_vi_append_mode PARAMS((int, int));
233
extern int rl_vi_append_eol PARAMS((int, int));
234
extern int rl_vi_eof_maybe PARAMS((int, int));
235
extern int rl_vi_insertion_mode PARAMS((int, int));
236
extern int rl_vi_movement_mode PARAMS((int, int));
237
extern int rl_vi_arg_digit PARAMS((int, int));
238
extern int rl_vi_change_case PARAMS((int, int));
239
extern int rl_vi_put PARAMS((int, int));
240
extern int rl_vi_column PARAMS((int, int));
241
extern int rl_vi_delete_to PARAMS((int, int));
242
extern int rl_vi_change_to PARAMS((int, int));
243
extern int rl_vi_yank_to PARAMS((int, int));
244
extern int rl_vi_rubout PARAMS((int, int));
245
extern int rl_vi_delete PARAMS((int, int));
246
extern int rl_vi_back_to_indent PARAMS((int, int));
247
extern int rl_vi_first_print PARAMS((int, int));
248
extern int rl_vi_char_search PARAMS((int, int));
249
extern int rl_vi_match PARAMS((int, int));
250
extern int rl_vi_change_char PARAMS((int, int));
251
extern int rl_vi_subst PARAMS((int, int));
252
extern int rl_vi_overstrike PARAMS((int, int));
253
extern int rl_vi_overstrike_delete PARAMS((int, int));
254
extern int rl_vi_replace PARAMS((int, int));
255
extern int rl_vi_set_mark PARAMS((int, int));
256
extern int rl_vi_goto_mark PARAMS((int, int));
258
/* VI-mode utility functions. */
259
extern int rl_vi_check PARAMS((void));
260
extern int rl_vi_domove PARAMS((int, int *));
261
extern int rl_vi_bracktype PARAMS((int));
263
extern void rl_vi_start_inserting PARAMS((int, int, int));
265
/* VI-mode pseudo-bindable commands, used as utility functions. */
266
extern int rl_vi_fWord PARAMS((int, int));
267
extern int rl_vi_bWord PARAMS((int, int));
268
extern int rl_vi_eWord PARAMS((int, int));
269
extern int rl_vi_fword PARAMS((int, int));
270
extern int rl_vi_bword PARAMS((int, int));
271
extern int rl_vi_eword PARAMS((int, int));
273
/* **************************************************************** */
275
/* Well Published Functions */
277
/* **************************************************************** */
279
/* Readline functions. */
280
/* Read a line of input. Prompt with PROMPT. A NULL PROMPT means none. */
281
extern char *readline PARAMS((const char *));
283
extern int rl_set_prompt PARAMS((const char *));
284
extern int rl_expand_prompt PARAMS((char *));
286
extern int rl_initialize PARAMS((void));
288
/* Undocumented; unused by readline */
289
extern int rl_discard_argument PARAMS((void));
291
/* Utility functions to bind keys to readline commands. */
292
extern int rl_add_defun PARAMS((const char *, rl_command_func_t *, int));
293
extern int rl_bind_key PARAMS((int, rl_command_func_t *));
294
extern int rl_bind_key_in_map PARAMS((int, rl_command_func_t *, Keymap));
295
extern int rl_unbind_key PARAMS((int));
296
extern int rl_unbind_key_in_map PARAMS((int, Keymap));
297
extern int rl_bind_key_if_unbound PARAMS((int, rl_command_func_t *));
298
extern int rl_bind_key_if_unbound_in_map PARAMS((int, rl_command_func_t *, Keymap));
299
extern int rl_unbind_function_in_map PARAMS((rl_command_func_t *, Keymap));
300
extern int rl_unbind_command_in_map PARAMS((const char *, Keymap));
301
extern int rl_bind_keyseq PARAMS((const char *, rl_command_func_t *));
302
extern int rl_bind_keyseq_in_map PARAMS((const char *, rl_command_func_t *, Keymap));
303
extern int rl_bind_keyseq_if_unbound PARAMS((const char *, rl_command_func_t *));
304
extern int rl_bind_keyseq_if_unbound_in_map PARAMS((const char *, rl_command_func_t *, Keymap));
305
extern int rl_generic_bind PARAMS((int, const char *, char *, Keymap));
307
extern const char *rl_variable_value PARAMS((const char *));
308
extern int rl_variable_bind PARAMS((const char *, const char *));
310
/* Backwards compatibility, use rl_bind_keyseq_in_map instead. */
311
extern int rl_set_key PARAMS((const char *, rl_command_func_t *, Keymap));
313
/* Backwards compatibility, use rl_generic_bind instead. */
314
extern int rl_macro_bind PARAMS((const char *, const char *, Keymap));
316
/* Undocumented in the texinfo manual; not really useful to programs. */
317
extern int rl_translate_keyseq PARAMS((const char *, char *, int *));
318
extern char *rl_untranslate_keyseq PARAMS((int));
320
extern rl_command_func_t *rl_named_function PARAMS((const char *));
321
extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *));
323
extern void rl_list_funmap_names PARAMS((void));
324
extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap));
325
extern char **rl_invoking_keyseqs PARAMS((rl_command_func_t *));
327
extern void rl_function_dumper PARAMS((int));
328
extern void rl_macro_dumper PARAMS((int));
329
extern void rl_variable_dumper PARAMS((int));
331
extern int rl_read_init_file PARAMS((const char *));
332
extern int rl_parse_and_bind PARAMS((char *));
334
/* Functions for manipulating keymaps. */
335
extern Keymap rl_make_bare_keymap PARAMS((void));
336
extern Keymap rl_copy_keymap PARAMS((Keymap));
337
extern Keymap rl_make_keymap PARAMS((void));
338
extern void rl_discard_keymap PARAMS((Keymap));
340
extern Keymap rl_get_keymap_by_name PARAMS((const char *));
341
extern char *rl_get_keymap_name PARAMS((Keymap));
342
extern void rl_set_keymap PARAMS((Keymap));
343
extern Keymap rl_get_keymap PARAMS((void));
344
/* Undocumented; used internally only. */
345
extern void rl_set_keymap_from_edit_mode PARAMS((void));
346
extern const char *rl_get_keymap_name_from_edit_mode PARAMS((void));
348
/* Functions for manipulating the funmap, which maps command names to functions. */
349
extern int rl_add_funmap_entry PARAMS((const char *, rl_command_func_t *));
350
extern const char **rl_funmap_names PARAMS((void));
351
/* Undocumented, only used internally -- there is only one funmap, and this
352
function may be called only once. */
353
extern void rl_initialize_funmap PARAMS((void));
355
/* Utility functions for managing keyboard macros. */
356
extern void rl_push_macro_input PARAMS((char *));
358
/* Functions for undoing, from undo.c */
359
extern void rl_add_undo PARAMS((enum undo_code, int, int, char *));
360
extern void rl_free_undo_list PARAMS((void));
361
extern int rl_do_undo PARAMS((void));
362
extern int rl_begin_undo_group PARAMS((void));
363
extern int rl_end_undo_group PARAMS((void));
364
extern int rl_modifying PARAMS((int, int));
366
/* Functions for redisplay. */
367
extern void rl_redisplay PARAMS((void));
368
extern int rl_on_new_line PARAMS((void));
369
extern int rl_on_new_line_with_prompt PARAMS((void));
370
extern int rl_forced_update_display PARAMS((void));
371
extern int rl_clear_message PARAMS((void));
372
extern int rl_reset_line_state PARAMS((void));
373
extern int rl_crlf PARAMS((void));
375
#if defined (USE_VARARGS) && defined (PREFER_STDARG)
376
extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
378
extern int rl_message ();
381
extern int rl_show_char PARAMS((int));
383
/* Undocumented in texinfo manual. */
384
extern int rl_character_len PARAMS((int, int));
386
/* Save and restore internal prompt redisplay information. */
387
extern void rl_save_prompt PARAMS((void));
388
extern void rl_restore_prompt PARAMS((void));
390
/* Modifying text. */
391
extern void rl_replace_line PARAMS((const char *, int));
392
extern int rl_insert_text PARAMS((const char *));
393
extern int rl_delete_text PARAMS((int, int));
394
extern int rl_kill_text PARAMS((int, int));
395
extern char *rl_copy_text PARAMS((int, int));
397
/* Terminal and tty mode management. */
398
extern void rl_prep_terminal PARAMS((int));
399
extern void rl_deprep_terminal PARAMS((void));
400
extern void rl_tty_set_default_bindings PARAMS((Keymap));
401
extern void rl_tty_unset_default_bindings PARAMS((Keymap));
403
extern int rl_reset_terminal PARAMS((const char *));
404
extern void rl_resize_terminal PARAMS((void));
405
extern void rl_set_screen_size PARAMS((int, int));
406
extern void rl_get_screen_size PARAMS((int *, int *));
407
extern void rl_reset_screen_size PARAMS((void));
409
extern const char *rl_get_termcap PARAMS((const char *));
411
/* Functions for character input. */
412
extern int rl_stuff_char PARAMS((int));
413
extern int rl_execute_next PARAMS((int));
414
extern int rl_clear_pending_input PARAMS((void));
415
extern int rl_read_key PARAMS((void));
416
extern int rl_getc PARAMS((FILE *));
417
extern int rl_set_keyboard_input_timeout PARAMS((int));
419
/* `Public' utility functions . */
420
extern void rl_extend_line_buffer PARAMS((int));
421
extern int rl_ding PARAMS((void));
422
extern int rl_alphabetic PARAMS((int));
424
/* Readline signal handling, from signals.c */
425
extern int rl_set_signals PARAMS((void));
426
extern int rl_clear_signals PARAMS((void));
427
extern void rl_cleanup_after_signal PARAMS((void));
428
extern void rl_reset_after_signal PARAMS((void));
429
extern void rl_free_line_state PARAMS((void));
431
extern int rl_set_paren_blink_timeout PARAMS((int));
434
extern int rl_maybe_save_line PARAMS((void));
435
extern int rl_maybe_unsave_line PARAMS((void));
436
extern int rl_maybe_replace_line PARAMS((void));
438
/* Completion functions. */
439
extern int rl_complete_internal PARAMS((int));
440
extern void rl_display_match_list PARAMS((char **, int, int));
442
extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *));
443
extern char *rl_username_completion_function PARAMS((const char *, int));
444
extern char *rl_filename_completion_function PARAMS((const char *, int));
446
extern int rl_completion_mode PARAMS((rl_command_func_t *));
449
/* Backwards compatibility (compat.c). These will go away sometime. */
450
extern void free_undo_list PARAMS((void));
451
extern int maybe_save_line PARAMS((void));
452
extern int maybe_unsave_line PARAMS((void));
453
extern int maybe_replace_line PARAMS((void));
455
extern int ding PARAMS((void));
456
extern int alphabetic PARAMS((int));
457
extern int crlf PARAMS((void));
459
extern char **completion_matches PARAMS((char *, rl_compentry_func_t *));
460
extern char *username_completion_function PARAMS((const char *, int));
461
extern char *filename_completion_function PARAMS((const char *, int));
464
/* **************************************************************** */
466
/* Well Published Variables */
468
/* **************************************************************** */
470
/* The version of this incarnation of the readline library. */
471
extern const char *rl_library_version; /* e.g., "4.2" */
472
extern int rl_readline_version; /* e.g., 0x0402 */
474
/* True if this is real GNU readline. */
475
extern int rl_gnu_readline_p;
477
/* Flags word encapsulating the current readline state. */
478
extern int rl_readline_state;
480
/* Says which editing mode readline is currently using. 1 means emacs mode;
482
extern int rl_editing_mode;
484
/* Insert or overwrite mode for emacs mode. 1 means insert mode; 0 means
485
overwrite mode. Reset to insert mode on each input line. */
486
extern int rl_insert_mode;
488
/* The name of the calling program. You should initialize this to
489
whatever was in argv[0]. It is used when parsing conditionals. */
490
extern const char *rl_readline_name;
492
/* The prompt readline uses. This is set from the argument to
493
readline (), and should not be assigned to directly. */
494
extern char *rl_prompt;
496
/* The line buffer that is in use. */
497
extern char *rl_line_buffer;
499
/* The location of point, and end. */
503
/* The mark, or saved cursor position. */
506
/* Flag to indicate that readline has finished with the current input
507
line and should return it. */
510
/* If set to a character value, that will be the next keystroke read. */
511
extern int rl_pending_input;
513
/* Non-zero if we called this function from _rl_dispatch(). It's present
514
so functions can find out whether they were called from a key binding
515
or directly from an application. */
516
extern int rl_dispatching;
518
/* Non-zero if the user typed a numeric argument before executing the
520
extern int rl_explicit_arg;
522
/* The current value of the numeric argument specified by the user. */
523
extern int rl_numeric_arg;
525
/* The address of the last command function Readline executed. */
526
extern rl_command_func_t *rl_last_func;
528
/* The name of the terminal to use. */
529
extern const char *rl_terminal_name;
531
/* The input and output streams. */
532
extern FILE *rl_instream;
533
extern FILE *rl_outstream;
535
/* If non-zero, Readline gives values of LINES and COLUMNS from the environment
536
greater precedence than values fetched from the kernel when computing the
537
screen dimensions. */
538
extern int rl_prefer_env_winsize;
540
/* If non-zero, then this is the address of a function to call just
541
before readline_internal () prints the first prompt. */
542
extern rl_hook_func_t *rl_startup_hook;
544
/* If non-zero, this is the address of a function to call just before
545
readline_internal_setup () returns and readline_internal starts
546
reading input characters. */
547
extern rl_hook_func_t *rl_pre_input_hook;
549
/* The address of a function to call periodically while Readline is
550
awaiting character input, or NULL, for no event handling. */
551
extern rl_hook_func_t *rl_event_hook;
553
/* The address of the function to call to fetch a character from the current
554
Readline input stream */
555
extern rl_getc_func_t *rl_getc_function;
557
extern rl_voidfunc_t *rl_redisplay_function;
559
extern rl_vintfunc_t *rl_prep_term_function;
560
extern rl_voidfunc_t *rl_deprep_term_function;
562
/* Dispatch variables. */
563
extern Keymap rl_executing_keymap;
564
extern Keymap rl_binding_keymap;
566
/* Display variables. */
567
/* If non-zero, readline will erase the entire line, including any prompt,
568
if the only thing typed on an otherwise-blank line is something bound to
570
extern int rl_erase_empty_line;
572
/* If non-zero, the application has already printed the prompt (rl_prompt)
573
before calling readline, so readline should not output it the first time
574
redisplay is done. */
575
extern int rl_already_prompted;
577
/* A non-zero value means to read only this many characters rather than
578
up to a character bound to accept-line. */
579
extern int rl_num_chars_to_read;
581
/* The text of a currently-executing keyboard macro. */
582
extern char *rl_executing_macro;
584
/* Variables to control readline signal handling. */
585
/* If non-zero, readline will install its own signal handlers for
586
SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, SIGTTIN, and SIGTTOU. */
587
extern int rl_catch_signals;
589
/* If non-zero, readline will install a signal handler for SIGWINCH
590
that also attempts to call any calling application's SIGWINCH signal
591
handler. Note that the terminal is not cleaned up before the
592
application's signal handler is called; use rl_cleanup_after_signal()
594
extern int rl_catch_sigwinch;
596
/* Completion variables. */
597
/* Pointer to the generator function for completion_matches ().
598
NULL means to use rl_filename_completion_function (), the default
599
filename completer. */
600
extern rl_compentry_func_t *rl_completion_entry_function;
602
/* If rl_ignore_some_completions_function is non-NULL it is the address
603
of a function to call after all of the possible matches have been
604
generated, but before the actual completion is done to the input line.
605
The function is called with one argument; a NULL terminated array
606
of (char *). If your function removes any of the elements, they
607
must be free()'ed. */
608
extern rl_compignore_func_t *rl_ignore_some_completions_function;
610
/* Pointer to alternative function to create matches.
611
Function is called with TEXT, START, and END.
612
START and END are indices in RL_LINE_BUFFER saying what the boundaries
614
If this function exists and returns NULL then call the value of
615
rl_completion_entry_function to try to match, otherwise use the
616
array of strings returned. */
617
extern rl_completion_func_t *rl_attempted_completion_function;
619
/* The basic list of characters that signal a break between words for the
620
completer routine. The initial contents of this variable is what
621
breaks words in the shell, i.e. "n\"\\'`@$>". */
622
extern const char *rl_basic_word_break_characters;
624
/* The list of characters that signal a break between words for
625
rl_complete_internal. The default list is the contents of
626
rl_basic_word_break_characters. */
627
extern /*const*/ char *rl_completer_word_break_characters;
629
/* Hook function to allow an application to set the completion word
630
break characters before readline breaks up the line. Allows
631
position-dependent word break characters. */
632
extern rl_cpvfunc_t *rl_completion_word_break_hook;
634
/* List of characters which can be used to quote a substring of the line.
635
Completion occurs on the entire substring, and within the substring
636
rl_completer_word_break_characters are treated as any other character,
637
unless they also appear within this list. */
638
extern const char *rl_completer_quote_characters;
640
/* List of quote characters which cause a word break. */
641
extern const char *rl_basic_quote_characters;
643
/* List of characters that need to be quoted in filenames by the completer. */
644
extern const char *rl_filename_quote_characters;
646
/* List of characters that are word break characters, but should be left
647
in TEXT when it is passed to the completion function. The shell uses
648
this to help determine what kind of completing to do. */
649
extern const char *rl_special_prefixes;
651
/* If non-zero, then this is the address of a function to call when
652
completing on a directory name. The function is called with
653
the address of a string (the current directory name) as an arg. It
654
changes what is displayed when the possible completions are printed
656
extern rl_icppfunc_t *rl_directory_completion_hook;
658
/* If non-zero, this is the address of a function to call when completing
659
a directory name. This function takes the address of the directory name
660
to be modified as an argument. Unlike rl_directory_completion_hook, it
661
only modifies the directory name used in opendir(2), not what is displayed
662
when the possible completions are printed or inserted. It is called
663
before rl_directory_completion_hook. I'm not happy with how this works
664
yet, so it's undocumented. */
665
extern rl_icppfunc_t *rl_directory_rewrite_hook;
667
/* Backwards compatibility with previous versions of readline. */
668
#define rl_symbolic_link_hook rl_directory_completion_hook
670
/* If non-zero, then this is the address of a function to call when
671
completing a word would normally display the list of possible matches.
672
This function is called instead of actually doing the display.
673
It takes three arguments: (char **matches, int num_matches, int max_length)
674
where MATCHES is the array of strings that matched, NUM_MATCHES is the
675
number of strings in that array, and MAX_LENGTH is the length of the
676
longest string in that array. */
677
extern rl_compdisp_func_t *rl_completion_display_matches_hook;
679
/* Non-zero means that the results of the matches are to be treated
680
as filenames. This is ALWAYS zero on entry, and can only be changed
681
within a completion entry finder function. */
682
extern int rl_filename_completion_desired;
684
/* Non-zero means that the results of the matches are to be quoted using
685
double quotes (or an application-specific quoting mechanism) if the
686
filename contains any characters in rl_word_break_chars. This is
687
ALWAYS non-zero on entry, and can only be changed within a completion
688
entry finder function. */
689
extern int rl_filename_quoting_desired;
691
/* Set to a function to quote a filename in an application-specific fashion.
692
Called with the text to quote, the type of match found (single or multiple)
693
and a pointer to the quoting character to be used, which the function can
695
extern rl_quote_func_t *rl_filename_quoting_function;
697
/* Function to call to remove quoting characters from a filename. Called
698
before completion is attempted, so the embedded quotes do not interfere
699
with matching names in the file system. */
700
extern rl_dequote_func_t *rl_filename_dequoting_function;
702
/* Function to call to decide whether or not a word break character is
703
quoted. If a character is quoted, it does not break words for the
705
extern rl_linebuf_func_t *rl_char_is_quoted_p;
707
/* Non-zero means to suppress normal filename completion after the
708
user-specified completion function has been called. */
709
extern int rl_attempted_completion_over;
711
/* Set to a character describing the type of completion being attempted by
712
rl_complete_internal; available for use by application completion
714
extern int rl_completion_type;
716
/* Up to this many items will be displayed in response to a
717
possible-completions call. After that, we ask the user if she
718
is sure she wants to see them all. The default value is 100. */
719
extern int rl_completion_query_items;
721
/* Character appended to completed words when at the end of the line. The
722
default is a space. Nothing is added if this is '\0'. */
723
extern int rl_completion_append_character;
725
/* If set to non-zero by an application completion function,
726
rl_completion_append_character will not be appended. */
727
extern int rl_completion_suppress_append;
729
/* Set to any quote character readline thinks it finds before any application
730
completion function is called. */
731
extern int rl_completion_quote_character;
733
/* Set to a non-zero value if readline found quoting anywhere in the word to
734
be completed; set before any application completion function is called. */
735
extern int rl_completion_found_quote;
737
/* If non-zero, the completion functions don't append any closing quote.
738
This is set to 0 by rl_complete_internal and may be changed by an
739
application-specific completion function. */
740
extern int rl_completion_suppress_quote;
742
/* If non-zero, a slash will be appended to completed filenames that are
743
symbolic links to directory names, subject to the value of the
744
mark-directories variable (which is user-settable). This exists so
745
that application completion functions can override the user's preference
746
(set via the mark-symlinked-directories variable) if appropriate.
747
It's set to the value of _rl_complete_mark_symlink_dirs in
748
rl_complete_internal before any application-specific completion
749
function is called, so without that function doing anything, the user's
750
preferences are honored. */
751
extern int rl_completion_mark_symlink_dirs;
753
/* If non-zero, then disallow duplicates in the matches. */
754
extern int rl_ignore_completion_duplicates;
756
/* If this is non-zero, completion is (temporarily) inhibited, and the
757
completion character will be inserted as any other. */
758
extern int rl_inhibit_completion;
760
/* Input error; can be returned by (*rl_getc_function) if readline is reading
761
a top-level command (RL_ISSTATE (RL_STATE_READCMD)). */
764
/* Definitions available for use by readline clients. */
765
#define RL_PROMPT_START_IGNORE '\001'
766
#define RL_PROMPT_END_IGNORE '\002'
768
/* Possible values for do_replace argument to rl_filename_quoting_function,
769
called by rl_complete_internal. */
771
#define SINGLE_MATCH 1
774
/* Possible state values for rl_readline_state */
775
#define RL_STATE_NONE 0x000000 /* no state; before first call */
777
#define RL_STATE_INITIALIZING 0x000001 /* initializing */
778
#define RL_STATE_INITIALIZED 0x000002 /* initialization done */
779
#define RL_STATE_TERMPREPPED 0x000004 /* terminal is prepped */
780
#define RL_STATE_READCMD 0x000008 /* reading a command key */
781
#define RL_STATE_METANEXT 0x000010 /* reading input after ESC */
782
#define RL_STATE_DISPATCHING 0x000020 /* dispatching to a command */
783
#define RL_STATE_MOREINPUT 0x000040 /* reading more input in a command function */
784
#define RL_STATE_ISEARCH 0x000080 /* doing incremental search */
785
#define RL_STATE_NSEARCH 0x000100 /* doing non-inc search */
786
#define RL_STATE_SEARCH 0x000200 /* doing a history search */
787
#define RL_STATE_NUMERICARG 0x000400 /* reading numeric argument */
788
#define RL_STATE_MACROINPUT 0x000800 /* getting input from a macro */
789
#define RL_STATE_MACRODEF 0x001000 /* defining keyboard macro */
790
#define RL_STATE_OVERWRITE 0x002000 /* overwrite mode */
791
#define RL_STATE_COMPLETING 0x004000 /* doing completion */
792
#define RL_STATE_SIGHANDLER 0x008000 /* in readline sighandler */
793
#define RL_STATE_UNDOING 0x010000 /* doing an undo */
794
#define RL_STATE_INPUTPENDING 0x020000 /* rl_execute_next called */
795
#define RL_STATE_TTYCSAVED 0x040000 /* tty special chars saved */
796
#define RL_STATE_CALLBACK 0x080000 /* using the callback interface */
797
#define RL_STATE_VIMOTION 0x100000 /* reading vi motion arg */
798
#define RL_STATE_MULTIKEY 0x200000 /* reading multiple-key command */
799
#define RL_STATE_VICMDONCE 0x400000 /* entered vi command mode at least once */
801
#define RL_STATE_DONE 0x800000 /* done; accepted line */
803
#define RL_SETSTATE(x) (rl_readline_state |= (x))
804
#define RL_UNSETSTATE(x) (rl_readline_state &= ~(x))
805
#define RL_ISSTATE(x) (rl_readline_state & (x))
807
struct readline_state {
823
rl_command_func_t *lastfunc;
838
/* completion state */
842
/* reserved for future expansion, so the struct size doesn't change */
846
extern int rl_save_state PARAMS((struct readline_state *));
847
extern int rl_restore_state PARAMS((struct readline_state *));
853
#endif /* _READLINE_H_ */