File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / readline / doc / readline.info
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jul 30 08:16:46 2014 UTC (9 years, 11 months ago) by misho
Branches: readline, MAIN
CVS tags: v6_3p10_cross, v6_3p10, v6_3, p6, HEAD
readline 6.3

    1: This is readline.info, produced by makeinfo version 4.13 from
    2: /usr/homes/chet/src/bash/readline-src/doc/rlman.texi.
    3: 
    4: This manual describes the GNU Readline Library (version 6.3, 6 January
    5: 2014), a library which aids in the consistency of user interface across
    6: discrete programs which provide a command line interface.
    7: 
    8:    Copyright (C) 1988-2014 Free Software Foundation, Inc.
    9: 
   10:      Permission is granted to copy, distribute and/or modify this
   11:      document under the terms of the GNU Free Documentation License,
   12:      Version 1.3 or any later version published by the Free Software
   13:      Foundation; with no Invariant Sections, no Front-Cover Texts, and
   14:      no Back-Cover Texts.  A copy of the license is included in the
   15:      section entitled "GNU Free Documentation License".
   16: 
   17: 
   18: INFO-DIR-SECTION Libraries
   19: START-INFO-DIR-ENTRY
   20: * Readline: (readline).       The GNU readline library API.
   21: END-INFO-DIR-ENTRY
   22: 
   23: 
   24: File: readline.info,  Node: Top,  Next: Command Line Editing,  Up: (dir)
   25: 
   26: GNU Readline Library
   27: ********************
   28: 
   29: This document describes the GNU Readline Library, a utility which aids
   30: in the consistency of user interface across discrete programs which
   31: provide a command line interface.  The Readline home page is
   32: `http://www.gnu.org/software/readline/'.
   33: 
   34: * Menu:
   35: 
   36: * Command Line Editing::	   GNU Readline User's Manual.
   37: * Programming with GNU Readline::  GNU Readline Programmer's Manual.
   38: * GNU Free Documentation License::	License for copying this manual.
   39: * Concept Index::		   Index of concepts described in this manual.
   40: * Function and Variable Index::	   Index of externally visible functions
   41: 				   and variables.
   42: 
   43: 
   44: File: readline.info,  Node: Command Line Editing,  Next: Programming with GNU Readline,  Prev: Top,  Up: Top
   45: 
   46: 1 Command Line Editing
   47: **********************
   48: 
   49: This chapter describes the basic features of the GNU command line
   50: editing interface.
   51: 
   52: * Menu:
   53: 
   54: * Introduction and Notation::	Notation used in this text.
   55: * Readline Interaction::	The minimum set of commands for editing a line.
   56: * Readline Init File::		Customizing Readline from a user's view.
   57: * Bindable Readline Commands::	A description of most of the Readline commands
   58: 				available for binding
   59: * Readline vi Mode::		A short description of how to make Readline
   60: 				behave like the vi editor.
   61: 
   62: 
   63: File: readline.info,  Node: Introduction and Notation,  Next: Readline Interaction,  Up: Command Line Editing
   64: 
   65: 1.1 Introduction to Line Editing
   66: ================================
   67: 
   68: The following paragraphs describe the notation used to represent
   69: keystrokes.
   70: 
   71:    The text `C-k' is read as `Control-K' and describes the character
   72: produced when the <k> key is pressed while the Control key is depressed.
   73: 
   74:    The text `M-k' is read as `Meta-K' and describes the character
   75: produced when the Meta key (if you have one) is depressed, and the <k>
   76: key is pressed.  The Meta key is labeled <ALT> on many keyboards.  On
   77: keyboards with two keys labeled <ALT> (usually to either side of the
   78: space bar), the <ALT> on the left side is generally set to work as a
   79: Meta key.  The <ALT> key on the right may also be configured to work as
   80: a Meta key or may be configured as some other modifier, such as a
   81: Compose key for typing accented characters.
   82: 
   83:    If you do not have a Meta or <ALT> key, or another key working as a
   84: Meta key, the identical keystroke can be generated by typing <ESC>
   85: _first_, and then typing <k>.  Either process is known as "metafying"
   86: the <k> key.
   87: 
   88:    The text `M-C-k' is read as `Meta-Control-k' and describes the
   89: character produced by "metafying" `C-k'.
   90: 
   91:    In addition, several keys have their own names.  Specifically,
   92: <DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves
   93: when seen in this text, or in an init file (*note Readline Init File::).
   94: If your keyboard lacks a <LFD> key, typing <C-j> will produce the
   95: desired character.  The <RET> key may be labeled <Return> or <Enter> on
   96: some keyboards.
   97: 
   98: 
   99: File: readline.info,  Node: Readline Interaction,  Next: Readline Init File,  Prev: Introduction and Notation,  Up: Command Line Editing
  100: 
  101: 1.2 Readline Interaction
  102: ========================
  103: 
  104: Often during an interactive session you type in a long line of text,
  105: only to notice that the first word on the line is misspelled.  The
  106: Readline library gives you a set of commands for manipulating the text
  107: as you type it in, allowing you to just fix your typo, and not forcing
  108: you to retype the majority of the line.  Using these editing commands,
  109: you move the cursor to the place that needs correction, and delete or
  110: insert the text of the corrections.  Then, when you are satisfied with
  111: the line, you simply press <RET>.  You do not have to be at the end of
  112: the line to press <RET>; the entire line is accepted regardless of the
  113: location of the cursor within the line.
  114: 
  115: * Menu:
  116: 
  117: * Readline Bare Essentials::	The least you need to know about Readline.
  118: * Readline Movement Commands::	Moving about the input line.
  119: * Readline Killing Commands::	How to delete text, and how to get it back!
  120: * Readline Arguments::		Giving numeric arguments to commands.
  121: * Searching::			Searching through previous lines.
  122: 
  123: 
  124: File: readline.info,  Node: Readline Bare Essentials,  Next: Readline Movement Commands,  Up: Readline Interaction
  125: 
  126: 1.2.1 Readline Bare Essentials
  127: ------------------------------
  128: 
  129: In order to enter characters into the line, simply type them.  The typed
  130: character appears where the cursor was, and then the cursor moves one
  131: space to the right.  If you mistype a character, you can use your erase
  132: character to back up and delete the mistyped character.
  133: 
  134:    Sometimes you may mistype a character, and not notice the error
  135: until you have typed several other characters.  In that case, you can
  136: type `C-b' to move the cursor to the left, and then correct your
  137: mistake.  Afterwards, you can move the cursor to the right with `C-f'.
  138: 
  139:    When you add text in the middle of a line, you will notice that
  140: characters to the right of the cursor are `pushed over' to make room
  141: for the text that you have inserted.  Likewise, when you delete text
  142: behind the cursor, characters to the right of the cursor are `pulled
  143: back' to fill in the blank space created by the removal of the text.  A
  144: list of the bare essentials for editing the text of an input line
  145: follows.
  146: 
  147: `C-b'
  148:      Move back one character.
  149: 
  150: `C-f'
  151:      Move forward one character.
  152: 
  153: <DEL> or <Backspace>
  154:      Delete the character to the left of the cursor.
  155: 
  156: `C-d'
  157:      Delete the character underneath the cursor.
  158: 
  159: Printing characters
  160:      Insert the character into the line at the cursor.
  161: 
  162: `C-_' or `C-x C-u'
  163:      Undo the last editing command.  You can undo all the way back to an
  164:      empty line.
  165: 
  166: (Depending on your configuration, the <Backspace> key be set to delete
  167: the character to the left of the cursor and the <DEL> key set to delete
  168: the character underneath the cursor, like `C-d', rather than the
  169: character to the left of the cursor.)
  170: 
  171: 
  172: File: readline.info,  Node: Readline Movement Commands,  Next: Readline Killing Commands,  Prev: Readline Bare Essentials,  Up: Readline Interaction
  173: 
  174: 1.2.2 Readline Movement Commands
  175: --------------------------------
  176: 
  177: The above table describes the most basic keystrokes that you need in
  178: order to do editing of the input line.  For your convenience, many
  179: other commands have been added in addition to `C-b', `C-f', `C-d', and
  180: <DEL>.  Here are some commands for moving more rapidly about the line.
  181: 
  182: `C-a'
  183:      Move to the start of the line.
  184: 
  185: `C-e'
  186:      Move to the end of the line.
  187: 
  188: `M-f'
  189:      Move forward a word, where a word is composed of letters and
  190:      digits.
  191: 
  192: `M-b'
  193:      Move backward a word.
  194: 
  195: `C-l'
  196:      Clear the screen, reprinting the current line at the top.
  197: 
  198:    Notice how `C-f' moves forward a character, while `M-f' moves
  199: forward a word.  It is a loose convention that control keystrokes
  200: operate on characters while meta keystrokes operate on words.
  201: 
  202: 
  203: File: readline.info,  Node: Readline Killing Commands,  Next: Readline Arguments,  Prev: Readline Movement Commands,  Up: Readline Interaction
  204: 
  205: 1.2.3 Readline Killing Commands
  206: -------------------------------
  207: 
  208: "Killing" text means to delete the text from the line, but to save it
  209: away for later use, usually by "yanking" (re-inserting) it back into
  210: the line.  (`Cut' and `paste' are more recent jargon for `kill' and
  211: `yank'.)
  212: 
  213:    If the description for a command says that it `kills' text, then you
  214: can be sure that you can get the text back in a different (or the same)
  215: place later.
  216: 
  217:    When you use a kill command, the text is saved in a "kill-ring".
  218: Any number of consecutive kills save all of the killed text together, so
  219: that when you yank it back, you get it all.  The kill ring is not line
  220: specific; the text that you killed on a previously typed line is
  221: available to be yanked back later, when you are typing another line.  
  222: 
  223:    Here is the list of commands for killing text.
  224: 
  225: `C-k'
  226:      Kill the text from the current cursor position to the end of the
  227:      line.
  228: 
  229: `M-d'
  230:      Kill from the cursor to the end of the current word, or, if between
  231:      words, to the end of the next word.  Word boundaries are the same
  232:      as those used by `M-f'.
  233: 
  234: `M-<DEL>'
  235:      Kill from the cursor the start of the current word, or, if between
  236:      words, to the start of the previous word.  Word boundaries are the
  237:      same as those used by `M-b'.
  238: 
  239: `C-w'
  240:      Kill from the cursor to the previous whitespace.  This is
  241:      different than `M-<DEL>' because the word boundaries differ.
  242: 
  243: 
  244:    Here is how to "yank" the text back into the line.  Yanking means to
  245: copy the most-recently-killed text from the kill buffer.
  246: 
  247: `C-y'
  248:      Yank the most recently killed text back into the buffer at the
  249:      cursor.
  250: 
  251: `M-y'
  252:      Rotate the kill-ring, and yank the new top.  You can only do this
  253:      if the prior command is `C-y' or `M-y'.
  254: 
  255: 
  256: File: readline.info,  Node: Readline Arguments,  Next: Searching,  Prev: Readline Killing Commands,  Up: Readline Interaction
  257: 
  258: 1.2.4 Readline Arguments
  259: ------------------------
  260: 
  261: You can pass numeric arguments to Readline commands.  Sometimes the
  262: argument acts as a repeat count, other times it is the sign of the
  263: argument that is significant.  If you pass a negative argument to a
  264: command which normally acts in a forward direction, that command will
  265: act in a backward direction.  For example, to kill text back to the
  266: start of the line, you might type `M-- C-k'.
  267: 
  268:    The general way to pass numeric arguments to a command is to type
  269: meta digits before the command.  If the first `digit' typed is a minus
  270: sign (`-'), then the sign of the argument will be negative.  Once you
  271: have typed one meta digit to get the argument started, you can type the
  272: remainder of the digits, and then the command.  For example, to give
  273: the `C-d' command an argument of 10, you could type `M-1 0 C-d', which
  274: will delete the next ten characters on the input line.
  275: 
  276: 
  277: File: readline.info,  Node: Searching,  Prev: Readline Arguments,  Up: Readline Interaction
  278: 
  279: 1.2.5 Searching for Commands in the History
  280: -------------------------------------------
  281: 
  282: Readline provides commands for searching through the command history
  283: for lines containing a specified string.  There are two search modes:
  284: "incremental" and "non-incremental".
  285: 
  286:    Incremental searches begin before the user has finished typing the
  287: search string.  As each character of the search string is typed,
  288: Readline displays the next entry from the history matching the string
  289: typed so far.  An incremental search requires only as many characters
  290: as needed to find the desired history entry.  To search backward in the
  291: history for a particular string, type `C-r'.  Typing `C-s' searches
  292: forward through the history.  The characters present in the value of
  293: the `isearch-terminators' variable are used to terminate an incremental
  294: search.  If that variable has not been assigned a value, the <ESC> and
  295: `C-J' characters will terminate an incremental search.  `C-g' will
  296: abort an incremental search and restore the original line.  When the
  297: search is terminated, the history entry containing the search string
  298: becomes the current line.
  299: 
  300:    To find other matching entries in the history list, type `C-r' or
  301: `C-s' as appropriate.  This will search backward or forward in the
  302: history for the next entry matching the search string typed so far.
  303: Any other key sequence bound to a Readline command will terminate the
  304: search and execute that command.  For instance, a <RET> will terminate
  305: the search and accept the line, thereby executing the command from the
  306: history list.  A movement command will terminate the search, make the
  307: last line found the current line, and begin editing.
  308: 
  309:    Readline remembers the last incremental search string.  If two
  310: `C-r's are typed without any intervening characters defining a new
  311: search string, any remembered search string is used.
  312: 
  313:    Non-incremental searches read the entire search string before
  314: starting to search for matching history lines.  The search string may be
  315: typed by the user or be part of the contents of the current line.
  316: 
  317: 
  318: File: readline.info,  Node: Readline Init File,  Next: Bindable Readline Commands,  Prev: Readline Interaction,  Up: Command Line Editing
  319: 
  320: 1.3 Readline Init File
  321: ======================
  322: 
  323: Although the Readline library comes with a set of Emacs-like
  324: keybindings installed by default, it is possible to use a different set
  325: of keybindings.  Any user can customize programs that use Readline by
  326: putting commands in an "inputrc" file, conventionally in his home
  327: directory.  The name of this file is taken from the value of the
  328: environment variable `INPUTRC'.  If that variable is unset, the default
  329: is `~/.inputrc'.  If that file does not exist or cannot be read, the
  330: ultimate default is `/etc/inputrc'.
  331: 
  332:    When a program which uses the Readline library starts up, the init
  333: file is read, and the key bindings are set.
  334: 
  335:    In addition, the `C-x C-r' command re-reads this init file, thus
  336: incorporating any changes that you might have made to it.
  337: 
  338: * Menu:
  339: 
  340: * Readline Init File Syntax::	Syntax for the commands in the inputrc file.
  341: 
  342: * Conditional Init Constructs::	Conditional key bindings in the inputrc file.
  343: 
  344: * Sample Init File::		An example inputrc file.
  345: 
  346: 
  347: File: readline.info,  Node: Readline Init File Syntax,  Next: Conditional Init Constructs,  Up: Readline Init File
  348: 
  349: 1.3.1 Readline Init File Syntax
  350: -------------------------------
  351: 
  352: There are only a few basic constructs allowed in the Readline init
  353: file.  Blank lines are ignored.  Lines beginning with a `#' are
  354: comments.  Lines beginning with a `$' indicate conditional constructs
  355: (*note Conditional Init Constructs::).  Other lines denote variable
  356: settings and key bindings.
  357: 
  358: Variable Settings
  359:      You can modify the run-time behavior of Readline by altering the
  360:      values of variables in Readline using the `set' command within the
  361:      init file.  The syntax is simple:
  362: 
  363:           set VARIABLE VALUE
  364: 
  365:      Here, for example, is how to change from the default Emacs-like
  366:      key binding to use `vi' line editing commands:
  367: 
  368:           set editing-mode vi
  369: 
  370:      Variable names and values, where appropriate, are recognized
  371:      without regard to case.  Unrecognized variable names are ignored.
  372: 
  373:      Boolean variables (those that can be set to on or off) are set to
  374:      on if the value is null or empty, ON (case-insensitive), or 1.
  375:      Any other value results in the variable being set to off.
  376: 
  377:      A great deal of run-time behavior is changeable with the following
  378:      variables.
  379: 
  380:     `bell-style'
  381:           Controls what happens when Readline wants to ring the
  382:           terminal bell.  If set to `none', Readline never rings the
  383:           bell.  If set to `visible', Readline uses a visible bell if
  384:           one is available.  If set to `audible' (the default),
  385:           Readline attempts to ring the terminal's bell.
  386: 
  387:     `bind-tty-special-chars'
  388:           If set to `on', Readline attempts to bind the control
  389:           characters treated specially by the kernel's terminal driver
  390:           to their Readline equivalents.
  391: 
  392:     `colored-stats'
  393:           If set to `on', Readline displays possible completions using
  394:           different colors to indicate their file type.  The color
  395:           definitions are taken from the value of the `LS_COLORS'
  396:           environment variable.  The default is `off'.
  397: 
  398:     `comment-begin'
  399:           The string to insert at the beginning of the line when the
  400:           `insert-comment' command is executed.  The default value is
  401:           `"#"'.
  402: 
  403:     `completion-display-width'
  404:           The number of screen columns used to display possible matches
  405:           when performing completion.  The value is ignored if it is
  406:           less than 0 or greater than the terminal screen width.  A
  407:           value of 0 will cause matches to be displayed one per line.
  408:           The default value is -1.
  409: 
  410:     `completion-ignore-case'
  411:           If set to `on', Readline performs filename matching and
  412:           completion in a case-insensitive fashion.  The default value
  413:           is `off'.
  414: 
  415:     `completion-map-case'
  416:           If set to `on', and COMPLETION-IGNORE-CASE is enabled,
  417:           Readline treats hyphens (`-') and underscores (`_') as
  418:           equivalent when performing case-insensitive filename matching
  419:           and completion.
  420: 
  421:     `completion-prefix-display-length'
  422:           The length in characters of the common prefix of a list of
  423:           possible completions that is displayed without modification.
  424:           When set to a value greater than zero, common prefixes longer
  425:           than this value are replaced with an ellipsis when displaying
  426:           possible completions.
  427: 
  428:     `completion-query-items'
  429:           The number of possible completions that determines when the
  430:           user is asked whether the list of possibilities should be
  431:           displayed.  If the number of possible completions is greater
  432:           than this value, Readline will ask the user whether or not he
  433:           wishes to view them; otherwise, they are simply listed.  This
  434:           variable must be set to an integer value greater than or
  435:           equal to 0.  A negative value means Readline should never ask.
  436:           The default limit is `100'.
  437: 
  438:     `convert-meta'
  439:           If set to `on', Readline will convert characters with the
  440:           eighth bit set to an ASCII key sequence by stripping the
  441:           eighth bit and prefixing an <ESC> character, converting them
  442:           to a meta-prefixed key sequence.  The default value is `on'.
  443: 
  444:     `disable-completion'
  445:           If set to `On', Readline will inhibit word completion.
  446:           Completion  characters will be inserted into the line as if
  447:           they had been mapped to `self-insert'.  The default is `off'.
  448: 
  449:     `editing-mode'
  450:           The `editing-mode' variable controls which default set of key
  451:           bindings is used.  By default, Readline starts up in Emacs
  452:           editing mode, where the keystrokes are most similar to Emacs.
  453:           This variable can be set to either `emacs' or `vi'.
  454: 
  455:     `echo-control-characters'
  456:           When set to `on', on operating systems that indicate they
  457:           support it, readline echoes a character corresponding to a
  458:           signal generated from the keyboard.  The default is `on'.
  459: 
  460:     `enable-keypad'
  461:           When set to `on', Readline will try to enable the application
  462:           keypad when it is called.  Some systems need this to enable
  463:           the arrow keys.  The default is `off'.
  464: 
  465:     `enable-meta-key'
  466:           When set to `on', Readline will try to enable any meta
  467:           modifier key the terminal claims to support when it is
  468:           called.  On many terminals, the meta key is used to send
  469:           eight-bit characters.  The default is `on'.
  470: 
  471:     `expand-tilde'
  472:           If set to `on', tilde expansion is performed when Readline
  473:           attempts word completion.  The default is `off'.
  474: 
  475:     `history-preserve-point'
  476:           If set to `on', the history code attempts to place the point
  477:           (the current cursor position) at the same location on each
  478:           history line retrieved with `previous-history' or
  479:           `next-history'.  The default is `off'.
  480: 
  481:     `history-size'
  482:           Set the maximum number of history entries saved in the
  483:           history list.  If set to zero, any existing history entries
  484:           are deleted and no new entries are saved.  If set to a value
  485:           less than zero, the number of history entries is not limited.
  486:           By default, the number of history entries is not limited.
  487: 
  488:     `horizontal-scroll-mode'
  489:           This variable can be set to either `on' or `off'.  Setting it
  490:           to `on' means that the text of the lines being edited will
  491:           scroll horizontally on a single screen line when they are
  492:           longer than the width of the screen, instead of wrapping onto
  493:           a new screen line.  By default, this variable is set to `off'.
  494: 
  495:     `input-meta'
  496:           If set to `on', Readline will enable eight-bit input (it will
  497:           not clear the eighth bit in the characters it reads),
  498:           regardless of what the terminal claims it can support.  The
  499:           default value is `off'.  The name `meta-flag' is a synonym
  500:           for this variable.
  501: 
  502:     `isearch-terminators'
  503:           The string of characters that should terminate an incremental
  504:           search without subsequently executing the character as a
  505:           command (*note Searching::).  If this variable has not been
  506:           given a value, the characters <ESC> and `C-J' will terminate
  507:           an incremental search.
  508: 
  509:     `keymap'
  510:           Sets Readline's idea of the current keymap for key binding
  511:           commands.  Acceptable `keymap' names are `emacs',
  512:           `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move',
  513:           `vi-command', and `vi-insert'.  `vi' is equivalent to
  514:           `vi-command'; `emacs' is equivalent to `emacs-standard'.  The
  515:           default value is `emacs'.  The value of the `editing-mode'
  516:           variable also affects the default keymap.
  517: 
  518:     `keyseq-timeout'
  519:           Specifies the duration Readline will wait for a character
  520:           when reading an ambiguous key sequence (one that can form a
  521:           complete key sequence using the input read so far, or can
  522:           take additional input to complete a longer key sequence).  If
  523:           no input is received within the timeout, Readline will use
  524:           the shorter but complete key sequence.  Readline uses this
  525:           value to determine whether or not input is available on the
  526:           current input source (`rl_instream' by default).  The value
  527:           is specified in milliseconds, so a value of 1000 means that
  528:           Readline will wait one second for additional input.  If this
  529:           variable is set to a value less than or equal to zero, or to a
  530:           non-numeric value, Readline will wait until another key is
  531:           pressed to decide which key sequence to complete.  The
  532:           default value is `500'.
  533: 
  534:     `mark-directories'
  535:           If set to `on', completed directory names have a slash
  536:           appended.  The default is `on'.
  537: 
  538:     `mark-modified-lines'
  539:           This variable, when set to `on', causes Readline to display an
  540:           asterisk (`*') at the start of history lines which have been
  541:           modified.  This variable is `off' by default.
  542: 
  543:     `mark-symlinked-directories'
  544:           If set to `on', completed names which are symbolic links to
  545:           directories have a slash appended (subject to the value of
  546:           `mark-directories').  The default is `off'.
  547: 
  548:     `match-hidden-files'
  549:           This variable, when set to `on', causes Readline to match
  550:           files whose names begin with a `.' (hidden files) when
  551:           performing filename completion.  If set to `off', the leading
  552:           `.' must be supplied by the user in the filename to be
  553:           completed.  This variable is `on' by default.
  554: 
  555:     `menu-complete-display-prefix'
  556:           If set to `on', menu completion displays the common prefix of
  557:           the list of possible completions (which may be empty) before
  558:           cycling through the list.  The default is `off'.
  559: 
  560:     `output-meta'
  561:           If set to `on', Readline will display characters with the
  562:           eighth bit set directly rather than as a meta-prefixed escape
  563:           sequence.  The default is `off'.
  564: 
  565:     `page-completions'
  566:           If set to `on', Readline uses an internal `more'-like pager
  567:           to display a screenful of possible completions at a time.
  568:           This variable is `on' by default.
  569: 
  570:     `print-completions-horizontally'
  571:           If set to `on', Readline will display completions with matches
  572:           sorted horizontally in alphabetical order, rather than down
  573:           the screen.  The default is `off'.
  574: 
  575:     `revert-all-at-newline'
  576:           If set to `on', Readline will undo all changes to history
  577:           lines before returning when `accept-line' is executed.  By
  578:           default, history lines may be modified and retain individual
  579:           undo lists across calls to `readline'.  The default is `off'.
  580: 
  581:     `show-all-if-ambiguous'
  582:           This alters the default behavior of the completion functions.
  583:           If set to `on', words which have more than one possible
  584:           completion cause the matches to be listed immediately instead
  585:           of ringing the bell.  The default value is `off'.
  586: 
  587:     `show-all-if-unmodified'
  588:           This alters the default behavior of the completion functions
  589:           in a fashion similar to SHOW-ALL-IF-AMBIGUOUS.  If set to
  590:           `on', words which have more than one possible completion
  591:           without any possible partial completion (the possible
  592:           completions don't share a common prefix) cause the matches to
  593:           be listed immediately instead of ringing the bell.  The
  594:           default value is `off'.
  595: 
  596:     `show-mode-in-prompt'
  597:           If set to `on', add a character to the beginning of the prompt
  598:           indicating the editing mode: emacs (`@'), vi command (`:'),
  599:           or vi insertion (`+').  The default value is `off'.
  600: 
  601:     `skip-completed-text'
  602:           If set to `on', this alters the default completion behavior
  603:           when inserting a single match into the line.  It's only
  604:           active when performing completion in the middle of a word.
  605:           If enabled, readline does not insert characters from the
  606:           completion that match characters after point in the word
  607:           being completed, so portions of the word following the cursor
  608:           are not duplicated.  For instance, if this is enabled,
  609:           attempting completion when the cursor is after the `e' in
  610:           `Makefile' will result in `Makefile' rather than
  611:           `Makefilefile', assuming there is a single possible
  612:           completion.  The default value is `off'.
  613: 
  614:     `visible-stats'
  615:           If set to `on', a character denoting a file's type is
  616:           appended to the filename when listing possible completions.
  617:           The default is `off'.
  618: 
  619: 
  620: Key Bindings
  621:      The syntax for controlling key bindings in the init file is
  622:      simple.  First you need to find the name of the command that you
  623:      want to change.  The following sections contain tables of the
  624:      command name, the default keybinding, if any, and a short
  625:      description of what the command does.
  626: 
  627:      Once you know the name of the command, simply place on a line in
  628:      the init file the name of the key you wish to bind the command to,
  629:      a colon, and then the name of the command.  There can be no space
  630:      between the key name and the colon - that will be interpreted as
  631:      part of the key name.  The name of the key can be expressed in
  632:      different ways, depending on what you find most comfortable.
  633: 
  634:      In addition to command names, readline allows keys to be bound to
  635:      a string that is inserted when the key is pressed (a MACRO).
  636: 
  637:     KEYNAME: FUNCTION-NAME or MACRO
  638:           KEYNAME is the name of a key spelled out in English.  For
  639:           example:
  640:                Control-u: universal-argument
  641:                Meta-Rubout: backward-kill-word
  642:                Control-o: "> output"
  643: 
  644:           In the above example, `C-u' is bound to the function
  645:           `universal-argument', `M-DEL' is bound to the function
  646:           `backward-kill-word', and `C-o' is bound to run the macro
  647:           expressed on the right hand side (that is, to insert the text
  648:           `> output' into the line).
  649: 
  650:           A number of symbolic character names are recognized while
  651:           processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
  652:           NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
  653: 
  654:     "KEYSEQ": FUNCTION-NAME or MACRO
  655:           KEYSEQ differs from KEYNAME above in that strings denoting an
  656:           entire key sequence can be specified, by placing the key
  657:           sequence in double quotes.  Some GNU Emacs style key escapes
  658:           can be used, as in the following example, but the special
  659:           character names are not recognized.
  660: 
  661:                "\C-u": universal-argument
  662:                "\C-x\C-r": re-read-init-file
  663:                "\e[11~": "Function Key 1"
  664: 
  665:           In the above example, `C-u' is again bound to the function
  666:           `universal-argument' (just as it was in the first example),
  667:           `C-x C-r' is bound to the function `re-read-init-file', and
  668:           `<ESC> <[> <1> <1> <~>' is bound to insert the text `Function
  669:           Key 1'.
  670: 
  671: 
  672:      The following GNU Emacs style escape sequences are available when
  673:      specifying key sequences:
  674: 
  675:     `\C-'
  676:           control prefix
  677: 
  678:     `\M-'
  679:           meta prefix
  680: 
  681:     `\e'
  682:           an escape character
  683: 
  684:     `\\'
  685:           backslash
  686: 
  687:     `\"'
  688:           <">, a double quotation mark
  689: 
  690:     `\''
  691:           <'>, a single quote or apostrophe
  692: 
  693:      In addition to the GNU Emacs style escape sequences, a second set
  694:      of backslash escapes is available:
  695: 
  696:     `\a'
  697:           alert (bell)
  698: 
  699:     `\b'
  700:           backspace
  701: 
  702:     `\d'
  703:           delete
  704: 
  705:     `\f'
  706:           form feed
  707: 
  708:     `\n'
  709:           newline
  710: 
  711:     `\r'
  712:           carriage return
  713: 
  714:     `\t'
  715:           horizontal tab
  716: 
  717:     `\v'
  718:           vertical tab
  719: 
  720:     `\NNN'
  721:           the eight-bit character whose value is the octal value NNN
  722:           (one to three digits)
  723: 
  724:     `\xHH'
  725:           the eight-bit character whose value is the hexadecimal value
  726:           HH (one or two hex digits)
  727: 
  728:      When entering the text of a macro, single or double quotes must be
  729:      used to indicate a macro definition.  Unquoted text is assumed to
  730:      be a function name.  In the macro body, the backslash escapes
  731:      described above are expanded.  Backslash will quote any other
  732:      character in the macro text, including `"' and `''.  For example,
  733:      the following binding will make `C-x \' insert a single `\' into
  734:      the line:
  735:           "\C-x\\": "\\"
  736: 
  737: 
  738: 
  739: File: readline.info,  Node: Conditional Init Constructs,  Next: Sample Init File,  Prev: Readline Init File Syntax,  Up: Readline Init File
  740: 
  741: 1.3.2 Conditional Init Constructs
  742: ---------------------------------
  743: 
  744: Readline implements a facility similar in spirit to the conditional
  745: compilation features of the C preprocessor which allows key bindings
  746: and variable settings to be performed as the result of tests.  There
  747: are four parser directives used.
  748: 
  749: `$if'
  750:      The `$if' construct allows bindings to be made based on the
  751:      editing mode, the terminal being used, or the application using
  752:      Readline.  The text of the test extends to the end of the line; no
  753:      characters are required to isolate it.
  754: 
  755:     `mode'
  756:           The `mode=' form of the `$if' directive is used to test
  757:           whether Readline is in `emacs' or `vi' mode.  This may be
  758:           used in conjunction with the `set keymap' command, for
  759:           instance, to set bindings in the `emacs-standard' and
  760:           `emacs-ctlx' keymaps only if Readline is starting out in
  761:           `emacs' mode.
  762: 
  763:     `term'
  764:           The `term=' form may be used to include terminal-specific key
  765:           bindings, perhaps to bind the key sequences output by the
  766:           terminal's function keys.  The word on the right side of the
  767:           `=' is tested against both the full name of the terminal and
  768:           the portion of the terminal name before the first `-'.  This
  769:           allows `sun' to match both `sun' and `sun-cmd', for instance.
  770: 
  771:     `application'
  772:           The APPLICATION construct is used to include
  773:           application-specific settings.  Each program using the
  774:           Readline library sets the APPLICATION NAME, and you can test
  775:           for a particular value.  This could be used to bind key
  776:           sequences to functions useful for a specific program.  For
  777:           instance, the following command adds a key sequence that
  778:           quotes the current or previous word in Bash:
  779:                $if Bash
  780:                # Quote the current or previous word
  781:                "\C-xq": "\eb\"\ef\""
  782:                $endif
  783: 
  784: `$endif'
  785:      This command, as seen in the previous example, terminates an `$if'
  786:      command.
  787: 
  788: `$else'
  789:      Commands in this branch of the `$if' directive are executed if the
  790:      test fails.
  791: 
  792: `$include'
  793:      This directive takes a single filename as an argument and reads
  794:      commands and bindings from that file.  For example, the following
  795:      directive reads from `/etc/inputrc':
  796:           $include /etc/inputrc
  797: 
  798: 
  799: File: readline.info,  Node: Sample Init File,  Prev: Conditional Init Constructs,  Up: Readline Init File
  800: 
  801: 1.3.3 Sample Init File
  802: ----------------------
  803: 
  804: Here is an example of an INPUTRC file.  This illustrates key binding,
  805: variable assignment, and conditional syntax.
  806: 
  807: 
  808:      # This file controls the behaviour of line input editing for
  809:      # programs that use the GNU Readline library.  Existing
  810:      # programs include FTP, Bash, and GDB.
  811:      #
  812:      # You can re-read the inputrc file with C-x C-r.
  813:      # Lines beginning with '#' are comments.
  814:      #
  815:      # First, include any system-wide bindings and variable
  816:      # assignments from /etc/Inputrc
  817:      $include /etc/Inputrc
  818: 
  819:      #
  820:      # Set various bindings for emacs mode.
  821: 
  822:      set editing-mode emacs
  823: 
  824:      $if mode=emacs
  825: 
  826:      Meta-Control-h:	backward-kill-word	Text after the function name is ignored
  827: 
  828:      #
  829:      # Arrow keys in keypad mode
  830:      #
  831:      #"\M-OD":        backward-char
  832:      #"\M-OC":        forward-char
  833:      #"\M-OA":        previous-history
  834:      #"\M-OB":        next-history
  835:      #
  836:      # Arrow keys in ANSI mode
  837:      #
  838:      "\M-[D":        backward-char
  839:      "\M-[C":        forward-char
  840:      "\M-[A":        previous-history
  841:      "\M-[B":        next-history
  842:      #
  843:      # Arrow keys in 8 bit keypad mode
  844:      #
  845:      #"\M-\C-OD":       backward-char
  846:      #"\M-\C-OC":       forward-char
  847:      #"\M-\C-OA":       previous-history
  848:      #"\M-\C-OB":       next-history
  849:      #
  850:      # Arrow keys in 8 bit ANSI mode
  851:      #
  852:      #"\M-\C-[D":       backward-char
  853:      #"\M-\C-[C":       forward-char
  854:      #"\M-\C-[A":       previous-history
  855:      #"\M-\C-[B":       next-history
  856: 
  857:      C-q: quoted-insert
  858: 
  859:      $endif
  860: 
  861:      # An old-style binding.  This happens to be the default.
  862:      TAB: complete
  863: 
  864:      # Macros that are convenient for shell interaction
  865:      $if Bash
  866:      # edit the path
  867:      "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
  868:      # prepare to type a quoted word --
  869:      # insert open and close double quotes
  870:      # and move to just after the open quote
  871:      "\C-x\"": "\"\"\C-b"
  872:      # insert a backslash (testing backslash escapes
  873:      # in sequences and macros)
  874:      "\C-x\\": "\\"
  875:      # Quote the current or previous word
  876:      "\C-xq": "\eb\"\ef\""
  877:      # Add a binding to refresh the line, which is unbound
  878:      "\C-xr": redraw-current-line
  879:      # Edit variable on current line.
  880:      "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
  881:      $endif
  882: 
  883:      # use a visible bell if one is available
  884:      set bell-style visible
  885: 
  886:      # don't strip characters to 7 bits when reading
  887:      set input-meta on
  888: 
  889:      # allow iso-latin1 characters to be inserted rather
  890:      # than converted to prefix-meta sequences
  891:      set convert-meta off
  892: 
  893:      # display characters with the eighth bit set directly
  894:      # rather than as meta-prefixed characters
  895:      set output-meta on
  896: 
  897:      # if there are more than 150 possible completions for
  898:      # a word, ask the user if he wants to see all of them
  899:      set completion-query-items 150
  900: 
  901:      # For FTP
  902:      $if Ftp
  903:      "\C-xg": "get \M-?"
  904:      "\C-xt": "put \M-?"
  905:      "\M-.": yank-last-arg
  906:      $endif
  907: 
  908: 
  909: File: readline.info,  Node: Bindable Readline Commands,  Next: Readline vi Mode,  Prev: Readline Init File,  Up: Command Line Editing
  910: 
  911: 1.4 Bindable Readline Commands
  912: ==============================
  913: 
  914: * Menu:
  915: 
  916: * Commands For Moving::		Moving about the line.
  917: * Commands For History::	Getting at previous lines.
  918: * Commands For Text::		Commands for changing text.
  919: * Commands For Killing::	Commands for killing and yanking.
  920: * Numeric Arguments::		Specifying numeric arguments, repeat counts.
  921: * Commands For Completion::	Getting Readline to do the typing for you.
  922: * Keyboard Macros::		Saving and re-executing typed characters
  923: * Miscellaneous Commands::	Other miscellaneous commands.
  924: 
  925:    This section describes Readline commands that may be bound to key
  926: sequences.  Command names without an accompanying key sequence are
  927: unbound by default.
  928: 
  929:    In the following descriptions, "point" refers to the current cursor
  930: position, and "mark" refers to a cursor position saved by the
  931: `set-mark' command.  The text between the point and mark is referred to
  932: as the "region".
  933: 
  934: 
  935: File: readline.info,  Node: Commands For Moving,  Next: Commands For History,  Up: Bindable Readline Commands
  936: 
  937: 1.4.1 Commands For Moving
  938: -------------------------
  939: 
  940: `beginning-of-line (C-a)'
  941:      Move to the start of the current line.
  942: 
  943: `end-of-line (C-e)'
  944:      Move to the end of the line.
  945: 
  946: `forward-char (C-f)'
  947:      Move forward a character.
  948: 
  949: `backward-char (C-b)'
  950:      Move back a character.
  951: 
  952: `forward-word (M-f)'
  953:      Move forward to the end of the next word.  Words are composed of
  954:      letters and digits.
  955: 
  956: `backward-word (M-b)'
  957:      Move back to the start of the current or previous word.  Words are
  958:      composed of letters and digits.
  959: 
  960: `clear-screen (C-l)'
  961:      Clear the screen and redraw the current line, leaving the current
  962:      line at the top of the screen.
  963: 
  964: `redraw-current-line ()'
  965:      Refresh the current line.  By default, this is unbound.
  966: 
  967: 
  968: 
  969: File: readline.info,  Node: Commands For History,  Next: Commands For Text,  Prev: Commands For Moving,  Up: Bindable Readline Commands
  970: 
  971: 1.4.2 Commands For Manipulating The History
  972: -------------------------------------------
  973: 
  974: `accept-line (Newline or Return)'
  975:      Accept the line regardless of where the cursor is.  If this line is
  976:      non-empty, it may be added to the history list for future recall
  977:      with `add_history()'.  If this line is a modified history line,
  978:      the history line is restored to its original state.
  979: 
  980: `previous-history (C-p)'
  981:      Move `back' through the history list, fetching the previous
  982:      command.
  983: 
  984: `next-history (C-n)'
  985:      Move `forward' through the history list, fetching the next command.
  986: 
  987: `beginning-of-history (M-<)'
  988:      Move to the first line in the history.
  989: 
  990: `end-of-history (M->)'
  991:      Move to the end of the input history, i.e., the line currently
  992:      being entered.
  993: 
  994: `reverse-search-history (C-r)'
  995:      Search backward starting at the current line and moving `up'
  996:      through the history as necessary.  This is an incremental search.
  997: 
  998: `forward-search-history (C-s)'
  999:      Search forward starting at the current line and moving `down'
 1000:      through the the history as necessary.  This is an incremental
 1001:      search.
 1002: 
 1003: `non-incremental-reverse-search-history (M-p)'
 1004:      Search backward starting at the current line and moving `up'
 1005:      through the history as necessary using a non-incremental search
 1006:      for a string supplied by the user.
 1007: 
 1008: `non-incremental-forward-search-history (M-n)'
 1009:      Search forward starting at the current line and moving `down'
 1010:      through the the history as necessary using a non-incremental search
 1011:      for a string supplied by the user.
 1012: 
 1013: `history-search-forward ()'
 1014:      Search forward through the history for the string of characters
 1015:      between the start of the current line and the point.  The search
 1016:      string must match at the beginning of a history line.  This is a
 1017:      non-incremental search.  By default, this command is unbound.
 1018: 
 1019: `history-search-backward ()'
 1020:      Search backward through the history for the string of characters
 1021:      between the start of the current line and the point.  The search
 1022:      string must match at the beginning of a history line.  This is a
 1023:      non-incremental search.  By default, this command is unbound.
 1024: 
 1025: `history-substr-search-forward ()'
 1026:      Search forward through the history for the string of characters
 1027:      between the start of the current line and the point.  The search
 1028:      string may match anywhere in a history line.  This is a
 1029:      non-incremental search.  By default, this command is unbound.
 1030: 
 1031: `history-substr-search-backward ()'
 1032:      Search backward through the history for the string of characters
 1033:      between the start of the current line and the point.  The search
 1034:      string may match anywhere in a history line.  This is a
 1035:      non-incremental search.  By default, this command is unbound.
 1036: 
 1037: `yank-nth-arg (M-C-y)'
 1038:      Insert the first argument to the previous command (usually the
 1039:      second word on the previous line) at point.  With an argument N,
 1040:      insert the Nth word from the previous command (the words in the
 1041:      previous command begin with word 0).  A negative argument inserts
 1042:      the Nth word from the end of the previous command.  Once the
 1043:      argument N is computed, the argument is extracted as if the `!N'
 1044:      history expansion had been specified.
 1045: 
 1046: `yank-last-arg (M-. or M-_)'
 1047:      Insert last argument to the previous command (the last word of the
 1048:      previous history entry).  With a numeric argument, behave exactly
 1049:      like `yank-nth-arg'.  Successive calls to `yank-last-arg' move
 1050:      back through the history list, inserting the last word (or the
 1051:      word specified by the argument to the first call) of each line in
 1052:      turn.  Any numeric argument supplied to these successive calls
 1053:      determines the direction to move through the history.  A negative
 1054:      argument switches the direction through the history (back or
 1055:      forward).  The history expansion facilities are used to extract
 1056:      the last argument, as if the `!$' history expansion had been
 1057:      specified.
 1058: 
 1059: 
 1060: 
 1061: File: readline.info,  Node: Commands For Text,  Next: Commands For Killing,  Prev: Commands For History,  Up: Bindable Readline Commands
 1062: 
 1063: 1.4.3 Commands For Changing Text
 1064: --------------------------------
 1065: 
 1066: `end-of-file (usually C-d)'
 1067:      The character indicating end-of-file as set, for example, by
 1068:      `stty'.  If this character is read when there are no characters on
 1069:      the line, and point is at the beginning of the line, Readline
 1070:      interprets it as the end of input and returns EOF.
 1071: 
 1072: `delete-char (C-d)'
 1073:      Delete the character at point.  If this function is bound to the
 1074:      same character as the tty EOF character, as `C-d' commonly is, see
 1075:      above for the effects.
 1076: 
 1077: `backward-delete-char (Rubout)'
 1078:      Delete the character behind the cursor.  A numeric argument means
 1079:      to kill the characters instead of deleting them.
 1080: 
 1081: `forward-backward-delete-char ()'
 1082:      Delete the character under the cursor, unless the cursor is at the
 1083:      end of the line, in which case the character behind the cursor is
 1084:      deleted.  By default, this is not bound to a key.
 1085: 
 1086: `quoted-insert (C-q or C-v)'
 1087:      Add the next character typed to the line verbatim.  This is how to
 1088:      insert key sequences like `C-q', for example.
 1089: 
 1090: `tab-insert (M-<TAB>)'
 1091:      Insert a tab character.
 1092: 
 1093: `self-insert (a, b, A, 1, !, ...)'
 1094:      Insert yourself.
 1095: 
 1096: `transpose-chars (C-t)'
 1097:      Drag the character before the cursor forward over the character at
 1098:      the cursor, moving the cursor forward as well.  If the insertion
 1099:      point is at the end of the line, then this transposes the last two
 1100:      characters of the line.  Negative arguments have no effect.
 1101: 
 1102: `transpose-words (M-t)'
 1103:      Drag the word before point past the word after point, moving point
 1104:      past that word as well.  If the insertion point is at the end of
 1105:      the line, this transposes the last two words on the line.
 1106: 
 1107: `upcase-word (M-u)'
 1108:      Uppercase the current (or following) word.  With a negative
 1109:      argument, uppercase the previous word, but do not move the cursor.
 1110: 
 1111: `downcase-word (M-l)'
 1112:      Lowercase the current (or following) word.  With a negative
 1113:      argument, lowercase the previous word, but do not move the cursor.
 1114: 
 1115: `capitalize-word (M-c)'
 1116:      Capitalize the current (or following) word.  With a negative
 1117:      argument, capitalize the previous word, but do not move the cursor.
 1118: 
 1119: `overwrite-mode ()'
 1120:      Toggle overwrite mode.  With an explicit positive numeric argument,
 1121:      switches to overwrite mode.  With an explicit non-positive numeric
 1122:      argument, switches to insert mode.  This command affects only
 1123:      `emacs' mode; `vi' mode does overwrite differently.  Each call to
 1124:      `readline()' starts in insert mode.
 1125: 
 1126:      In overwrite mode, characters bound to `self-insert' replace the
 1127:      text at point rather than pushing the text to the right.
 1128:      Characters bound to `backward-delete-char' replace the character
 1129:      before point with a space.
 1130: 
 1131:      By default, this command is unbound.
 1132: 
 1133: 
 1134: 
 1135: File: readline.info,  Node: Commands For Killing,  Next: Numeric Arguments,  Prev: Commands For Text,  Up: Bindable Readline Commands
 1136: 
 1137: 1.4.4 Killing And Yanking
 1138: -------------------------
 1139: 
 1140: `kill-line (C-k)'
 1141:      Kill the text from point to the end of the line.
 1142: 
 1143: `backward-kill-line (C-x Rubout)'
 1144:      Kill backward to the beginning of the line.
 1145: 
 1146: `unix-line-discard (C-u)'
 1147:      Kill backward from the cursor to the beginning of the current line.
 1148: 
 1149: `kill-whole-line ()'
 1150:      Kill all characters on the current line, no matter where point is.
 1151:      By default, this is unbound.
 1152: 
 1153: `kill-word (M-d)'
 1154:      Kill from point to the end of the current word, or if between
 1155:      words, to the end of the next word.  Word boundaries are the same
 1156:      as `forward-word'.
 1157: 
 1158: `backward-kill-word (M-<DEL>)'
 1159:      Kill the word behind point.  Word boundaries are the same as
 1160:      `backward-word'.
 1161: 
 1162: `unix-word-rubout (C-w)'
 1163:      Kill the word behind point, using white space as a word boundary.
 1164:      The killed text is saved on the kill-ring.
 1165: 
 1166: `unix-filename-rubout ()'
 1167:      Kill the word behind point, using white space and the slash
 1168:      character as the word boundaries.  The killed text is saved on the
 1169:      kill-ring.
 1170: 
 1171: `delete-horizontal-space ()'
 1172:      Delete all spaces and tabs around point.  By default, this is
 1173:      unbound.
 1174: 
 1175: `kill-region ()'
 1176:      Kill the text in the current region.  By default, this command is
 1177:      unbound.
 1178: 
 1179: `copy-region-as-kill ()'
 1180:      Copy the text in the region to the kill buffer, so it can be yanked
 1181:      right away.  By default, this command is unbound.
 1182: 
 1183: `copy-backward-word ()'
 1184:      Copy the word before point to the kill buffer.  The word
 1185:      boundaries are the same as `backward-word'.  By default, this
 1186:      command is unbound.
 1187: 
 1188: `copy-forward-word ()'
 1189:      Copy the word following point to the kill buffer.  The word
 1190:      boundaries are the same as `forward-word'.  By default, this
 1191:      command is unbound.
 1192: 
 1193: `yank (C-y)'
 1194:      Yank the top of the kill ring into the buffer at point.
 1195: 
 1196: `yank-pop (M-y)'
 1197:      Rotate the kill-ring, and yank the new top.  You can only do this
 1198:      if the prior command is `yank' or `yank-pop'.
 1199: 
 1200: 
 1201: File: readline.info,  Node: Numeric Arguments,  Next: Commands For Completion,  Prev: Commands For Killing,  Up: Bindable Readline Commands
 1202: 
 1203: 1.4.5 Specifying Numeric Arguments
 1204: ----------------------------------
 1205: 
 1206: `digit-argument (M-0, M-1, ... M--)'
 1207:      Add this digit to the argument already accumulating, or start a new
 1208:      argument.  `M--' starts a negative argument.
 1209: 
 1210: `universal-argument ()'
 1211:      This is another way to specify an argument.  If this command is
 1212:      followed by one or more digits, optionally with a leading minus
 1213:      sign, those digits define the argument.  If the command is
 1214:      followed by digits, executing `universal-argument' again ends the
 1215:      numeric argument, but is otherwise ignored.  As a special case, if
 1216:      this command is immediately followed by a character that is
 1217:      neither a digit or minus sign, the argument count for the next
 1218:      command is multiplied by four.  The argument count is initially
 1219:      one, so executing this function the first time makes the argument
 1220:      count four, a second time makes the argument count sixteen, and so
 1221:      on.  By default, this is not bound to a key.
 1222: 
 1223: 
 1224: File: readline.info,  Node: Commands For Completion,  Next: Keyboard Macros,  Prev: Numeric Arguments,  Up: Bindable Readline Commands
 1225: 
 1226: 1.4.6 Letting Readline Type For You
 1227: -----------------------------------
 1228: 
 1229: `complete (<TAB>)'
 1230:      Attempt to perform completion on the text before point.  The
 1231:      actual completion performed is application-specific.  The default
 1232:      is filename completion.
 1233: 
 1234: `possible-completions (M-?)'
 1235:      List the possible completions of the text before point.  When
 1236:      displaying completions, Readline sets the number of columns used
 1237:      for display to the value of `completion-display-width', the value
 1238:      of the environment variable `COLUMNS', or the screen width, in
 1239:      that order.
 1240: 
 1241: `insert-completions (M-*)'
 1242:      Insert all completions of the text before point that would have
 1243:      been generated by `possible-completions'.
 1244: 
 1245: `menu-complete ()'
 1246:      Similar to `complete', but replaces the word to be completed with
 1247:      a single match from the list of possible completions.  Repeated
 1248:      execution of `menu-complete' steps through the list of possible
 1249:      completions, inserting each match in turn.  At the end of the list
 1250:      of completions, the bell is rung (subject to the setting of
 1251:      `bell-style') and the original text is restored.  An argument of N
 1252:      moves N positions forward in the list of matches; a negative
 1253:      argument may be used to move backward through the list.  This
 1254:      command is intended to be bound to <TAB>, but is unbound by
 1255:      default.
 1256: 
 1257: `menu-complete-backward ()'
 1258:      Identical to `menu-complete', but moves backward through the list
 1259:      of possible completions, as if `menu-complete' had been given a
 1260:      negative argument.
 1261: 
 1262: `delete-char-or-list ()'
 1263:      Deletes the character under the cursor if not at the beginning or
 1264:      end of the line (like `delete-char').  If at the end of the line,
 1265:      behaves identically to `possible-completions'.  This command is
 1266:      unbound by default.
 1267: 
 1268: 
 1269: 
 1270: File: readline.info,  Node: Keyboard Macros,  Next: Miscellaneous Commands,  Prev: Commands For Completion,  Up: Bindable Readline Commands
 1271: 
 1272: 1.4.7 Keyboard Macros
 1273: ---------------------
 1274: 
 1275: `start-kbd-macro (C-x ()'
 1276:      Begin saving the characters typed into the current keyboard macro.
 1277: 
 1278: `end-kbd-macro (C-x ))'
 1279:      Stop saving the characters typed into the current keyboard macro
 1280:      and save the definition.
 1281: 
 1282: `call-last-kbd-macro (C-x e)'
 1283:      Re-execute the last keyboard macro defined, by making the
 1284:      characters in the macro appear as if typed at the keyboard.
 1285: 
 1286: `print-last-kbd-macro ()'
 1287:      Print the last keboard macro defined in a format suitable for the
 1288:      INPUTRC file.
 1289: 
 1290: 
 1291: 
 1292: File: readline.info,  Node: Miscellaneous Commands,  Prev: Keyboard Macros,  Up: Bindable Readline Commands
 1293: 
 1294: 1.4.8 Some Miscellaneous Commands
 1295: ---------------------------------
 1296: 
 1297: `re-read-init-file (C-x C-r)'
 1298:      Read in the contents of the INPUTRC file, and incorporate any
 1299:      bindings or variable assignments found there.
 1300: 
 1301: `abort (C-g)'
 1302:      Abort the current editing command and ring the terminal's bell
 1303:      (subject to the setting of `bell-style').
 1304: 
 1305: `do-uppercase-version (M-a, M-b, M-X, ...)'
 1306:      If the metafied character X is lowercase, run the command that is
 1307:      bound to the corresponding uppercase character.
 1308: 
 1309: `prefix-meta (<ESC>)'
 1310:      Metafy the next character typed.  This is for keyboards without a
 1311:      meta key.  Typing `<ESC> f' is equivalent to typing `M-f'.
 1312: 
 1313: `undo (C-_ or C-x C-u)'
 1314:      Incremental undo, separately remembered for each line.
 1315: 
 1316: `revert-line (M-r)'
 1317:      Undo all changes made to this line.  This is like executing the
 1318:      `undo' command enough times to get back to the beginning.
 1319: 
 1320: `tilde-expand (M-~)'
 1321:      Perform tilde expansion on the current word.
 1322: 
 1323: `set-mark (C-@)'
 1324:      Set the mark to the point.  If a numeric argument is supplied, the
 1325:      mark is set to that position.
 1326: 
 1327: `exchange-point-and-mark (C-x C-x)'
 1328:      Swap the point with the mark.  The current cursor position is set
 1329:      to the saved position, and the old cursor position is saved as the
 1330:      mark.
 1331: 
 1332: `character-search (C-])'
 1333:      A character is read and point is moved to the next occurrence of
 1334:      that character.  A negative count searches for previous
 1335:      occurrences.
 1336: 
 1337: `character-search-backward (M-C-])'
 1338:      A character is read and point is moved to the previous occurrence
 1339:      of that character.  A negative count searches for subsequent
 1340:      occurrences.
 1341: 
 1342: `skip-csi-sequence ()'
 1343:      Read enough characters to consume a multi-key sequence such as
 1344:      those defined for keys like Home and End.  Such sequences begin
 1345:      with a Control Sequence Indicator (CSI), usually ESC-[.  If this
 1346:      sequence is bound to "\e[", keys producing such sequences will
 1347:      have no effect unless explicitly bound to a readline command,
 1348:      instead of inserting stray characters into the editing buffer.
 1349:      This is unbound by default, but usually bound to ESC-[.
 1350: 
 1351: `insert-comment (M-#)'
 1352:      Without a numeric argument, the value of the `comment-begin'
 1353:      variable is inserted at the beginning of the current line.  If a
 1354:      numeric argument is supplied, this command acts as a toggle:  if
 1355:      the characters at the beginning of the line do not match the value
 1356:      of `comment-begin', the value is inserted, otherwise the
 1357:      characters in `comment-begin' are deleted from the beginning of
 1358:      the line.  In either case, the line is accepted as if a newline
 1359:      had been typed.
 1360: 
 1361: `dump-functions ()'
 1362:      Print all of the functions and their key bindings to the Readline
 1363:      output stream.  If a numeric argument is supplied, the output is
 1364:      formatted in such a way that it can be made part of an INPUTRC
 1365:      file.  This command is unbound by default.
 1366: 
 1367: `dump-variables ()'
 1368:      Print all of the settable variables and their values to the
 1369:      Readline output stream.  If a numeric argument is supplied, the
 1370:      output is formatted in such a way that it can be made part of an
 1371:      INPUTRC file.  This command is unbound by default.
 1372: 
 1373: `dump-macros ()'
 1374:      Print all of the Readline key sequences bound to macros and the
 1375:      strings they output.  If a numeric argument is supplied, the
 1376:      output is formatted in such a way that it can be made part of an
 1377:      INPUTRC file.  This command is unbound by default.
 1378: 
 1379: `emacs-editing-mode (C-e)'
 1380:      When in `vi' command mode, this causes a switch to `emacs' editing
 1381:      mode.
 1382: 
 1383: `vi-editing-mode (M-C-j)'
 1384:      When in `emacs' editing mode, this causes a switch to `vi' editing
 1385:      mode.
 1386: 
 1387: 
 1388: 
 1389: File: readline.info,  Node: Readline vi Mode,  Prev: Bindable Readline Commands,  Up: Command Line Editing
 1390: 
 1391: 1.5 Readline vi Mode
 1392: ====================
 1393: 
 1394: While the Readline library does not have a full set of `vi' editing
 1395: functions, it does contain enough to allow simple editing of the line.
 1396: The Readline `vi' mode behaves as specified in the POSIX standard.
 1397: 
 1398:    In order to switch interactively between `emacs' and `vi' editing
 1399: modes, use the command `M-C-j' (bound to emacs-editing-mode when in
 1400: `vi' mode and to vi-editing-mode in `emacs' mode).  The Readline
 1401: default is `emacs' mode.
 1402: 
 1403:    When you enter a line in `vi' mode, you are already placed in
 1404: `insertion' mode, as if you had typed an `i'.  Pressing <ESC> switches
 1405: you into `command' mode, where you can edit the text of the line with
 1406: the standard `vi' movement keys, move to previous history lines with
 1407: `k' and subsequent lines with `j', and so forth.
 1408: 
 1409:    This document describes the GNU Readline Library, a utility for
 1410: aiding in the consistency of user interface across discrete programs
 1411: that need to provide a command line interface.
 1412: 
 1413:    Copyright (C) 1988-2014 Free Software Foundation, Inc.
 1414: 
 1415:    Permission is granted to make and distribute verbatim copies of this
 1416: manual provided the copyright notice and this permission notice pare
 1417: preserved on all copies.
 1418: 
 1419:    Permission is granted to copy and distribute modified versions of
 1420: this manual under the conditions for verbatim copying, provided that
 1421: the entire resulting derived work is distributed under the terms of a
 1422: permission notice identical to this one.
 1423: 
 1424:    Permission is granted to copy and distribute translations of this
 1425: manual into another language, under the above conditions for modified
 1426: versions, except that this permission notice may be stated in a
 1427: translation approved by the Foundation.
 1428: 
 1429: 
 1430: File: readline.info,  Node: Programming with GNU Readline,  Next: GNU Free Documentation License,  Prev: Command Line Editing,  Up: Top
 1431: 
 1432: 2 Programming with GNU Readline
 1433: *******************************
 1434: 
 1435: This chapter describes the interface between the GNU Readline Library
 1436: and other programs.  If you are a programmer, and you wish to include
 1437: the features found in GNU Readline such as completion, line editing,
 1438: and interactive history manipulation in your own programs, this section
 1439: is for you.
 1440: 
 1441: * Menu:
 1442: 
 1443: * Basic Behavior::	Using the default behavior of Readline.
 1444: * Custom Functions::	Adding your own functions to Readline.
 1445: * Readline Variables::			Variables accessible to custom
 1446: 					functions.
 1447: * Readline Convenience Functions::	Functions which Readline supplies to
 1448: 					aid in writing your own custom
 1449: 					functions.
 1450: * Readline Signal Handling::	How Readline behaves when it receives signals.
 1451: * Custom Completers::	Supplanting or supplementing Readline's
 1452: 			completion functions.
 1453: 
 1454: 
 1455: File: readline.info,  Node: Basic Behavior,  Next: Custom Functions,  Up: Programming with GNU Readline
 1456: 
 1457: 2.1 Basic Behavior
 1458: ==================
 1459: 
 1460: Many programs provide a command line interface, such as `mail', `ftp',
 1461: and `sh'.  For such programs, the default behaviour of Readline is
 1462: sufficient.  This section describes how to use Readline in the simplest
 1463: way possible, perhaps to replace calls in your code to `gets()' or
 1464: `fgets()'.
 1465: 
 1466:    The function `readline()' prints a prompt PROMPT and then reads and
 1467: returns a single line of text from the user.  If PROMPT is `NULL' or
 1468: the empty string, no prompt is displayed.  The line `readline' returns
 1469: is allocated with `malloc()'; the caller should `free()' the line when
 1470: it has finished with it.  The declaration for `readline' in ANSI C is
 1471: 
 1472:      `char *readline (const char *PROMPT);'
 1473: 
 1474: So, one might say
 1475:      `char *line = readline ("Enter a line: ");'
 1476:    in order to read a line of text from the user.  The line returned
 1477: has the final newline removed, so only the text remains.
 1478: 
 1479:    If `readline' encounters an `EOF' while reading the line, and the
 1480: line is empty at that point, then `(char *)NULL' is returned.
 1481: Otherwise, the line is ended just as if a newline had been typed.
 1482: 
 1483:    If you want the user to be able to get at the line later, (with
 1484: <C-p> for example), you must call `add_history()' to save the line away
 1485: in a "history" list of such lines.
 1486: 
 1487:      `add_history (line)';
 1488: 
 1489: For full details on the GNU History Library, see the associated manual.
 1490: 
 1491:    It is preferable to avoid saving empty lines on the history list,
 1492: since users rarely have a burning need to reuse a blank line.  Here is
 1493: a function which usefully replaces the standard `gets()' library
 1494: function, and has the advantage of no static buffer to overflow:
 1495: 
 1496:      /* A static variable for holding the line. */
 1497:      static char *line_read = (char *)NULL;
 1498: 
 1499:      /* Read a string, and return a pointer to it.
 1500:         Returns NULL on EOF. */
 1501:      char *
 1502:      rl_gets ()
 1503:      {
 1504:        /* If the buffer has already been allocated,
 1505:           return the memory to the free pool. */
 1506:        if (line_read)
 1507:          {
 1508:            free (line_read);
 1509:            line_read = (char *)NULL;
 1510:          }
 1511: 
 1512:        /* Get a line from the user. */
 1513:        line_read = readline ("");
 1514: 
 1515:        /* If the line has any text in it,
 1516:           save it on the history. */
 1517:        if (line_read && *line_read)
 1518:          add_history (line_read);
 1519: 
 1520:        return (line_read);
 1521:      }
 1522: 
 1523:    This function gives the user the default behaviour of <TAB>
 1524: completion: completion on file names.  If you do not want Readline to
 1525: complete on filenames, you can change the binding of the <TAB> key with
 1526: `rl_bind_key()'.
 1527: 
 1528:      `int rl_bind_key (int KEY, rl_command_func_t *FUNCTION);'
 1529: 
 1530:    `rl_bind_key()' takes two arguments: KEY is the character that you
 1531: want to bind, and FUNCTION is the address of the function to call when
 1532: KEY is pressed.  Binding <TAB> to `rl_insert()' makes <TAB> insert
 1533: itself.  `rl_bind_key()' returns non-zero if KEY is not a valid ASCII
 1534: character code (between 0 and 255).
 1535: 
 1536:    Thus, to disable the default <TAB> behavior, the following suffices:
 1537:      `rl_bind_key ('\t', rl_insert);'
 1538: 
 1539:    This code should be executed once at the start of your program; you
 1540: might write a function called `initialize_readline()' which performs
 1541: this and other desired initializations, such as installing custom
 1542: completers (*note Custom Completers::).
 1543: 
 1544: 
 1545: File: readline.info,  Node: Custom Functions,  Next: Readline Variables,  Prev: Basic Behavior,  Up: Programming with GNU Readline
 1546: 
 1547: 2.2 Custom Functions
 1548: ====================
 1549: 
 1550: Readline provides many functions for manipulating the text of the line,
 1551: but it isn't possible to anticipate the needs of all programs.  This
 1552: section describes the various functions and variables defined within
 1553: the Readline library which allow a user program to add customized
 1554: functionality to Readline.
 1555: 
 1556:    Before declaring any functions that customize Readline's behavior, or
 1557: using any functionality Readline provides in other code, an application
 1558: writer should include the file `<readline/readline.h>' in any file that
 1559: uses Readline's features.  Since some of the definitions in
 1560: `readline.h' use the `stdio' library, the file `<stdio.h>' should be
 1561: included before `readline.h'.
 1562: 
 1563:    `readline.h' defines a C preprocessor variable that should be
 1564: treated as an integer, `RL_READLINE_VERSION', which may be used to
 1565: conditionally compile application code depending on the installed
 1566: Readline version.  The value is a hexadecimal encoding of the major and
 1567: minor version numbers of the library, of the form 0xMMMM.  MM is the
 1568: two-digit major version number; MM is the two-digit minor version
 1569: number.  For Readline 4.2, for example, the value of
 1570: `RL_READLINE_VERSION' would be `0x0402'.
 1571: 
 1572: * Menu:
 1573: 
 1574: * Readline Typedefs::	C declarations to make code readable.
 1575: * Function Writing::	Variables and calling conventions.
 1576: 
 1577: 
 1578: File: readline.info,  Node: Readline Typedefs,  Next: Function Writing,  Up: Custom Functions
 1579: 
 1580: 2.2.1 Readline Typedefs
 1581: -----------------------
 1582: 
 1583: For readability, we declare a number of new object types, all pointers
 1584: to functions.
 1585: 
 1586:    The reason for declaring these new types is to make it easier to
 1587: write code describing pointers to C functions with appropriately
 1588: prototyped arguments and return values.
 1589: 
 1590:    For instance, say we want to declare a variable FUNC as a pointer to
 1591: a function which takes two `int' arguments and returns an `int' (this
 1592: is the type of all of the Readline bindable functions).  Instead of the
 1593: classic C declaration
 1594: 
 1595:    `int (*func)();'
 1596: 
 1597: or the ANSI-C style declaration
 1598: 
 1599:    `int (*func)(int, int);'
 1600: 
 1601: we may write
 1602: 
 1603:    `rl_command_func_t *func;'
 1604: 
 1605:    The full list of function pointer types available is
 1606: 
 1607: `typedef int rl_command_func_t (int, int);'
 1608: 
 1609: `typedef char *rl_compentry_func_t (const char *, int);'
 1610: 
 1611: `typedef char **rl_completion_func_t (const char *, int, int);'
 1612: 
 1613: `typedef char *rl_quote_func_t (char *, int, char *);'
 1614: 
 1615: `typedef char *rl_dequote_func_t (char *, int);'
 1616: 
 1617: `typedef int rl_compignore_func_t (char **);'
 1618: 
 1619: `typedef void rl_compdisp_func_t (char **, int, int);'
 1620: 
 1621: `typedef int rl_hook_func_t (void);'
 1622: 
 1623: `typedef int rl_getc_func_t (FILE *);'
 1624: 
 1625: `typedef int rl_linebuf_func_t (char *, int);'
 1626: 
 1627: `typedef int rl_intfunc_t (int);'
 1628: 
 1629: `#define rl_ivoidfunc_t rl_hook_func_t'
 1630: 
 1631: `typedef int rl_icpfunc_t (char *);'
 1632: 
 1633: `typedef int rl_icppfunc_t (char **);'
 1634: 
 1635: `typedef void rl_voidfunc_t (void);'
 1636: 
 1637: `typedef void rl_vintfunc_t (int);'
 1638: 
 1639: `typedef void rl_vcpfunc_t (char *);'
 1640: 
 1641: `typedef void rl_vcppfunc_t (char **);'
 1642: 
 1643: 
 1644: File: readline.info,  Node: Function Writing,  Prev: Readline Typedefs,  Up: Custom Functions
 1645: 
 1646: 2.2.2 Writing a New Function
 1647: ----------------------------
 1648: 
 1649: In order to write new functions for Readline, you need to know the
 1650: calling conventions for keyboard-invoked functions, and the names of the
 1651: variables that describe the current state of the line read so far.
 1652: 
 1653:    The calling sequence for a command `foo' looks like
 1654: 
 1655:      `int foo (int count, int key)'
 1656: 
 1657: where COUNT is the numeric argument (or 1 if defaulted) and KEY is the
 1658: key that invoked this function.
 1659: 
 1660:    It is completely up to the function as to what should be done with
 1661: the numeric argument.  Some functions use it as a repeat count, some as
 1662: a flag, and others to choose alternate behavior (refreshing the current
 1663: line as opposed to refreshing the screen, for example).  Some choose to
 1664: ignore it.  In general, if a function uses the numeric argument as a
 1665: repeat count, it should be able to do something useful with both
 1666: negative and positive arguments.  At the very least, it should be aware
 1667: that it can be passed a negative argument.
 1668: 
 1669:    A command function should return 0 if its action completes
 1670: successfully, and a non-zero value if some error occurs.  This is the
 1671: convention obeyed by all of the builtin Readline bindable command
 1672: functions.
 1673: 
 1674: 
 1675: File: readline.info,  Node: Readline Variables,  Next: Readline Convenience Functions,  Prev: Custom Functions,  Up: Programming with GNU Readline
 1676: 
 1677: 2.3 Readline Variables
 1678: ======================
 1679: 
 1680: These variables are available to function writers.
 1681: 
 1682:  -- Variable: char * rl_line_buffer
 1683:      This is the line gathered so far.  You are welcome to modify the
 1684:      contents of the line, but see *note Allowing Undoing::.  The
 1685:      function `rl_extend_line_buffer' is available to increase the
 1686:      memory allocated to `rl_line_buffer'.
 1687: 
 1688:  -- Variable: int rl_point
 1689:      The offset of the current cursor position in `rl_line_buffer' (the
 1690:      _point_).
 1691: 
 1692:  -- Variable: int rl_end
 1693:      The number of characters present in `rl_line_buffer'.  When
 1694:      `rl_point' is at the end of the line, `rl_point' and `rl_end' are
 1695:      equal.
 1696: 
 1697:  -- Variable: int rl_mark
 1698:      The MARK (saved position) in the current line.  If set, the mark
 1699:      and point define a _region_.
 1700: 
 1701:  -- Variable: int rl_done
 1702:      Setting this to a non-zero value causes Readline to return the
 1703:      current line immediately.
 1704: 
 1705:  -- Variable: int rl_num_chars_to_read
 1706:      Setting this to a positive value before calling `readline()' causes
 1707:      Readline to return after accepting that many characters, rather
 1708:      than reading up to a character bound to `accept-line'.
 1709: 
 1710:  -- Variable: int rl_pending_input
 1711:      Setting this to a value makes it the next keystroke read.  This is
 1712:      a way to stuff a single character into the input stream.
 1713: 
 1714:  -- Variable: int rl_dispatching
 1715:      Set to a non-zero value if a function is being called from a key
 1716:      binding; zero otherwise.  Application functions can test this to
 1717:      discover whether they were called directly or by Readline's
 1718:      dispatching mechanism.
 1719: 
 1720:  -- Variable: int rl_erase_empty_line
 1721:      Setting this to a non-zero value causes Readline to completely
 1722:      erase the current line, including any prompt, any time a newline
 1723:      is typed as the only character on an otherwise-empty line.  The
 1724:      cursor is moved to the beginning of the newly-blank line.
 1725: 
 1726:  -- Variable: char * rl_prompt
 1727:      The prompt Readline uses.  This is set from the argument to
 1728:      `readline()', and should not be assigned to directly.  The
 1729:      `rl_set_prompt()' function (*note Redisplay::) may be used to
 1730:      modify the prompt string after calling `readline()'.
 1731: 
 1732:  -- Variable: char * rl_display_prompt
 1733:      The string displayed as the prompt.  This is usually identical to
 1734:      RL_PROMPT, but may be changed temporarily by functions that use
 1735:      the prompt string as a message area, such as incremental search.
 1736: 
 1737:  -- Variable: int rl_already_prompted
 1738:      If an application wishes to display the prompt itself, rather than
 1739:      have Readline do it the first time `readline()' is called, it
 1740:      should set this variable to a non-zero value after displaying the
 1741:      prompt.  The prompt must also be passed as the argument to
 1742:      `readline()' so the redisplay functions can update the display
 1743:      properly.  The calling application is responsible for managing the
 1744:      value; Readline never sets it.
 1745: 
 1746:  -- Variable: const char * rl_library_version
 1747:      The version number of this revision of the library.
 1748: 
 1749:  -- Variable: int rl_readline_version
 1750:      An integer encoding the current version of the library.  The
 1751:      encoding is of the form 0xMMMM, where MM is the two-digit major
 1752:      version number, and MM is the two-digit minor version number.  For
 1753:      example, for Readline-4.2, `rl_readline_version' would have the
 1754:      value 0x0402.
 1755: 
 1756:  -- Variable: int rl_gnu_readline_p
 1757:      Always set to 1, denoting that this is GNU readline rather than
 1758:      some emulation.
 1759: 
 1760:  -- Variable: const char * rl_terminal_name
 1761:      The terminal type, used for initialization.  If not set by the
 1762:      application, Readline sets this to the value of the `TERM'
 1763:      environment variable the first time it is called.
 1764: 
 1765:  -- Variable: const char * rl_readline_name
 1766:      This variable is set to a unique name by each application using
 1767:      Readline.  The value allows conditional parsing of the inputrc file
 1768:      (*note Conditional Init Constructs::).
 1769: 
 1770:  -- Variable: FILE * rl_instream
 1771:      The stdio stream from which Readline reads input.  If `NULL',
 1772:      Readline defaults to STDIN.
 1773: 
 1774:  -- Variable: FILE * rl_outstream
 1775:      The stdio stream to which Readline performs output.  If `NULL',
 1776:      Readline defaults to STDOUT.
 1777: 
 1778:  -- Variable: int rl_prefer_env_winsize
 1779:      If non-zero, Readline gives values found in the `LINES' and
 1780:      `COLUMNS' environment variables greater precedence than values
 1781:      fetched from the kernel when computing the screen dimensions.
 1782: 
 1783:  -- Variable: rl_command_func_t * rl_last_func
 1784:      The address of the last command function Readline executed.  May
 1785:      be used to test whether or not a function is being executed twice
 1786:      in succession, for example.
 1787: 
 1788:  -- Variable: rl_hook_func_t * rl_startup_hook
 1789:      If non-zero, this is the address of a function to call just before
 1790:      `readline' prints the first prompt.
 1791: 
 1792:  -- Variable: rl_hook_func_t * rl_pre_input_hook
 1793:      If non-zero, this is the address of a function to call after the
 1794:      first prompt has been printed and just before `readline' starts
 1795:      reading input characters.
 1796: 
 1797:  -- Variable: rl_hook_func_t * rl_event_hook
 1798:      If non-zero, this is the address of a function to call periodically
 1799:      when Readline is waiting for terminal input.  By default, this
 1800:      will be called at most ten times a second if there is no keyboard
 1801:      input.
 1802: 
 1803:  -- Variable: rl_getc_func_t * rl_getc_function
 1804:      If non-zero, Readline will call indirectly through this pointer to
 1805:      get a character from the input stream.  By default, it is set to
 1806:      `rl_getc', the default Readline character input function (*note
 1807:      Character Input::).  In general, an application that sets
 1808:      RL_GETC_FUNCTION should consider setting RL_INPUT_AVAILABLE_HOOK
 1809:      as well.
 1810: 
 1811:  -- Variable: rl_hook_func_t * rl_signal_event_hook
 1812:      If non-zero, this is the address of a function to call if a read
 1813:      system call is interrupted when Readline is reading terminal input.
 1814: 
 1815:  -- Variable: rl_hook_func_t * rl_input_available_hook
 1816:      If non-zero, Readline will use this function's return value when
 1817:      it needs to determine whether or not there is available input on
 1818:      the current input source.  The default hook checks `rl_instream';
 1819:      if an application is using a different input source, it should set
 1820:      the hook appropriately.  Readline queries for available input when
 1821:      implementing intra-key-sequence timeouts during input and
 1822:      incremental searches.  This may use an application-specific
 1823:      timeout before returning a value; Readline uses the value passed
 1824:      to `rl_set_keyboard_input_timeout()' or the value of the
 1825:      user-settable KEYSEQ-TIMEOUT variable.  This is designed for use
 1826:      by applications using Readline's callback interface (*note
 1827:      Alternate Interface::), which may not use the traditional
 1828:      `read(2)' and file descriptor interface, or other applications
 1829:      using a different input mechanism.  If an application uses an
 1830:      input mechanism or hook that can potentially exceed the value of
 1831:      KEYSEQ-TIMEOUT, it should increase the timeout or set this hook
 1832:      appropriately even when not using the callback interface.  In
 1833:      general, an application that sets RL_GETC_FUNCTION should consider
 1834:      setting RL_INPUT_AVAILABLE_HOOK as well.
 1835: 
 1836:  -- Variable: rl_voidfunc_t * rl_redisplay_function
 1837:      If non-zero, Readline will call indirectly through this pointer to
 1838:      update the display with the current contents of the editing buffer.
 1839:      By default, it is set to `rl_redisplay', the default Readline
 1840:      redisplay function (*note Redisplay::).
 1841: 
 1842:  -- Variable: rl_vintfunc_t * rl_prep_term_function
 1843:      If non-zero, Readline will call indirectly through this pointer to
 1844:      initialize the terminal.  The function takes a single argument, an
 1845:      `int' flag that says whether or not to use eight-bit characters.
 1846:      By default, this is set to `rl_prep_terminal' (*note Terminal
 1847:      Management::).
 1848: 
 1849:  -- Variable: rl_voidfunc_t * rl_deprep_term_function
 1850:      If non-zero, Readline will call indirectly through this pointer to
 1851:      reset the terminal.  This function should undo the effects of
 1852:      `rl_prep_term_function'.  By default, this is set to
 1853:      `rl_deprep_terminal' (*note Terminal Management::).
 1854: 
 1855:  -- Variable: Keymap rl_executing_keymap
 1856:      This variable is set to the keymap (*note Keymaps::) in which the
 1857:      currently executing readline function was found.
 1858: 
 1859:  -- Variable: Keymap rl_binding_keymap
 1860:      This variable is set to the keymap (*note Keymaps::) in which the
 1861:      last key binding occurred.
 1862: 
 1863:  -- Variable: char * rl_executing_macro
 1864:      This variable is set to the text of any currently-executing macro.
 1865: 
 1866:  -- Variable: int rl_executing_key
 1867:      The key that caused the dispatch to the currently-executing
 1868:      Readline function.
 1869: 
 1870:  -- Variable: char * rl_executing_keyseq
 1871:      The full key sequence that caused the dispatch to the
 1872:      currently-executing Readline function.
 1873: 
 1874:  -- Variable: int rl_key_sequence_length
 1875:      The number of characters in RL_EXECUTING_KEYSEQ.
 1876: 
 1877:  -- Variable: int rl_readline_state
 1878:      A variable with bit values that encapsulate the current Readline
 1879:      state.  A bit is set with the `RL_SETSTATE' macro, and unset with
 1880:      the `RL_UNSETSTATE' macro.  Use the `RL_ISSTATE' macro to test
 1881:      whether a particular state bit is set.  Current state bits include:
 1882: 
 1883:     `RL_STATE_NONE'
 1884:           Readline has not yet been called, nor has it begun to
 1885:           initialize.
 1886: 
 1887:     `RL_STATE_INITIALIZING'
 1888:           Readline is initializing its internal data structures.
 1889: 
 1890:     `RL_STATE_INITIALIZED'
 1891:           Readline has completed its initialization.
 1892: 
 1893:     `RL_STATE_TERMPREPPED'
 1894:           Readline has modified the terminal modes to do its own input
 1895:           and redisplay.
 1896: 
 1897:     `RL_STATE_READCMD'
 1898:           Readline is reading a command from the keyboard.
 1899: 
 1900:     `RL_STATE_METANEXT'
 1901:           Readline is reading more input after reading the meta-prefix
 1902:           character.
 1903: 
 1904:     `RL_STATE_DISPATCHING'
 1905:           Readline is dispatching to a command.
 1906: 
 1907:     `RL_STATE_MOREINPUT'
 1908:           Readline is reading more input while executing an editing
 1909:           command.
 1910: 
 1911:     `RL_STATE_ISEARCH'
 1912:           Readline is performing an incremental history search.
 1913: 
 1914:     `RL_STATE_NSEARCH'
 1915:           Readline is performing a non-incremental history search.
 1916: 
 1917:     `RL_STATE_SEARCH'
 1918:           Readline is searching backward or forward through the history
 1919:           for a string.
 1920: 
 1921:     `RL_STATE_NUMERICARG'
 1922:           Readline is reading a numeric argument.
 1923: 
 1924:     `RL_STATE_MACROINPUT'
 1925:           Readline is currently getting its input from a
 1926:           previously-defined keyboard macro.
 1927: 
 1928:     `RL_STATE_MACRODEF'
 1929:           Readline is currently reading characters defining a keyboard
 1930:           macro.
 1931: 
 1932:     `RL_STATE_OVERWRITE'
 1933:           Readline is in overwrite mode.
 1934: 
 1935:     `RL_STATE_COMPLETING'
 1936:           Readline is performing word completion.
 1937: 
 1938:     `RL_STATE_SIGHANDLER'
 1939:           Readline is currently executing the readline signal handler.
 1940: 
 1941:     `RL_STATE_UNDOING'
 1942:           Readline is performing an undo.
 1943: 
 1944:     `RL_STATE_INPUTPENDING'
 1945:           Readline has input pending due to a call to
 1946:           `rl_execute_next()'.
 1947: 
 1948:     `RL_STATE_TTYCSAVED'
 1949:           Readline has saved the values of the terminal's special
 1950:           characters.
 1951: 
 1952:     `RL_STATE_CALLBACK'
 1953:           Readline is currently using the alternate (callback) interface
 1954:           (*note Alternate Interface::).
 1955: 
 1956:     `RL_STATE_VIMOTION'
 1957:           Readline is reading the argument to a vi-mode "motion"
 1958:           command.
 1959: 
 1960:     `RL_STATE_MULTIKEY'
 1961:           Readline is reading a multiple-keystroke command.
 1962: 
 1963:     `RL_STATE_VICMDONCE'
 1964:           Readline has entered vi command (movement) mode at least one
 1965:           time during the current call to `readline()'.
 1966: 
 1967:     `RL_STATE_DONE'
 1968:           Readline has read a key sequence bound to `accept-line' and
 1969:           is about to return the line to the caller.
 1970: 
 1971: 
 1972:  -- Variable: int rl_explicit_arg
 1973:      Set to a non-zero value if an explicit numeric argument was
 1974:      specified by the user.  Only valid in a bindable command function.
 1975: 
 1976:  -- Variable: int rl_numeric_arg
 1977:      Set to the value of any numeric argument explicitly specified by
 1978:      the user before executing the current Readline function.  Only
 1979:      valid in a bindable command function.
 1980: 
 1981:  -- Variable: int rl_editing_mode
 1982:      Set to a value denoting Readline's current editing mode.  A value
 1983:      of 1 means Readline is currently in emacs mode; 0 means that vi
 1984:      mode is active.
 1985: 
 1986: 
 1987: File: readline.info,  Node: Readline Convenience Functions,  Next: Readline Signal Handling,  Prev: Readline Variables,  Up: Programming with GNU Readline
 1988: 
 1989: 2.4 Readline Convenience Functions
 1990: ==================================
 1991: 
 1992: * Menu:
 1993: 
 1994: * Function Naming::	How to give a function you write a name.
 1995: * Keymaps::		Making keymaps.
 1996: * Binding Keys::	Changing Keymaps.
 1997: * Associating Function Names and Bindings::	Translate function names to
 1998: 						key sequences.
 1999: * Allowing Undoing::	How to make your functions undoable.
 2000: * Redisplay::		Functions to control line display.
 2001: * Modifying Text::	Functions to modify `rl_line_buffer'.
 2002: * Character Input::	Functions to read keyboard input.
 2003: * Terminal Management::	Functions to manage terminal settings.
 2004: * Utility Functions::	Generally useful functions and hooks.
 2005: * Miscellaneous Functions::	Functions that don't fall into any category.
 2006: * Alternate Interface::	Using Readline in a `callback' fashion.
 2007: * A Readline Example::		An example Readline function.
 2008: * Alternate Interface Example::	An example program using the alternate interface.
 2009: 
 2010: 
 2011: File: readline.info,  Node: Function Naming,  Next: Keymaps,  Up: Readline Convenience Functions
 2012: 
 2013: 2.4.1 Naming a Function
 2014: -----------------------
 2015: 
 2016: The user can dynamically change the bindings of keys while using
 2017: Readline.  This is done by representing the function with a descriptive
 2018: name.  The user is able to type the descriptive name when referring to
 2019: the function.  Thus, in an init file, one might find
 2020: 
 2021:      Meta-Rubout:	backward-kill-word
 2022: 
 2023:    This binds the keystroke <Meta-Rubout> to the function
 2024: _descriptively_ named `backward-kill-word'.  You, as the programmer,
 2025: should bind the functions you write to descriptive names as well.
 2026: Readline provides a function for doing that:
 2027: 
 2028:  -- Function: int rl_add_defun (const char *name, rl_command_func_t
 2029:           *function, int key)
 2030:      Add NAME to the list of named functions.  Make FUNCTION be the
 2031:      function that gets called.  If KEY is not -1, then bind it to
 2032:      FUNCTION using `rl_bind_key()'.
 2033: 
 2034:    Using this function alone is sufficient for most applications.  It
 2035: is the recommended way to add a few functions to the default functions
 2036: that Readline has built in.  If you need to do something other than
 2037: adding a function to Readline, you may need to use the underlying
 2038: functions described below.
 2039: 
 2040: 
 2041: File: readline.info,  Node: Keymaps,  Next: Binding Keys,  Prev: Function Naming,  Up: Readline Convenience Functions
 2042: 
 2043: 2.4.2 Selecting a Keymap
 2044: ------------------------
 2045: 
 2046: Key bindings take place on a "keymap".  The keymap is the association
 2047: between the keys that the user types and the functions that get run.
 2048: You can make your own keymaps, copy existing keymaps, and tell Readline
 2049: which keymap to use.
 2050: 
 2051:  -- Function: Keymap rl_make_bare_keymap (void)
 2052:      Returns a new, empty keymap.  The space for the keymap is
 2053:      allocated with `malloc()'; the caller should free it by calling
 2054:      `rl_free_keymap()' when done.
 2055: 
 2056:  -- Function: Keymap rl_copy_keymap (Keymap map)
 2057:      Return a new keymap which is a copy of MAP.
 2058: 
 2059:  -- Function: Keymap rl_make_keymap (void)
 2060:      Return a new keymap with the printing characters bound to
 2061:      rl_insert, the lowercase Meta characters bound to run their
 2062:      equivalents, and the Meta digits bound to produce numeric
 2063:      arguments.
 2064: 
 2065:  -- Function: void rl_discard_keymap (Keymap keymap)
 2066:      Free the storage associated with the data in KEYMAP.  The caller
 2067:      should free KEYMAP.
 2068: 
 2069:  -- Function: void rl_free_keymap (Keymap keymap)
 2070:      Free all storage associated with KEYMAP.  This calls
 2071:      `rl_discard_keymap' to free subordindate keymaps and macros.
 2072: 
 2073:    Readline has several internal keymaps.  These functions allow you to
 2074: change which keymap is active.
 2075: 
 2076:  -- Function: Keymap rl_get_keymap (void)
 2077:      Returns the currently active keymap.
 2078: 
 2079:  -- Function: void rl_set_keymap (Keymap keymap)
 2080:      Makes KEYMAP the currently active keymap.
 2081: 
 2082:  -- Function: Keymap rl_get_keymap_by_name (const char *name)
 2083:      Return the keymap matching NAME.  NAME is one which would be
 2084:      supplied in a `set keymap' inputrc line (*note Readline Init
 2085:      File::).
 2086: 
 2087:  -- Function: char * rl_get_keymap_name (Keymap keymap)
 2088:      Return the name matching KEYMAP.  NAME is one which would be
 2089:      supplied in a `set keymap' inputrc line (*note Readline Init
 2090:      File::).
 2091: 
 2092: 
 2093: File: readline.info,  Node: Binding Keys,  Next: Associating Function Names and Bindings,  Prev: Keymaps,  Up: Readline Convenience Functions
 2094: 
 2095: 2.4.3 Binding Keys
 2096: ------------------
 2097: 
 2098: Key sequences are associate with functions through the keymap.
 2099: Readline has several internal keymaps: `emacs_standard_keymap',
 2100: `emacs_meta_keymap', `emacs_ctlx_keymap', `vi_movement_keymap', and
 2101: `vi_insertion_keymap'.  `emacs_standard_keymap' is the default, and the
 2102: examples in this manual assume that.
 2103: 
 2104:    Since `readline()' installs a set of default key bindings the first
 2105: time it is called, there is always the danger that a custom binding
 2106: installed before the first call to `readline()' will be overridden.  An
 2107: alternate mechanism is to install custom key bindings in an
 2108: initialization function assigned to the `rl_startup_hook' variable
 2109: (*note Readline Variables::).
 2110: 
 2111:    These functions manage key bindings.
 2112: 
 2113:  -- Function: int rl_bind_key (int key, rl_command_func_t *function)
 2114:      Binds KEY to FUNCTION in the currently active keymap.  Returns
 2115:      non-zero in the case of an invalid KEY.
 2116: 
 2117:  -- Function: int rl_bind_key_in_map (int key, rl_command_func_t
 2118:           *function, Keymap map)
 2119:      Bind KEY to FUNCTION in MAP.  Returns non-zero in the case of an
 2120:      invalid KEY.
 2121: 
 2122:  -- Function: int rl_bind_key_if_unbound (int key, rl_command_func_t
 2123:           *function)
 2124:      Binds KEY to FUNCTION if it is not already bound in the currently
 2125:      active keymap.  Returns non-zero in the case of an invalid KEY or
 2126:      if KEY is already bound.
 2127: 
 2128:  -- Function: int rl_bind_key_if_unbound_in_map (int key,
 2129:           rl_command_func_t *function, Keymap map)
 2130:      Binds KEY to FUNCTION if it is not already bound in MAP.  Returns
 2131:      non-zero in the case of an invalid KEY or if KEY is already bound.
 2132: 
 2133:  -- Function: int rl_unbind_key (int key)
 2134:      Bind KEY to the null function in the currently active keymap.
 2135:      Returns non-zero in case of error.
 2136: 
 2137:  -- Function: int rl_unbind_key_in_map (int key, Keymap map)
 2138:      Bind KEY to the null function in MAP.  Returns non-zero in case of
 2139:      error.
 2140: 
 2141:  -- Function: int rl_unbind_function_in_map (rl_command_func_t
 2142:           *function, Keymap map)
 2143:      Unbind all keys that execute FUNCTION in MAP.
 2144: 
 2145:  -- Function: int rl_unbind_command_in_map (const char *command, Keymap
 2146:           map)
 2147:      Unbind all keys that are bound to COMMAND in MAP.
 2148: 
 2149:  -- Function: int rl_bind_keyseq (const char *keyseq, rl_command_func_t
 2150:           *function)
 2151:      Bind the key sequence represented by the string KEYSEQ to the
 2152:      function FUNCTION, beginning in the current keymap.  This makes
 2153:      new keymaps as necessary.  The return value is non-zero if KEYSEQ
 2154:      is invalid.
 2155: 
 2156:  -- Function: int rl_bind_keyseq_in_map (const char *keyseq,
 2157:           rl_command_func_t *function, Keymap map)
 2158:      Bind the key sequence represented by the string KEYSEQ to the
 2159:      function FUNCTION.  This makes new keymaps as necessary.  Initial
 2160:      bindings are performed in MAP.  The return value is non-zero if
 2161:      KEYSEQ is invalid.
 2162: 
 2163:  -- Function: int rl_set_key (const char *keyseq, rl_command_func_t
 2164:           *function, Keymap map)
 2165:      Equivalent to `rl_bind_keyseq_in_map'.
 2166: 
 2167:  -- Function: int rl_bind_keyseq_if_unbound (const char *keyseq,
 2168:           rl_command_func_t *function)
 2169:      Binds KEYSEQ to FUNCTION if it is not already bound in the
 2170:      currently active keymap.  Returns non-zero in the case of an
 2171:      invalid KEYSEQ or if KEYSEQ is already bound.
 2172: 
 2173:  -- Function: int rl_bind_keyseq_if_unbound_in_map (const char *keyseq,
 2174:           rl_command_func_t *function, Keymap map)
 2175:      Binds KEYSEQ to FUNCTION if it is not already bound in MAP.
 2176:      Returns non-zero in the case of an invalid KEYSEQ or if KEYSEQ is
 2177:      already bound.
 2178: 
 2179:  -- Function: int rl_generic_bind (int type, const char *keyseq, char
 2180:           *data, Keymap map)
 2181:      Bind the key sequence represented by the string KEYSEQ to the
 2182:      arbitrary pointer DATA.  TYPE says what kind of data is pointed to
 2183:      by DATA; this can be a function (`ISFUNC'), a macro (`ISMACR'), or
 2184:      a keymap (`ISKMAP').  This makes new keymaps as necessary.  The
 2185:      initial keymap in which to do bindings is MAP.
 2186: 
 2187:  -- Function: int rl_parse_and_bind (char *line)
 2188:      Parse LINE as if it had been read from the `inputrc' file and
 2189:      perform any key bindings and variable assignments found (*note
 2190:      Readline Init File::).
 2191: 
 2192:  -- Function: int rl_read_init_file (const char *filename)
 2193:      Read keybindings and variable assignments from FILENAME (*note
 2194:      Readline Init File::).
 2195: 
 2196: 
 2197: File: readline.info,  Node: Associating Function Names and Bindings,  Next: Allowing Undoing,  Prev: Binding Keys,  Up: Readline Convenience Functions
 2198: 
 2199: 2.4.4 Associating Function Names and Bindings
 2200: ---------------------------------------------
 2201: 
 2202: These functions allow you to find out what keys invoke named functions
 2203: and the functions invoked by a particular key sequence.  You may also
 2204: associate a new function name with an arbitrary function.
 2205: 
 2206:  -- Function: rl_command_func_t * rl_named_function (const char *name)
 2207:      Return the function with name NAME.
 2208: 
 2209:  -- Function: rl_command_func_t * rl_function_of_keyseq (const char
 2210:           *keyseq, Keymap map, int *type)
 2211:      Return the function invoked by KEYSEQ in keymap MAP.  If MAP is
 2212:      `NULL', the current keymap is used.  If TYPE is not `NULL', the
 2213:      type of the object is returned in the `int' variable it points to
 2214:      (one of `ISFUNC', `ISKMAP', or `ISMACR').
 2215: 
 2216:  -- Function: char ** rl_invoking_keyseqs (rl_command_func_t *function)
 2217:      Return an array of strings representing the key sequences used to
 2218:      invoke FUNCTION in the current keymap.
 2219: 
 2220:  -- Function: char ** rl_invoking_keyseqs_in_map (rl_command_func_t
 2221:           *function, Keymap map)
 2222:      Return an array of strings representing the key sequences used to
 2223:      invoke FUNCTION in the keymap MAP.
 2224: 
 2225:  -- Function: void rl_function_dumper (int readable)
 2226:      Print the readline function names and the key sequences currently
 2227:      bound to them to `rl_outstream'.  If READABLE is non-zero, the
 2228:      list is formatted in such a way that it can be made part of an
 2229:      `inputrc' file and re-read.
 2230: 
 2231:  -- Function: void rl_list_funmap_names (void)
 2232:      Print the names of all bindable Readline functions to
 2233:      `rl_outstream'.
 2234: 
 2235:  -- Function: const char ** rl_funmap_names (void)
 2236:      Return a NULL terminated array of known function names.  The array
 2237:      is sorted.  The array itself is allocated, but not the strings
 2238:      inside.  You should free the array, but not the pointers, using
 2239:      `free' or `rl_free' when you are done.
 2240: 
 2241:  -- Function: int rl_add_funmap_entry (const char *name,
 2242:           rl_command_func_t *function)
 2243:      Add NAME to the list of bindable Readline command names, and make
 2244:      FUNCTION the function to be called when NAME is invoked.
 2245: 
 2246: 
 2247: File: readline.info,  Node: Allowing Undoing,  Next: Redisplay,  Prev: Associating Function Names and Bindings,  Up: Readline Convenience Functions
 2248: 
 2249: 2.4.5 Allowing Undoing
 2250: ----------------------
 2251: 
 2252: Supporting the undo command is a painless thing, and makes your
 2253: functions much more useful.  It is certainly easy to try something if
 2254: you know you can undo it.
 2255: 
 2256:    If your function simply inserts text once, or deletes text once, and
 2257: uses `rl_insert_text()' or `rl_delete_text()' to do it, then undoing is
 2258: already done for you automatically.
 2259: 
 2260:    If you do multiple insertions or multiple deletions, or any
 2261: combination of these operations, you should group them together into
 2262: one operation.  This is done with `rl_begin_undo_group()' and
 2263: `rl_end_undo_group()'.
 2264: 
 2265:    The types of events that can be undone are:
 2266: 
 2267:      enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
 2268: 
 2269:    Notice that `UNDO_DELETE' means to insert some text, and
 2270: `UNDO_INSERT' means to delete some text.  That is, the undo code tells
 2271: what to undo, not how to undo it.  `UNDO_BEGIN' and `UNDO_END' are tags
 2272: added by `rl_begin_undo_group()' and `rl_end_undo_group()'.
 2273: 
 2274:  -- Function: int rl_begin_undo_group (void)
 2275:      Begins saving undo information in a group construct.  The undo
 2276:      information usually comes from calls to `rl_insert_text()' and
 2277:      `rl_delete_text()', but could be the result of calls to
 2278:      `rl_add_undo()'.
 2279: 
 2280:  -- Function: int rl_end_undo_group (void)
 2281:      Closes the current undo group started with `rl_begin_undo_group
 2282:      ()'.  There should be one call to `rl_end_undo_group()' for each
 2283:      call to `rl_begin_undo_group()'.
 2284: 
 2285:  -- Function: void rl_add_undo (enum undo_code what, int start, int
 2286:           end, char *text)
 2287:      Remember how to undo an event (according to WHAT).  The affected
 2288:      text runs from START to END, and encompasses TEXT.
 2289: 
 2290:  -- Function: void rl_free_undo_list (void)
 2291:      Free the existing undo list.
 2292: 
 2293:  -- Function: int rl_do_undo (void)
 2294:      Undo the first thing on the undo list.  Returns `0' if there was
 2295:      nothing to undo, non-zero if something was undone.
 2296: 
 2297:    Finally, if you neither insert nor delete text, but directly modify
 2298: the existing text (e.g., change its case), call `rl_modifying()' once,
 2299: just before you modify the text.  You must supply the indices of the
 2300: text range that you are going to modify.
 2301: 
 2302:  -- Function: int rl_modifying (int start, int end)
 2303:      Tell Readline to save the text between START and END as a single
 2304:      undo unit.  It is assumed that you will subsequently modify that
 2305:      text.
 2306: 
 2307: 
 2308: File: readline.info,  Node: Redisplay,  Next: Modifying Text,  Prev: Allowing Undoing,  Up: Readline Convenience Functions
 2309: 
 2310: 2.4.6 Redisplay
 2311: ---------------
 2312: 
 2313:  -- Function: void rl_redisplay (void)
 2314:      Change what's displayed on the screen to reflect the current
 2315:      contents of `rl_line_buffer'.
 2316: 
 2317:  -- Function: int rl_forced_update_display (void)
 2318:      Force the line to be updated and redisplayed, whether or not
 2319:      Readline thinks the screen display is correct.
 2320: 
 2321:  -- Function: int rl_on_new_line (void)
 2322:      Tell the update functions that we have moved onto a new (empty)
 2323:      line, usually after outputting a newline.
 2324: 
 2325:  -- Function: int rl_on_new_line_with_prompt (void)
 2326:      Tell the update functions that we have moved onto a new line, with
 2327:      RL_PROMPT already displayed.  This could be used by applications
 2328:      that want to output the prompt string themselves, but still need
 2329:      Readline to know the prompt string length for redisplay.  It
 2330:      should be used after setting RL_ALREADY_PROMPTED.
 2331: 
 2332:  -- Function: int rl_reset_line_state (void)
 2333:      Reset the display state to a clean state and redisplay the current
 2334:      line starting on a new line.
 2335: 
 2336:  -- Function: int rl_crlf (void)
 2337:      Move the cursor to the start of the next screen line.
 2338: 
 2339:  -- Function: int rl_show_char (int c)
 2340:      Display character C on `rl_outstream'.  If Readline has not been
 2341:      set to display meta characters directly, this will convert meta
 2342:      characters to a meta-prefixed key sequence.  This is intended for
 2343:      use by applications which wish to do their own redisplay.
 2344: 
 2345:  -- Function: int rl_message (const char *, ...)
 2346:      The arguments are a format string as would be supplied to `printf',
 2347:      possibly containing conversion specifications such as `%d', and
 2348:      any additional arguments necessary to satisfy the conversion
 2349:      specifications.  The resulting string is displayed in the "echo
 2350:      area".  The echo area is also used to display numeric arguments
 2351:      and search strings.  You should call `rl_save_prompt' to save the
 2352:      prompt information before calling this function.
 2353: 
 2354:  -- Function: int rl_clear_message (void)
 2355:      Clear the message in the echo area.  If the prompt was saved with
 2356:      a call to `rl_save_prompt' before the last call to `rl_message',
 2357:      call `rl_restore_prompt' before calling this function.
 2358: 
 2359:  -- Function: void rl_save_prompt (void)
 2360:      Save the local Readline prompt display state in preparation for
 2361:      displaying a new message in the message area with `rl_message()'.
 2362: 
 2363:  -- Function: void rl_restore_prompt (void)
 2364:      Restore the local Readline prompt display state saved by the most
 2365:      recent call to `rl_save_prompt'.  if `rl_save_prompt' was called
 2366:      to save the prompt before a call to `rl_message', this function
 2367:      should be called before the corresponding call to
 2368:      `rl_clear_message'.
 2369: 
 2370:  -- Function: int rl_expand_prompt (char *prompt)
 2371:      Expand any special character sequences in PROMPT and set up the
 2372:      local Readline prompt redisplay variables.  This function is
 2373:      called by `readline()'.  It may also be called to expand the
 2374:      primary prompt if the `rl_on_new_line_with_prompt()' function or
 2375:      `rl_already_prompted' variable is used.  It returns the number of
 2376:      visible characters on the last line of the (possibly multi-line)
 2377:      prompt.  Applications may indicate that the prompt contains
 2378:      characters that take up no physical screen space when displayed by
 2379:      bracketing a sequence of such characters with the special markers
 2380:      `RL_PROMPT_START_IGNORE' and `RL_PROMPT_END_IGNORE' (declared in
 2381:      `readline.h'.  This may be used to embed terminal-specific escape
 2382:      sequences in prompts.
 2383: 
 2384:  -- Function: int rl_set_prompt (const char *prompt)
 2385:      Make Readline use PROMPT for subsequent redisplay.  This calls
 2386:      `rl_expand_prompt()' to expand the prompt and sets `rl_prompt' to
 2387:      the result.
 2388: 
 2389: 
 2390: File: readline.info,  Node: Modifying Text,  Next: Character Input,  Prev: Redisplay,  Up: Readline Convenience Functions
 2391: 
 2392: 2.4.7 Modifying Text
 2393: --------------------
 2394: 
 2395:  -- Function: int rl_insert_text (const char *text)
 2396:      Insert TEXT into the line at the current cursor position.  Returns
 2397:      the number of characters inserted.
 2398: 
 2399:  -- Function: int rl_delete_text (int start, int end)
 2400:      Delete the text between START and END in the current line.
 2401:      Returns the number of characters deleted.
 2402: 
 2403:  -- Function: char * rl_copy_text (int start, int end)
 2404:      Return a copy of the text between START and END in the current
 2405:      line.
 2406: 
 2407:  -- Function: int rl_kill_text (int start, int end)
 2408:      Copy the text between START and END in the current line to the
 2409:      kill ring, appending or prepending to the last kill if the last
 2410:      command was a kill command.  The text is deleted.  If START is
 2411:      less than END, the text is appended, otherwise prepended.  If the
 2412:      last command was not a kill, a new kill ring slot is used.
 2413: 
 2414:  -- Function: int rl_push_macro_input (char *macro)
 2415:      Cause MACRO to be inserted into the line, as if it had been invoked
 2416:      by a key bound to a macro.  Not especially useful; use
 2417:      `rl_insert_text()' instead.
 2418: 
 2419: 
 2420: File: readline.info,  Node: Character Input,  Next: Terminal Management,  Prev: Modifying Text,  Up: Readline Convenience Functions
 2421: 
 2422: 2.4.8 Character Input
 2423: ---------------------
 2424: 
 2425:  -- Function: int rl_read_key (void)
 2426:      Return the next character available from Readline's current input
 2427:      stream.  This handles input inserted into the input stream via
 2428:      RL_PENDING_INPUT (*note Readline Variables::) and
 2429:      `rl_stuff_char()', macros, and characters read from the keyboard.
 2430:      While waiting for input, this function will call any function
 2431:      assigned to the `rl_event_hook' variable.
 2432: 
 2433:  -- Function: int rl_getc (FILE *stream)
 2434:      Return the next character available from STREAM, which is assumed
 2435:      to be the keyboard.
 2436: 
 2437:  -- Function: int rl_stuff_char (int c)
 2438:      Insert C into the Readline input stream.  It will be "read" before
 2439:      Readline attempts to read characters from the terminal with
 2440:      `rl_read_key()'.  Up to 512 characters may be pushed back.
 2441:      `rl_stuff_char' returns 1 if the character was successfully
 2442:      inserted; 0 otherwise.
 2443: 
 2444:  -- Function: int rl_execute_next (int c)
 2445:      Make C be the next command to be executed when `rl_read_key()' is
 2446:      called.  This sets RL_PENDING_INPUT.
 2447: 
 2448:  -- Function: int rl_clear_pending_input (void)
 2449:      Unset RL_PENDING_INPUT, effectively negating the effect of any
 2450:      previous call to `rl_execute_next()'.  This works only if the
 2451:      pending input has not already been read with `rl_read_key()'.
 2452: 
 2453:  -- Function: int rl_set_keyboard_input_timeout (int u)
 2454:      While waiting for keyboard input in `rl_read_key()', Readline will
 2455:      wait for U microseconds for input before calling any function
 2456:      assigned to `rl_event_hook'.  U must be greater than or equal to
 2457:      zero (a zero-length timeout is equivalent to a poll).  The default
 2458:      waiting period is one-tenth of a second.  Returns the old timeout
 2459:      value.
 2460: 
 2461: 
 2462: File: readline.info,  Node: Terminal Management,  Next: Utility Functions,  Prev: Character Input,  Up: Readline Convenience Functions
 2463: 
 2464: 2.4.9 Terminal Management
 2465: -------------------------
 2466: 
 2467:  -- Function: void rl_prep_terminal (int meta_flag)
 2468:      Modify the terminal settings for Readline's use, so `readline()'
 2469:      can read a single character at a time from the keyboard.  The
 2470:      META_FLAG argument should be non-zero if Readline should read
 2471:      eight-bit input.
 2472: 
 2473:  -- Function: void rl_deprep_terminal (void)
 2474:      Undo the effects of `rl_prep_terminal()', leaving the terminal in
 2475:      the state in which it was before the most recent call to
 2476:      `rl_prep_terminal()'.
 2477: 
 2478:  -- Function: void rl_tty_set_default_bindings (Keymap kmap)
 2479:      Read the operating system's terminal editing characters (as would
 2480:      be displayed by `stty') to their Readline equivalents.  The
 2481:      bindings are performed in KMAP.
 2482: 
 2483:  -- Function: void rl_tty_unset_default_bindings (Keymap kmap)
 2484:      Reset the bindings manipulated by `rl_tty_set_default_bindings' so
 2485:      that the terminal editing characters are bound to `rl_insert'.
 2486:      The bindings are performed in KMAP.
 2487: 
 2488:  -- Function: int rl_reset_terminal (const char *terminal_name)
 2489:      Reinitialize Readline's idea of the terminal settings using
 2490:      TERMINAL_NAME as the terminal type (e.g., `vt100').  If
 2491:      TERMINAL_NAME is `NULL', the value of the `TERM' environment
 2492:      variable is used.
 2493: 
 2494: 
 2495: File: readline.info,  Node: Utility Functions,  Next: Miscellaneous Functions,  Prev: Terminal Management,  Up: Readline Convenience Functions
 2496: 
 2497: 2.4.10 Utility Functions
 2498: ------------------------
 2499: 
 2500:  -- Function: int rl_save_state (struct readline_state *sp)
 2501:      Save a snapshot of Readline's internal state to SP.  The contents
 2502:      of the READLINE_STATE structure are documented in `readline.h'.
 2503:      The caller is responsible for allocating the structure.
 2504: 
 2505:  -- Function: int rl_restore_state (struct readline_state *sp)
 2506:      Restore Readline's internal state to that stored in SP, which must
 2507:      have been saved by a call to `rl_save_state'.  The contents of the
 2508:      READLINE_STATE structure are documented in `readline.h'.  The
 2509:      caller is responsible for freeing the structure.
 2510: 
 2511:  -- Function: void rl_free (void *mem)
 2512:      Deallocate the memory pointed to by MEM.  MEM must have been
 2513:      allocated by `malloc'.
 2514: 
 2515:  -- Function: void rl_replace_line (const char *text, int clear_undo)
 2516:      Replace the contents of `rl_line_buffer' with TEXT.  The point and
 2517:      mark are preserved, if possible.  If CLEAR_UNDO is non-zero, the
 2518:      undo list associated with the current line is cleared.
 2519: 
 2520:  -- Function: void rl_extend_line_buffer (int len)
 2521:      Ensure that `rl_line_buffer' has enough space to hold LEN
 2522:      characters, possibly reallocating it if necessary.
 2523: 
 2524:  -- Function: int rl_initialize (void)
 2525:      Initialize or re-initialize Readline's internal state.  It's not
 2526:      strictly necessary to call this; `readline()' calls it before
 2527:      reading any input.
 2528: 
 2529:  -- Function: int rl_ding (void)
 2530:      Ring the terminal bell, obeying the setting of `bell-style'.
 2531: 
 2532:  -- Function: int rl_alphabetic (int c)
 2533:      Return 1 if C is an alphabetic character.
 2534: 
 2535:  -- Function: void rl_display_match_list (char **matches, int len, int
 2536:           max)
 2537:      A convenience function for displaying a list of strings in
 2538:      columnar format on Readline's output stream.  `matches' is the list
 2539:      of strings, in argv format, such as a list of completion matches.
 2540:      `len' is the number of strings in `matches', and `max' is the
 2541:      length of the longest string in `matches'.  This function uses the
 2542:      setting of `print-completions-horizontally' to select how the
 2543:      matches are displayed (*note Readline Init File Syntax::).  When
 2544:      displaying completions, this function sets the number of columns
 2545:      used for display to the value of `completion-display-width', the
 2546:      value of the environment variable `COLUMNS', or the screen width,
 2547:      in that order.
 2548: 
 2549:    The following are implemented as macros, defined in `chardefs.h'.
 2550: Applications should refrain from using them.
 2551: 
 2552:  -- Function: int _rl_uppercase_p (int c)
 2553:      Return 1 if C is an uppercase alphabetic character.
 2554: 
 2555:  -- Function: int _rl_lowercase_p (int c)
 2556:      Return 1 if C is a lowercase alphabetic character.
 2557: 
 2558:  -- Function: int _rl_digit_p (int c)
 2559:      Return 1 if C is a numeric character.
 2560: 
 2561:  -- Function: int _rl_to_upper (int c)
 2562:      If C is a lowercase alphabetic character, return the corresponding
 2563:      uppercase character.
 2564: 
 2565:  -- Function: int _rl_to_lower (int c)
 2566:      If C is an uppercase alphabetic character, return the corresponding
 2567:      lowercase character.
 2568: 
 2569:  -- Function: int _rl_digit_value (int c)
 2570:      If C is a number, return the value it represents.
 2571: 
 2572: 
 2573: File: readline.info,  Node: Miscellaneous Functions,  Next: Alternate Interface,  Prev: Utility Functions,  Up: Readline Convenience Functions
 2574: 
 2575: 2.4.11 Miscellaneous Functions
 2576: ------------------------------
 2577: 
 2578:  -- Function: int rl_macro_bind (const char *keyseq, const char *macro,
 2579:           Keymap map)
 2580:      Bind the key sequence KEYSEQ to invoke the macro MACRO.  The
 2581:      binding is performed in MAP.  When KEYSEQ is invoked, the MACRO
 2582:      will be inserted into the line.  This function is deprecated; use
 2583:      `rl_generic_bind()' instead.
 2584: 
 2585:  -- Function: void rl_macro_dumper (int readable)
 2586:      Print the key sequences bound to macros and their values, using
 2587:      the current keymap, to `rl_outstream'.  If READABLE is non-zero,
 2588:      the list is formatted in such a way that it can be made part of an
 2589:      `inputrc' file and re-read.
 2590: 
 2591:  -- Function: int rl_variable_bind (const char *variable, const char
 2592:           *value)
 2593:      Make the Readline variable VARIABLE have VALUE.  This behaves as
 2594:      if the readline command `set VARIABLE VALUE' had been executed in
 2595:      an `inputrc' file (*note Readline Init File Syntax::).
 2596: 
 2597:  -- Function: char * rl_variable_value (const char *variable)
 2598:      Return a string representing the value of the Readline variable
 2599:      VARIABLE.  For boolean variables, this string is either `on' or
 2600:      `off'.
 2601: 
 2602:  -- Function: void rl_variable_dumper (int readable)
 2603:      Print the readline variable names and their current values to
 2604:      `rl_outstream'.  If READABLE is non-zero, the list is formatted in
 2605:      such a way that it can be made part of an `inputrc' file and
 2606:      re-read.
 2607: 
 2608:  -- Function: int rl_set_paren_blink_timeout (int u)
 2609:      Set the time interval (in microseconds) that Readline waits when
 2610:      showing a balancing character when `blink-matching-paren' has been
 2611:      enabled.
 2612: 
 2613:  -- Function: char * rl_get_termcap (const char *cap)
 2614:      Retrieve the string value of the termcap capability CAP.  Readline
 2615:      fetches the termcap entry for the current terminal name and uses
 2616:      those capabilities to move around the screen line and perform other
 2617:      terminal-specific operations, like erasing a line.  Readline does
 2618:      not use all of a terminal's capabilities, and this function will
 2619:      return values for only those capabilities Readline uses.
 2620: 
 2621:  -- Function: void rl_clear_history (void)
 2622:      Clear the history list by deleting all of the entries, in the same
 2623:      manner as the History library's `clear_history()' function.  This
 2624:      differs from `clear_history' because it frees private data
 2625:      Readline saves in the history list.
 2626: 
 2627: 
 2628: File: readline.info,  Node: Alternate Interface,  Next: A Readline Example,  Prev: Miscellaneous Functions,  Up: Readline Convenience Functions
 2629: 
 2630: 2.4.12 Alternate Interface
 2631: --------------------------
 2632: 
 2633: An alternate interface is available to plain `readline()'.  Some
 2634: applications need to interleave keyboard I/O with file, device, or
 2635: window system I/O, typically by using a main loop to `select()' on
 2636: various file descriptors.  To accommodate this need, readline can also
 2637: be invoked as a `callback' function from an event loop.  There are
 2638: functions available to make this easy.
 2639: 
 2640:  -- Function: void rl_callback_handler_install (const char *prompt,
 2641:           rl_vcpfunc_t *lhandler)
 2642:      Set up the terminal for readline I/O and display the initial
 2643:      expanded value of PROMPT.  Save the value of LHANDLER to use as a
 2644:      handler function to call when a complete line of input has been
 2645:      entered.  The handler function receives the text of the line as an
 2646:      argument.
 2647: 
 2648:  -- Function: void rl_callback_read_char (void)
 2649:      Whenever an application determines that keyboard input is
 2650:      available, it should call `rl_callback_read_char()', which will
 2651:      read the next character from the current input source.  If that
 2652:      character completes the line, `rl_callback_read_char' will invoke
 2653:      the LHANDLER function installed by `rl_callback_handler_install'
 2654:      to process the line.  Before calling the LHANDLER function, the
 2655:      terminal settings are reset to the values they had before calling
 2656:      `rl_callback_handler_install'.  If the LHANDLER function returns,
 2657:      and the line handler remains installed, the terminal settings are
 2658:      modified for Readline's use again.  `EOF' is indicated by calling
 2659:      LHANDLER with a `NULL' line.
 2660: 
 2661:  -- Function: void rl_callback_handler_remove (void)
 2662:      Restore the terminal to its initial state and remove the line
 2663:      handler.  This may be called from within a callback as well as
 2664:      independently.  If the LHANDLER installed by
 2665:      `rl_callback_handler_install' does not exit the program, either
 2666:      this function or the function referred to by the value of
 2667:      `rl_deprep_term_function' should be called before the program
 2668:      exits to reset the terminal settings.
 2669: 
 2670: 
 2671: File: readline.info,  Node: A Readline Example,  Next: Alternate Interface Example,  Prev: Alternate Interface,  Up: Readline Convenience Functions
 2672: 
 2673: 2.4.13 A Readline Example
 2674: -------------------------
 2675: 
 2676: Here is a function which changes lowercase characters to their uppercase
 2677: equivalents, and uppercase characters to lowercase.  If this function
 2678: was bound to `M-c', then typing `M-c' would change the case of the
 2679: character under point.  Typing `M-1 0 M-c' would change the case of the
 2680: following 10 characters, leaving the cursor on the last character
 2681: changed.
 2682: 
 2683:      /* Invert the case of the COUNT following characters. */
 2684:      int
 2685:      invert_case_line (count, key)
 2686:           int count, key;
 2687:      {
 2688:        register int start, end, i;
 2689: 
 2690:        start = rl_point;
 2691: 
 2692:        if (rl_point >= rl_end)
 2693:          return (0);
 2694: 
 2695:        if (count < 0)
 2696:          {
 2697:            direction = -1;
 2698:            count = -count;
 2699:          }
 2700:        else
 2701:          direction = 1;
 2702: 
 2703:        /* Find the end of the range to modify. */
 2704:        end = start + (count * direction);
 2705: 
 2706:        /* Force it to be within range. */
 2707:        if (end > rl_end)
 2708:          end = rl_end;
 2709:        else if (end < 0)
 2710:          end = 0;
 2711: 
 2712:        if (start == end)
 2713:          return (0);
 2714: 
 2715:        if (start > end)
 2716:          {
 2717:            int temp = start;
 2718:            start = end;
 2719:            end = temp;
 2720:          }
 2721: 
 2722:        /* Tell readline that we are modifying the line,
 2723:           so it will save the undo information. */
 2724:        rl_modifying (start, end);
 2725: 
 2726:        for (i = start; i != end; i++)
 2727:          {
 2728:            if (_rl_uppercase_p (rl_line_buffer[i]))
 2729:              rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]);
 2730:            else if (_rl_lowercase_p (rl_line_buffer[i]))
 2731:              rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
 2732:          }
 2733:        /* Move point to on top of the last character changed. */
 2734:        rl_point = (direction == 1) ? end - 1 : start;
 2735:        return (0);
 2736:      }
 2737: 
 2738: 
 2739: File: readline.info,  Node: Alternate Interface Example,  Prev: A Readline Example,  Up: Readline Convenience Functions
 2740: 
 2741: 2.4.14 Alternate Interface Example
 2742: ----------------------------------
 2743: 
 2744: Here is a complete program that illustrates Readline's alternate
 2745: interface.  It reads lines from the terminal and displays them,
 2746: providing the standard history and TAB completion functions.  It
 2747: understands the EOF character or "exit" to exit the program.
 2748: 
 2749:      /* Standard include files. stdio.h is required. */
 2750:      #include <stdlib.h>
 2751:      #include <unistd.h>
 2752: 
 2753:      /* Used for select(2) */
 2754:      #include <sys/types.h>
 2755:      #include <sys/select.h>
 2756: 
 2757:      #include <stdio.h>
 2758: 
 2759:      /* Standard readline include files. */
 2760:      #include <readline/readline.h>
 2761:      #include <readline/history.h>
 2762: 
 2763:      static void cb_linehandler (char *);
 2764: 
 2765:      int running;
 2766:      const char *prompt = "rltest$ ";
 2767: 
 2768:      /* Callback function called for each line when accept-line executed, EOF
 2769:         seen, or EOF character read.  This sets a flag and returns; it could
 2770:         also call exit(3). */
 2771:      static void
 2772:      cb_linehandler (char *line)
 2773:      {
 2774:        /* Can use ^D (stty eof) or `exit' to exit. */
 2775:        if (line == NULL || strcmp (line, "exit") == 0)
 2776:          {
 2777:            if (line == 0)
 2778:              printf ("\n");
 2779:            printf ("exit\n");
 2780:            /* This function needs to be called to reset the terminal settings,
 2781:               and calling it from the line handler keeps one extra prompt from
 2782:               being displayed. */
 2783:            rl_callback_handler_remove ();
 2784: 
 2785:            running = 0;
 2786:          }
 2787:        else
 2788:          {
 2789:            if (*line)
 2790:              add_history (line);
 2791:            printf ("input line: %s\n", line);
 2792:            free (line);
 2793:          }
 2794:      }
 2795: 
 2796:      int
 2797:      main (int c, char **v)
 2798:      {
 2799:        fd_set fds;
 2800:        int r;
 2801: 
 2802:        /* Install the line handler. */
 2803:        rl_callback_handler_install (prompt, cb_linehandler);
 2804: 
 2805:        /* Enter a simple event loop.  This waits until something is available
 2806:           to read on readline's input stream (defaults to standard input) and
 2807:           calls the builtin character read callback to read it.  It does not
 2808:           have to modify the user's terminal settings. */
 2809:        running = 1;
 2810:        while (running)
 2811:          {
 2812:            FD_ZERO (&fds);
 2813:            FD_SET (fileno (rl_instream), &fds);
 2814: 
 2815:            r = select (FD_SETSIZE, &fds, NULL, NULL, NULL);
 2816:            if (r < 0)
 2817:              {
 2818:                perror ("rltest: select");
 2819:                rl_callback_handler_remove ();
 2820:                break;
 2821:              }
 2822: 
 2823:            if (FD_ISSET (fileno (rl_instream), &fds))
 2824:              rl_callback_read_char ();
 2825:          }
 2826: 
 2827:        printf ("rltest: Event loop has exited\n");
 2828:        return 0;
 2829:      }
 2830: 
 2831: 
 2832: File: readline.info,  Node: Readline Signal Handling,  Next: Custom Completers,  Prev: Readline Convenience Functions,  Up: Programming with GNU Readline
 2833: 
 2834: 2.5 Readline Signal Handling
 2835: ============================
 2836: 
 2837: Signals are asynchronous events sent to a process by the Unix kernel,
 2838: sometimes on behalf of another process.  They are intended to indicate
 2839: exceptional events, like a user pressing the interrupt key on his
 2840: terminal, or a network connection being broken.  There is a class of
 2841: signals that can be sent to the process currently reading input from
 2842: the keyboard.  Since Readline changes the terminal attributes when it
 2843: is called, it needs to perform special processing when such a signal is
 2844: received in order to restore the terminal to a sane state, or provide
 2845: application writers with functions to do so manually.
 2846: 
 2847:    Readline contains an internal signal handler that is installed for a
 2848: number of signals (`SIGINT', `SIGQUIT', `SIGTERM', `SIGHUP', `SIGALRM',
 2849: `SIGTSTP', `SIGTTIN', and `SIGTTOU').  When one of these signals is
 2850: received, the signal handler will reset the terminal attributes to
 2851: those that were in effect before `readline()' was called, reset the
 2852: signal handling to what it was before `readline()' was called, and
 2853: resend the signal to the calling application.  If and when the calling
 2854: application's signal handler returns, Readline will reinitialize the
 2855: terminal and continue to accept input.  When a `SIGINT' is received,
 2856: the Readline signal handler performs some additional work, which will
 2857: cause any partially-entered line to be aborted (see the description of
 2858: `rl_free_line_state()' below).
 2859: 
 2860:    There is an additional Readline signal handler, for `SIGWINCH', which
 2861: the kernel sends to a process whenever the terminal's size changes (for
 2862: example, if a user resizes an `xterm').  The Readline `SIGWINCH'
 2863: handler updates Readline's internal screen size information, and then
 2864: calls any `SIGWINCH' signal handler the calling application has
 2865: installed.  Readline calls the application's `SIGWINCH' signal handler
 2866: without resetting the terminal to its original state.  If the
 2867: application's signal handler does more than update its idea of the
 2868: terminal size and return (for example, a `longjmp' back to a main
 2869: processing loop), it _must_ call `rl_cleanup_after_signal()' (described
 2870: below), to restore the terminal state.
 2871: 
 2872:    Readline provides two variables that allow application writers to
 2873: control whether or not it will catch certain signals and act on them
 2874: when they are received.  It is important that applications change the
 2875: values of these variables only when calling `readline()', not in a
 2876: signal handler, so Readline's internal signal state is not corrupted.
 2877: 
 2878:  -- Variable: int rl_catch_signals
 2879:      If this variable is non-zero, Readline will install signal
 2880:      handlers for `SIGINT', `SIGQUIT', `SIGTERM', `SIGHUP', `SIGALRM',
 2881:      `SIGTSTP', `SIGTTIN', and `SIGTTOU'.
 2882: 
 2883:      The default value of `rl_catch_signals' is 1.
 2884: 
 2885:  -- Variable: int rl_catch_sigwinch
 2886:      If this variable is set to a non-zero value, Readline will install
 2887:      a signal handler for `SIGWINCH'.
 2888: 
 2889:      The default value of `rl_catch_sigwinch' is 1.
 2890: 
 2891:  -- Variable: int rl_change_environment
 2892:      If this variable is set to a non-zero value, and Readline is
 2893:      handling `SIGWINCH', Readline will modify the LINES and COLUMNS
 2894:      environment variables upon receipt of a `SIGWINCH'
 2895: 
 2896:      The default value of `rl_change_environment' is 1.
 2897: 
 2898:    If an application does not wish to have Readline catch any signals,
 2899: or to handle signals other than those Readline catches (`SIGHUP', for
 2900: example), Readline provides convenience functions to do the necessary
 2901: terminal and internal state cleanup upon receipt of a signal.
 2902: 
 2903:  -- Function: void rl_cleanup_after_signal (void)
 2904:      This function will reset the state of the terminal to what it was
 2905:      before `readline()' was called, and remove the Readline signal
 2906:      handlers for all signals, depending on the values of
 2907:      `rl_catch_signals' and `rl_catch_sigwinch'.
 2908: 
 2909:  -- Function: void rl_free_line_state (void)
 2910:      This will free any partial state associated with the current input
 2911:      line (undo information, any partial history entry, any
 2912:      partially-entered keyboard macro, and any partially-entered
 2913:      numeric argument).  This should be called before
 2914:      `rl_cleanup_after_signal()'.  The Readline signal handler for
 2915:      `SIGINT' calls this to abort the current input line.
 2916: 
 2917:  -- Function: void rl_reset_after_signal (void)
 2918:      This will reinitialize the terminal and reinstall any Readline
 2919:      signal handlers, depending on the values of `rl_catch_signals' and
 2920:      `rl_catch_sigwinch'.
 2921: 
 2922:    If an application does not wish Readline to catch `SIGWINCH', it may
 2923: call `rl_resize_terminal()' or `rl_set_screen_size()' to force Readline
 2924: to update its idea of the terminal size when a `SIGWINCH' is received.
 2925: 
 2926:  -- Function: void rl_echo_signal_char (int sig)
 2927:      If an application wishes to install its own signal handlers, but
 2928:      still have readline display characters that generate signals,
 2929:      calling this function with SIG set to `SIGINT', `SIGQUIT', or
 2930:      `SIGTSTP' will display the character generating that signal.
 2931: 
 2932:  -- Function: void rl_resize_terminal (void)
 2933:      Update Readline's internal screen size by reading values from the
 2934:      kernel.
 2935: 
 2936:  -- Function: void rl_set_screen_size (int rows, int cols)
 2937:      Set Readline's idea of the terminal size to ROWS rows and COLS
 2938:      columns.  If either ROWS or COLUMNS is less than or equal to 0,
 2939:      Readline's idea of that terminal dimension is unchanged.
 2940: 
 2941:    If an application does not want to install a `SIGWINCH' handler, but
 2942: is still interested in the screen dimensions, Readline's idea of the
 2943: screen size may be queried.
 2944: 
 2945:  -- Function: void rl_get_screen_size (int *rows, int *cols)
 2946:      Return Readline's idea of the terminal's size in the variables
 2947:      pointed to by the arguments.
 2948: 
 2949:  -- Function: void rl_reset_screen_size (void)
 2950:      Cause Readline to reobtain the screen size and recalculate its
 2951:      dimensions.
 2952: 
 2953:    The following functions install and remove Readline's signal
 2954: handlers.
 2955: 
 2956:  -- Function: int rl_set_signals (void)
 2957:      Install Readline's signal handler for `SIGINT', `SIGQUIT',
 2958:      `SIGTERM', `SIGHUP', `SIGALRM', `SIGTSTP', `SIGTTIN', `SIGTTOU',
 2959:      and `SIGWINCH', depending on the values of `rl_catch_signals' and
 2960:      `rl_catch_sigwinch'.
 2961: 
 2962:  -- Function: int rl_clear_signals (void)
 2963:      Remove all of the Readline signal handlers installed by
 2964:      `rl_set_signals()'.
 2965: 
 2966: 
 2967: File: readline.info,  Node: Custom Completers,  Prev: Readline Signal Handling,  Up: Programming with GNU Readline
 2968: 
 2969: 2.6 Custom Completers
 2970: =====================
 2971: 
 2972: Typically, a program that reads commands from the user has a way of
 2973: disambiguating commands and data.  If your program is one of these, then
 2974: it can provide completion for commands, data, or both.  The following
 2975: sections describe how your program and Readline cooperate to provide
 2976: this service.
 2977: 
 2978: * Menu:
 2979: 
 2980: * How Completing Works::	The logic used to do completion.
 2981: * Completion Functions::	Functions provided by Readline.
 2982: * Completion Variables::	Variables which control completion.
 2983: * A Short Completion Example::	An example of writing completer subroutines.
 2984: 
 2985: 
 2986: File: readline.info,  Node: How Completing Works,  Next: Completion Functions,  Up: Custom Completers
 2987: 
 2988: 2.6.1 How Completing Works
 2989: --------------------------
 2990: 
 2991: In order to complete some text, the full list of possible completions
 2992: must be available.  That is, it is not possible to accurately expand a
 2993: partial word without knowing all of the possible words which make sense
 2994: in that context.  The Readline library provides the user interface to
 2995: completion, and two of the most common completion functions:  filename
 2996: and username.  For completing other types of text, you must write your
 2997: own completion function.  This section describes exactly what such
 2998: functions must do, and provides an example.
 2999: 
 3000:    There are three major functions used to perform completion:
 3001: 
 3002:   1. The user-interface function `rl_complete()'.  This function is
 3003:      called with the same arguments as other bindable Readline
 3004:      functions: COUNT and INVOKING_KEY.  It isolates the word to be
 3005:      completed and calls `rl_completion_matches()' to generate a list
 3006:      of possible completions.  It then either lists the possible
 3007:      completions, inserts the possible completions, or actually
 3008:      performs the completion, depending on which behavior is desired.
 3009: 
 3010:   2. The internal function `rl_completion_matches()' uses an
 3011:      application-supplied "generator" function to generate the list of
 3012:      possible matches, and then returns the array of these matches.
 3013:      The caller should place the address of its generator function in
 3014:      `rl_completion_entry_function'.
 3015: 
 3016:   3. The generator function is called repeatedly from
 3017:      `rl_completion_matches()', returning a string each time.  The
 3018:      arguments to the generator function are TEXT and STATE.  TEXT is
 3019:      the partial word to be completed.  STATE is zero the first time
 3020:      the function is called, allowing the generator to perform any
 3021:      necessary initialization, and a positive non-zero integer for each
 3022:      subsequent call.  The generator function returns `(char *)NULL' to
 3023:      inform `rl_completion_matches()' that there are no more
 3024:      possibilities left.  Usually the generator function computes the
 3025:      list of possible completions when STATE is zero, and returns them
 3026:      one at a time on subsequent calls.  Each string the generator
 3027:      function returns as a match must be allocated with `malloc()';
 3028:      Readline frees the strings when it has finished with them.  Such a
 3029:      generator function is referred to as an "application-specific
 3030:      completion function".
 3031: 
 3032: 
 3033:  -- Function: int rl_complete (int ignore, int invoking_key)
 3034:      Complete the word at or before point.  You have supplied the
 3035:      function that does the initial simple matching selection algorithm
 3036:      (see `rl_completion_matches()').  The default is to do filename
 3037:      completion.
 3038: 
 3039:  -- Variable: rl_compentry_func_t * rl_completion_entry_function
 3040:      This is a pointer to the generator function for
 3041:      `rl_completion_matches()'.  If the value of
 3042:      `rl_completion_entry_function' is `NULL' then the default filename
 3043:      generator function, `rl_filename_completion_function()', is used.
 3044:      An "application-specific completion function" is a function whose
 3045:      address is assigned to `rl_completion_entry_function' and whose
 3046:      return values are used to  generate possible completions.
 3047: 
 3048: 
 3049: File: readline.info,  Node: Completion Functions,  Next: Completion Variables,  Prev: How Completing Works,  Up: Custom Completers
 3050: 
 3051: 2.6.2 Completion Functions
 3052: --------------------------
 3053: 
 3054: Here is the complete list of callable completion functions present in
 3055: Readline.
 3056: 
 3057:  -- Function: int rl_complete_internal (int what_to_do)
 3058:      Complete the word at or before point.  WHAT_TO_DO says what to do
 3059:      with the completion.  A value of `?' means list the possible
 3060:      completions.  `TAB' means do standard completion.  `*' means
 3061:      insert all of the possible completions.  `!' means to display all
 3062:      of the possible completions, if there is more than one, as well as
 3063:      performing partial completion.  `@' is similar to `!', but
 3064:      possible completions are not listed if the possible completions
 3065:      share a common prefix.
 3066: 
 3067:  -- Function: int rl_complete (int ignore, int invoking_key)
 3068:      Complete the word at or before point.  You have supplied the
 3069:      function that does the initial simple matching selection algorithm
 3070:      (see `rl_completion_matches()' and `rl_completion_entry_function').
 3071:      The default is to do filename completion.  This calls
 3072:      `rl_complete_internal()' with an argument depending on
 3073:      INVOKING_KEY.
 3074: 
 3075:  -- Function: int rl_possible_completions (int count, int invoking_key)
 3076:      List the possible completions.  See description of `rl_complete
 3077:      ()'.  This calls `rl_complete_internal()' with an argument of `?'.
 3078: 
 3079:  -- Function: int rl_insert_completions (int count, int invoking_key)
 3080:      Insert the list of possible completions into the line, deleting the
 3081:      partially-completed word.  See description of `rl_complete()'.
 3082:      This calls `rl_complete_internal()' with an argument of `*'.
 3083: 
 3084:  -- Function: int rl_completion_mode (rl_command_func_t *cfunc)
 3085:      Returns the appropriate value to pass to `rl_complete_internal()'
 3086:      depending on whether CFUNC was called twice in succession and the
 3087:      values of the `show-all-if-ambiguous' and `show-all-if-unmodified'
 3088:      variables.  Application-specific completion functions may use this
 3089:      function to present the same interface as `rl_complete()'.
 3090: 
 3091:  -- Function: char ** rl_completion_matches (const char *text,
 3092:           rl_compentry_func_t *entry_func)
 3093:      Returns an array of strings which is a list of completions for
 3094:      TEXT.  If there are no completions, returns `NULL'.  The first
 3095:      entry in the returned array is the substitution for TEXT.  The
 3096:      remaining entries are the possible completions.  The array is
 3097:      terminated with a `NULL' pointer.
 3098: 
 3099:      ENTRY_FUNC is a function of two args, and returns a `char *'.  The
 3100:      first argument is TEXT.  The second is a state argument; it is
 3101:      zero on the first call, and non-zero on subsequent calls.
 3102:      ENTRY_FUNC returns a `NULL'  pointer to the caller when there are
 3103:      no more matches.
 3104: 
 3105:  -- Function: char * rl_filename_completion_function (const char *text,
 3106:           int state)
 3107:      A generator function for filename completion in the general case.
 3108:      TEXT is a partial filename.  The Bash source is a useful reference
 3109:      for writing application-specific completion functions (the Bash
 3110:      completion functions call this and other Readline functions).
 3111: 
 3112:  -- Function: char * rl_username_completion_function (const char *text,
 3113:           int state)
 3114:      A completion generator for usernames.  TEXT contains a partial
 3115:      username preceded by a random character (usually `~').  As with all
 3116:      completion generators, STATE is zero on the first call and non-zero
 3117:      for subsequent calls.
 3118: 
 3119: 
 3120: File: readline.info,  Node: Completion Variables,  Next: A Short Completion Example,  Prev: Completion Functions,  Up: Custom Completers
 3121: 
 3122: 2.6.3 Completion Variables
 3123: --------------------------
 3124: 
 3125:  -- Variable: rl_compentry_func_t * rl_completion_entry_function
 3126:      A pointer to the generator function for `rl_completion_matches()'.
 3127:      `NULL' means to use `rl_filename_completion_function()', the
 3128:      default filename completer.
 3129: 
 3130:  -- Variable: rl_completion_func_t * rl_attempted_completion_function
 3131:      A pointer to an alternative function to create matches.  The
 3132:      function is called with TEXT, START, and END.  START and END are
 3133:      indices in `rl_line_buffer' defining the boundaries of TEXT, which
 3134:      is a character string.  If this function exists and returns
 3135:      `NULL', or if this variable is set to `NULL', then `rl_complete()'
 3136:      will call the value of `rl_completion_entry_function' to generate
 3137:      matches, otherwise the array of strings returned will be used.  If
 3138:      this function sets the `rl_attempted_completion_over' variable to
 3139:      a non-zero value, Readline will not perform its default completion
 3140:      even if this function returns no matches.
 3141: 
 3142:  -- Variable: rl_quote_func_t * rl_filename_quoting_function
 3143:      A pointer to a function that will quote a filename in an
 3144:      application-specific fashion.  This is called if filename
 3145:      completion is being attempted and one of the characters in
 3146:      `rl_filename_quote_characters' appears in a completed filename.
 3147:      The function is called with TEXT, MATCH_TYPE, and QUOTE_POINTER.
 3148:      The TEXT is the filename to be quoted.  The MATCH_TYPE is either
 3149:      `SINGLE_MATCH', if there is only one completion match, or
 3150:      `MULT_MATCH'.  Some functions use this to decide whether or not to
 3151:      insert a closing quote character.  The QUOTE_POINTER is a pointer
 3152:      to any opening quote character the user typed.  Some functions
 3153:      choose to reset this character.
 3154: 
 3155:  -- Variable: rl_dequote_func_t * rl_filename_dequoting_function
 3156:      A pointer to a function that will remove application-specific
 3157:      quoting characters from a filename before completion is attempted,
 3158:      so those characters do not interfere with matching the text
 3159:      against names in the filesystem.  It is called with TEXT, the text
 3160:      of the word to be dequoted, and QUOTE_CHAR, which is the quoting
 3161:      character that delimits the filename (usually `'' or `"').  If
 3162:      QUOTE_CHAR is zero, the filename was not in an embedded string.
 3163: 
 3164:  -- Variable: rl_linebuf_func_t * rl_char_is_quoted_p
 3165:      A pointer to a function to call that determines whether or not a
 3166:      specific character in the line buffer is quoted, according to
 3167:      whatever quoting mechanism the program calling Readline uses.  The
 3168:      function is called with two arguments: TEXT, the text of the line,
 3169:      and INDEX, the index of the character in the line.  It is used to
 3170:      decide whether a character found in
 3171:      `rl_completer_word_break_characters' should be used to break words
 3172:      for the completer.
 3173: 
 3174:  -- Variable: rl_compignore_func_t * rl_ignore_some_completions_function
 3175:      This function, if defined, is called by the completer when real
 3176:      filename completion is done, after all the matching names have
 3177:      been generated.  It is passed a `NULL' terminated array of matches.
 3178:      The first element (`matches[0]') is the maximal substring common
 3179:      to all matches. This function can re-arrange the list of matches
 3180:      as required, but each element deleted from the array must be freed.
 3181: 
 3182:  -- Variable: rl_icppfunc_t * rl_directory_completion_hook
 3183:      This function, if defined, is allowed to modify the directory
 3184:      portion of filenames Readline completes.  It could be used to
 3185:      expand symbolic links or shell variables in pathnames.  It is
 3186:      called with the address of a string (the current directory name)
 3187:      as an argument, and may modify that string.  If the string is
 3188:      replaced with a new string, the old value should be freed.  Any
 3189:      modified directory name should have a trailing slash.  The
 3190:      modified value will be used as part of the completion, replacing
 3191:      the directory portion of the pathname the user typed.  At the
 3192:      least, even if no other expansion is performed, this function
 3193:      should remove any quote characters from the directory name,
 3194:      because its result will be passed directly to `opendir()'.
 3195: 
 3196:      The directory completion hook returns an integer that should be
 3197:      non-zero if the function modifies its directory argument.  The
 3198:      function should not modify the directory argument if it returns 0.
 3199: 
 3200:  -- Variable: rl_icppfunc_t * rl_directory_rewrite_hook;
 3201:      If non-zero, this is the address of a function to call when
 3202:      completing a directory name.  This function takes the address of
 3203:      the directory name to be modified as an argument.  Unlike
 3204:      `rl_directory_completion_hook', it only modifies the directory
 3205:      name used in `opendir', not what is displayed when the possible
 3206:      completions are printed or inserted.  It is called before
 3207:      rl_directory_completion_hook.  At the least, even if no other
 3208:      expansion is performed, this function should remove any quote
 3209:      characters from the directory name, because its result will be
 3210:      passed directly to `opendir()'.
 3211: 
 3212:      The directory rewrite hook returns an integer that should be
 3213:      non-zero if the function modfies its directory argument.  The
 3214:      function should not modify the directory argument if it returns 0.
 3215: 
 3216:  -- Variable: rl_icppfunc_t * rl_filename_stat_hook
 3217:      If non-zero, this is the address of a function for the completer to
 3218:      call before deciding which character to append to a completed name.
 3219:      This function modifies its filename name argument, and the
 3220:      modified value is passed to `stat()' to determine the file's type
 3221:      and characteristics.  This function does not need to remove quote
 3222:      characters from the filename.
 3223: 
 3224:      The stat hook returns an integer that should be non-zero if the
 3225:      function modfies its directory argument.  The function should not
 3226:      modify the directory argument if it returns 0.
 3227: 
 3228:  -- Variable: rl_dequote_func_t * rl_filename_rewrite_hook
 3229:      If non-zero, this is the address of a function called when reading
 3230:      directory entries from the filesystem for completion and comparing
 3231:      them to the partial word to be completed.  The function should
 3232:      perform any necessary application or system-specific conversion on
 3233:      the filename, such as converting between character sets or
 3234:      converting from a filesystem format to a character input format.
 3235:      The function takes two arguments: FNAME, the filename to be
 3236:      converted, and FNLEN, its length in bytes.  It must either return
 3237:      its first argument (if no conversion takes place) or the converted
 3238:      filename in newly-allocated memory.  The converted form is used to
 3239:      compare against the word to be completed, and, if it matches, is
 3240:      added to the list of matches.  Readline will free the allocated
 3241:      string.
 3242: 
 3243:  -- Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
 3244:      If non-zero, then this is the address of a function to call when
 3245:      completing a word would normally display the list of possible
 3246:      matches.  This function is called in lieu of Readline displaying
 3247:      the list.  It takes three arguments: (`char **'MATCHES, `int'
 3248:      NUM_MATCHES, `int' MAX_LENGTH) where MATCHES is the array of
 3249:      matching strings, NUM_MATCHES is the number of strings in that
 3250:      array, and MAX_LENGTH is the length of the longest string in that
 3251:      array.  Readline provides a convenience function,
 3252:      `rl_display_match_list', that takes care of doing the display to
 3253:      Readline's output stream.  That function may be called from this
 3254:      hook.
 3255: 
 3256:  -- Variable: const char * rl_basic_word_break_characters
 3257:      The basic list of characters that signal a break between words for
 3258:      the completer routine.  The default value of this variable is the
 3259:      characters which break words for completion in Bash: `"
 3260:      \t\n\"\\'`@$><=;|&{("'.
 3261: 
 3262:  -- Variable: const char * rl_basic_quote_characters
 3263:      A list of quote characters which can cause a word break.
 3264: 
 3265:  -- Variable: const char * rl_completer_word_break_characters
 3266:      The list of characters that signal a break between words for
 3267:      `rl_complete_internal()'.  The default list is the value of
 3268:      `rl_basic_word_break_characters'.
 3269: 
 3270:  -- Variable: rl_cpvfunc_t * rl_completion_word_break_hook
 3271:      If non-zero, this is the address of a function to call when
 3272:      Readline is deciding where to separate words for word completion.
 3273:      It should return a character string like
 3274:      `rl_completer_word_break_characters' to be used to perform the
 3275:      current completion.  The function may choose to set
 3276:      `rl_completer_word_break_characters' itself.  If the function
 3277:      returns `NULL', `rl_completer_word_break_characters' is used.
 3278: 
 3279:  -- Variable: const char * rl_completer_quote_characters
 3280:      A list of characters which can be used to quote a substring of the
 3281:      line.  Completion occurs on the entire substring, and within the
 3282:      substring `rl_completer_word_break_characters' are treated as any
 3283:      other character, unless they also appear within this list.
 3284: 
 3285:  -- Variable: const char * rl_filename_quote_characters
 3286:      A list of characters that cause a filename to be quoted by the
 3287:      completer when they appear in a completed filename.  The default
 3288:      is the null string.
 3289: 
 3290:  -- Variable: const char * rl_special_prefixes
 3291:      The list of characters that are word break characters, but should
 3292:      be left in TEXT when it is passed to the completion function.
 3293:      Programs can use this to help determine what kind of completing to
 3294:      do.  For instance, Bash sets this variable to "$@" so that it can
 3295:      complete shell variables and hostnames.
 3296: 
 3297:  -- Variable: int rl_completion_query_items
 3298:      Up to this many items will be displayed in response to a
 3299:      possible-completions call.  After that, readline asks the user if
 3300:      she is sure she wants to see them all.  The default value is 100.
 3301:      A negative value indicates that Readline should never ask the user.
 3302: 
 3303:  -- Variable: int rl_completion_append_character
 3304:      When a single completion alternative matches at the end of the
 3305:      command line, this character is appended to the inserted
 3306:      completion text.  The default is a space character (` ').  Setting
 3307:      this to the null character (`\0') prevents anything being appended
 3308:      automatically.  This can be changed in application-specific
 3309:      completion functions to provide the "most sensible word separator
 3310:      character" according to an application-specific command line
 3311:      syntax specification.
 3312: 
 3313:  -- Variable: int rl_completion_suppress_append
 3314:      If non-zero, RL_COMPLETION_APPEND_CHARACTER is not appended to
 3315:      matches at the end of the command line, as described above.  It is
 3316:      set to 0 before any application-specific completion function is
 3317:      called, and may only be changed within such a function.
 3318: 
 3319:  -- Variable: int rl_completion_quote_character
 3320:      When Readline is completing quoted text, as delimited by one of the
 3321:      characters in RL_COMPLETER_QUOTE_CHARACTERS, it sets this variable
 3322:      to the quoting character found.  This is set before any
 3323:      application-specific completion function is called.
 3324: 
 3325:  -- Variable: int rl_completion_suppress_quote
 3326:      If non-zero, Readline does not append a matching quote character
 3327:      when performing completion on a quoted string.  It is set to 0
 3328:      before any application-specific completion function is called, and
 3329:      may only be changed within such a function.
 3330: 
 3331:  -- Variable: int rl_completion_found_quote
 3332:      When Readline is completing quoted text, it sets this variable to
 3333:      a non-zero value if the word being completed contains or is
 3334:      delimited by any quoting characters, including backslashes.  This
 3335:      is set before any application-specific completion function is
 3336:      called.
 3337: 
 3338:  -- Variable: int rl_completion_mark_symlink_dirs
 3339:      If non-zero, a slash will be appended to completed filenames that
 3340:      are symbolic links to directory names, subject to the value of the
 3341:      user-settable MARK-DIRECTORIES variable.  This variable exists so
 3342:      that application-specific completion functions can override the
 3343:      user's global preference (set via the MARK-SYMLINKED-DIRECTORIES
 3344:      Readline variable) if appropriate.  This variable is set to the
 3345:      user's preference before any application-specific completion
 3346:      function is called, so unless that function modifies the value,
 3347:      the user's preferences are honored.
 3348: 
 3349:  -- Variable: int rl_ignore_completion_duplicates
 3350:      If non-zero, then duplicates in the matches are removed.  The
 3351:      default is 1.
 3352: 
 3353:  -- Variable: int rl_filename_completion_desired
 3354:      Non-zero means that the results of the matches are to be treated as
 3355:      filenames.  This is _always_ zero when completion is attempted,
 3356:      and can only be changed within an application-specific completion
 3357:      function.  If it is set to a non-zero value by such a function,
 3358:      directory names have a slash appended and Readline attempts to
 3359:      quote completed filenames if they contain any characters in
 3360:      `rl_filename_quote_characters' and `rl_filename_quoting_desired'
 3361:      is set to a non-zero value.
 3362: 
 3363:  -- Variable: int rl_filename_quoting_desired
 3364:      Non-zero means that the results of the matches are to be quoted
 3365:      using double quotes (or an application-specific quoting mechanism)
 3366:      if the completed filename contains any characters in
 3367:      `rl_filename_quote_chars'.  This is _always_ non-zero when
 3368:      completion is attempted, and can only be changed within an
 3369:      application-specific completion function.  The quoting is effected
 3370:      via a call to the function pointed to by
 3371:      `rl_filename_quoting_function'.
 3372: 
 3373:  -- Variable: int rl_attempted_completion_over
 3374:      If an application-specific completion function assigned to
 3375:      `rl_attempted_completion_function' sets this variable to a non-zero
 3376:      value, Readline will not perform its default filename completion
 3377:      even if the application's completion function returns no matches.
 3378:      It should be set only by an application's completion function.
 3379: 
 3380:  -- Variable: int rl_sort_completion_matches
 3381:      If an application sets this variable to 0, Readline will not sort
 3382:      the list of completions (which implies that it cannot remove any
 3383:      duplicate completions).  The default value is 1, which means that
 3384:      Readline will sort the completions and, depending on the value of
 3385:      `rl_ignore_completion_duplicates', will attempt to remove duplicate
 3386:      matches.
 3387: 
 3388:  -- Variable: int rl_completion_type
 3389:      Set to a character describing the type of completion Readline is
 3390:      currently attempting; see the description of
 3391:      `rl_complete_internal()' (*note Completion Functions::) for the
 3392:      list of characters.  This is set to the appropriate value before
 3393:      any application-specific completion function is called, allowing
 3394:      such functions to present the same interface as `rl_complete()'.
 3395: 
 3396:  -- Variable: int rl_completion_invoking_key
 3397:      Set to the final character in the key sequence that invoked one of
 3398:      the completion functions that call `rl_complete_internal()'.  This
 3399:      is set to the appropriate value before any application-specific
 3400:      completion function is called.
 3401: 
 3402:  -- Variable: int rl_inhibit_completion
 3403:      If this variable is non-zero, completion is inhibited.  The
 3404:      completion character will be inserted as any other bound to
 3405:      `self-insert'.
 3406: 
 3407: 
 3408: File: readline.info,  Node: A Short Completion Example,  Prev: Completion Variables,  Up: Custom Completers
 3409: 
 3410: 2.6.4 A Short Completion Example
 3411: --------------------------------
 3412: 
 3413: Here is a small application demonstrating the use of the GNU Readline
 3414: library.  It is called `fileman', and the source code resides in
 3415: `examples/fileman.c'.  This sample application provides completion of
 3416: command names, line editing features, and access to the history list.
 3417: 
 3418:      /* fileman.c -- A tiny application which demonstrates how to use the
 3419:         GNU Readline library.  This application interactively allows users
 3420:         to manipulate files and their modes. */
 3421: 
 3422:      #ifdef HAVE_CONFIG_H
 3423:      #  include <config.h>
 3424:      #endif
 3425: 
 3426:      #include <sys/types.h>
 3427:      #ifdef HAVE_SYS_FILE_H
 3428:      #  include <sys/file.h>
 3429:      #endif
 3430:      #include <sys/stat.h>
 3431: 
 3432:      #ifdef HAVE_UNISTD_H
 3433:      #  include <unistd.h>
 3434:      #endif
 3435: 
 3436:      #include <fcntl.h>
 3437:      #include <stdio.h>
 3438:      #include <errno.h>
 3439: 
 3440:      #if defined (HAVE_STRING_H)
 3441:      #  include <string.h>
 3442:      #else /* !HAVE_STRING_H */
 3443:      #  include <strings.h>
 3444:      #endif /* !HAVE_STRING_H */
 3445: 
 3446:      #ifdef HAVE_STDLIB_H
 3447:      #  include <stdlib.h>
 3448:      #endif
 3449: 
 3450:      #include <time.h>
 3451: 
 3452:      #include <readline/readline.h>
 3453:      #include <readline/history.h>
 3454: 
 3455:      extern char *xmalloc PARAMS((size_t));
 3456: 
 3457:      /* The names of functions that actually do the manipulation. */
 3458:      int com_list PARAMS((char *));
 3459:      int com_view PARAMS((char *));
 3460:      int com_rename PARAMS((char *));
 3461:      int com_stat PARAMS((char *));
 3462:      int com_pwd PARAMS((char *));
 3463:      int com_delete PARAMS((char *));
 3464:      int com_help PARAMS((char *));
 3465:      int com_cd PARAMS((char *));
 3466:      int com_quit PARAMS((char *));
 3467: 
 3468:      /* A structure which contains information on the commands this program
 3469:         can understand. */
 3470: 
 3471:      typedef struct {
 3472:        char *name;			/* User printable name of the function. */
 3473:        rl_icpfunc_t *func;		/* Function to call to do the job. */
 3474:        char *doc;			/* Documentation for this function.  */
 3475:      } COMMAND;
 3476: 
 3477:      COMMAND commands[] = {
 3478:        { "cd", com_cd, "Change to directory DIR" },
 3479:        { "delete", com_delete, "Delete FILE" },
 3480:        { "help", com_help, "Display this text" },
 3481:        { "?", com_help, "Synonym for `help'" },
 3482:        { "list", com_list, "List files in DIR" },
 3483:        { "ls", com_list, "Synonym for `list'" },
 3484:        { "pwd", com_pwd, "Print the current working directory" },
 3485:        { "quit", com_quit, "Quit using Fileman" },
 3486:        { "rename", com_rename, "Rename FILE to NEWNAME" },
 3487:        { "stat", com_stat, "Print out statistics on FILE" },
 3488:        { "view", com_view, "View the contents of FILE" },
 3489:        { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL }
 3490:      };
 3491: 
 3492:      /* Forward declarations. */
 3493:      char *stripwhite ();
 3494:      COMMAND *find_command ();
 3495: 
 3496:      /* The name of this program, as taken from argv[0]. */
 3497:      char *progname;
 3498: 
 3499:      /* When non-zero, this global means the user is done using this program. */
 3500:      int done;
 3501: 
 3502:      char *
 3503:      dupstr (s)
 3504:           char *s;
 3505:      {
 3506:        char *r;
 3507: 
 3508:        r = xmalloc (strlen (s) + 1);
 3509:        strcpy (r, s);
 3510:        return (r);
 3511:      }
 3512: 
 3513:      main (argc, argv)
 3514:           int argc;
 3515:           char **argv;
 3516:      {
 3517:        char *line, *s;
 3518: 
 3519:        progname = argv[0];
 3520: 
 3521:        initialize_readline ();	/* Bind our completer. */
 3522: 
 3523:        /* Loop reading and executing lines until the user quits. */
 3524:        for ( ; done == 0; )
 3525:          {
 3526:            line = readline ("FileMan: ");
 3527: 
 3528:            if (!line)
 3529:              break;
 3530: 
 3531:            /* Remove leading and trailing whitespace from the line.
 3532:               Then, if there is anything left, add it to the history list
 3533:               and execute it. */
 3534:            s = stripwhite (line);
 3535: 
 3536:            if (*s)
 3537:              {
 3538:                add_history (s);
 3539:                execute_line (s);
 3540:              }
 3541: 
 3542:            free (line);
 3543:          }
 3544:        exit (0);
 3545:      }
 3546: 
 3547:      /* Execute a command line. */
 3548:      int
 3549:      execute_line (line)
 3550:           char *line;
 3551:      {
 3552:        register int i;
 3553:        COMMAND *command;
 3554:        char *word;
 3555: 
 3556:        /* Isolate the command word. */
 3557:        i = 0;
 3558:        while (line[i] && whitespace (line[i]))
 3559:          i++;
 3560:        word = line + i;
 3561: 
 3562:        while (line[i] && !whitespace (line[i]))
 3563:          i++;
 3564: 
 3565:        if (line[i])
 3566:          line[i++] = '\0';
 3567: 
 3568:        command = find_command (word);
 3569: 
 3570:        if (!command)
 3571:          {
 3572:            fprintf (stderr, "%s: No such command for FileMan.\n", word);
 3573:            return (-1);
 3574:          }
 3575: 
 3576:        /* Get argument to command, if any. */
 3577:        while (whitespace (line[i]))
 3578:          i++;
 3579: 
 3580:        word = line + i;
 3581: 
 3582:        /* Call the function. */
 3583:        return ((*(command->func)) (word));
 3584:      }
 3585: 
 3586:      /* Look up NAME as the name of a command, and return a pointer to that
 3587:         command.  Return a NULL pointer if NAME isn't a command name. */
 3588:      COMMAND *
 3589:      find_command (name)
 3590:           char *name;
 3591:      {
 3592:        register int i;
 3593: 
 3594:        for (i = 0; commands[i].name; i++)
 3595:          if (strcmp (name, commands[i].name) == 0)
 3596:            return (&commands[i]);
 3597: 
 3598:        return ((COMMAND *)NULL);
 3599:      }
 3600: 
 3601:      /* Strip whitespace from the start and end of STRING.  Return a pointer
 3602:         into STRING. */
 3603:      char *
 3604:      stripwhite (string)
 3605:           char *string;
 3606:      {
 3607:        register char *s, *t;
 3608: 
 3609:        for (s = string; whitespace (*s); s++)
 3610:          ;
 3611: 
 3612:        if (*s == 0)
 3613:          return (s);
 3614: 
 3615:        t = s + strlen (s) - 1;
 3616:        while (t > s && whitespace (*t))
 3617:          t--;
 3618:        *++t = '\0';
 3619: 
 3620:        return s;
 3621:      }
 3622: 
 3623:      /* **************************************************************** */
 3624:      /*                                                                  */
 3625:      /*                  Interface to Readline Completion                */
 3626:      /*                                                                  */
 3627:      /* **************************************************************** */
 3628: 
 3629:      char *command_generator PARAMS((const char *, int));
 3630:      char **fileman_completion PARAMS((const char *, int, int));
 3631: 
 3632:      /* Tell the GNU Readline library how to complete.  We want to try to complete
 3633:         on command names if this is the first word in the line, or on filenames
 3634:         if not. */
 3635:      initialize_readline ()
 3636:      {
 3637:        /* Allow conditional parsing of the ~/.inputrc file. */
 3638:        rl_readline_name = "FileMan";
 3639: 
 3640:        /* Tell the completer that we want a crack first. */
 3641:        rl_attempted_completion_function = fileman_completion;
 3642:      }
 3643: 
 3644:      /* Attempt to complete on the contents of TEXT.  START and END bound the
 3645:         region of rl_line_buffer that contains the word to complete.  TEXT is
 3646:         the word to complete.  We can use the entire contents of rl_line_buffer
 3647:         in case we want to do some simple parsing.  Return the array of matches,
 3648:         or NULL if there aren't any. */
 3649:      char **
 3650:      fileman_completion (text, start, end)
 3651:           const char *text;
 3652:           int start, end;
 3653:      {
 3654:        char **matches;
 3655: 
 3656:        matches = (char **)NULL;
 3657: 
 3658:        /* If this word is at the start of the line, then it is a command
 3659:           to complete.  Otherwise it is the name of a file in the current
 3660:           directory. */
 3661:        if (start == 0)
 3662:          matches = rl_completion_matches (text, command_generator);
 3663: 
 3664:        return (matches);
 3665:      }
 3666: 
 3667:      /* Generator function for command completion.  STATE lets us know whether
 3668:         to start from scratch; without any state (i.e. STATE == 0), then we
 3669:         start at the top of the list. */
 3670:      char *
 3671:      command_generator (text, state)
 3672:           const char *text;
 3673:           int state;
 3674:      {
 3675:        static int list_index, len;
 3676:        char *name;
 3677: 
 3678:        /* If this is a new word to complete, initialize now.  This includes
 3679:           saving the length of TEXT for efficiency, and initializing the index
 3680:           variable to 0. */
 3681:        if (!state)
 3682:          {
 3683:            list_index = 0;
 3684:            len = strlen (text);
 3685:          }
 3686: 
 3687:        /* Return the next name which partially matches from the command list. */
 3688:        while (name = commands[list_index].name)
 3689:          {
 3690:            list_index++;
 3691: 
 3692:            if (strncmp (name, text, len) == 0)
 3693:              return (dupstr(name));
 3694:          }
 3695: 
 3696:        /* If no names matched, then return NULL. */
 3697:        return ((char *)NULL);
 3698:      }
 3699: 
 3700:      /* **************************************************************** */
 3701:      /*                                                                  */
 3702:      /*                       FileMan Commands                           */
 3703:      /*                                                                  */
 3704:      /* **************************************************************** */
 3705: 
 3706:      /* String to pass to system ().  This is for the LIST, VIEW and RENAME
 3707:         commands. */
 3708:      static char syscom[1024];
 3709: 
 3710:      /* List the file(s) named in arg. */
 3711:      com_list (arg)
 3712:           char *arg;
 3713:      {
 3714:        if (!arg)
 3715:          arg = "";
 3716: 
 3717:        sprintf (syscom, "ls -FClg %s", arg);
 3718:        return (system (syscom));
 3719:      }
 3720: 
 3721:      com_view (arg)
 3722:           char *arg;
 3723:      {
 3724:        if (!valid_argument ("view", arg))
 3725:          return 1;
 3726: 
 3727:      #if defined (__MSDOS__)
 3728:        /* more.com doesn't grok slashes in pathnames */
 3729:        sprintf (syscom, "less %s", arg);
 3730:      #else
 3731:        sprintf (syscom, "more %s", arg);
 3732:      #endif
 3733:        return (system (syscom));
 3734:      }
 3735: 
 3736:      com_rename (arg)
 3737:           char *arg;
 3738:      {
 3739:        too_dangerous ("rename");
 3740:        return (1);
 3741:      }
 3742: 
 3743:      com_stat (arg)
 3744:           char *arg;
 3745:      {
 3746:        struct stat finfo;
 3747: 
 3748:        if (!valid_argument ("stat", arg))
 3749:          return (1);
 3750: 
 3751:        if (stat (arg, &finfo) == -1)
 3752:          {
 3753:            perror (arg);
 3754:            return (1);
 3755:          }
 3756: 
 3757:        printf ("Statistics for `%s':\n", arg);
 3758: 
 3759:        printf ("%s has %d link%s, and is %d byte%s in length.\n",
 3760:      	  arg,
 3761:                finfo.st_nlink,
 3762:                (finfo.st_nlink == 1) ? "" : "s",
 3763:                finfo.st_size,
 3764:                (finfo.st_size == 1) ? "" : "s");
 3765:        printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
 3766:        printf ("      Last access at: %s", ctime (&finfo.st_atime));
 3767:        printf ("    Last modified at: %s", ctime (&finfo.st_mtime));
 3768:        return (0);
 3769:      }
 3770: 
 3771:      com_delete (arg)
 3772:           char *arg;
 3773:      {
 3774:        too_dangerous ("delete");
 3775:        return (1);
 3776:      }
 3777: 
 3778:      /* Print out help for ARG, or for all of the commands if ARG is
 3779:         not present. */
 3780:      com_help (arg)
 3781:           char *arg;
 3782:      {
 3783:        register int i;
 3784:        int printed = 0;
 3785: 
 3786:        for (i = 0; commands[i].name; i++)
 3787:          {
 3788:            if (!*arg || (strcmp (arg, commands[i].name) == 0))
 3789:              {
 3790:                printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc);
 3791:                printed++;
 3792:              }
 3793:          }
 3794: 
 3795:        if (!printed)
 3796:          {
 3797:            printf ("No commands match `%s'.  Possibilties are:\n", arg);
 3798: 
 3799:            for (i = 0; commands[i].name; i++)
 3800:              {
 3801:                /* Print in six columns. */
 3802:                if (printed == 6)
 3803:                  {
 3804:                    printed = 0;
 3805:                    printf ("\n");
 3806:                  }
 3807: 
 3808:                printf ("%s\t", commands[i].name);
 3809:                printed++;
 3810:              }
 3811: 
 3812:            if (printed)
 3813:              printf ("\n");
 3814:          }
 3815:        return (0);
 3816:      }
 3817: 
 3818:      /* Change to the directory ARG. */
 3819:      com_cd (arg)
 3820:           char *arg;
 3821:      {
 3822:        if (chdir (arg) == -1)
 3823:          {
 3824:            perror (arg);
 3825:            return 1;
 3826:          }
 3827: 
 3828:        com_pwd ("");
 3829:        return (0);
 3830:      }
 3831: 
 3832:      /* Print out the current working directory. */
 3833:      com_pwd (ignore)
 3834:           char *ignore;
 3835:      {
 3836:        char dir[1024], *s;
 3837: 
 3838:        s = getcwd (dir, sizeof(dir) - 1);
 3839:        if (s == 0)
 3840:          {
 3841:            printf ("Error getting pwd: %s\n", dir);
 3842:            return 1;
 3843:          }
 3844: 
 3845:        printf ("Current directory is %s\n", dir);
 3846:        return 0;
 3847:      }
 3848: 
 3849:      /* The user wishes to quit using this program.  Just set DONE non-zero. */
 3850:      com_quit (arg)
 3851:           char *arg;
 3852:      {
 3853:        done = 1;
 3854:        return (0);
 3855:      }
 3856: 
 3857:      /* Function which tells you that you can't do this. */
 3858:      too_dangerous (caller)
 3859:           char *caller;
 3860:      {
 3861:        fprintf (stderr,
 3862:                 "%s: Too dangerous for me to distribute.  Write it yourself.\n",
 3863:                 caller);
 3864:      }
 3865: 
 3866:      /* Return non-zero if ARG is a valid argument for CALLER, else print
 3867:         an error message and return zero. */
 3868:      int
 3869:      valid_argument (caller, arg)
 3870:           char *caller, *arg;
 3871:      {
 3872:        if (!arg || !*arg)
 3873:          {
 3874:            fprintf (stderr, "%s: Argument required.\n", caller);
 3875:            return (0);
 3876:          }
 3877: 
 3878:        return (1);
 3879:      }
 3880: 
 3881: 
 3882: File: readline.info,  Node: GNU Free Documentation License,  Next: Concept Index,  Prev: Programming with GNU Readline,  Up: Top
 3883: 
 3884: Appendix A GNU Free Documentation License
 3885: *****************************************
 3886: 
 3887:                      Version 1.3, 3 November 2008
 3888: 
 3889:      Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
 3890:      `http://fsf.org/'
 3891: 
 3892:      Everyone is permitted to copy and distribute verbatim copies
 3893:      of this license document, but changing it is not allowed.
 3894: 
 3895:   0. PREAMBLE
 3896: 
 3897:      The purpose of this License is to make a manual, textbook, or other
 3898:      functional and useful document "free" in the sense of freedom: to
 3899:      assure everyone the effective freedom to copy and redistribute it,
 3900:      with or without modifying it, either commercially or
 3901:      noncommercially.  Secondarily, this License preserves for the
 3902:      author and publisher a way to get credit for their work, while not
 3903:      being considered responsible for modifications made by others.
 3904: 
 3905:      This License is a kind of "copyleft", which means that derivative
 3906:      works of the document must themselves be free in the same sense.
 3907:      It complements the GNU General Public License, which is a copyleft
 3908:      license designed for free software.
 3909: 
 3910:      We have designed this License in order to use it for manuals for
 3911:      free software, because free software needs free documentation: a
 3912:      free program should come with manuals providing the same freedoms
 3913:      that the software does.  But this License is not limited to
 3914:      software manuals; it can be used for any textual work, regardless
 3915:      of subject matter or whether it is published as a printed book.
 3916:      We recommend this License principally for works whose purpose is
 3917:      instruction or reference.
 3918: 
 3919:   1. APPLICABILITY AND DEFINITIONS
 3920: 
 3921:      This License applies to any manual or other work, in any medium,
 3922:      that contains a notice placed by the copyright holder saying it
 3923:      can be distributed under the terms of this License.  Such a notice
 3924:      grants a world-wide, royalty-free license, unlimited in duration,
 3925:      to use that work under the conditions stated herein.  The
 3926:      "Document", below, refers to any such manual or work.  Any member
 3927:      of the public is a licensee, and is addressed as "you".  You
 3928:      accept the license if you copy, modify or distribute the work in a
 3929:      way requiring permission under copyright law.
 3930: 
 3931:      A "Modified Version" of the Document means any work containing the
 3932:      Document or a portion of it, either copied verbatim, or with
 3933:      modifications and/or translated into another language.
 3934: 
 3935:      A "Secondary Section" is a named appendix or a front-matter section
 3936:      of the Document that deals exclusively with the relationship of the
 3937:      publishers or authors of the Document to the Document's overall
 3938:      subject (or to related matters) and contains nothing that could
 3939:      fall directly within that overall subject.  (Thus, if the Document
 3940:      is in part a textbook of mathematics, a Secondary Section may not
 3941:      explain any mathematics.)  The relationship could be a matter of
 3942:      historical connection with the subject or with related matters, or
 3943:      of legal, commercial, philosophical, ethical or political position
 3944:      regarding them.
 3945: 
 3946:      The "Invariant Sections" are certain Secondary Sections whose
 3947:      titles are designated, as being those of Invariant Sections, in
 3948:      the notice that says that the Document is released under this
 3949:      License.  If a section does not fit the above definition of
 3950:      Secondary then it is not allowed to be designated as Invariant.
 3951:      The Document may contain zero Invariant Sections.  If the Document
 3952:      does not identify any Invariant Sections then there are none.
 3953: 
 3954:      The "Cover Texts" are certain short passages of text that are
 3955:      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
 3956:      that says that the Document is released under this License.  A
 3957:      Front-Cover Text may be at most 5 words, and a Back-Cover Text may
 3958:      be at most 25 words.
 3959: 
 3960:      A "Transparent" copy of the Document means a machine-readable copy,
 3961:      represented in a format whose specification is available to the
 3962:      general public, that is suitable for revising the document
 3963:      straightforwardly with generic text editors or (for images
 3964:      composed of pixels) generic paint programs or (for drawings) some
 3965:      widely available drawing editor, and that is suitable for input to
 3966:      text formatters or for automatic translation to a variety of
 3967:      formats suitable for input to text formatters.  A copy made in an
 3968:      otherwise Transparent file format whose markup, or absence of
 3969:      markup, has been arranged to thwart or discourage subsequent
 3970:      modification by readers is not Transparent.  An image format is
 3971:      not Transparent if used for any substantial amount of text.  A
 3972:      copy that is not "Transparent" is called "Opaque".
 3973: 
 3974:      Examples of suitable formats for Transparent copies include plain
 3975:      ASCII without markup, Texinfo input format, LaTeX input format,
 3976:      SGML or XML using a publicly available DTD, and
 3977:      standard-conforming simple HTML, PostScript or PDF designed for
 3978:      human modification.  Examples of transparent image formats include
 3979:      PNG, XCF and JPG.  Opaque formats include proprietary formats that
 3980:      can be read and edited only by proprietary word processors, SGML or
 3981:      XML for which the DTD and/or processing tools are not generally
 3982:      available, and the machine-generated HTML, PostScript or PDF
 3983:      produced by some word processors for output purposes only.
 3984: 
 3985:      The "Title Page" means, for a printed book, the title page itself,
 3986:      plus such following pages as are needed to hold, legibly, the
 3987:      material this License requires to appear in the title page.  For
 3988:      works in formats which do not have any title page as such, "Title
 3989:      Page" means the text near the most prominent appearance of the
 3990:      work's title, preceding the beginning of the body of the text.
 3991: 
 3992:      The "publisher" means any person or entity that distributes copies
 3993:      of the Document to the public.
 3994: 
 3995:      A section "Entitled XYZ" means a named subunit of the Document
 3996:      whose title either is precisely XYZ or contains XYZ in parentheses
 3997:      following text that translates XYZ in another language.  (Here XYZ
 3998:      stands for a specific section name mentioned below, such as
 3999:      "Acknowledgements", "Dedications", "Endorsements", or "History".)
 4000:      To "Preserve the Title" of such a section when you modify the
 4001:      Document means that it remains a section "Entitled XYZ" according
 4002:      to this definition.
 4003: 
 4004:      The Document may include Warranty Disclaimers next to the notice
 4005:      which states that this License applies to the Document.  These
 4006:      Warranty Disclaimers are considered to be included by reference in
 4007:      this License, but only as regards disclaiming warranties: any other
 4008:      implication that these Warranty Disclaimers may have is void and
 4009:      has no effect on the meaning of this License.
 4010: 
 4011:   2. VERBATIM COPYING
 4012: 
 4013:      You may copy and distribute the Document in any medium, either
 4014:      commercially or noncommercially, provided that this License, the
 4015:      copyright notices, and the license notice saying this License
 4016:      applies to the Document are reproduced in all copies, and that you
 4017:      add no other conditions whatsoever to those of this License.  You
 4018:      may not use technical measures to obstruct or control the reading
 4019:      or further copying of the copies you make or distribute.  However,
 4020:      you may accept compensation in exchange for copies.  If you
 4021:      distribute a large enough number of copies you must also follow
 4022:      the conditions in section 3.
 4023: 
 4024:      You may also lend copies, under the same conditions stated above,
 4025:      and you may publicly display copies.
 4026: 
 4027:   3. COPYING IN QUANTITY
 4028: 
 4029:      If you publish printed copies (or copies in media that commonly
 4030:      have printed covers) of the Document, numbering more than 100, and
 4031:      the Document's license notice requires Cover Texts, you must
 4032:      enclose the copies in covers that carry, clearly and legibly, all
 4033:      these Cover Texts: Front-Cover Texts on the front cover, and
 4034:      Back-Cover Texts on the back cover.  Both covers must also clearly
 4035:      and legibly identify you as the publisher of these copies.  The
 4036:      front cover must present the full title with all words of the
 4037:      title equally prominent and visible.  You may add other material
 4038:      on the covers in addition.  Copying with changes limited to the
 4039:      covers, as long as they preserve the title of the Document and
 4040:      satisfy these conditions, can be treated as verbatim copying in
 4041:      other respects.
 4042: 
 4043:      If the required texts for either cover are too voluminous to fit
 4044:      legibly, you should put the first ones listed (as many as fit
 4045:      reasonably) on the actual cover, and continue the rest onto
 4046:      adjacent pages.
 4047: 
 4048:      If you publish or distribute Opaque copies of the Document
 4049:      numbering more than 100, you must either include a
 4050:      machine-readable Transparent copy along with each Opaque copy, or
 4051:      state in or with each Opaque copy a computer-network location from
 4052:      which the general network-using public has access to download
 4053:      using public-standard network protocols a complete Transparent
 4054:      copy of the Document, free of added material.  If you use the
 4055:      latter option, you must take reasonably prudent steps, when you
 4056:      begin distribution of Opaque copies in quantity, to ensure that
 4057:      this Transparent copy will remain thus accessible at the stated
 4058:      location until at least one year after the last time you
 4059:      distribute an Opaque copy (directly or through your agents or
 4060:      retailers) of that edition to the public.
 4061: 
 4062:      It is requested, but not required, that you contact the authors of
 4063:      the Document well before redistributing any large number of
 4064:      copies, to give them a chance to provide you with an updated
 4065:      version of the Document.
 4066: 
 4067:   4. MODIFICATIONS
 4068: 
 4069:      You may copy and distribute a Modified Version of the Document
 4070:      under the conditions of sections 2 and 3 above, provided that you
 4071:      release the Modified Version under precisely this License, with
 4072:      the Modified Version filling the role of the Document, thus
 4073:      licensing distribution and modification of the Modified Version to
 4074:      whoever possesses a copy of it.  In addition, you must do these
 4075:      things in the Modified Version:
 4076: 
 4077:        A. Use in the Title Page (and on the covers, if any) a title
 4078:           distinct from that of the Document, and from those of
 4079:           previous versions (which should, if there were any, be listed
 4080:           in the History section of the Document).  You may use the
 4081:           same title as a previous version if the original publisher of
 4082:           that version gives permission.
 4083: 
 4084:        B. List on the Title Page, as authors, one or more persons or
 4085:           entities responsible for authorship of the modifications in
 4086:           the Modified Version, together with at least five of the
 4087:           principal authors of the Document (all of its principal
 4088:           authors, if it has fewer than five), unless they release you
 4089:           from this requirement.
 4090: 
 4091:        C. State on the Title page the name of the publisher of the
 4092:           Modified Version, as the publisher.
 4093: 
 4094:        D. Preserve all the copyright notices of the Document.
 4095: 
 4096:        E. Add an appropriate copyright notice for your modifications
 4097:           adjacent to the other copyright notices.
 4098: 
 4099:        F. Include, immediately after the copyright notices, a license
 4100:           notice giving the public permission to use the Modified
 4101:           Version under the terms of this License, in the form shown in
 4102:           the Addendum below.
 4103: 
 4104:        G. Preserve in that license notice the full lists of Invariant
 4105:           Sections and required Cover Texts given in the Document's
 4106:           license notice.
 4107: 
 4108:        H. Include an unaltered copy of this License.
 4109: 
 4110:        I. Preserve the section Entitled "History", Preserve its Title,
 4111:           and add to it an item stating at least the title, year, new
 4112:           authors, and publisher of the Modified Version as given on
 4113:           the Title Page.  If there is no section Entitled "History" in
 4114:           the Document, create one stating the title, year, authors,
 4115:           and publisher of the Document as given on its Title Page,
 4116:           then add an item describing the Modified Version as stated in
 4117:           the previous sentence.
 4118: 
 4119:        J. Preserve the network location, if any, given in the Document
 4120:           for public access to a Transparent copy of the Document, and
 4121:           likewise the network locations given in the Document for
 4122:           previous versions it was based on.  These may be placed in
 4123:           the "History" section.  You may omit a network location for a
 4124:           work that was published at least four years before the
 4125:           Document itself, or if the original publisher of the version
 4126:           it refers to gives permission.
 4127: 
 4128:        K. For any section Entitled "Acknowledgements" or "Dedications",
 4129:           Preserve the Title of the section, and preserve in the
 4130:           section all the substance and tone of each of the contributor
 4131:           acknowledgements and/or dedications given therein.
 4132: 
 4133:        L. Preserve all the Invariant Sections of the Document,
 4134:           unaltered in their text and in their titles.  Section numbers
 4135:           or the equivalent are not considered part of the section
 4136:           titles.
 4137: 
 4138:        M. Delete any section Entitled "Endorsements".  Such a section
 4139:           may not be included in the Modified Version.
 4140: 
 4141:        N. Do not retitle any existing section to be Entitled
 4142:           "Endorsements" or to conflict in title with any Invariant
 4143:           Section.
 4144: 
 4145:        O. Preserve any Warranty Disclaimers.
 4146: 
 4147:      If the Modified Version includes new front-matter sections or
 4148:      appendices that qualify as Secondary Sections and contain no
 4149:      material copied from the Document, you may at your option
 4150:      designate some or all of these sections as invariant.  To do this,
 4151:      add their titles to the list of Invariant Sections in the Modified
 4152:      Version's license notice.  These titles must be distinct from any
 4153:      other section titles.
 4154: 
 4155:      You may add a section Entitled "Endorsements", provided it contains
 4156:      nothing but endorsements of your Modified Version by various
 4157:      parties--for example, statements of peer review or that the text
 4158:      has been approved by an organization as the authoritative
 4159:      definition of a standard.
 4160: 
 4161:      You may add a passage of up to five words as a Front-Cover Text,
 4162:      and a passage of up to 25 words as a Back-Cover Text, to the end
 4163:      of the list of Cover Texts in the Modified Version.  Only one
 4164:      passage of Front-Cover Text and one of Back-Cover Text may be
 4165:      added by (or through arrangements made by) any one entity.  If the
 4166:      Document already includes a cover text for the same cover,
 4167:      previously added by you or by arrangement made by the same entity
 4168:      you are acting on behalf of, you may not add another; but you may
 4169:      replace the old one, on explicit permission from the previous
 4170:      publisher that added the old one.
 4171: 
 4172:      The author(s) and publisher(s) of the Document do not by this
 4173:      License give permission to use their names for publicity for or to
 4174:      assert or imply endorsement of any Modified Version.
 4175: 
 4176:   5. COMBINING DOCUMENTS
 4177: 
 4178:      You may combine the Document with other documents released under
 4179:      this License, under the terms defined in section 4 above for
 4180:      modified versions, provided that you include in the combination
 4181:      all of the Invariant Sections of all of the original documents,
 4182:      unmodified, and list them all as Invariant Sections of your
 4183:      combined work in its license notice, and that you preserve all
 4184:      their Warranty Disclaimers.
 4185: 
 4186:      The combined work need only contain one copy of this License, and
 4187:      multiple identical Invariant Sections may be replaced with a single
 4188:      copy.  If there are multiple Invariant Sections with the same name
 4189:      but different contents, make the title of each such section unique
 4190:      by adding at the end of it, in parentheses, the name of the
 4191:      original author or publisher of that section if known, or else a
 4192:      unique number.  Make the same adjustment to the section titles in
 4193:      the list of Invariant Sections in the license notice of the
 4194:      combined work.
 4195: 
 4196:      In the combination, you must combine any sections Entitled
 4197:      "History" in the various original documents, forming one section
 4198:      Entitled "History"; likewise combine any sections Entitled
 4199:      "Acknowledgements", and any sections Entitled "Dedications".  You
 4200:      must delete all sections Entitled "Endorsements."
 4201: 
 4202:   6. COLLECTIONS OF DOCUMENTS
 4203: 
 4204:      You may make a collection consisting of the Document and other
 4205:      documents released under this License, and replace the individual
 4206:      copies of this License in the various documents with a single copy
 4207:      that is included in the collection, provided that you follow the
 4208:      rules of this License for verbatim copying of each of the
 4209:      documents in all other respects.
 4210: 
 4211:      You may extract a single document from such a collection, and
 4212:      distribute it individually under this License, provided you insert
 4213:      a copy of this License into the extracted document, and follow
 4214:      this License in all other respects regarding verbatim copying of
 4215:      that document.
 4216: 
 4217:   7. AGGREGATION WITH INDEPENDENT WORKS
 4218: 
 4219:      A compilation of the Document or its derivatives with other
 4220:      separate and independent documents or works, in or on a volume of
 4221:      a storage or distribution medium, is called an "aggregate" if the
 4222:      copyright resulting from the compilation is not used to limit the
 4223:      legal rights of the compilation's users beyond what the individual
 4224:      works permit.  When the Document is included in an aggregate, this
 4225:      License does not apply to the other works in the aggregate which
 4226:      are not themselves derivative works of the Document.
 4227: 
 4228:      If the Cover Text requirement of section 3 is applicable to these
 4229:      copies of the Document, then if the Document is less than one half
 4230:      of the entire aggregate, the Document's Cover Texts may be placed
 4231:      on covers that bracket the Document within the aggregate, or the
 4232:      electronic equivalent of covers if the Document is in electronic
 4233:      form.  Otherwise they must appear on printed covers that bracket
 4234:      the whole aggregate.
 4235: 
 4236:   8. TRANSLATION
 4237: 
 4238:      Translation is considered a kind of modification, so you may
 4239:      distribute translations of the Document under the terms of section
 4240:      4.  Replacing Invariant Sections with translations requires special
 4241:      permission from their copyright holders, but you may include
 4242:      translations of some or all Invariant Sections in addition to the
 4243:      original versions of these Invariant Sections.  You may include a
 4244:      translation of this License, and all the license notices in the
 4245:      Document, and any Warranty Disclaimers, provided that you also
 4246:      include the original English version of this License and the
 4247:      original versions of those notices and disclaimers.  In case of a
 4248:      disagreement between the translation and the original version of
 4249:      this License or a notice or disclaimer, the original version will
 4250:      prevail.
 4251: 
 4252:      If a section in the Document is Entitled "Acknowledgements",
 4253:      "Dedications", or "History", the requirement (section 4) to
 4254:      Preserve its Title (section 1) will typically require changing the
 4255:      actual title.
 4256: 
 4257:   9. TERMINATION
 4258: 
 4259:      You may not copy, modify, sublicense, or distribute the Document
 4260:      except as expressly provided under this License.  Any attempt
 4261:      otherwise to copy, modify, sublicense, or distribute it is void,
 4262:      and will automatically terminate your rights under this License.
 4263: 
 4264:      However, if you cease all violation of this License, then your
 4265:      license from a particular copyright holder is reinstated (a)
 4266:      provisionally, unless and until the copyright holder explicitly
 4267:      and finally terminates your license, and (b) permanently, if the
 4268:      copyright holder fails to notify you of the violation by some
 4269:      reasonable means prior to 60 days after the cessation.
 4270: 
 4271:      Moreover, your license from a particular copyright holder is
 4272:      reinstated permanently if the copyright holder notifies you of the
 4273:      violation by some reasonable means, this is the first time you have
 4274:      received notice of violation of this License (for any work) from
 4275:      that copyright holder, and you cure the violation prior to 30 days
 4276:      after your receipt of the notice.
 4277: 
 4278:      Termination of your rights under this section does not terminate
 4279:      the licenses of parties who have received copies or rights from
 4280:      you under this License.  If your rights have been terminated and
 4281:      not permanently reinstated, receipt of a copy of some or all of
 4282:      the same material does not give you any rights to use it.
 4283: 
 4284:  10. FUTURE REVISIONS OF THIS LICENSE
 4285: 
 4286:      The Free Software Foundation may publish new, revised versions of
 4287:      the GNU Free Documentation License from time to time.  Such new
 4288:      versions will be similar in spirit to the present version, but may
 4289:      differ in detail to address new problems or concerns.  See
 4290:      `http://www.gnu.org/copyleft/'.
 4291: 
 4292:      Each version of the License is given a distinguishing version
 4293:      number.  If the Document specifies that a particular numbered
 4294:      version of this License "or any later version" applies to it, you
 4295:      have the option of following the terms and conditions either of
 4296:      that specified version or of any later version that has been
 4297:      published (not as a draft) by the Free Software Foundation.  If
 4298:      the Document does not specify a version number of this License,
 4299:      you may choose any version ever published (not as a draft) by the
 4300:      Free Software Foundation.  If the Document specifies that a proxy
 4301:      can decide which future versions of this License can be used, that
 4302:      proxy's public statement of acceptance of a version permanently
 4303:      authorizes you to choose that version for the Document.
 4304: 
 4305:  11. RELICENSING
 4306: 
 4307:      "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
 4308:      World Wide Web server that publishes copyrightable works and also
 4309:      provides prominent facilities for anybody to edit those works.  A
 4310:      public wiki that anybody can edit is an example of such a server.
 4311:      A "Massive Multiauthor Collaboration" (or "MMC") contained in the
 4312:      site means any set of copyrightable works thus published on the MMC
 4313:      site.
 4314: 
 4315:      "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
 4316:      license published by Creative Commons Corporation, a not-for-profit
 4317:      corporation with a principal place of business in San Francisco,
 4318:      California, as well as future copyleft versions of that license
 4319:      published by that same organization.
 4320: 
 4321:      "Incorporate" means to publish or republish a Document, in whole or
 4322:      in part, as part of another Document.
 4323: 
 4324:      An MMC is "eligible for relicensing" if it is licensed under this
 4325:      License, and if all works that were first published under this
 4326:      License somewhere other than this MMC, and subsequently
 4327:      incorporated in whole or in part into the MMC, (1) had no cover
 4328:      texts or invariant sections, and (2) were thus incorporated prior
 4329:      to November 1, 2008.
 4330: 
 4331:      The operator of an MMC Site may republish an MMC contained in the
 4332:      site under CC-BY-SA on the same site at any time before August 1,
 4333:      2009, provided the MMC is eligible for relicensing.
 4334: 
 4335: 
 4336: ADDENDUM: How to use this License for your documents
 4337: ====================================================
 4338: 
 4339: To use this License in a document you have written, include a copy of
 4340: the License in the document and put the following copyright and license
 4341: notices just after the title page:
 4342: 
 4343:        Copyright (C)  YEAR  YOUR NAME.
 4344:        Permission is granted to copy, distribute and/or modify this document
 4345:        under the terms of the GNU Free Documentation License, Version 1.3
 4346:        or any later version published by the Free Software Foundation;
 4347:        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
 4348:        Texts.  A copy of the license is included in the section entitled ``GNU
 4349:        Free Documentation License''.
 4350: 
 4351:    If you have Invariant Sections, Front-Cover Texts and Back-Cover
 4352: Texts, replace the "with...Texts." line with this:
 4353: 
 4354:          with the Invariant Sections being LIST THEIR TITLES, with
 4355:          the Front-Cover Texts being LIST, and with the Back-Cover Texts
 4356:          being LIST.
 4357: 
 4358:    If you have Invariant Sections without Cover Texts, or some other
 4359: combination of the three, merge those two alternatives to suit the
 4360: situation.
 4361: 
 4362:    If your document contains nontrivial examples of program code, we
 4363: recommend releasing these examples in parallel under your choice of
 4364: free software license, such as the GNU General Public License, to
 4365: permit their use in free software.
 4366: 
 4367: 
 4368: File: readline.info,  Node: Concept Index,  Next: Function and Variable Index,  Prev: GNU Free Documentation License,  Up: Top
 4369: 
 4370: Concept Index
 4371: *************
 4372: 
 4373: [index]
 4374: * Menu:
 4375: 
 4376: * application-specific completion functions: Custom Completers.
 4377:                                                                (line  6)
 4378: * command editing:                       Readline Bare Essentials.
 4379:                                                                (line  6)
 4380: * editing command lines:                 Readline Bare Essentials.
 4381:                                                                (line  6)
 4382: * initialization file, readline:         Readline Init File.   (line  6)
 4383: * interaction, readline:                 Readline Interaction. (line  6)
 4384: * kill ring:                             Readline Killing Commands.
 4385:                                                                (line 19)
 4386: * killing text:                          Readline Killing Commands.
 4387:                                                                (line  6)
 4388: * notation, readline:                    Readline Bare Essentials.
 4389:                                                                (line  6)
 4390: * readline, function:                    Basic Behavior.       (line 12)
 4391: * variables, readline:                   Readline Init File Syntax.
 4392:                                                                (line 34)
 4393: * yanking text:                          Readline Killing Commands.
 4394:                                                                (line  6)
 4395: 
 4396: 
 4397: File: readline.info,  Node: Function and Variable Index,  Prev: Concept Index,  Up: Top
 4398: 
 4399: Function and Variable Index
 4400: ***************************
 4401: 
 4402: [index]
 4403: * Menu:
 4404: 
 4405: * _rl_digit_p:                           Utility Functions.   (line  65)
 4406: * _rl_digit_value:                       Utility Functions.   (line  76)
 4407: * _rl_lowercase_p:                       Utility Functions.   (line  62)
 4408: * _rl_to_lower:                          Utility Functions.   (line  72)
 4409: * _rl_to_upper:                          Utility Functions.   (line  68)
 4410: * _rl_uppercase_p:                       Utility Functions.   (line  59)
 4411: * abort (C-g):                           Miscellaneous Commands.
 4412:                                                               (line  10)
 4413: * accept-line (Newline or Return):       Commands For History.
 4414:                                                               (line   6)
 4415: * backward-char (C-b):                   Commands For Moving. (line  15)
 4416: * backward-delete-char (Rubout):         Commands For Text.   (line  17)
 4417: * backward-kill-line (C-x Rubout):       Commands For Killing.
 4418:                                                               (line   9)
 4419: * backward-kill-word (M-<DEL>):          Commands For Killing.
 4420:                                                               (line  24)
 4421: * backward-word (M-b):                   Commands For Moving. (line  22)
 4422: * beginning-of-history (M-<):            Commands For History.
 4423:                                                               (line  19)
 4424: * beginning-of-line (C-a):               Commands For Moving. (line   6)
 4425: * bell-style:                            Readline Init File Syntax.
 4426:                                                               (line  35)
 4427: * bind-tty-special-chars:                Readline Init File Syntax.
 4428:                                                               (line  42)
 4429: * call-last-kbd-macro (C-x e):           Keyboard Macros.     (line  13)
 4430: * capitalize-word (M-c):                 Commands For Text.   (line  55)
 4431: * character-search (C-]):                Miscellaneous Commands.
 4432:                                                               (line  41)
 4433: * character-search-backward (M-C-]):     Miscellaneous Commands.
 4434:                                                               (line  46)
 4435: * clear-screen (C-l):                    Commands For Moving. (line  26)
 4436: * colored-stats:                         Readline Init File Syntax.
 4437:                                                               (line  47)
 4438: * comment-begin:                         Readline Init File Syntax.
 4439:                                                               (line  53)
 4440: * complete (<TAB>):                      Commands For Completion.
 4441:                                                               (line   6)
 4442: * completion-display-width:              Readline Init File Syntax.
 4443:                                                               (line  58)
 4444: * completion-ignore-case:                Readline Init File Syntax.
 4445:                                                               (line  65)
 4446: * completion-map-case:                   Readline Init File Syntax.
 4447:                                                               (line  70)
 4448: * completion-prefix-display-length:      Readline Init File Syntax.
 4449:                                                               (line  76)
 4450: * completion-query-items:                Readline Init File Syntax.
 4451:                                                               (line  83)
 4452: * convert-meta:                          Readline Init File Syntax.
 4453:                                                               (line  93)
 4454: * copy-backward-word ():                 Commands For Killing.
 4455:                                                               (line  49)
 4456: * copy-forward-word ():                  Commands For Killing.
 4457:                                                               (line  54)
 4458: * copy-region-as-kill ():                Commands For Killing.
 4459:                                                               (line  45)
 4460: * delete-char (C-d):                     Commands For Text.   (line  12)
 4461: * delete-char-or-list ():                Commands For Completion.
 4462:                                                               (line  39)
 4463: * delete-horizontal-space ():            Commands For Killing.
 4464:                                                               (line  37)
 4465: * digit-argument (M-0, M-1, ... M--):    Numeric Arguments.   (line   6)
 4466: * disable-completion:                    Readline Init File Syntax.
 4467:                                                               (line  99)
 4468: * do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands.
 4469:                                                               (line  14)
 4470: * downcase-word (M-l):                   Commands For Text.   (line  51)
 4471: * dump-functions ():                     Miscellaneous Commands.
 4472:                                                               (line  70)
 4473: * dump-macros ():                        Miscellaneous Commands.
 4474:                                                               (line  82)
 4475: * dump-variables ():                     Miscellaneous Commands.
 4476:                                                               (line  76)
 4477: * editing-mode:                          Readline Init File Syntax.
 4478:                                                               (line 104)
 4479: * enable-keypad:                         Readline Init File Syntax.
 4480:                                                               (line 115)
 4481: * end-kbd-macro (C-x )):                 Keyboard Macros.     (line   9)
 4482: * end-of-file (usually C-d):             Commands For Text.   (line   6)
 4483: * end-of-history (M->):                  Commands For History.
 4484:                                                               (line  22)
 4485: * end-of-line (C-e):                     Commands For Moving. (line   9)
 4486: * exchange-point-and-mark (C-x C-x):     Miscellaneous Commands.
 4487:                                                               (line  36)
 4488: * expand-tilde:                          Readline Init File Syntax.
 4489:                                                               (line 126)
 4490: * forward-backward-delete-char ():       Commands For Text.   (line  21)
 4491: * forward-char (C-f):                    Commands For Moving. (line  12)
 4492: * forward-search-history (C-s):          Commands For History.
 4493:                                                               (line  30)
 4494: * forward-word (M-f):                    Commands For Moving. (line  18)
 4495: * history-preserve-point:                Readline Init File Syntax.
 4496:                                                               (line 130)
 4497: * history-search-backward ():            Commands For History.
 4498:                                                               (line  51)
 4499: * history-search-forward ():             Commands For History.
 4500:                                                               (line  45)
 4501: * history-size:                          Readline Init File Syntax.
 4502:                                                               (line 136)
 4503: * history-substr-search-backward ():     Commands For History.
 4504:                                                               (line  63)
 4505: * history-substr-search-forward ():      Commands For History.
 4506:                                                               (line  57)
 4507: * horizontal-scroll-mode:                Readline Init File Syntax.
 4508:                                                               (line 143)
 4509: * input-meta:                            Readline Init File Syntax.
 4510:                                                               (line 150)
 4511: * insert-comment (M-#):                  Miscellaneous Commands.
 4512:                                                               (line  60)
 4513: * insert-completions (M-*):              Commands For Completion.
 4514:                                                               (line  18)
 4515: * isearch-terminators:                   Readline Init File Syntax.
 4516:                                                               (line 157)
 4517: * keymap:                                Readline Init File Syntax.
 4518:                                                               (line 164)
 4519: * kill-line (C-k):                       Commands For Killing.
 4520:                                                               (line   6)
 4521: * kill-region ():                        Commands For Killing.
 4522:                                                               (line  41)
 4523: * kill-whole-line ():                    Commands For Killing.
 4524:                                                               (line  15)
 4525: * kill-word (M-d):                       Commands For Killing.
 4526:                                                               (line  19)
 4527: * mark-modified-lines:                   Readline Init File Syntax.
 4528:                                                               (line 193)
 4529: * mark-symlinked-directories:            Readline Init File Syntax.
 4530:                                                               (line 198)
 4531: * match-hidden-files:                    Readline Init File Syntax.
 4532:                                                               (line 203)
 4533: * menu-complete ():                      Commands For Completion.
 4534:                                                               (line  22)
 4535: * menu-complete-backward ():             Commands For Completion.
 4536:                                                               (line  34)
 4537: * menu-complete-display-prefix:          Readline Init File Syntax.
 4538:                                                               (line 210)
 4539: * meta-flag:                             Readline Init File Syntax.
 4540:                                                               (line 150)
 4541: * next-history (C-n):                    Commands For History.
 4542:                                                               (line  16)
 4543: * non-incremental-forward-search-history (M-n): Commands For History.
 4544:                                                               (line  40)
 4545: * non-incremental-reverse-search-history (M-p): Commands For History.
 4546:                                                               (line  35)
 4547: * output-meta:                           Readline Init File Syntax.
 4548:                                                               (line 215)
 4549: * overwrite-mode ():                     Commands For Text.   (line  59)
 4550: * page-completions:                      Readline Init File Syntax.
 4551:                                                               (line 220)
 4552: * possible-completions (M-?):            Commands For Completion.
 4553:                                                               (line  11)
 4554: * prefix-meta (<ESC>):                   Miscellaneous Commands.
 4555:                                                               (line  18)
 4556: * previous-history (C-p):                Commands For History.
 4557:                                                               (line  12)
 4558: * print-last-kbd-macro ():               Keyboard Macros.     (line  17)
 4559: * quoted-insert (C-q or C-v):            Commands For Text.   (line  26)
 4560: * re-read-init-file (C-x C-r):           Miscellaneous Commands.
 4561:                                                               (line   6)
 4562: * readline:                              Basic Behavior.      (line  12)
 4563: * redraw-current-line ():                Commands For Moving. (line  30)
 4564: * reverse-search-history (C-r):          Commands For History.
 4565:                                                               (line  26)
 4566: * revert-all-at-newline:                 Readline Init File Syntax.
 4567:                                                               (line 230)
 4568: * revert-line (M-r):                     Miscellaneous Commands.
 4569:                                                               (line  25)
 4570: * rl_add_defun:                          Function Naming.     (line  20)
 4571: * rl_add_funmap_entry:                   Associating Function Names and Bindings.
 4572:                                                               (line  47)
 4573: * rl_add_undo:                           Allowing Undoing.    (line  41)
 4574: * rl_alphabetic:                         Utility Functions.   (line  39)
 4575: * rl_already_prompted:                   Readline Variables.  (line  64)
 4576: * rl_attempted_completion_function:      Completion Variables.
 4577:                                                               (line  12)
 4578: * rl_attempted_completion_over:          Completion Variables.
 4579:                                                               (line 255)
 4580: * rl_basic_quote_characters:             Completion Variables.
 4581:                                                               (line 144)
 4582: * rl_basic_word_break_characters:        Completion Variables.
 4583:                                                               (line 138)
 4584: * rl_begin_undo_group:                   Allowing Undoing.    (line  29)
 4585: * rl_bind_key:                           Binding Keys.        (line  22)
 4586: * rl_bind_key_if_unbound:                Binding Keys.        (line  32)
 4587: * rl_bind_key_if_unbound_in_map:         Binding Keys.        (line  38)
 4588: * rl_bind_key_in_map:                    Binding Keys.        (line  27)
 4589: * rl_bind_keyseq:                        Binding Keys.        (line  59)
 4590: * rl_bind_keyseq_if_unbound:             Binding Keys.        (line  77)
 4591: * rl_bind_keyseq_if_unbound_in_map:      Binding Keys.        (line  83)
 4592: * rl_bind_keyseq_in_map:                 Binding Keys.        (line  66)
 4593: * rl_binding_keymap:                     Readline Variables.  (line 186)
 4594: * rl_callback_handler_install:           Alternate Interface. (line  15)
 4595: * rl_callback_handler_remove:            Alternate Interface. (line  35)
 4596: * rl_callback_read_char:                 Alternate Interface. (line  22)
 4597: * rl_catch_signals:                      Readline Signal Handling.
 4598:                                                               (line  48)
 4599: * rl_catch_sigwinch:                     Readline Signal Handling.
 4600:                                                               (line  55)
 4601: * rl_change_environment:                 Readline Signal Handling.
 4602:                                                               (line  61)
 4603: * rl_char_is_quoted_p:                   Completion Variables.
 4604:                                                               (line  46)
 4605: * rl_cleanup_after_signal:               Readline Signal Handling.
 4606:                                                               (line  73)
 4607: * rl_clear_history:                      Miscellaneous Functions.
 4608:                                                               (line  50)
 4609: * rl_clear_message:                      Redisplay.           (line  48)
 4610: * rl_clear_pending_input:                Character Input.     (line  30)
 4611: * rl_clear_signals:                      Readline Signal Handling.
 4612:                                                               (line 132)
 4613: * rl_complete <1>:                       How Completing Works.
 4614:                                                               (line  49)
 4615: * rl_complete:                           Completion Functions.
 4616:                                                               (line  20)
 4617: * rl_complete_internal:                  Completion Functions.
 4618:                                                               (line  10)
 4619: * rl_completer_quote_characters:         Completion Variables.
 4620:                                                               (line 161)
 4621: * rl_completer_word_break_characters:    Completion Variables.
 4622:                                                               (line 147)
 4623: * rl_completion_append_character:        Completion Variables.
 4624:                                                               (line 185)
 4625: * rl_completion_display_matches_hook:    Completion Variables.
 4626:                                                               (line 125)
 4627: * rl_completion_entry_function <1>:      How Completing Works.
 4628:                                                               (line  55)
 4629: * rl_completion_entry_function:          Completion Variables.
 4630:                                                               (line   7)
 4631: * rl_completion_found_quote:             Completion Variables.
 4632:                                                               (line 213)
 4633: * rl_completion_invoking_key:            Completion Variables.
 4634:                                                               (line 278)
 4635: * rl_completion_mark_symlink_dirs:       Completion Variables.
 4636:                                                               (line 220)
 4637: * rl_completion_matches:                 Completion Functions.
 4638:                                                               (line  45)
 4639: * rl_completion_mode:                    Completion Functions.
 4640:                                                               (line  37)
 4641: * rl_completion_query_items:             Completion Variables.
 4642:                                                               (line 179)
 4643: * rl_completion_quote_character:         Completion Variables.
 4644:                                                               (line 201)
 4645: * rl_completion_suppress_append:         Completion Variables.
 4646:                                                               (line 195)
 4647: * rl_completion_suppress_quote:          Completion Variables.
 4648:                                                               (line 207)
 4649: * rl_completion_type:                    Completion Variables.
 4650:                                                               (line 270)
 4651: * rl_completion_word_break_hook:         Completion Variables.
 4652:                                                               (line 152)
 4653: * rl_copy_keymap:                        Keymaps.             (line  17)
 4654: * rl_copy_text:                          Modifying Text.      (line  15)
 4655: * rl_crlf:                               Redisplay.           (line  30)
 4656: * rl_delete_text:                        Modifying Text.      (line  11)
 4657: * rl_deprep_term_function:               Readline Variables.  (line 176)
 4658: * rl_deprep_terminal:                    Terminal Management. (line  13)
 4659: * rl_ding:                               Utility Functions.   (line  36)
 4660: * rl_directory_completion_hook:          Completion Variables.
 4661:                                                               (line  64)
 4662: * rl_directory_rewrite_hook;:            Completion Variables.
 4663:                                                               (line  82)
 4664: * rl_discard_keymap:                     Keymaps.             (line  26)
 4665: * rl_dispatching:                        Readline Variables.  (line  41)
 4666: * rl_display_match_list:                 Utility Functions.   (line  43)
 4667: * rl_display_prompt:                     Readline Variables.  (line  59)
 4668: * rl_do_undo:                            Allowing Undoing.    (line  48)
 4669: * rl_done:                               Readline Variables.  (line  28)
 4670: * rl_echo_signal_char:                   Readline Signal Handling.
 4671:                                                               (line  96)
 4672: * rl_editing_mode:                       Readline Variables.  (line 308)
 4673: * rl_end:                                Readline Variables.  (line  19)
 4674: * rl_end_undo_group:                     Allowing Undoing.    (line  35)
 4675: * rl_erase_empty_line:                   Readline Variables.  (line  47)
 4676: * rl_event_hook:                         Readline Variables.  (line 124)
 4677: * rl_execute_next:                       Character Input.     (line  26)
 4678: * rl_executing_key:                      Readline Variables.  (line 193)
 4679: * rl_executing_keymap:                   Readline Variables.  (line 182)
 4680: * rl_executing_keyseq:                   Readline Variables.  (line 197)
 4681: * rl_executing_macro:                    Readline Variables.  (line 190)
 4682: * rl_expand_prompt:                      Redisplay.           (line  64)
 4683: * rl_explicit_arg:                       Readline Variables.  (line 299)
 4684: * rl_extend_line_buffer:                 Utility Functions.   (line  27)
 4685: * rl_filename_completion_desired:        Completion Variables.
 4686:                                                               (line 235)
 4687: * rl_filename_completion_function:       Completion Functions.
 4688:                                                               (line  59)
 4689: * rl_filename_dequoting_function:        Completion Variables.
 4690:                                                               (line  37)
 4691: * rl_filename_quote_characters:          Completion Variables.
 4692:                                                               (line 167)
 4693: * rl_filename_quoting_desired:           Completion Variables.
 4694:                                                               (line 245)
 4695: * rl_filename_quoting_function:          Completion Variables.
 4696:                                                               (line  24)
 4697: * rl_filename_rewrite_hook:              Completion Variables.
 4698:                                                               (line 110)
 4699: * rl_filename_stat_hook:                 Completion Variables.
 4700:                                                               (line  98)
 4701: * rl_forced_update_display:              Redisplay.           (line  11)
 4702: * rl_free:                               Utility Functions.   (line  18)
 4703: * rl_free_keymap:                        Keymaps.             (line  30)
 4704: * rl_free_line_state:                    Readline Signal Handling.
 4705:                                                               (line  79)
 4706: * rl_free_undo_list:                     Allowing Undoing.    (line  45)
 4707: * rl_function_dumper:                    Associating Function Names and Bindings.
 4708:                                                               (line  30)
 4709: * rl_function_of_keyseq:                 Associating Function Names and Bindings.
 4710:                                                               (line  15)
 4711: * rl_funmap_names:                       Associating Function Names and Bindings.
 4712:                                                               (line  40)
 4713: * rl_generic_bind:                       Binding Keys.        (line  89)
 4714: * rl_get_keymap:                         Keymaps.             (line  37)
 4715: * rl_get_keymap_by_name:                 Keymaps.             (line  43)
 4716: * rl_get_keymap_name:                    Keymaps.             (line  48)
 4717: * rl_get_screen_size:                    Readline Signal Handling.
 4718:                                                               (line 115)
 4719: * rl_get_termcap:                        Miscellaneous Functions.
 4720:                                                               (line  42)
 4721: * rl_getc:                               Character Input.     (line  15)
 4722: * rl_getc_function:                      Readline Variables.  (line 130)
 4723: * rl_gnu_readline_p:                     Readline Variables.  (line  83)
 4724: * rl_ignore_completion_duplicates:       Completion Variables.
 4725:                                                               (line 231)
 4726: * rl_ignore_some_completions_function:   Completion Variables.
 4727:                                                               (line  56)
 4728: * rl_inhibit_completion:                 Completion Variables.
 4729:                                                               (line 284)
 4730: * rl_initialize:                         Utility Functions.   (line  31)
 4731: * rl_input_available_hook:               Readline Variables.  (line 142)
 4732: * rl_insert_completions:                 Completion Functions.
 4733:                                                               (line  32)
 4734: * rl_insert_text:                        Modifying Text.      (line   7)
 4735: * rl_instream:                           Readline Variables.  (line  97)
 4736: * rl_invoking_keyseqs:                   Associating Function Names and Bindings.
 4737:                                                               (line  21)
 4738: * rl_invoking_keyseqs_in_map:            Associating Function Names and Bindings.
 4739:                                                               (line  26)
 4740: * rl_key_sequence_length:                Readline Variables.  (line 201)
 4741: * rl_kill_text:                          Modifying Text.      (line  19)
 4742: * rl_last_func:                          Readline Variables.  (line 110)
 4743: * rl_library_version:                    Readline Variables.  (line  73)
 4744: * rl_line_buffer:                        Readline Variables.  (line   9)
 4745: * rl_list_funmap_names:                  Associating Function Names and Bindings.
 4746:                                                               (line  36)
 4747: * rl_macro_bind:                         Miscellaneous Functions.
 4748:                                                               (line   8)
 4749: * rl_macro_dumper:                       Miscellaneous Functions.
 4750:                                                               (line  14)
 4751: * rl_make_bare_keymap:                   Keymaps.             (line  12)
 4752: * rl_make_keymap:                        Keymaps.             (line  20)
 4753: * rl_mark:                               Readline Variables.  (line  24)
 4754: * rl_message:                            Redisplay.           (line  39)
 4755: * rl_modifying:                          Allowing Undoing.    (line  57)
 4756: * rl_named_function:                     Associating Function Names and Bindings.
 4757:                                                               (line  11)
 4758: * rl_num_chars_to_read:                  Readline Variables.  (line  32)
 4759: * rl_numeric_arg:                        Readline Variables.  (line 303)
 4760: * rl_on_new_line:                        Redisplay.           (line  15)
 4761: * rl_on_new_line_with_prompt:            Redisplay.           (line  19)
 4762: * rl_outstream:                          Readline Variables.  (line 101)
 4763: * rl_parse_and_bind:                     Binding Keys.        (line  96)
 4764: * rl_pending_input:                      Readline Variables.  (line  37)
 4765: * rl_point:                              Readline Variables.  (line  15)
 4766: * rl_possible_completions:               Completion Functions.
 4767:                                                               (line  28)
 4768: * rl_pre_input_hook:                     Readline Variables.  (line 119)
 4769: * rl_prefer_env_winsize:                 Readline Variables.  (line 105)
 4770: * rl_prep_term_function:                 Readline Variables.  (line 169)
 4771: * rl_prep_terminal:                      Terminal Management. (line   7)
 4772: * rl_prompt:                             Readline Variables.  (line  53)
 4773: * rl_push_macro_input:                   Modifying Text.      (line  26)
 4774: * rl_read_init_file:                     Binding Keys.        (line 101)
 4775: * rl_read_key:                           Character Input.     (line   7)
 4776: * rl_readline_name:                      Readline Variables.  (line  92)
 4777: * rl_readline_state:                     Readline Variables.  (line 204)
 4778: * rl_readline_version:                   Readline Variables.  (line  76)
 4779: * rl_redisplay:                          Redisplay.           (line   7)
 4780: * rl_redisplay_function:                 Readline Variables.  (line 163)
 4781: * rl_replace_line:                       Utility Functions.   (line  22)
 4782: * rl_reset_after_signal:                 Readline Signal Handling.
 4783:                                                               (line  87)
 4784: * rl_reset_line_state:                   Redisplay.           (line  26)
 4785: * rl_reset_screen_size:                  Readline Signal Handling.
 4786:                                                               (line 119)
 4787: * rl_reset_terminal:                     Terminal Management. (line  28)
 4788: * rl_resize_terminal:                    Readline Signal Handling.
 4789:                                                               (line 102)
 4790: * rl_restore_prompt:                     Redisplay.           (line  57)
 4791: * rl_restore_state:                      Utility Functions.   (line  12)
 4792: * rl_save_prompt:                        Redisplay.           (line  53)
 4793: * rl_save_state:                         Utility Functions.   (line   7)
 4794: * rl_set_key:                            Binding Keys.        (line  73)
 4795: * rl_set_keyboard_input_timeout:         Character Input.     (line  35)
 4796: * rl_set_keymap:                         Keymaps.             (line  40)
 4797: * rl_set_paren_blink_timeout:            Miscellaneous Functions.
 4798:                                                               (line  37)
 4799: * rl_set_prompt:                         Redisplay.           (line  78)
 4800: * rl_set_screen_size:                    Readline Signal Handling.
 4801:                                                               (line 106)
 4802: * rl_set_signals:                        Readline Signal Handling.
 4803:                                                               (line 126)
 4804: * rl_show_char:                          Redisplay.           (line  33)
 4805: * rl_signal_event_hook:                  Readline Variables.  (line 138)
 4806: * rl_sort_completion_matches:            Completion Variables.
 4807:                                                               (line 262)
 4808: * rl_special_prefixes:                   Completion Variables.
 4809:                                                               (line 172)
 4810: * rl_startup_hook:                       Readline Variables.  (line 115)
 4811: * rl_stuff_char:                         Character Input.     (line  19)
 4812: * rl_terminal_name:                      Readline Variables.  (line  87)
 4813: * rl_tty_set_default_bindings:           Terminal Management. (line  18)
 4814: * rl_tty_unset_default_bindings:         Terminal Management. (line  23)
 4815: * rl_unbind_command_in_map:              Binding Keys.        (line  55)
 4816: * rl_unbind_function_in_map:             Binding Keys.        (line  51)
 4817: * rl_unbind_key:                         Binding Keys.        (line  42)
 4818: * rl_unbind_key_in_map:                  Binding Keys.        (line  46)
 4819: * rl_username_completion_function:       Completion Functions.
 4820:                                                               (line  66)
 4821: * rl_variable_bind:                      Miscellaneous Functions.
 4822:                                                               (line  21)
 4823: * rl_variable_dumper:                    Miscellaneous Functions.
 4824:                                                               (line  31)
 4825: * rl_variable_value:                     Miscellaneous Functions.
 4826:                                                               (line  26)
 4827: * self-insert (a, b, A, 1, !, ...):      Commands For Text.   (line  33)
 4828: * set-mark (C-@):                        Miscellaneous Commands.
 4829:                                                               (line  32)
 4830: * show-all-if-ambiguous:                 Readline Init File Syntax.
 4831:                                                               (line 236)
 4832: * show-all-if-unmodified:                Readline Init File Syntax.
 4833:                                                               (line 242)
 4834: * show-mode-in-prompt:                   Readline Init File Syntax.
 4835:                                                               (line 251)
 4836: * skip-completed-text:                   Readline Init File Syntax.
 4837:                                                               (line 256)
 4838: * skip-csi-sequence ():                  Miscellaneous Commands.
 4839:                                                               (line  51)
 4840: * start-kbd-macro (C-x ():               Keyboard Macros.     (line   6)
 4841: * transpose-chars (C-t):                 Commands For Text.   (line  36)
 4842: * transpose-words (M-t):                 Commands For Text.   (line  42)
 4843: * undo (C-_ or C-x C-u):                 Miscellaneous Commands.
 4844:                                                               (line  22)
 4845: * universal-argument ():                 Numeric Arguments.   (line  10)
 4846: * unix-filename-rubout ():               Commands For Killing.
 4847:                                                               (line  32)
 4848: * unix-line-discard (C-u):               Commands For Killing.
 4849:                                                               (line  12)
 4850: * unix-word-rubout (C-w):                Commands For Killing.
 4851:                                                               (line  28)
 4852: * upcase-word (M-u):                     Commands For Text.   (line  47)
 4853: * visible-stats:                         Readline Init File Syntax.
 4854:                                                               (line 269)
 4855: * yank (C-y):                            Commands For Killing.
 4856:                                                               (line  59)
 4857: * yank-last-arg (M-. or M-_):            Commands For History.
 4858:                                                               (line  78)
 4859: * yank-nth-arg (M-C-y):                  Commands For History.
 4860:                                                               (line  69)
 4861: * yank-pop (M-y):                        Commands For Killing.
 4862:                                                               (line  62)
 4863: 
 4864: 
 4865: 
 4866: Tag Table:
 4867: Node: Top907
 4868: Node: Command Line Editing1632
 4869: Node: Introduction and Notation2284
 4870: Node: Readline Interaction3907
 4871: Node: Readline Bare Essentials5099
 4872: Node: Readline Movement Commands6889
 4873: Node: Readline Killing Commands7855
 4874: Node: Readline Arguments9776
 4875: Node: Searching10821
 4876: Node: Readline Init File12973
 4877: Node: Readline Init File Syntax14127
 4878: Node: Conditional Init Constructs30832
 4879: Node: Sample Init File33366
 4880: Node: Bindable Readline Commands36485
 4881: Node: Commands For Moving37543
 4882: Node: Commands For History38405
 4883: Node: Commands For Text42560
 4884: Node: Commands For Killing45543
 4885: Node: Numeric Arguments47686
 4886: Node: Commands For Completion48826
 4887: Node: Keyboard Macros50796
 4888: Node: Miscellaneous Commands51485
 4889: Node: Readline vi Mode55342
 4890: Node: Programming with GNU Readline57159
 4891: Node: Basic Behavior58145
 4892: Node: Custom Functions61562
 4893: Node: Readline Typedefs63046
 4894: Node: Function Writing64686
 4895: Node: Readline Variables65993
 4896: Node: Readline Convenience Functions78671
 4897: Node: Function Naming79743
 4898: Node: Keymaps81005
 4899: Node: Binding Keys82998
 4900: Node: Associating Function Names and Bindings87545
 4901: Node: Allowing Undoing89830
 4902: Node: Redisplay92380
 4903: Node: Modifying Text96281
 4904: Node: Character Input97527
 4905: Node: Terminal Management99425
 4906: Node: Utility Functions100861
 4907: Node: Miscellaneous Functions104189
 4908: Node: Alternate Interface106778
 4909: Node: A Readline Example109012
 4910: Node: Alternate Interface Example110951
 4911: Node: Readline Signal Handling113724
 4912: Node: Custom Completers120246
 4913: Node: How Completing Works120966
 4914: Node: Completion Functions124280
 4915: Node: Completion Variables127854
 4916: Node: A Short Completion Example143502
 4917: Node: GNU Free Documentation License156281
 4918: Node: Concept Index181474
 4919: Node: Function and Variable Index182995
 4920: 
 4921: End Tag Table

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