1210284Sjmallett/* rlprivate.h -- functions and variables global to the readline library,
2232812Sjmallett		  but not intended for use by applications. */
3215990Sjmallett
4210284Sjmallett/* Copyright (C) 1999-2005 Free Software Foundation, Inc.
5210284Sjmallett
6215990Sjmallett   This file is part of the GNU Readline Library, a library for
7215990Sjmallett   reading lines of text with interactive input and history editing.
8215990Sjmallett
9210284Sjmallett   The GNU Readline Library is free software; you can redistribute it
10215990Sjmallett   and/or modify it under the terms of the GNU General Public License
11215990Sjmallett   as published by the Free Software Foundation; either version 2, or
12210284Sjmallett   (at your option) any later version.
13215990Sjmallett
14215990Sjmallett   The GNU Readline Library is distributed in the hope that it will be
15215990Sjmallett   useful, but WITHOUT ANY WARRANTY; without even the implied warranty
16215990Sjmallett   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17215990Sjmallett   GNU General Public License for more details.
18232812Sjmallett
19215990Sjmallett   The GNU General Public License is often shipped with GNU software, and
20215990Sjmallett   is generally kept in a file called COPYING or LICENSE.  If you do not
21215990Sjmallett   have a copy of the license, write to the Free Software Foundation,
22215990Sjmallett   59 Temple Place, Suite 330, Boston, MA 02111 USA. */
23215990Sjmallett
24215990Sjmallett#if !defined (_RL_PRIVATE_H_)
25215990Sjmallett#define _RL_PRIVATE_H_
26215990Sjmallett
27215990Sjmallett#include "rlconf.h"	/* for VISIBLE_STATS */
28215990Sjmallett#include "rlstdc.h"
29232812Sjmallett#include "posixjmp.h"	/* defines procenv_t */
30215990Sjmallett
31215990Sjmallett/*************************************************************************
32215990Sjmallett *									 *
33215990Sjmallett * Global structs undocumented in texinfo manual and not in readline.h   *
34215990Sjmallett *									 *
35215990Sjmallett *************************************************************************/
36215990Sjmallett/* search types */
37215990Sjmallett#define RL_SEARCH_ISEARCH	0x01		/* incremental search */
38210284Sjmallett#define RL_SEARCH_NSEARCH	0x02		/* non-incremental search */
39210284Sjmallett#define RL_SEARCH_CSEARCH	0x04		/* intra-line char search */
40210284Sjmallett
41210284Sjmallett/* search flags */
42210284Sjmallett#define SF_REVERSE		0x01
43210284Sjmallett#define SF_FOUND		0x02
44210284Sjmallett#define SF_FAILED		0x04
45215990Sjmallett
46210284Sjmalletttypedef struct  __rl_search_context
47210284Sjmallett{
48210284Sjmallett  int type;
49210284Sjmallett  int sflags;
50210284Sjmallett
51210284Sjmallett  char *search_string;
52232812Sjmallett  int search_string_index;
53210284Sjmallett  int search_string_size;
54232812Sjmallett
55232812Sjmallett  char **lines;
56232812Sjmallett  char *allocated_line;
57232812Sjmallett  int hlen;
58232812Sjmallett  int hindex;
59232812Sjmallett
60232812Sjmallett  int save_point;
61232812Sjmallett  int save_mark;
62232812Sjmallett  int save_line;
63232812Sjmallett  int last_found_line;
64232812Sjmallett  char *prev_line_found;
65232812Sjmallett
66232812Sjmallett  UNDO_LIST *save_undo_list;
67232812Sjmallett
68243587Sjmallett  int history_pos;
69210284Sjmallett  int direction;
70210284Sjmallett
71243587Sjmallett  int lastc;
72210284Sjmallett#if defined (HANDLE_MULTIBYTE)
73210284Sjmallett  char mb[MB_LEN_MAX];
74210284Sjmallett#endif
75232812Sjmallett
76232812Sjmallett  char *sline;
77210284Sjmallett  int sline_len;
78210284Sjmallett  int sline_index;
79210284Sjmallett
80210284Sjmallett  char  *search_terminators;
81210284Sjmallett} _rl_search_cxt;
82210284Sjmallett
83210284Sjmallett/* Callback data for reading numeric arguments */
84210284Sjmallett#define NUM_SAWMINUS	0x01
85210284Sjmallett#define NUM_SAWDIGITS	0x02
86210284Sjmallett#define NUM_READONE	0x04
87215990Sjmallett
88210284Sjmalletttypedef int _rl_arg_cxt;
89210284Sjmallett
90210284Sjmallett/* A context for reading key sequences longer than a single character when
91210284Sjmallett   using the callback interface. */
92210284Sjmallett#define KSEQ_DISPATCHED	0x01
93210284Sjmallett#define KSEQ_SUBSEQ	0x02
94215990Sjmallett#define KSEQ_RECURSIVE	0x04
95215990Sjmallett
96210284Sjmalletttypedef struct __rl_keyseq_context
97210284Sjmallett{
98210284Sjmallett  int flags;
99210284Sjmallett  int subseq_arg;
100210284Sjmallett  int subseq_retval;		/* XXX */
101210284Sjmallett  Keymap dmap;
102210284Sjmallett
103210284Sjmallett  Keymap oldmap;
104210284Sjmallett  int okey;
105210284Sjmallett  struct __rl_keyseq_context *ocxt;
106210284Sjmallett  int childval;
107210284Sjmallett} _rl_keyseq_cxt;
108210284Sjmallett
109210284Sjmallett  /* fill in more as needed */
110210284Sjmallett/* `Generic' callback data and functions */
111210284Sjmalletttypedef struct __rl_callback_generic_arg
112210284Sjmallett{
113210284Sjmallett  int count;
114210284Sjmallett  int i1, i2;
115210284Sjmallett  /* add here as needed */
116210284Sjmallett} _rl_callback_generic_arg;
117215990Sjmallett
118215990Sjmalletttypedef int _rl_callback_func_t PARAMS((_rl_callback_generic_arg *));
119215990Sjmallett
120215990Sjmallett/*************************************************************************
121215990Sjmallett *									 *
122210284Sjmallett * Global functions undocumented in texinfo manual and not in readline.h *
123215990Sjmallett *									 *
124215990Sjmallett *************************************************************************/
125215990Sjmallett
126215990Sjmallett/*************************************************************************
127215990Sjmallett *									 *
128215990Sjmallett * Global variables undocumented in texinfo manual and not in readline.h *
129215990Sjmallett *									 *
130215990Sjmallett *************************************************************************/
131215990Sjmallett
132210284Sjmallett/* complete.c */
133210284Sjmallettextern int rl_complete_with_tilde_expansion;
134215990Sjmallett#if defined (VISIBLE_STATS)
135210284Sjmallettextern int rl_visible_stats;
136215990Sjmallett#endif /* VISIBLE_STATS */
137210284Sjmallett
138215990Sjmallett/* readline.c */
139210284Sjmallettextern int rl_line_buffer_len;
140210284Sjmallettextern int rl_arg_sign;
141210284Sjmallettextern int rl_visible_prompt_length;
142215990Sjmallettextern int readline_echoing_p;
143210284Sjmallettextern int rl_key_sequence_length;
144210284Sjmallettextern int rl_byte_oriented;
145210284Sjmallett
146210284Sjmallettextern _rl_keyseq_cxt *_rl_kscxt;
147210284Sjmallett
148210284Sjmallett/* display.c */
149210284Sjmallettextern int rl_display_fixed;
150210284Sjmallett
151210284Sjmallett/* parens.c */
152210284Sjmallettextern int rl_blink_matching_paren;
153210284Sjmallett
154210284Sjmallett/*************************************************************************
155210284Sjmallett *									 *
156210284Sjmallett * Global functions and variables unsed and undocumented		 *
157210284Sjmallett *									 *
158210284Sjmallett *************************************************************************/
159210284Sjmallett
160210284Sjmallett/* kill.c */
161210284Sjmallettextern int rl_set_retained_kills PARAMS((int));
162210284Sjmallett
163210284Sjmallett/* terminal.c */
164210284Sjmallettextern void _rl_set_screen_size PARAMS((int, int));
165210284Sjmallett
166210284Sjmallett/* undo.c */
167210284Sjmallettextern int _rl_fix_last_undo_of_type PARAMS((int, int, int));
168210284Sjmallett
169210284Sjmallett/* util.c */
170210284Sjmallettextern char *_rl_savestring PARAMS((const char *));
171215990Sjmallett
172215990Sjmallett/*************************************************************************
173215990Sjmallett *									 *
174232812Sjmallett * Functions and variables private to the readline library		 *
175215990Sjmallett *									 *
176215990Sjmallett *************************************************************************/
177215990Sjmallett
178215990Sjmallett/* NOTE: Functions and variables prefixed with `_rl_' are
179215990Sjmallett   pseudo-global: they are global so they can be shared
180215990Sjmallett   between files in the readline library, but are not intended
181215990Sjmallett   to be visible to readline callers. */
182215990Sjmallett
183215990Sjmallett/*************************************************************************
184215990Sjmallett * Undocumented private functions					 *
185215990Sjmallett *************************************************************************/
186215990Sjmallett
187215990Sjmallett#if defined(READLINE_CALLBACKS)
188215990Sjmallett
189215990Sjmallett/* readline.c */
190215990Sjmallettextern void readline_internal_setup PARAMS((void));
191215990Sjmallettextern char *readline_internal_teardown PARAMS((int));
192215990Sjmallettextern int readline_internal_char PARAMS((void));
193215990Sjmallett
194232812Sjmallettextern _rl_keyseq_cxt *_rl_keyseq_cxt_alloc PARAMS((void));
195215990Sjmallettextern void _rl_keyseq_cxt_dispose PARAMS((_rl_keyseq_cxt *));
196215990Sjmallettextern void _rl_keyseq_chain_dispose PARAMS((void));
197215990Sjmallett
198215990Sjmallettextern int _rl_dispatch_callback PARAMS((_rl_keyseq_cxt *));
199232812Sjmallett
200232812Sjmallett/* callback.c */
201232812Sjmallettextern _rl_callback_generic_arg *_rl_callback_data_alloc PARAMS((int));
202232812Sjmallettextern void _rl_callback_data_dispose PARAMS((_rl_callback_generic_arg *));
203232812Sjmallett
204215990Sjmallett#endif /* READLINE_CALLBACKS */
205215990Sjmallett
206215990Sjmallett/* bind.c */
207215990Sjmallett
208210284Sjmallett/* complete.c */
209210284Sjmallettextern char _rl_find_completion_word PARAMS((int *, int *));
210210284Sjmallettextern void _rl_free_match_list PARAMS((char **));
211210284Sjmallett
212210284Sjmallett/* display.c */
213210284Sjmallettextern char *_rl_strip_prompt PARAMS((char *));
214210284Sjmallettextern void _rl_move_cursor_relative PARAMS((int, const char *));
215210284Sjmallettextern void _rl_move_vert PARAMS((int));
216210284Sjmallettextern void _rl_save_prompt PARAMS((void));
217210284Sjmallettextern void _rl_restore_prompt PARAMS((void));
218210284Sjmallettextern char *_rl_make_prompt_for_search PARAMS((int));
219210284Sjmallettextern void _rl_erase_at_end_of_line PARAMS((int));
220210284Sjmallettextern void _rl_clear_to_eol PARAMS((int));
221210284Sjmallettextern void _rl_clear_screen PARAMS((void));
222210284Sjmallettextern void _rl_update_final PARAMS((void));
223210284Sjmallettextern void _rl_redisplay_after_sigwinch PARAMS((void));
224232812Sjmallettextern void _rl_clean_up_for_exit PARAMS((void));
225232812Sjmallettextern void _rl_erase_entire_line PARAMS((void));
226232812Sjmallettextern int _rl_current_display_line PARAMS((void));
227210284Sjmallett
228210284Sjmallett/* input.c */
229232812Sjmallettextern int _rl_any_typein PARAMS((void));
230210284Sjmallettextern int _rl_input_available PARAMS((void));
231210284Sjmallettextern int _rl_input_queued PARAMS((int));
232210284Sjmallettextern void _rl_insert_typein PARAMS((int));
233210284Sjmallettextern int _rl_unget_char PARAMS((int));
234210284Sjmallettextern int _rl_pushed_input_available PARAMS((void));
235210284Sjmallett
236210284Sjmallett/* isearch.c */
237210284Sjmallettextern _rl_search_cxt *_rl_scxt_alloc PARAMS((int, int));
238210284Sjmallettextern void _rl_scxt_dispose PARAMS((_rl_search_cxt *, int));
239210284Sjmallett
240210284Sjmallettextern int _rl_isearch_dispatch PARAMS((_rl_search_cxt *, int));
241210284Sjmallettextern int _rl_isearch_callback PARAMS((_rl_search_cxt *));
242210284Sjmallett
243210284Sjmallettextern int _rl_search_getchar PARAMS((_rl_search_cxt *));
244210284Sjmallett
245210284Sjmallett/* macro.c */
246210284Sjmallettextern void _rl_with_macro_input PARAMS((char *));
247215990Sjmallettextern int _rl_next_macro_key PARAMS((void));
248210284Sjmallettextern void _rl_push_executing_macro PARAMS((void));
249210284Sjmallettextern void _rl_pop_executing_macro PARAMS((void));
250210284Sjmallettextern void _rl_add_macro_char PARAMS((int));
251210284Sjmallettextern void _rl_kill_kbd_macro PARAMS((void));
252210284Sjmallett
253210284Sjmallett/* misc.c */
254210284Sjmallettextern int _rl_arg_overflow PARAMS((void));
255210284Sjmallettextern void _rl_arg_init PARAMS((void));
256210284Sjmallettextern int _rl_arg_getchar PARAMS((void));
257210284Sjmallettextern int _rl_arg_callback PARAMS((_rl_arg_cxt));
258210284Sjmallettextern void _rl_reset_argument PARAMS((void));
259210284Sjmallett
260210284Sjmallettextern void _rl_start_using_history PARAMS((void));
261215990Sjmallettextern int _rl_free_saved_history_line PARAMS((void));
262215990Sjmallettextern void _rl_set_insert_mode PARAMS((int, int));
263215990Sjmallett
264215990Sjmallett/* nls.c */
265215990Sjmallettextern int _rl_init_eightbit PARAMS((void));
266215990Sjmallett
267215990Sjmallett/* parens.c */
268215990Sjmallettextern void _rl_enable_paren_matching PARAMS((int));
269215990Sjmallett
270210284Sjmallett/* readline.c */
271210284Sjmallettextern void _rl_init_line_state PARAMS((void));
272210284Sjmallettextern void _rl_set_the_line PARAMS((void));
273210284Sjmallettextern int _rl_dispatch PARAMS((int, Keymap));
274210284Sjmallettextern int _rl_dispatch_subseq PARAMS((int, Keymap, int));
275210284Sjmallettextern void _rl_internal_char_cleanup PARAMS((void));
276210284Sjmallett
277210284Sjmallett/* rltty.c */
278210284Sjmallettextern int _rl_disable_tty_signals PARAMS((void));
279210284Sjmallettextern int _rl_restore_tty_signals PARAMS((void));
280210284Sjmallett
281210284Sjmallett/* search.c */
282210284Sjmallettextern int _rl_nsearch_callback PARAMS((_rl_search_cxt *));
283210284Sjmallett
284215990Sjmallett/* terminal.c */
285210284Sjmallettextern void _rl_get_screen_size PARAMS((int, int));
286215990Sjmallettextern int _rl_init_terminal_io PARAMS((const char *));
287215990Sjmallett#ifdef _MINIX
288210284Sjmallettextern void _rl_output_character_function PARAMS((int));
289210284Sjmallett#else
290210284Sjmallettextern int _rl_output_character_function PARAMS((int));
291210284Sjmallett#endif
292210284Sjmallettextern void _rl_output_some_chars PARAMS((const char *, int));
293210284Sjmallettextern int _rl_backspace PARAMS((int));
294210284Sjmallettextern void _rl_enable_meta_key PARAMS((void));
295210284Sjmallettextern void _rl_control_keypad PARAMS((int));
296210284Sjmallettextern void _rl_set_cursor PARAMS((int, int));
297210284Sjmallett
298210284Sjmallett/* text.c */
299232812Sjmallettextern void _rl_fix_point PARAMS((int));
300232812Sjmallettextern int _rl_replace_text PARAMS((const char *, int, int));
301232812Sjmallettextern int _rl_insert_char PARAMS((int, int));
302210284Sjmallettextern int _rl_overwrite_char PARAMS((int, int));
303210284Sjmallettextern int _rl_overwrite_rubout PARAMS((int, int));
304232812Sjmallettextern int _rl_rubout_char PARAMS((int, int));
305210284Sjmallett#if defined (HANDLE_MULTIBYTE)
306215990Sjmallettextern int _rl_char_search_internal PARAMS((int, int, char *, int));
307210284Sjmallett#else
308210284Sjmallettextern int _rl_char_search_internal PARAMS((int, int, int));
309210284Sjmallett#endif
310232812Sjmallettextern int _rl_set_mark_at_pos PARAMS((int));
311210284Sjmallett
312210284Sjmallett/* undo.c */
313210284Sjmallettextern UNDO_LIST *_rl_copy_undo_entry PARAMS((UNDO_LIST *));
314210284Sjmallettextern UNDO_LIST *_rl_copy_undo_list PARAMS((UNDO_LIST *));
315210284Sjmallett
316210284Sjmallett/* util.c */
317210284Sjmallettextern int _rl_abort_internal PARAMS((void));
318210284Sjmallettextern char *_rl_strindex PARAMS((const char *, const char *));
319210284Sjmallettextern int _rl_qsort_string_compare PARAMS((char **, char **));
320210284Sjmallettextern int (_rl_uppercase_p) PARAMS((int));
321210284Sjmallettextern int (_rl_lowercase_p) PARAMS((int));
322210284Sjmallettextern int (_rl_pure_alphabetic) PARAMS((int));
323210284Sjmallettextern int (_rl_digit_p) PARAMS((int));
324210284Sjmallettextern int (_rl_to_lower) PARAMS((int));
325210284Sjmallettextern int (_rl_to_upper) PARAMS((int));
326210284Sjmallettextern int (_rl_digit_value) PARAMS((int));
327210284Sjmallett
328210284Sjmallett/* vi_mode.c */
329210284Sjmallettextern void _rl_vi_initialize_line PARAMS((void));
330210284Sjmallettextern void _rl_vi_reset_last PARAMS((void));
331210284Sjmallettextern void _rl_vi_set_last PARAMS((int, int, int));
332210284Sjmallettextern int _rl_vi_textmod_command PARAMS((int));
333210284Sjmallettextern void _rl_vi_done_inserting PARAMS((void));
334210284Sjmallett
335210284Sjmallett/*************************************************************************
336210284Sjmallett * Undocumented private variables					 *
337210284Sjmallett *************************************************************************/
338210284Sjmallett
339210284Sjmallett/* bind.c */
340210284Sjmallettextern const char *_rl_possible_control_prefixes[];
341210284Sjmallettextern const char *_rl_possible_meta_prefixes[];
342210284Sjmallett
343210284Sjmallett/* callback.c */
344210284Sjmallettextern _rl_callback_func_t *_rl_callback_func;
345210284Sjmallettextern _rl_callback_generic_arg *_rl_callback_data;
346210284Sjmallett
347210284Sjmallett/* complete.c */
348210284Sjmallettextern int _rl_complete_show_all;
349210284Sjmallettextern int _rl_complete_show_unmodified;
350215990Sjmallettextern int _rl_complete_mark_directories;
351210284Sjmallettextern int _rl_complete_mark_symlink_dirs;
352210284Sjmallettextern int _rl_print_completions_horizontally;
353210284Sjmallettextern int _rl_completion_case_fold;
354210284Sjmallettextern int _rl_match_hidden_files;
355215990Sjmallettextern int _rl_page_completions;
356215990Sjmallett
357210284Sjmallett/* display.c */
358210284Sjmallettextern int _rl_vis_botlin;
359210284Sjmallettextern int _rl_last_c_pos;
360210284Sjmallettextern int _rl_suppress_redisplay;
361210284Sjmallettextern int _rl_want_redisplay;
362210284Sjmallettextern char *rl_display_prompt;
363210284Sjmallett
364210284Sjmallett/* isearch.c */
365210284Sjmallettextern char *_rl_isearch_terminators;
366210284Sjmallett
367210284Sjmallettextern _rl_search_cxt *_rl_iscxt;
368210284Sjmallett
369210284Sjmallett/* macro.c */
370210284Sjmallettextern char *_rl_executing_macro;
371210284Sjmallett
372210284Sjmallett/* misc.c */
373210284Sjmallettextern int _rl_history_preserve_point;
374210284Sjmallettextern int _rl_history_saved_point;
375210284Sjmallett
376210284Sjmallettextern _rl_arg_cxt _rl_argcxt;
377210284Sjmallett
378210284Sjmallett/* readline.c */
379210284Sjmallettextern int _rl_horizontal_scroll_mode;
380210284Sjmallettextern int _rl_mark_modified_lines;
381210284Sjmallettextern int _rl_bell_preference;
382210284Sjmallettextern int _rl_meta_flag;
383210284Sjmallettextern int _rl_convert_meta_chars_to_ascii;
384210284Sjmallettextern int _rl_output_meta_chars;
385210284Sjmallettextern int _rl_bind_stty_chars;
386210284Sjmallettextern char *_rl_comment_begin;
387210284Sjmallettextern unsigned char _rl_parsing_conditionalized_out;
388210284Sjmallettextern Keymap _rl_keymap;
389210284Sjmallettextern FILE *_rl_in_stream;
390210284Sjmallettextern FILE *_rl_out_stream;
391210284Sjmallettextern int _rl_last_command_was_kill;
392210284Sjmallettextern int _rl_eof_char;
393210284Sjmallettextern procenv_t readline_top_level;
394210284Sjmallett
395210284Sjmallett/* search.c */
396210284Sjmallettextern _rl_search_cxt *_rl_nscxt;
397210284Sjmallett
398210284Sjmallett/* terminal.c */
399210284Sjmallettextern int _rl_enable_keypad;
400210284Sjmallettextern int _rl_enable_meta;
401210284Sjmallettextern char *_rl_term_clreol;
402210284Sjmallettextern char *_rl_term_clrpag;
403210284Sjmallettextern char *_rl_term_im;
404210284Sjmallettextern char *_rl_term_ic;
405210284Sjmallettextern char *_rl_term_ei;
406210284Sjmallettextern char *_rl_term_DC;
407210284Sjmallettextern char *_rl_term_up;
408210284Sjmallettextern char *_rl_term_dc;
409210284Sjmallettextern char *_rl_term_cr;
410210284Sjmallettextern char *_rl_term_IC;
411210284Sjmallettextern char *_rl_term_forward_char;
412210284Sjmallettextern int _rl_screenheight;
413210284Sjmallettextern int _rl_screenwidth;
414210284Sjmallettextern int _rl_screenchars;
415210284Sjmallettextern int _rl_terminal_can_insert;
416210284Sjmallettextern int _rl_term_autowrap;
417210284Sjmallett
418210284Sjmallett/* undo.c */
419210284Sjmallettextern int _rl_doing_an_undo;
420210284Sjmallettextern int _rl_undo_group_level;
421210284Sjmallett
422210284Sjmallett/* vi_mode.c */
423210284Sjmallettextern int _rl_vi_last_command;
424210284Sjmallett
425210284Sjmallett#endif /* _RL_PRIVATE_H_ */
426210284Sjmallett