Remove gdb workaround from readline/xfree.c
[deliverable/binutils-gdb.git] / readline / readline.h
index fade6d41d2f9739100c49518df63860c81a111a0..924bbfb0f213168ff970fbed612b5ca1e9caafb7 100644 (file)
@@ -1,24 +1,23 @@
 /* Readline.h -- the names of functions callable from within readline. */
 
-/* Copyright (C) 1987-2005 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
 
-   This file is part of the GNU Readline Library, a library for
-   reading lines of text with interactive input and history editing.
+   This file is part of the GNU Readline Library (Readline), a library
+   for reading lines of text with interactive input and history editing.      
 
-   The GNU Readline Library is free software; you can redistribute it
-   and/or modify it under the terms of the GNU General Public License
-   as published by the Free Software Foundation; either version 2, or
+   Readline is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
-   The GNU Readline Library is distributed in the hope that it will be
-   useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   Readline is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
-   The GNU General Public License is often shipped with GNU software, and
-   is generally kept in a file called COPYING or LICENSE.  If you do not
-   have a copy of the license, write to the Free Software Foundation,
-   59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+   You should have received a copy of the GNU General Public License
+   along with Readline.  If not, see <http://www.gnu.org/licenses/>.
+*/
 
 #if !defined (_READLINE_H_)
 #define _READLINE_H_
@@ -40,9 +39,9 @@ extern "C" {
 #endif
 
 /* Hex-encoded Readline version number. */
-#define RL_READLINE_VERSION    0x0501          /* Readline 5.1 */
-#define RL_VERSION_MAJOR       5
-#define RL_VERSION_MINOR       1
+#define RL_READLINE_VERSION    0x0700          /* Readline 7.0 */
+#define RL_VERSION_MAJOR       7
+#define RL_VERSION_MINOR       0
 
 /* Readline data structures. */
 
@@ -96,6 +95,7 @@ extern int rl_forward_word PARAMS((int, int));
 extern int rl_backward_word PARAMS((int, int));
 extern int rl_refresh_line PARAMS((int, int));
 extern int rl_clear_screen PARAMS((int, int));
+extern int rl_skip_csi_sequence PARAMS((int, int));
 extern int rl_arrow_keys PARAMS((int, int));
 
 /* Bindable commands for inserting and deleting text. */
@@ -151,7 +151,9 @@ extern int rl_dump_variables PARAMS((int, int));
 extern int rl_complete PARAMS((int, int));
 extern int rl_possible_completions PARAMS((int, int));
 extern int rl_insert_completions PARAMS((int, int));
+extern int rl_old_menu_complete PARAMS((int, int));
 extern int rl_menu_complete PARAMS((int, int));
+extern int rl_backward_menu_complete PARAMS((int, int));
 
 /* Bindable commands for killing and yanking text, and managing the kill ring. */
 extern int rl_kill_word PARAMS((int, int));
@@ -170,8 +172,9 @@ extern int rl_yank PARAMS((int, int));
 extern int rl_yank_pop PARAMS((int, int));
 extern int rl_yank_nth_arg PARAMS((int, int));
 extern int rl_yank_last_arg PARAMS((int, int));
-/* Not available unless __CYGWIN__ is defined. */
-#ifdef __CYGWIN__
+extern int rl_bracketed_paste_begin PARAMS((int, int));
+/* Not available unless _WIN32 is defined. */
+#if defined (_WIN32)
 extern int rl_paste_from_clipboard PARAMS((int, int));
 #endif
 
@@ -183,6 +186,7 @@ extern int rl_forward_search_history PARAMS((int, int));
 extern int rl_start_kbd_macro PARAMS((int, int));
 extern int rl_end_kbd_macro PARAMS((int, int));
 extern int rl_call_last_kbd_macro PARAMS((int, int));
+extern int rl_print_last_kbd_macro PARAMS((int, int));
 
 /* Bindable undo commands. */
 extern int rl_revert_line PARAMS((int, int));
@@ -202,6 +206,8 @@ extern int rl_tty_status PARAMS((int, int));
 /* Bindable commands for incremental and non-incremental history searching. */
 extern int rl_history_search_forward PARAMS((int, int));
 extern int rl_history_search_backward PARAMS((int, int));
+extern int rl_history_substr_search_forward PARAMS((int, int));
+extern int rl_history_substr_search_backward PARAMS((int, int));
 extern int rl_noninc_forward_search PARAMS((int, int));
 extern int rl_noninc_reverse_search PARAMS((int, int));
 extern int rl_noninc_forward_search_again PARAMS((int, int));
@@ -214,6 +220,7 @@ extern int rl_insert_close PARAMS((int, int));
 extern void rl_callback_handler_install PARAMS((const char *, rl_vcpfunc_t *));
 extern void rl_callback_read_char PARAMS((void));
 extern void rl_callback_handler_remove PARAMS((void));
+extern void rl_callback_sigcleanup PARAMS((void));
 
 /* Things for vi mode. Not available unless readline is compiled -DVI_MODE. */
 /* VI-mode bindable commands. */
@@ -233,6 +240,7 @@ extern int rl_vi_append_mode PARAMS((int, int));
 extern int rl_vi_append_eol PARAMS((int, int));
 extern int rl_vi_eof_maybe PARAMS((int, int));
 extern int rl_vi_insertion_mode PARAMS((int, int));
+extern int rl_vi_insert_mode PARAMS((int, int));
 extern int rl_vi_movement_mode PARAMS((int, int));
 extern int rl_vi_arg_digit PARAMS((int, int));
 extern int rl_vi_change_case PARAMS((int, int));
@@ -241,9 +249,11 @@ extern int rl_vi_column PARAMS((int, int));
 extern int rl_vi_delete_to PARAMS((int, int));
 extern int rl_vi_change_to PARAMS((int, int));
 extern int rl_vi_yank_to PARAMS((int, int));
+extern int rl_vi_yank_pop PARAMS((int, int));
 extern int rl_vi_rubout PARAMS((int, int));
 extern int rl_vi_delete PARAMS((int, int));
 extern int rl_vi_back_to_indent PARAMS((int, int));
+extern int rl_vi_unix_word_rubout PARAMS((int, int));
 extern int rl_vi_first_print PARAMS((int, int));
 extern int rl_vi_char_search PARAMS((int, int));
 extern int rl_vi_match PARAMS((int, int));
@@ -336,6 +346,7 @@ extern Keymap rl_make_bare_keymap PARAMS((void));
 extern Keymap rl_copy_keymap PARAMS((Keymap));
 extern Keymap rl_make_keymap PARAMS((void));
 extern void rl_discard_keymap PARAMS((Keymap));
+extern void rl_free_keymap PARAMS((Keymap));
 
 extern Keymap rl_get_keymap_by_name PARAMS((const char *));
 extern char *rl_get_keymap_name PARAMS((Keymap));
@@ -368,6 +379,7 @@ extern void rl_redisplay PARAMS((void));
 extern int rl_on_new_line PARAMS((void));
 extern int rl_on_new_line_with_prompt PARAMS((void));
 extern int rl_forced_update_display PARAMS((void));
+extern int rl_clear_visible_line PARAMS((void));
 extern int rl_clear_message PARAMS((void));
 extern int rl_reset_line_state PARAMS((void));
 extern int rl_crlf PARAMS((void));
@@ -382,6 +394,7 @@ extern int rl_show_char PARAMS((int));
 
 /* Undocumented in texinfo manual. */
 extern int rl_character_len PARAMS((int, int));
+extern void rl_redraw_prompt_last_line PARAMS((void));
 
 /* Save and restore internal prompt redisplay information. */
 extern void rl_save_prompt PARAMS((void));
@@ -420,6 +433,7 @@ extern int rl_set_keyboard_input_timeout PARAMS((int));
 extern void rl_extend_line_buffer PARAMS((int));
 extern int rl_ding PARAMS((void));
 extern int rl_alphabetic PARAMS((int));
+extern void rl_free PARAMS((void *));
 
 /* Readline signal handling, from signals.c */
 extern int rl_set_signals PARAMS((void));
@@ -427,9 +441,17 @@ extern int rl_clear_signals PARAMS((void));
 extern void rl_cleanup_after_signal PARAMS((void));
 extern void rl_reset_after_signal PARAMS((void));
 extern void rl_free_line_state PARAMS((void));
+
+extern int rl_pending_signal PARAMS((void));
+
+extern void rl_echo_signal_char PARAMS((int)); 
+
 extern int rl_set_paren_blink_timeout PARAMS((int));
 
+/* History management functions. */
+
+extern void rl_clear_history PARAMS((void));
+
 /* Undocumented. */
 extern int rl_maybe_save_line PARAMS((void));
 extern int rl_maybe_unsave_line PARAMS((void));
@@ -475,7 +497,7 @@ extern int rl_readline_version;                     /* e.g., 0x0402 */
 extern int rl_gnu_readline_p;
 
 /* Flags word encapsulating the current readline state. */
-extern int rl_readline_state;
+extern unsigned long rl_readline_state;
 
 /* Says which editing mode readline is currently using.  1 means emacs mode;
    0 means vi mode. */
@@ -493,6 +515,10 @@ extern const char *rl_readline_name;
    readline (), and should not be assigned to directly. */
 extern char *rl_prompt;
 
+/* The prompt string that is actually displayed by rl_redisplay.  Public so
+   applications can more easily supply their own redisplay functions. */
+extern char *rl_display_prompt;
+
 /* The line buffer that is in use. */
 extern char *rl_line_buffer;
 
@@ -550,6 +576,13 @@ extern rl_hook_func_t *rl_pre_input_hook;
    awaiting character input, or NULL, for no event handling. */
 extern rl_hook_func_t *rl_event_hook;
 
+/* The address of a function to call if a read is interrupted by a signal. */
+extern rl_hook_func_t *rl_signal_event_hook;
+
+/* The address of a function to call if Readline needs to know whether or not
+   there is data available from the current input source. */
+extern rl_hook_func_t *rl_input_available_hook;
+
 /* The address of the function to call to fetch a character from the current
    Readline input stream */
 extern rl_getc_func_t *rl_getc_function;
@@ -563,6 +596,10 @@ extern rl_voidfunc_t *rl_deprep_term_function;
 extern Keymap rl_executing_keymap;
 extern Keymap rl_binding_keymap;
 
+extern int rl_executing_key;
+extern char *rl_executing_keyseq;
+extern int rl_key_sequence_length;
+
 /* Display variables. */
 /* If non-zero, readline will erase the entire line, including any prompt,
    if the only thing typed on an otherwise-blank line is something bound to
@@ -593,12 +630,20 @@ extern int rl_catch_signals;
    to do that. */
 extern int rl_catch_sigwinch;
 
+/* If non-zero, the readline SIGWINCH handler will modify LINES and
+   COLUMNS in the environment. */
+extern int rl_change_environment;
+
 /* Completion variables. */
 /* Pointer to the generator function for completion_matches ().
    NULL means to use rl_filename_completion_function (), the default
    filename completer. */
 extern rl_compentry_func_t *rl_completion_entry_function;
 
+/* Optional generator for menu completion.  Default is
+   rl_completion_entry_function (rl_filename_completion_function). */
+extern rl_compentry_func_t *rl_menu_completion_entry_function;
+
 /* If rl_ignore_some_completions_function is non-NULL it is the address
    of a function to call after all of the possible matches have been
    generated, but before the actual completion is done to the input line.
@@ -652,18 +697,44 @@ extern const char *rl_special_prefixes;
    completing on a directory name.  The function is called with
    the address of a string (the current directory name) as an arg.  It
    changes what is displayed when the possible completions are printed
-   or inserted. */
+   or inserted.  The directory completion hook should perform
+   any necessary dequoting.  This function should return 1 if it modifies
+   the directory name pointer passed as an argument.  If the directory
+   completion hook returns 0, it should not modify the directory name
+   pointer passed as an argument. */
 extern rl_icppfunc_t *rl_directory_completion_hook;
 
 /* If non-zero, this is the address of a function to call when completing
    a directory name.  This function takes the address of the directory name
    to be modified as an argument.  Unlike rl_directory_completion_hook, it
    only modifies the directory name used in opendir(2), not what is displayed
-   when the possible completions are printed or inserted.  It is called
-   before rl_directory_completion_hook.  I'm not happy with how this works
-   yet, so it's undocumented. */
+   when the possible completions are printed or inserted.  If set, it takes
+   precedence over rl_directory_completion_hook.  The directory rewrite
+   hook should perform any necessary dequoting.  This function has the same
+   return value properties as the directory_completion_hook.
+
+   I'm not happy with how this works yet, so it's undocumented.  I'm trying
+   it in bash to see how well it goes. */
 extern rl_icppfunc_t *rl_directory_rewrite_hook;
 
+/* If non-zero, this is the address of a function for the completer to call
+   before deciding which character to append to a completed name.  It should
+   modify the directory name passed as an argument if appropriate, and return
+   non-zero if it modifies the name.  This should not worry about dequoting
+   the filename; that has already happened by the time it gets here. */
+extern rl_icppfunc_t *rl_filename_stat_hook;
+
+/* If non-zero, this is the address of a function to call when reading
+   directory entries from the filesystem for completion and comparing
+   them to the partial word to be completed.  The function should
+   either return its first argument (if no conversion takes place) or
+   newly-allocated memory.  This can, for instance, convert filenames
+   between character sets for comparison against what's typed at the
+   keyboard.  The returned value is what is added to the list of
+   matches.  The second argument is the length of the filename to be
+   converted. */
+extern rl_dequote_func_t *rl_filename_rewrite_hook;
+
 /* Backwards compatibility with previous versions of readline. */
 #define rl_symbolic_link_hook rl_directory_completion_hook
 
@@ -713,6 +784,9 @@ extern int rl_attempted_completion_over;
    functions. */
 extern int rl_completion_type;
 
+/* Set to the last key used to invoke one of the completion functions */
+extern int rl_completion_invoking_key;
+
 /* Up to this many items will be displayed in response to a
    possible-completions call.  After that, we ask the user if she
    is sure she wants to see them all.  The default value is 100. */
@@ -739,6 +813,9 @@ extern int rl_completion_found_quote;
    application-specific completion function. */
 extern int rl_completion_suppress_quote;
 
+/* If non-zero, readline will sort the completion matches.  On by default. */
+extern int rl_sort_completion_matches;
+
 /* If non-zero, a slash will be appended to completed filenames that are
    symbolic links to directory names, subject to the value of the
    mark-directories variable (which is user-settable).  This exists so
@@ -757,6 +834,18 @@ extern int rl_ignore_completion_duplicates;
    completion character will be inserted as any other. */
 extern int rl_inhibit_completion;
 
+/* Applications can set this to non-zero to have readline's signal handlers
+   installed during the entire duration of reading a complete line, as in
+   readline-6.2.  This should be used with care, because it can result in
+   readline receiving signals and not handling them until it's called again
+   via rl_callback_read_char, thereby stealing them from the application.
+   By default, signal handlers are only active while readline is active. */   
+extern int rl_persistent_signal_handlers;
+
+/* Input error; can be returned by (*rl_getc_function) if readline is reading
+   a top-level command (RL_ISSTATE (RL_STATE_READCMD)). */
+#define READERR                        (-2)
+
 /* Definitions available for use by readline clients. */
 #define RL_PROMPT_START_IGNORE '\001'
 #define RL_PROMPT_END_IGNORE   '\002'
@@ -770,31 +859,33 @@ extern int rl_inhibit_completion;
 /* Possible state values for rl_readline_state */
 #define RL_STATE_NONE          0x000000                /* no state; before first call */
 
-#define RL_STATE_INITIALIZING  0x000001        /* initializing */
-#define RL_STATE_INITIALIZED   0x000002        /* initialization done */
-#define RL_STATE_TERMPREPPED   0x000004        /* terminal is prepped */
-#define RL_STATE_READCMD       0x000008        /* reading a command key */
-#define RL_STATE_METANEXT      0x000010        /* reading input after ESC */
-#define RL_STATE_DISPATCHING   0x000020        /* dispatching to a command */
-#define RL_STATE_MOREINPUT     0x000040        /* reading more input in a command function */
-#define RL_STATE_ISEARCH       0x000080        /* doing incremental search */
-#define RL_STATE_NSEARCH       0x000100        /* doing non-inc search */
-#define RL_STATE_SEARCH                0x000200        /* doing a history search */
-#define RL_STATE_NUMERICARG    0x000400        /* reading numeric argument */
-#define RL_STATE_MACROINPUT    0x000800        /* getting input from a macro */
-#define RL_STATE_MACRODEF      0x001000        /* defining keyboard macro */
-#define RL_STATE_OVERWRITE     0x002000        /* overwrite mode */
-#define RL_STATE_COMPLETING    0x004000        /* doing completion */
-#define RL_STATE_SIGHANDLER    0x008000        /* in readline sighandler */
-#define RL_STATE_UNDOING       0x010000        /* doing an undo */
-#define RL_STATE_INPUTPENDING  0x020000        /* rl_execute_next called */
-#define RL_STATE_TTYCSAVED     0x040000        /* tty special chars saved */
-#define RL_STATE_CALLBACK      0x080000        /* using the callback interface */
-#define RL_STATE_VIMOTION      0x100000        /* reading vi motion arg */
-#define RL_STATE_MULTIKEY      0x200000        /* reading multiple-key command */
-#define RL_STATE_VICMDONCE     0x400000        /* entered vi command mode at least once */
-
-#define RL_STATE_DONE          0x800000        /* done; accepted line */
+#define RL_STATE_INITIALIZING  0x0000001       /* initializing */
+#define RL_STATE_INITIALIZED   0x0000002       /* initialization done */
+#define RL_STATE_TERMPREPPED   0x0000004       /* terminal is prepped */
+#define RL_STATE_READCMD       0x0000008       /* reading a command key */
+#define RL_STATE_METANEXT      0x0000010       /* reading input after ESC */
+#define RL_STATE_DISPATCHING   0x0000020       /* dispatching to a command */
+#define RL_STATE_MOREINPUT     0x0000040       /* reading more input in a command function */
+#define RL_STATE_ISEARCH       0x0000080       /* doing incremental search */
+#define RL_STATE_NSEARCH       0x0000100       /* doing non-inc search */
+#define RL_STATE_SEARCH                0x0000200       /* doing a history search */
+#define RL_STATE_NUMERICARG    0x0000400       /* reading numeric argument */
+#define RL_STATE_MACROINPUT    0x0000800       /* getting input from a macro */
+#define RL_STATE_MACRODEF      0x0001000       /* defining keyboard macro */
+#define RL_STATE_OVERWRITE     0x0002000       /* overwrite mode */
+#define RL_STATE_COMPLETING    0x0004000       /* doing completion */
+#define RL_STATE_SIGHANDLER    0x0008000       /* in readline sighandler */
+#define RL_STATE_UNDOING       0x0010000       /* doing an undo */
+#define RL_STATE_INPUTPENDING  0x0020000       /* rl_execute_next called */
+#define RL_STATE_TTYCSAVED     0x0040000       /* tty special chars saved */
+#define RL_STATE_CALLBACK      0x0080000       /* using the callback interface */
+#define RL_STATE_VIMOTION      0x0100000       /* reading vi motion arg */
+#define RL_STATE_MULTIKEY      0x0200000       /* reading multiple-key command */
+#define RL_STATE_VICMDONCE     0x0400000       /* entered vi command mode at least once */
+#define RL_STATE_CHARSEARCH    0x0800000       /* vi mode char search */
+#define RL_STATE_REDISPLAYING  0x1000000       /* updating terminal display */
+
+#define RL_STATE_DONE          0x2000000       /* done; accepted line */
 
 #define RL_SETSTATE(x)         (rl_readline_state |= (x))
 #define RL_UNSETSTATE(x)       (rl_readline_state &= ~(x))
@@ -805,8 +896,8 @@ struct readline_state {
   int point;
   int end;
   int mark;
-  char *buffer;
   int buflen;
+  char *buffer;
   UNDO_LIST *ul;
   char *prompt;
 
@@ -819,10 +910,12 @@ struct readline_state {
   rl_command_func_t *lastfunc;
   int insmode;
   int edmode;
+  char *kseq;
   int kseqlen;
+
+  int pendingin;
   FILE *inf;
   FILE *outf;
-  int pendingin;
   char *macro;
 
   /* signal state */
@@ -832,9 +925,16 @@ struct readline_state {
   /* search state */
 
   /* completion state */
+  rl_compentry_func_t *entryfunc;
+  rl_compentry_func_t *menuentryfunc;
+  rl_compignore_func_t *ignorefunc;
+  rl_completion_func_t *attemptfunc;
+  char *wordbreakchars;
 
   /* options state */
 
+  /* hook state */
+  
   /* reserved for future expansion, so the struct size doesn't change */
   char reserved[64];
 };
This page took 0.081664 seconds and 4 git commands to generate.