Import readline 7.0 (patch 5)
[deliverable/binutils-gdb.git] / readline / rlprivate.h
CommitLineData
f9267e15
EZ
1/* rlprivate.h -- functions and variables global to the readline library,
2 but not intended for use by applications. */
3
775e241e 4/* Copyright (C) 1999-2015 Free Software Foundation, Inc.
f9267e15 5
cc88a640
JK
6 This file is part of the GNU Readline Library (Readline), a library
7 for reading lines of text with interactive input and history editing.
f9267e15 8
cc88a640
JK
9 Readline is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
f9267e15
EZ
12 (at your option) any later version.
13
cc88a640
JK
14 Readline is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f9267e15
EZ
17 GNU General Public License for more details.
18
cc88a640
JK
19 You should have received a copy of the GNU General Public License
20 along with Readline. If not, see <http://www.gnu.org/licenses/>.
21*/
f9267e15
EZ
22
23#if !defined (_RL_PRIVATE_H_)
24#define _RL_PRIVATE_H_
25
26#include "rlconf.h" /* for VISIBLE_STATS */
27#include "rlstdc.h"
9255ee31 28#include "posixjmp.h" /* defines procenv_t */
f9267e15 29
cc88a640
JK
30/*************************************************************************
31 * *
32 * Convenience definitions *
33 * *
34 *************************************************************************/
35
36#define EMACS_MODE() (rl_editing_mode == emacs_mode)
37#define VI_COMMAND_MODE() (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap)
38#define VI_INSERT_MODE() (rl_editing_mode == vi_mode && _rl_keymap == vi_insertion_keymap)
39
40#define RL_CHECK_SIGNALS() \
41 do { \
42 if (_rl_caught_signal) _rl_signal_handler (_rl_caught_signal); \
43 } while (0)
44
775e241e
TT
45#define RL_SIG_RECEIVED() (_rl_caught_signal != 0)
46#define RL_SIGINT_RECEIVED() (_rl_caught_signal == SIGINT)
47#define RL_SIGWINCH_RECEIVED() (_rl_caught_signal == SIGWINCH)
48
49#define CUSTOM_REDISPLAY_FUNC() (rl_redisplay_function != rl_redisplay)
50#define CUSTOM_INPUT_FUNC() (rl_getc_function != rl_getc)
51
5bdf8622
DJ
52/*************************************************************************
53 * *
54 * Global structs undocumented in texinfo manual and not in readline.h *
55 * *
56 *************************************************************************/
57/* search types */
58#define RL_SEARCH_ISEARCH 0x01 /* incremental search */
59#define RL_SEARCH_NSEARCH 0x02 /* non-incremental search */
60#define RL_SEARCH_CSEARCH 0x04 /* intra-line char search */
61
62/* search flags */
63#define SF_REVERSE 0x01
64#define SF_FOUND 0x02
65#define SF_FAILED 0x04
cc88a640 66#define SF_CHGKMAP 0x08
5bdf8622
DJ
67
68typedef struct __rl_search_context
69{
70 int type;
71 int sflags;
72
73 char *search_string;
74 int search_string_index;
75 int search_string_size;
76
77 char **lines;
78 char *allocated_line;
79 int hlen;
80 int hindex;
81
82 int save_point;
83 int save_mark;
84 int save_line;
85 int last_found_line;
86 char *prev_line_found;
87
88 UNDO_LIST *save_undo_list;
89
cc88a640
JK
90 Keymap keymap; /* used when dispatching commands in search string */
91 Keymap okeymap; /* original keymap */
92
5bdf8622
DJ
93 int history_pos;
94 int direction;
95
775e241e 96 int prevc;
5bdf8622
DJ
97 int lastc;
98#if defined (HANDLE_MULTIBYTE)
99 char mb[MB_LEN_MAX];
775e241e 100 char pmb[MB_LEN_MAX];
5bdf8622
DJ
101#endif
102
103 char *sline;
104 int sline_len;
105 int sline_index;
106
107 char *search_terminators;
108} _rl_search_cxt;
109
110/* Callback data for reading numeric arguments */
111#define NUM_SAWMINUS 0x01
112#define NUM_SAWDIGITS 0x02
113#define NUM_READONE 0x04
114
115typedef int _rl_arg_cxt;
116
117/* A context for reading key sequences longer than a single character when
118 using the callback interface. */
119#define KSEQ_DISPATCHED 0x01
120#define KSEQ_SUBSEQ 0x02
121#define KSEQ_RECURSIVE 0x04
122
123typedef struct __rl_keyseq_context
124{
125 int flags;
126 int subseq_arg;
127 int subseq_retval; /* XXX */
775e241e 128 int okey;
5bdf8622 129
775e241e 130 Keymap dmap;
5bdf8622 131 Keymap oldmap;
775e241e 132
5bdf8622
DJ
133 struct __rl_keyseq_context *ocxt;
134 int childval;
135} _rl_keyseq_cxt;
136
cc88a640
JK
137/* vi-mode commands that use result of motion command to define boundaries */
138#define VIM_DELETE 0x01
139#define VIM_CHANGE 0x02
140#define VIM_YANK 0x04
141
142/* various states for vi-mode commands that use motion commands. reflects
143 RL_READLINE_STATE */
144#define VMSTATE_READ 0x01
145#define VMSTATE_NUMARG 0x02
146
147typedef struct __rl_vimotion_context
148{
149 int op;
150 int state;
151 int flags; /* reserved */
152 _rl_arg_cxt ncxt;
153 int numeric_arg;
154 int start, end; /* rl_point, rl_end */
155 int key, motion; /* initial key, motion command */
156} _rl_vimotion_cxt;
157
158/* fill in more as needed */
5bdf8622
DJ
159/* `Generic' callback data and functions */
160typedef struct __rl_callback_generic_arg
161{
162 int count;
163 int i1, i2;
164 /* add here as needed */
165} _rl_callback_generic_arg;
166
167typedef int _rl_callback_func_t PARAMS((_rl_callback_generic_arg *));
168
775e241e
TT
169typedef void _rl_sigcleanup_func_t PARAMS((int, void *));
170
f9267e15
EZ
171/*************************************************************************
172 * *
173 * Global functions undocumented in texinfo manual and not in readline.h *
174 * *
175 *************************************************************************/
176
f9267e15
EZ
177/*************************************************************************
178 * *
179 * Global variables undocumented in texinfo manual and not in readline.h *
180 * *
181 *************************************************************************/
182
183/* complete.c */
184extern int rl_complete_with_tilde_expansion;
185#if defined (VISIBLE_STATS)
186extern int rl_visible_stats;
187#endif /* VISIBLE_STATS */
775e241e
TT
188#if defined (COLOR_SUPPORT)
189extern int _rl_colored_stats;
190extern int _rl_colored_completion_prefix;
191#endif
f9267e15
EZ
192
193/* readline.c */
194extern int rl_line_buffer_len;
f9267e15 195extern int rl_arg_sign;
f9267e15 196extern int rl_visible_prompt_length;
9255ee31 197extern int rl_byte_oriented;
f9267e15
EZ
198
199/* display.c */
200extern int rl_display_fixed;
201
202/* parens.c */
203extern int rl_blink_matching_paren;
204
205/*************************************************************************
206 * *
775e241e 207 * Global functions and variables unused and undocumented *
f9267e15
EZ
208 * *
209 *************************************************************************/
210
f9267e15 211/* kill.c */
9255ee31 212extern int rl_set_retained_kills PARAMS((int));
f9267e15
EZ
213
214/* terminal.c */
9255ee31 215extern void _rl_set_screen_size PARAMS((int, int));
f9267e15
EZ
216
217/* undo.c */
9255ee31 218extern int _rl_fix_last_undo_of_type PARAMS((int, int, int));
f9267e15
EZ
219
220/* util.c */
9255ee31 221extern char *_rl_savestring PARAMS((const char *));
f9267e15
EZ
222
223/*************************************************************************
224 * *
225 * Functions and variables private to the readline library *
226 * *
227 *************************************************************************/
228
229/* NOTE: Functions and variables prefixed with `_rl_' are
230 pseudo-global: they are global so they can be shared
231 between files in the readline library, but are not intended
232 to be visible to readline callers. */
233
234/*************************************************************************
235 * Undocumented private functions *
236 *************************************************************************/
237
238#if defined(READLINE_CALLBACKS)
239
240/* readline.c */
9255ee31
EZ
241extern void readline_internal_setup PARAMS((void));
242extern char *readline_internal_teardown PARAMS((int));
243extern int readline_internal_char PARAMS((void));
f9267e15 244
5bdf8622
DJ
245extern _rl_keyseq_cxt *_rl_keyseq_cxt_alloc PARAMS((void));
246extern void _rl_keyseq_cxt_dispose PARAMS((_rl_keyseq_cxt *));
247extern void _rl_keyseq_chain_dispose PARAMS((void));
248
249extern int _rl_dispatch_callback PARAMS((_rl_keyseq_cxt *));
250
251/* callback.c */
252extern _rl_callback_generic_arg *_rl_callback_data_alloc PARAMS((int));
253extern void _rl_callback_data_dispose PARAMS((_rl_callback_generic_arg *));
254
f9267e15
EZ
255#endif /* READLINE_CALLBACKS */
256
257/* bind.c */
775e241e 258extern char *_rl_untranslate_macro_value PARAMS((char *, int));
9255ee31
EZ
259
260/* complete.c */
cc88a640 261extern void _rl_reset_completion_state PARAMS((void));
9255ee31
EZ
262extern char _rl_find_completion_word PARAMS((int *, int *));
263extern void _rl_free_match_list PARAMS((char **));
f9267e15
EZ
264
265/* display.c */
9255ee31 266extern char *_rl_strip_prompt PARAMS((char *));
775e241e 267extern void _rl_reset_prompt PARAMS((void));
9255ee31
EZ
268extern void _rl_move_cursor_relative PARAMS((int, const char *));
269extern void _rl_move_vert PARAMS((int));
270extern void _rl_save_prompt PARAMS((void));
271extern void _rl_restore_prompt PARAMS((void));
272extern char *_rl_make_prompt_for_search PARAMS((int));
273extern void _rl_erase_at_end_of_line PARAMS((int));
274extern void _rl_clear_to_eol PARAMS((int));
275extern void _rl_clear_screen PARAMS((void));
276extern void _rl_update_final PARAMS((void));
277extern void _rl_redisplay_after_sigwinch PARAMS((void));
278extern void _rl_clean_up_for_exit PARAMS((void));
279extern void _rl_erase_entire_line PARAMS((void));
280extern int _rl_current_display_line PARAMS((void));
f9267e15
EZ
281
282/* input.c */
9255ee31
EZ
283extern int _rl_any_typein PARAMS((void));
284extern int _rl_input_available PARAMS((void));
285extern int _rl_input_queued PARAMS((int));
286extern void _rl_insert_typein PARAMS((int));
287extern int _rl_unget_char PARAMS((int));
5bdf8622
DJ
288extern int _rl_pushed_input_available PARAMS((void));
289
290/* isearch.c */
291extern _rl_search_cxt *_rl_scxt_alloc PARAMS((int, int));
292extern void _rl_scxt_dispose PARAMS((_rl_search_cxt *, int));
293
294extern int _rl_isearch_dispatch PARAMS((_rl_search_cxt *, int));
295extern int _rl_isearch_callback PARAMS((_rl_search_cxt *));
775e241e 296extern int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int));
5bdf8622
DJ
297
298extern int _rl_search_getchar PARAMS((_rl_search_cxt *));
f9267e15 299
775e241e
TT
300/* kill.c */
301#define BRACK_PASTE_PREF "\033[200~"
302#define BRACK_PASTE_SUFF "\033[201~"
303
304#define BRACK_PASTE_LAST '~'
305#define BRACK_PASTE_SLEN 6
306
307#define BRACK_PASTE_INIT "\033[?2004h"
308#define BRACK_PASTE_FINI "\033[?2004l"
309
f9267e15 310/* macro.c */
9255ee31
EZ
311extern void _rl_with_macro_input PARAMS((char *));
312extern int _rl_next_macro_key PARAMS((void));
775e241e 313extern int _rl_prev_macro_key PARAMS((void));
9255ee31
EZ
314extern void _rl_push_executing_macro PARAMS((void));
315extern void _rl_pop_executing_macro PARAMS((void));
316extern void _rl_add_macro_char PARAMS((int));
317extern void _rl_kill_kbd_macro PARAMS((void));
318
319/* misc.c */
5bdf8622
DJ
320extern int _rl_arg_overflow PARAMS((void));
321extern void _rl_arg_init PARAMS((void));
322extern int _rl_arg_getchar PARAMS((void));
323extern int _rl_arg_callback PARAMS((_rl_arg_cxt));
324extern void _rl_reset_argument PARAMS((void));
325
9255ee31
EZ
326extern void _rl_start_using_history PARAMS((void));
327extern int _rl_free_saved_history_line PARAMS((void));
328extern void _rl_set_insert_mode PARAMS((int, int));
f9267e15 329
cc88a640
JK
330extern void _rl_revert_all_lines PARAMS((void));
331
f9267e15 332/* nls.c */
9255ee31 333extern int _rl_init_eightbit PARAMS((void));
f9267e15
EZ
334
335/* parens.c */
9255ee31 336extern void _rl_enable_paren_matching PARAMS((int));
f9267e15
EZ
337
338/* readline.c */
9255ee31
EZ
339extern void _rl_init_line_state PARAMS((void));
340extern void _rl_set_the_line PARAMS((void));
341extern int _rl_dispatch PARAMS((int, Keymap));
342extern int _rl_dispatch_subseq PARAMS((int, Keymap, int));
5bdf8622 343extern void _rl_internal_char_cleanup PARAMS((void));
f9267e15
EZ
344
345/* rltty.c */
9255ee31
EZ
346extern int _rl_disable_tty_signals PARAMS((void));
347extern int _rl_restore_tty_signals PARAMS((void));
f9267e15 348
5bdf8622
DJ
349/* search.c */
350extern int _rl_nsearch_callback PARAMS((_rl_search_cxt *));
775e241e 351extern int _rl_nsearch_cleanup PARAMS((_rl_search_cxt *, int));
5bdf8622 352
cc88a640
JK
353/* signals.c */
354extern void _rl_signal_handler PARAMS((int));
355
356extern void _rl_block_sigint PARAMS((void));
357extern void _rl_release_sigint PARAMS((void));
358extern void _rl_block_sigwinch PARAMS((void));
359extern void _rl_release_sigwinch PARAMS((void));
360
f9267e15 361/* terminal.c */
9255ee31 362extern void _rl_get_screen_size PARAMS((int, int));
775e241e 363extern void _rl_sigwinch_resize_terminal PARAMS((void));
9255ee31 364extern int _rl_init_terminal_io PARAMS((const char *));
f9267e15 365#ifdef _MINIX
9255ee31
EZ
366extern void _rl_output_character_function PARAMS((int));
367#else
368extern int _rl_output_character_function PARAMS((int));
369#endif
370extern void _rl_output_some_chars PARAMS((const char *, int));
371extern int _rl_backspace PARAMS((int));
372extern void _rl_enable_meta_key PARAMS((void));
775e241e 373extern void _rl_disable_meta_key PARAMS((void));
9255ee31
EZ
374extern void _rl_control_keypad PARAMS((int));
375extern void _rl_set_cursor PARAMS((int, int));
376
377/* text.c */
378extern void _rl_fix_point PARAMS((int));
379extern int _rl_replace_text PARAMS((const char *, int, int));
cc88a640 380extern int _rl_forward_char_internal PARAMS((int));
9255ee31
EZ
381extern int _rl_insert_char PARAMS((int, int));
382extern int _rl_overwrite_char PARAMS((int, int));
383extern int _rl_overwrite_rubout PARAMS((int, int));
384extern int _rl_rubout_char PARAMS((int, int));
385#if defined (HANDLE_MULTIBYTE)
386extern int _rl_char_search_internal PARAMS((int, int, char *, int));
f9267e15 387#else
9255ee31 388extern int _rl_char_search_internal PARAMS((int, int, int));
f9267e15 389#endif
9255ee31 390extern int _rl_set_mark_at_pos PARAMS((int));
f9267e15 391
cc88a640
JK
392/* undo.c */
393extern UNDO_LIST *_rl_copy_undo_entry PARAMS((UNDO_LIST *));
394extern UNDO_LIST *_rl_copy_undo_list PARAMS((UNDO_LIST *));
775e241e 395extern void _rl_free_undo_list PARAMS((UNDO_LIST *));
cc88a640 396
f9267e15 397/* util.c */
cc88a640
JK
398#if defined (USE_VARARGS) && defined (PREFER_STDARG)
399extern void _rl_ttymsg (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
400extern void _rl_errmsg (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
401extern void _rl_trace (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
402#else
403extern void _rl_ttymsg ();
404extern void _rl_errmsg ();
405extern void _rl_trace ();
406#endif
775e241e 407extern void _rl_audit_tty PARAMS((char *));
cc88a640
JK
408
409extern int _rl_tropen PARAMS((void));
410
9255ee31 411extern int _rl_abort_internal PARAMS((void));
cc88a640 412extern int _rl_null_function PARAMS((int, int));
9255ee31
EZ
413extern char *_rl_strindex PARAMS((const char *, const char *));
414extern int _rl_qsort_string_compare PARAMS((char **, char **));
415extern int (_rl_uppercase_p) PARAMS((int));
416extern int (_rl_lowercase_p) PARAMS((int));
417extern int (_rl_pure_alphabetic) PARAMS((int));
418extern int (_rl_digit_p) PARAMS((int));
419extern int (_rl_to_lower) PARAMS((int));
420extern int (_rl_to_upper) PARAMS((int));
421extern int (_rl_digit_value) PARAMS((int));
f9267e15
EZ
422
423/* vi_mode.c */
9255ee31
EZ
424extern void _rl_vi_initialize_line PARAMS((void));
425extern void _rl_vi_reset_last PARAMS((void));
426extern void _rl_vi_set_last PARAMS((int, int, int));
427extern int _rl_vi_textmod_command PARAMS((int));
775e241e 428extern int _rl_vi_motion_command PARAMS((int));
9255ee31 429extern void _rl_vi_done_inserting PARAMS((void));
cc88a640 430extern int _rl_vi_domove_callback PARAMS((_rl_vimotion_cxt *));
775e241e 431extern int _rl_vi_domove_motion_cleanup PARAMS((int, _rl_vimotion_cxt *));
f9267e15
EZ
432
433/*************************************************************************
434 * Undocumented private variables *
435 *************************************************************************/
436
9255ee31 437/* bind.c */
cc88a640
JK
438extern const char * const _rl_possible_control_prefixes[];
439extern const char * const _rl_possible_meta_prefixes[];
9255ee31 440
5bdf8622
DJ
441/* callback.c */
442extern _rl_callback_func_t *_rl_callback_func;
443extern _rl_callback_generic_arg *_rl_callback_data;
444
f9267e15
EZ
445/* complete.c */
446extern int _rl_complete_show_all;
5bdf8622 447extern int _rl_complete_show_unmodified;
f9267e15 448extern int _rl_complete_mark_directories;
9255ee31 449extern int _rl_complete_mark_symlink_dirs;
cc88a640
JK
450extern int _rl_completion_prefix_display_length;
451extern int _rl_completion_columns;
f9267e15
EZ
452extern int _rl_print_completions_horizontally;
453extern int _rl_completion_case_fold;
cc88a640 454extern int _rl_completion_case_map;
9255ee31
EZ
455extern int _rl_match_hidden_files;
456extern int _rl_page_completions;
cc88a640
JK
457extern int _rl_skip_completed_text;
458extern int _rl_menu_complete_prefix_first;
f9267e15
EZ
459
460/* display.c */
461extern int _rl_vis_botlin;
462extern int _rl_last_c_pos;
463extern int _rl_suppress_redisplay;
5bdf8622 464extern int _rl_want_redisplay;
f9267e15 465
775e241e
TT
466extern char *_rl_emacs_mode_str;
467extern int _rl_emacs_modestr_len;
468extern char *_rl_vi_ins_mode_str;
469extern int _rl_vi_ins_modestr_len;
470extern char *_rl_vi_cmd_mode_str;
471extern int _rl_vi_cmd_modestr_len;
472
f9267e15 473/* isearch.c */
9255ee31 474extern char *_rl_isearch_terminators;
f9267e15 475
5bdf8622
DJ
476extern _rl_search_cxt *_rl_iscxt;
477
f9267e15 478/* macro.c */
f9267e15
EZ
479extern char *_rl_executing_macro;
480
9255ee31
EZ
481/* misc.c */
482extern int _rl_history_preserve_point;
483extern int _rl_history_saved_point;
484
5bdf8622
DJ
485extern _rl_arg_cxt _rl_argcxt;
486
775e241e
TT
487/* nls.c */
488extern int _rl_utf8locale;
489
f9267e15 490/* readline.c */
cc88a640 491extern int _rl_echoing_p;
f9267e15
EZ
492extern int _rl_horizontal_scroll_mode;
493extern int _rl_mark_modified_lines;
494extern int _rl_bell_preference;
495extern int _rl_meta_flag;
496extern int _rl_convert_meta_chars_to_ascii;
497extern int _rl_output_meta_chars;
5bdf8622 498extern int _rl_bind_stty_chars;
cc88a640
JK
499extern int _rl_revert_all_at_newline;
500extern int _rl_echo_control_chars;
775e241e
TT
501extern int _rl_show_mode_in_prompt;
502extern int _rl_enable_bracketed_paste;
f9267e15
EZ
503extern char *_rl_comment_begin;
504extern unsigned char _rl_parsing_conditionalized_out;
505extern Keymap _rl_keymap;
506extern FILE *_rl_in_stream;
507extern FILE *_rl_out_stream;
508extern int _rl_last_command_was_kill;
509extern int _rl_eof_char;
cc88a640
JK
510extern procenv_t _rl_top_level;
511extern _rl_keyseq_cxt *_rl_kscxt;
775e241e
TT
512extern int _rl_keyseq_timeout;
513
514extern int _rl_executing_keyseq_size;
f9267e15 515
5bdf8622
DJ
516/* search.c */
517extern _rl_search_cxt *_rl_nscxt;
518
cc88a640
JK
519/* signals.c */
520extern int _rl_interrupt_immediately;
521extern int volatile _rl_caught_signal;
522
775e241e
TT
523extern _rl_sigcleanup_func_t *_rl_sigcleanup;
524extern void *_rl_sigcleanarg;
525
cc88a640
JK
526extern int _rl_echoctl;
527
528extern int _rl_intr_char;
529extern int _rl_quit_char;
530extern int _rl_susp_char;
531
f9267e15
EZ
532/* terminal.c */
533extern int _rl_enable_keypad;
534extern int _rl_enable_meta;
9255ee31
EZ
535extern char *_rl_term_clreol;
536extern char *_rl_term_clrpag;
537extern char *_rl_term_im;
538extern char *_rl_term_ic;
539extern char *_rl_term_ei;
540extern char *_rl_term_DC;
541extern char *_rl_term_up;
542extern char *_rl_term_dc;
543extern char *_rl_term_cr;
544extern char *_rl_term_IC;
cc88a640 545extern char *_rl_term_forward_char;
9255ee31
EZ
546extern int _rl_screenheight;
547extern int _rl_screenwidth;
548extern int _rl_screenchars;
549extern int _rl_terminal_can_insert;
f9267e15
EZ
550extern int _rl_term_autowrap;
551
775e241e
TT
552/* text.c */
553extern int _rl_optimize_typeahead;
554
f9267e15
EZ
555/* undo.c */
556extern int _rl_doing_an_undo;
557extern int _rl_undo_group_level;
558
5bdf8622
DJ
559/* vi_mode.c */
560extern int _rl_vi_last_command;
775e241e 561extern int _rl_vi_redoing;
cc88a640 562extern _rl_vimotion_cxt *_rl_vimvcxt;
5bdf8622 563
f9267e15 564#endif /* _RL_PRIVATE_H_ */
This page took 1.079784 seconds and 4 git commands to generate.