]> git.ipfire.org Git - thirdparty/bash.git/blame - lib/readline/rlprivate.h
Bash-4.1 distribution source
[thirdparty/bash.git] / lib / readline / rlprivate.h
CommitLineData
bb70624e
JA
1/* rlprivate.h -- functions and variables global to the readline library,
2 but not intended for use by applications. */
3
3185942a 4/* Copyright (C) 1999-2009 Free Software Foundation, Inc.
bb70624e 5
3185942a
JA
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.
bb70624e 8
3185942a
JA
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
bb70624e
JA
12 (at your option) any later version.
13
3185942a
JA
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
bb70624e
JA
17 GNU General Public License for more details.
18
3185942a
JA
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*/
bb70624e
JA
22
23#if !defined (_RL_PRIVATE_H_)
24#define _RL_PRIVATE_H_
25
26#include "rlconf.h" /* for VISIBLE_STATS */
27#include "rlstdc.h"
f73dda09 28#include "posixjmp.h" /* defines procenv_t */
bb70624e 29
3185942a
JA
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
17345e5a
JA
40#define RL_CHECK_SIGNALS() \
41 do { \
42 if (_rl_caught_signal) _rl_signal_handler (_rl_caught_signal); \
43 } while (0)
44
95732b49
JA
45/*************************************************************************
46 * *
47 * Global structs undocumented in texinfo manual and not in readline.h *
48 * *
49 *************************************************************************/
50/* search types */
51#define RL_SEARCH_ISEARCH 0x01 /* incremental search */
52#define RL_SEARCH_NSEARCH 0x02 /* non-incremental search */
53#define RL_SEARCH_CSEARCH 0x04 /* intra-line char search */
54
55/* search flags */
56#define SF_REVERSE 0x01
57#define SF_FOUND 0x02
58#define SF_FAILED 0x04
59
60typedef struct __rl_search_context
61{
62 int type;
63 int sflags;
64
65 char *search_string;
66 int search_string_index;
67 int search_string_size;
68
69 char **lines;
70 char *allocated_line;
71 int hlen;
72 int hindex;
73
74 int save_point;
75 int save_mark;
76 int save_line;
77 int last_found_line;
78 char *prev_line_found;
79
80 UNDO_LIST *save_undo_list;
81
82 int history_pos;
83 int direction;
84
85 int lastc;
86#if defined (HANDLE_MULTIBYTE)
87 char mb[MB_LEN_MAX];
88#endif
89
90 char *sline;
91 int sline_len;
92 int sline_index;
93
94 char *search_terminators;
95} _rl_search_cxt;
96
97/* Callback data for reading numeric arguments */
98#define NUM_SAWMINUS 0x01
99#define NUM_SAWDIGITS 0x02
100#define NUM_READONE 0x04
101
102typedef int _rl_arg_cxt;
103
104/* A context for reading key sequences longer than a single character when
105 using the callback interface. */
106#define KSEQ_DISPATCHED 0x01
107#define KSEQ_SUBSEQ 0x02
108#define KSEQ_RECURSIVE 0x04
109
110typedef struct __rl_keyseq_context
111{
112 int flags;
113 int subseq_arg;
114 int subseq_retval; /* XXX */
115 Keymap dmap;
116
117 Keymap oldmap;
118 int okey;
119 struct __rl_keyseq_context *ocxt;
120 int childval;
121} _rl_keyseq_cxt;
122
123 /* fill in more as needed */
124/* `Generic' callback data and functions */
125typedef struct __rl_callback_generic_arg
126{
127 int count;
128 int i1, i2;
129 /* add here as needed */
130} _rl_callback_generic_arg;
131
132typedef int _rl_callback_func_t PARAMS((_rl_callback_generic_arg *));
133
bb70624e
JA
134/*************************************************************************
135 * *
136 * Global functions undocumented in texinfo manual and not in readline.h *
137 * *
138 *************************************************************************/
139
bb70624e
JA
140/*************************************************************************
141 * *
142 * Global variables undocumented in texinfo manual and not in readline.h *
143 * *
144 *************************************************************************/
145
146/* complete.c */
147extern int rl_complete_with_tilde_expansion;
148#if defined (VISIBLE_STATS)
149extern int rl_visible_stats;
150#endif /* VISIBLE_STATS */
151
152/* readline.c */
153extern int rl_line_buffer_len;
bb70624e 154extern int rl_arg_sign;
bb70624e 155extern int rl_visible_prompt_length;
bb70624e 156extern int rl_key_sequence_length;
7117c2d2 157extern int rl_byte_oriented;
bb70624e
JA
158
159/* display.c */
160extern int rl_display_fixed;
161
162/* parens.c */
163extern int rl_blink_matching_paren;
164
165/*************************************************************************
166 * *
167 * Global functions and variables unsed and undocumented *
168 * *
169 *************************************************************************/
170
bb70624e 171/* kill.c */
f73dda09 172extern int rl_set_retained_kills PARAMS((int));
bb70624e 173
bb70624e 174/* terminal.c */
f73dda09 175extern void _rl_set_screen_size PARAMS((int, int));
bb70624e
JA
176
177/* undo.c */
f73dda09 178extern int _rl_fix_last_undo_of_type PARAMS((int, int, int));
bb70624e
JA
179
180/* util.c */
f73dda09 181extern char *_rl_savestring PARAMS((const char *));
bb70624e
JA
182
183/*************************************************************************
184 * *
185 * Functions and variables private to the readline library *
186 * *
187 *************************************************************************/
188
189/* NOTE: Functions and variables prefixed with `_rl_' are
190 pseudo-global: they are global so they can be shared
191 between files in the readline library, but are not intended
192 to be visible to readline callers. */
193
194/*************************************************************************
195 * Undocumented private functions *
196 *************************************************************************/
197
198#if defined(READLINE_CALLBACKS)
199
200/* readline.c */
f73dda09
JA
201extern void readline_internal_setup PARAMS((void));
202extern char *readline_internal_teardown PARAMS((int));
203extern int readline_internal_char PARAMS((void));
bb70624e 204
95732b49
JA
205extern _rl_keyseq_cxt *_rl_keyseq_cxt_alloc PARAMS((void));
206extern void _rl_keyseq_cxt_dispose PARAMS((_rl_keyseq_cxt *));
207extern void _rl_keyseq_chain_dispose PARAMS((void));
208
209extern int _rl_dispatch_callback PARAMS((_rl_keyseq_cxt *));
210
211/* callback.c */
212extern _rl_callback_generic_arg *_rl_callback_data_alloc PARAMS((int));
213extern void _rl_callback_data_dispose PARAMS((_rl_callback_generic_arg *));
214
bb70624e
JA
215#endif /* READLINE_CALLBACKS */
216
217/* bind.c */
bb70624e 218
7117c2d2 219/* complete.c */
3185942a 220extern void _rl_reset_completion_state PARAMS((void));
7117c2d2
JA
221extern char _rl_find_completion_word PARAMS((int *, int *));
222extern void _rl_free_match_list PARAMS((char **));
223
bb70624e 224/* display.c */
f73dda09
JA
225extern char *_rl_strip_prompt PARAMS((char *));
226extern void _rl_move_cursor_relative PARAMS((int, const char *));
227extern void _rl_move_vert PARAMS((int));
228extern void _rl_save_prompt PARAMS((void));
229extern void _rl_restore_prompt PARAMS((void));
230extern char *_rl_make_prompt_for_search PARAMS((int));
231extern void _rl_erase_at_end_of_line PARAMS((int));
232extern void _rl_clear_to_eol PARAMS((int));
233extern void _rl_clear_screen PARAMS((void));
234extern void _rl_update_final PARAMS((void));
235extern void _rl_redisplay_after_sigwinch PARAMS((void));
236extern void _rl_clean_up_for_exit PARAMS((void));
237extern void _rl_erase_entire_line PARAMS((void));
238extern int _rl_current_display_line PARAMS((void));
bb70624e
JA
239
240/* input.c */
f73dda09
JA
241extern int _rl_any_typein PARAMS((void));
242extern int _rl_input_available PARAMS((void));
7117c2d2 243extern int _rl_input_queued PARAMS((int));
f73dda09 244extern void _rl_insert_typein PARAMS((int));
7117c2d2 245extern int _rl_unget_char PARAMS((int));
b80f6443 246extern int _rl_pushed_input_available PARAMS((void));
bb70624e 247
95732b49
JA
248/* isearch.c */
249extern _rl_search_cxt *_rl_scxt_alloc PARAMS((int, int));
250extern void _rl_scxt_dispose PARAMS((_rl_search_cxt *, int));
251
252extern int _rl_isearch_dispatch PARAMS((_rl_search_cxt *, int));
253extern int _rl_isearch_callback PARAMS((_rl_search_cxt *));
254
255extern int _rl_search_getchar PARAMS((_rl_search_cxt *));
256
bb70624e 257/* macro.c */
f73dda09
JA
258extern void _rl_with_macro_input PARAMS((char *));
259extern int _rl_next_macro_key PARAMS((void));
260extern void _rl_push_executing_macro PARAMS((void));
261extern void _rl_pop_executing_macro PARAMS((void));
262extern void _rl_add_macro_char PARAMS((int));
263extern void _rl_kill_kbd_macro PARAMS((void));
bb70624e 264
7117c2d2 265/* misc.c */
95732b49
JA
266extern int _rl_arg_overflow PARAMS((void));
267extern void _rl_arg_init PARAMS((void));
268extern int _rl_arg_getchar PARAMS((void));
269extern int _rl_arg_callback PARAMS((_rl_arg_cxt));
270extern void _rl_reset_argument PARAMS((void));
271
7117c2d2
JA
272extern void _rl_start_using_history PARAMS((void));
273extern int _rl_free_saved_history_line PARAMS((void));
274extern void _rl_set_insert_mode PARAMS((int, int));
275
3185942a
JA
276extern void _rl_revert_all_lines PARAMS((void));
277
bb70624e 278/* nls.c */
f73dda09 279extern int _rl_init_eightbit PARAMS((void));
bb70624e
JA
280
281/* parens.c */
f73dda09 282extern void _rl_enable_paren_matching PARAMS((int));
bb70624e
JA
283
284/* readline.c */
f73dda09
JA
285extern void _rl_init_line_state PARAMS((void));
286extern void _rl_set_the_line PARAMS((void));
287extern int _rl_dispatch PARAMS((int, Keymap));
7117c2d2 288extern int _rl_dispatch_subseq PARAMS((int, Keymap, int));
95732b49 289extern void _rl_internal_char_cleanup PARAMS((void));
bb70624e
JA
290
291/* rltty.c */
f73dda09
JA
292extern int _rl_disable_tty_signals PARAMS((void));
293extern int _rl_restore_tty_signals PARAMS((void));
bb70624e 294
95732b49
JA
295/* search.c */
296extern int _rl_nsearch_callback PARAMS((_rl_search_cxt *));
297
3185942a 298/* signals.c */
17345e5a
JA
299extern void _rl_signal_handler PARAMS((int));
300
3185942a
JA
301extern void _rl_block_sigint PARAMS((void));
302extern void _rl_release_sigint PARAMS((void));
0001803f
CR
303extern void _rl_block_sigwinch PARAMS((void));
304extern void _rl_release_sigwinch PARAMS((void));
3185942a 305
bb70624e 306/* terminal.c */
f73dda09
JA
307extern void _rl_get_screen_size PARAMS((int, int));
308extern int _rl_init_terminal_io PARAMS((const char *));
bb70624e 309#ifdef _MINIX
f73dda09 310extern void _rl_output_character_function PARAMS((int));
bb70624e 311#else
f73dda09 312extern int _rl_output_character_function PARAMS((int));
bb70624e 313#endif
f73dda09
JA
314extern void _rl_output_some_chars PARAMS((const char *, int));
315extern int _rl_backspace PARAMS((int));
316extern void _rl_enable_meta_key PARAMS((void));
317extern void _rl_control_keypad PARAMS((int));
7117c2d2
JA
318extern void _rl_set_cursor PARAMS((int, int));
319
320/* text.c */
321extern void _rl_fix_point PARAMS((int));
322extern int _rl_replace_text PARAMS((const char *, int, int));
323extern int _rl_insert_char PARAMS((int, int));
324extern int _rl_overwrite_char PARAMS((int, int));
325extern int _rl_overwrite_rubout PARAMS((int, int));
326extern int _rl_rubout_char PARAMS((int, int));
327#if defined (HANDLE_MULTIBYTE)
328extern int _rl_char_search_internal PARAMS((int, int, char *, int));
329#else
330extern int _rl_char_search_internal PARAMS((int, int, int));
331#endif
332extern int _rl_set_mark_at_pos PARAMS((int));
bb70624e 333
0628567a
JA
334/* undo.c */
335extern UNDO_LIST *_rl_copy_undo_entry PARAMS((UNDO_LIST *));
336extern UNDO_LIST *_rl_copy_undo_list PARAMS((UNDO_LIST *));
337
bb70624e 338/* util.c */
3185942a
JA
339#if defined (USE_VARARGS) && defined (PREFER_STDARG)
340extern void _rl_ttymsg (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
341extern void _rl_errmsg (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
342extern void _rl_trace (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
343#else
344extern void _rl_ttymsg ();
345extern void _rl_errmsg ();
346extern void _rl_trace ();
347#endif
348
349extern int _rl_tropen PARAMS((void));
350
f73dda09 351extern int _rl_abort_internal PARAMS((void));
0001803f 352extern int _rl_null_function PARAMS((int, int));
f73dda09
JA
353extern char *_rl_strindex PARAMS((const char *, const char *));
354extern int _rl_qsort_string_compare PARAMS((char **, char **));
355extern int (_rl_uppercase_p) PARAMS((int));
356extern int (_rl_lowercase_p) PARAMS((int));
357extern int (_rl_pure_alphabetic) PARAMS((int));
358extern int (_rl_digit_p) PARAMS((int));
359extern int (_rl_to_lower) PARAMS((int));
360extern int (_rl_to_upper) PARAMS((int));
361extern int (_rl_digit_value) PARAMS((int));
bb70624e
JA
362
363/* vi_mode.c */
f73dda09
JA
364extern void _rl_vi_initialize_line PARAMS((void));
365extern void _rl_vi_reset_last PARAMS((void));
366extern void _rl_vi_set_last PARAMS((int, int, int));
367extern int _rl_vi_textmod_command PARAMS((int));
368extern void _rl_vi_done_inserting PARAMS((void));
bb70624e
JA
369
370/*************************************************************************
371 * Undocumented private variables *
372 *************************************************************************/
373
28ef6c31 374/* bind.c */
3185942a
JA
375extern const char * const _rl_possible_control_prefixes[];
376extern const char * const _rl_possible_meta_prefixes[];
28ef6c31 377
95732b49
JA
378/* callback.c */
379extern _rl_callback_func_t *_rl_callback_func;
380extern _rl_callback_generic_arg *_rl_callback_data;
381
bb70624e
JA
382/* complete.c */
383extern int _rl_complete_show_all;
b80f6443 384extern int _rl_complete_show_unmodified;
bb70624e 385extern int _rl_complete_mark_directories;
7117c2d2 386extern int _rl_complete_mark_symlink_dirs;
3185942a 387extern int _rl_completion_prefix_display_length;
bb70624e
JA
388extern int _rl_print_completions_horizontally;
389extern int _rl_completion_case_fold;
f73dda09 390extern int _rl_match_hidden_files;
7117c2d2 391extern int _rl_page_completions;
0001803f 392extern int _rl_skip_completed_text;
bb70624e
JA
393
394/* display.c */
395extern int _rl_vis_botlin;
396extern int _rl_last_c_pos;
397extern int _rl_suppress_redisplay;
95732b49 398extern int _rl_want_redisplay;
bb70624e 399
bb70624e 400/* isearch.c */
f73dda09 401extern char *_rl_isearch_terminators;
bb70624e 402
95732b49
JA
403extern _rl_search_cxt *_rl_iscxt;
404
bb70624e 405/* macro.c */
bb70624e
JA
406extern char *_rl_executing_macro;
407
7117c2d2
JA
408/* misc.c */
409extern int _rl_history_preserve_point;
410extern int _rl_history_saved_point;
411
95732b49
JA
412extern _rl_arg_cxt _rl_argcxt;
413
bb70624e 414/* readline.c */
3185942a 415extern int _rl_echoing_p;
bb70624e
JA
416extern int _rl_horizontal_scroll_mode;
417extern int _rl_mark_modified_lines;
418extern int _rl_bell_preference;
419extern int _rl_meta_flag;
420extern int _rl_convert_meta_chars_to_ascii;
421extern int _rl_output_meta_chars;
95732b49 422extern int _rl_bind_stty_chars;
3185942a 423extern int _rl_revert_all_at_newline;
0001803f 424extern int _rl_echo_control_chars;
bb70624e
JA
425extern char *_rl_comment_begin;
426extern unsigned char _rl_parsing_conditionalized_out;
427extern Keymap _rl_keymap;
428extern FILE *_rl_in_stream;
429extern FILE *_rl_out_stream;
430extern int _rl_last_command_was_kill;
431extern int _rl_eof_char;
3185942a
JA
432extern procenv_t _rl_top_level;
433extern _rl_keyseq_cxt *_rl_kscxt;
bb70624e 434
95732b49
JA
435/* search.c */
436extern _rl_search_cxt *_rl_nscxt;
437
3185942a 438/* signals.c */
17345e5a
JA
439extern int _rl_interrupt_immediately;
440extern int volatile _rl_caught_signal;
441
3185942a
JA
442extern int _rl_echoctl;
443
444extern int _rl_intr_char;
445extern int _rl_quit_char;
446extern int _rl_susp_char;
447
bb70624e
JA
448/* terminal.c */
449extern int _rl_enable_keypad;
450extern int _rl_enable_meta;
28ef6c31
JA
451extern char *_rl_term_clreol;
452extern char *_rl_term_clrpag;
453extern char *_rl_term_im;
454extern char *_rl_term_ic;
455extern char *_rl_term_ei;
456extern char *_rl_term_DC;
457extern char *_rl_term_up;
458extern char *_rl_term_dc;
459extern char *_rl_term_cr;
460extern char *_rl_term_IC;
0628567a 461extern char *_rl_term_forward_char;
28ef6c31
JA
462extern int _rl_screenheight;
463extern int _rl_screenwidth;
464extern int _rl_screenchars;
465extern int _rl_terminal_can_insert;
bb70624e
JA
466extern int _rl_term_autowrap;
467
468/* undo.c */
469extern int _rl_doing_an_undo;
470extern int _rl_undo_group_level;
471
b80f6443
JA
472/* vi_mode.c */
473extern int _rl_vi_last_command;
474
bb70624e 475#endif /* _RL_PRIVATE_H_ */