File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / readline / rlprivate.h
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Wed Jul 30 08:16:45 2014 UTC (9 years, 10 months ago) by misho
CVS tags: MAIN, HEAD
Initial revision

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>