~ubuntu-branches/ubuntu/precise/mysql-5.1/precise

« back to all changes in this revision

Viewing changes to cmd-line-utils/readline/readline.h

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Tretkowski
  • Date: 2010-03-17 14:56:02 UTC
  • Revision ID: james.westby@ubuntu.com-20100317145602-x7e30l1b2sb5s6w6
Tags: upstream-5.1.45
ImportĀ upstreamĀ versionĀ 5.1.45

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Readline.h -- the names of functions callable from within readline. */
 
2
 
 
3
/* Copyright (C) 1987-2005 Free Software Foundation, Inc.
 
4
 
 
5
   This file is part of the GNU Readline Library, a library for
 
6
   reading lines of text with interactive input and history editing.
 
7
 
 
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.
 
12
 
 
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.
 
17
 
 
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. */
 
22
 
 
23
#if !defined (_READLINE_H_)
 
24
#define _READLINE_H_
 
25
 
 
26
#ifdef __cplusplus
 
27
extern "C" {
 
28
#endif
 
29
 
 
30
#if defined (READLINE_LIBRARY)
 
31
#  include "rlstdc.h"
 
32
#  include "rltypedefs.h"
 
33
#  include "keymaps.h"
 
34
#  include "tilde.h"
 
35
#else
 
36
#  include <readline/rlstdc.h>
 
37
#  include <readline/rltypedefs.h>
 
38
#  include <readline/keymaps.h>
 
39
#  include <readline/tilde.h>
 
40
#endif
 
41
 
 
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
 
46
 
 
47
/* Readline data structures. */
 
48
 
 
49
/* Maintaining the state of undo.  We remember individual deletes and inserts
 
50
   on a chain of things to do. */
 
51
 
 
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 };
 
56
 
 
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. */
 
63
} UNDO_LIST;
 
64
 
 
65
/* The current undo list for RL_LINE_BUFFER. */
 
66
extern UNDO_LIST *rl_undo_list;
 
67
 
 
68
/* The data structure for mapping textual names to code addresses. */
 
69
typedef struct _funmap {
 
70
  const char *name;
 
71
  rl_command_func_t *function;
 
72
} FUNMAP;
 
73
 
 
74
extern FUNMAP **funmap;
 
75
 
 
76
/* **************************************************************** */
 
77
/*                                                                  */
 
78
/*           Functions available to bind to key sequences           */
 
79
/*                                                                  */
 
80
/* **************************************************************** */
 
81
 
 
82
/* Bindable commands for numeric arguments. */
 
83
extern int rl_digit_argument PARAMS((int, int));
 
84
extern int rl_universal_argument PARAMS((int, int));
 
85
 
 
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));
 
100
 
 
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));
 
113
 
 
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));
 
118
 
 
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));
 
122
 
 
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));
 
126
 
 
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));
 
132
 
 
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));
 
136
 
 
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));
 
140
 
 
141
/* Bindable commands to change the insert mode (insert or overwrite) */
 
142
extern int rl_overwrite_mode PARAMS((int, int));
 
143
 
 
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));
 
149
 
 
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));
 
155
 
 
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. */
 
174
#ifdef __CYGWIN__
 
175
extern int rl_paste_from_clipboard PARAMS((int, int));
 
176
#endif
 
177
 
 
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));
 
181
 
 
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));
 
186
 
 
187
/* Bindable undo commands. */
 
188
extern int rl_revert_line PARAMS((int, int));
 
189
extern int rl_undo_command PARAMS((int, int));
 
190
 
 
191
/* Bindable tilde expansion commands. */
 
192
extern int rl_tilde_expand PARAMS((int, int));
 
193
 
 
194
/* Bindable terminal control commands. */
 
195
extern int rl_restart_output PARAMS((int, int));
 
196
extern int rl_stop_output PARAMS((int, int));
 
197
 
 
198
/* Miscellaneous bindable commands. */
 
199
extern int rl_abort PARAMS((int, int));
 
200
extern int rl_tty_status PARAMS((int, int));
 
201
 
 
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));
 
209
 
 
210
/* Bindable command used when inserting a matching close character. */
 
211
extern int rl_insert_close PARAMS((int, int));
 
212
 
 
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));
 
217
 
 
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));
 
257
 
 
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));
 
262
 
 
263
extern void rl_vi_start_inserting PARAMS((int, int, int));
 
264
 
 
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));
 
272
 
 
273
/* **************************************************************** */
 
274
/*                                                                  */
 
275
/*                      Well Published Functions                    */
 
276
/*                                                                  */
 
277
/* **************************************************************** */
 
278
 
 
279
/* Readline functions. */
 
280
/* Read a line of input.  Prompt with PROMPT.  A NULL PROMPT means none. */
 
281
extern char *readline PARAMS((const char *));
 
282
 
 
283
extern int rl_set_prompt PARAMS((const char *));
 
284
extern int rl_expand_prompt PARAMS((char *));
 
285
 
 
286
extern int rl_initialize PARAMS((void));
 
287
 
 
288
/* Undocumented; unused by readline */
 
289
extern int rl_discard_argument PARAMS((void));
 
290
 
 
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));
 
306
 
 
307
extern const char *rl_variable_value PARAMS((const char *));
 
308
extern int rl_variable_bind PARAMS((const char *, const char *));
 
309
 
 
310
/* Backwards compatibility, use rl_bind_keyseq_in_map instead. */
 
311
extern int rl_set_key PARAMS((const char *, rl_command_func_t *, Keymap));
 
312
 
 
313
/* Backwards compatibility, use rl_generic_bind instead. */
 
314
extern int rl_macro_bind PARAMS((const char *, const char *, Keymap));
 
315
 
 
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));
 
319
 
 
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 *));
 
322
 
 
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 *));
 
326
 
 
327
extern void rl_function_dumper PARAMS((int));
 
328
extern void rl_macro_dumper PARAMS((int));
 
329
extern void rl_variable_dumper PARAMS((int));
 
330
 
 
331
extern int rl_read_init_file PARAMS((const char *));
 
332
extern int rl_parse_and_bind PARAMS((char *));
 
333
 
 
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));
 
339
 
 
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));
 
347
 
 
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));
 
354
 
 
355
/* Utility functions for managing keyboard macros. */
 
356
extern void rl_push_macro_input PARAMS((char *));
 
357
 
 
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));
 
365
 
 
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));
 
374
 
 
375
#if defined (USE_VARARGS) && defined (PREFER_STDARG)
 
376
extern int rl_message (const char *, ...)  __attribute__((__format__ (printf, 1, 2)));
 
377
#else
 
378
extern int rl_message ();
 
379
#endif
 
380
 
 
381
extern int rl_show_char PARAMS((int));
 
382
 
 
383
/* Undocumented in texinfo manual. */
 
384
extern int rl_character_len PARAMS((int, int));
 
385
 
 
386
/* Save and restore internal prompt redisplay information. */
 
387
extern void rl_save_prompt PARAMS((void));
 
388
extern void rl_restore_prompt PARAMS((void));
 
389
 
 
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));
 
396
 
 
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));
 
402
 
 
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));
 
408
 
 
409
extern const char *rl_get_termcap PARAMS((const char *));
 
410
 
 
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));
 
418
 
 
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));
 
423
 
 
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));
 
430
 
 
431
extern int rl_set_paren_blink_timeout PARAMS((int));
 
432
 
 
433
/* Undocumented. */
 
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));
 
437
 
 
438
/* Completion functions. */
 
439
extern int rl_complete_internal PARAMS((int));
 
440
extern void rl_display_match_list PARAMS((char **, int, int));
 
441
 
 
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));
 
445
 
 
446
extern int rl_completion_mode PARAMS((rl_command_func_t *));
 
447
 
 
448
#if 0
 
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));
 
454
 
 
455
extern int ding PARAMS((void));
 
456
extern int alphabetic PARAMS((int));
 
457
extern int crlf PARAMS((void));
 
458
 
 
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));
 
462
#endif
 
463
 
 
464
/* **************************************************************** */
 
465
/*                                                                  */
 
466
/*                      Well Published Variables                    */
 
467
/*                                                                  */
 
468
/* **************************************************************** */
 
469
 
 
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 */
 
473
 
 
474
/* True if this is real GNU readline. */
 
475
extern int rl_gnu_readline_p;
 
476
 
 
477
/* Flags word encapsulating the current readline state. */
 
478
extern int rl_readline_state;
 
479
 
 
480
/* Says which editing mode readline is currently using.  1 means emacs mode;
 
481
   0 means vi mode. */
 
482
extern int rl_editing_mode;
 
483
 
 
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;
 
487
 
 
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;
 
491
 
 
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;
 
495
 
 
496
/* The line buffer that is in use. */
 
497
extern char *rl_line_buffer;
 
498
 
 
499
/* The location of point, and end. */
 
500
extern int rl_point;
 
501
extern int rl_end;
 
502
 
 
503
/* The mark, or saved cursor position. */
 
504
extern int rl_mark;
 
505
 
 
506
/* Flag to indicate that readline has finished with the current input
 
507
   line and should return it. */
 
508
extern int rl_done;
 
509
 
 
510
/* If set to a character value, that will be the next keystroke read. */
 
511
extern int rl_pending_input;
 
512
 
 
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;
 
517
 
 
518
/* Non-zero if the user typed a numeric argument before executing the
 
519
   current function. */
 
520
extern int rl_explicit_arg;
 
521
 
 
522
/* The current value of the numeric argument specified by the user. */
 
523
extern int rl_numeric_arg;
 
524
 
 
525
/* The address of the last command function Readline executed. */
 
526
extern rl_command_func_t *rl_last_func;
 
527
 
 
528
/* The name of the terminal to use. */
 
529
extern const char *rl_terminal_name;
 
530
 
 
531
/* The input and output streams. */
 
532
extern FILE *rl_instream;
 
533
extern FILE *rl_outstream;
 
534
 
 
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;
 
539
 
 
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;
 
543
 
 
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;
 
548
      
 
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;
 
552
 
 
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;
 
556
 
 
557
extern rl_voidfunc_t *rl_redisplay_function;
 
558
 
 
559
extern rl_vintfunc_t *rl_prep_term_function;
 
560
extern rl_voidfunc_t *rl_deprep_term_function;
 
561
 
 
562
/* Dispatch variables. */
 
563
extern Keymap rl_executing_keymap;
 
564
extern Keymap rl_binding_keymap;
 
565
 
 
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
 
569
   rl_newline. */
 
570
extern int rl_erase_empty_line;
 
571
 
 
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;
 
576
 
 
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;
 
580
 
 
581
/* The text of a currently-executing keyboard macro. */
 
582
extern char *rl_executing_macro;
 
583
 
 
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;
 
588
 
 
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()
 
593
   to do that. */
 
594
extern int rl_catch_sigwinch;
 
595
 
 
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;
 
601
 
 
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;
 
609
 
 
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
 
613
   of TEXT are.
 
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;
 
618
 
 
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;
 
623
 
 
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;
 
628
 
 
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;
 
633
 
 
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;
 
639
 
 
640
/* List of quote characters which cause a word break. */
 
641
extern const char *rl_basic_quote_characters;
 
642
 
 
643
/* List of characters that need to be quoted in filenames by the completer. */
 
644
extern const char *rl_filename_quote_characters;
 
645
 
 
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;
 
650
 
 
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
 
655
   or inserted. */
 
656
extern rl_icppfunc_t *rl_directory_completion_hook;
 
657
 
 
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;
 
666
 
 
667
/* Backwards compatibility with previous versions of readline. */
 
668
#define rl_symbolic_link_hook rl_directory_completion_hook
 
669
 
 
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;
 
678
 
 
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;
 
683
 
 
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;
 
690
 
 
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
 
694
   reset if desired. */
 
695
extern rl_quote_func_t *rl_filename_quoting_function;
 
696
 
 
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;
 
701
 
 
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
 
704
   completer. */
 
705
extern rl_linebuf_func_t *rl_char_is_quoted_p;
 
706
 
 
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;
 
710
 
 
711
/* Set to a character describing the type of completion being attempted by
 
712
   rl_complete_internal; available for use by application completion
 
713
   functions. */
 
714
extern int rl_completion_type;
 
715
 
 
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;
 
720
 
 
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;
 
724
 
 
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;
 
728
 
 
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;
 
732
 
 
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;
 
736
 
 
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;
 
741
 
 
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;
 
752
 
 
753
/* If non-zero, then disallow duplicates in the matches. */
 
754
extern int rl_ignore_completion_duplicates;
 
755
 
 
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;
 
759
 
 
760
/* Input error; can be returned by (*rl_getc_function) if readline is reading
 
761
   a top-level command (RL_ISSTATE (RL_STATE_READCMD)). */
 
762
#define READERR                 (-2)
 
763
 
 
764
/* Definitions available for use by readline clients. */
 
765
#define RL_PROMPT_START_IGNORE  '\001'
 
766
#define RL_PROMPT_END_IGNORE    '\002'
 
767
 
 
768
/* Possible values for do_replace argument to rl_filename_quoting_function,
 
769
   called by rl_complete_internal. */
 
770
#define NO_MATCH        0
 
771
#define SINGLE_MATCH    1
 
772
#define MULT_MATCH      2
 
773
 
 
774
/* Possible state values for rl_readline_state */
 
775
#define RL_STATE_NONE           0x000000                /* no state; before first call */
 
776
 
 
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 */
 
800
 
 
801
#define RL_STATE_DONE           0x800000        /* done; accepted line */
 
802
 
 
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))
 
806
 
 
807
struct readline_state {
 
808
  /* line state */
 
809
  int point;
 
810
  int end;
 
811
  int mark;
 
812
  char *buffer;
 
813
  int buflen;
 
814
  UNDO_LIST *ul;
 
815
  char *prompt;
 
816
 
 
817
  /* global state */
 
818
  int rlstate;
 
819
  int done;
 
820
  Keymap kmap;
 
821
 
 
822
  /* input state */
 
823
  rl_command_func_t *lastfunc;
 
824
  int insmode;
 
825
  int edmode;
 
826
  int kseqlen;
 
827
  FILE *inf;
 
828
  FILE *outf;
 
829
  int pendingin;
 
830
  char *macro;
 
831
 
 
832
  /* signal state */
 
833
  int catchsigs;
 
834
  int catchsigwinch;
 
835
 
 
836
  /* search state */
 
837
 
 
838
  /* completion state */
 
839
 
 
840
  /* options state */
 
841
 
 
842
  /* reserved for future expansion, so the struct size doesn't change */
 
843
  char reserved[64];
 
844
};
 
845
 
 
846
extern int rl_save_state PARAMS((struct readline_state *));
 
847
extern int rl_restore_state PARAMS((struct readline_state *));
 
848
 
 
849
#ifdef __cplusplus
 
850
}
 
851
#endif
 
852
 
 
853
#endif /* _READLINE_H_ */