summaryrefslogtreecommitdiff
path: root/readline
diff options
context:
space:
mode:
authorElena Zannoni <ezannoni@kwikemart.cygnus.com>2000-07-09 16:21:23 +0000
committerElena Zannoni <ezannoni@kwikemart.cygnus.com>2000-07-09 16:21:23 +0000
commit02d1f6c91a787c58846362179f37451e042de18f (patch)
tree8adb692606adb6f1dada728c1312b7a4b846f1f0 /readline
parentf3e704f4ae41c65bfcb911e88bbeaf6523eb4129 (diff)
downloadgdb-02d1f6c91a787c58846362179f37451e042de18f.tar.gz
Initial revision
Diffstat (limited to 'readline')
-rw-r--r--readline/USAGE37
-rw-r--r--readline/doc/rluserman.dvibin0 -> 61412 bytes
-rw-r--r--readline/doc/rluserman.html1566
-rw-r--r--readline/doc/rluserman.info1189
-rw-r--r--readline/doc/rluserman.ps1897
-rw-r--r--readline/doc/rluserman.texinfo94
-rw-r--r--readline/examples/excallback.c186
-rw-r--r--readline/examples/rlfe.c685
-rw-r--r--readline/rlprivate.h271
-rw-r--r--readline/rlshell.h34
-rw-r--r--readline/xmalloc.h46
11 files changed, 6005 insertions, 0 deletions
diff --git a/readline/USAGE b/readline/USAGE
new file mode 100644
index 00000000000..edc9f5417d4
--- /dev/null
+++ b/readline/USAGE
@@ -0,0 +1,37 @@
+From rms@gnu.org Thu Jul 22 20:37:55 1999
+Flags: 10
+Return-Path: rms@gnu.org
+Received: from arthur.INS.CWRU.Edu (root@arthur.INS.CWRU.Edu [129.22.8.215]) by odin.INS.CWRU.Edu with ESMTP (8.8.6+cwru/CWRU-2.4-ins)
+ id UAA25349; Thu, 22 Jul 1999 20:37:54 -0400 (EDT) (from rms@gnu.org for <chet@odin.INS.CWRU.Edu>)
+Received: from nike.ins.cwru.edu (root@nike.INS.CWRU.Edu [129.22.8.219]) by arthur.INS.CWRU.Edu with ESMTP (8.8.8+cwru/CWRU-3.6)
+ id UAA05311; Thu, 22 Jul 1999 20:37:51 -0400 (EDT) (from rms@gnu.org for <chet@po.cwru.edu>)
+Received: from pele.santafe.edu (pele.santafe.edu [192.12.12.119]) by nike.ins.cwru.edu with ESMTP (8.8.7/CWRU-2.5-bsdi)
+ id UAA13350; Thu, 22 Jul 1999 20:37:50 -0400 (EDT) (from rms@gnu.org for <chet@nike.ins.cwru.edu>)
+Received: from wijiji.santafe.edu (wijiji [192.12.12.5])
+ by pele.santafe.edu (8.9.1/8.9.1) with ESMTP id SAA10831
+ for <chet@nike.ins.cwru.edu>; Thu, 22 Jul 1999 18:37:47 -0600 (MDT)
+Received: (from rms@localhost)
+ by wijiji.santafe.edu (8.9.1b+Sun/8.9.1) id SAA01089;
+ Thu, 22 Jul 1999 18:37:46 -0600 (MDT)
+Date: Thu, 22 Jul 1999 18:37:46 -0600 (MDT)
+Message-Id: <199907230037.SAA01089@wijiji.santafe.edu>
+X-Authentication-Warning: wijiji.santafe.edu: rms set sender to rms@gnu.org using -f
+From: Richard Stallman <rms@gnu.org>
+To: chet@nike.ins.cwru.edu
+Subject: Use of Readline
+Reply-to: rms@gnu.org
+
+I think Allbery's suggestion is a good one. So please add this text
+in a suitable place. Please don't put it in the GPL itself; that
+should be the same as the GPL everywhere else. Putting it in the
+README and/or the documentation would be a good idea.
+
+
+======================================================================
+Our position on the use of Readline through a shared-library linking
+mechanism is that there is no legal difference between shared-library
+linking and static linking--either kind of linking combines various
+modules into a single larger work. The conditions for using Readline
+in a larger work are stated in section 3 of the GNU GPL.
+
+
diff --git a/readline/doc/rluserman.dvi b/readline/doc/rluserman.dvi
new file mode 100644
index 00000000000..0d2bf71f771
--- /dev/null
+++ b/readline/doc/rluserman.dvi
Binary files differ
diff --git a/readline/doc/rluserman.html b/readline/doc/rluserman.html
new file mode 100644
index 00000000000..b813dda6c1e
--- /dev/null
+++ b/readline/doc/rluserman.html
@@ -0,0 +1,1566 @@
+<HTML>
+<HEAD>
+<!-- This HTML file has been created by texi2html 1.52
+ from /usr/homes/chet/src/bash/readline-src/doc/rluserman.texinfo on 1 March 2000 -->
+
+<TITLE>GNU Readline Library</TITLE>
+</HEAD>
+<BODY>
+<H1>GNU Readline Library User Interface</H1>
+<H2>Edition 4.1, for <CODE>Readline Library</CODE> Version 4.1.</H2>
+<H2>January 2000</H2>
+<ADDRESS>Brian Fox, Free Software Foundation</ADDRESS>
+<ADDRESS>Chet Ramey, Case Western Reserve University</ADDRESS>
+<P>
+<P><HR><P>
+<H1>Table of Contents</H1>
+<UL>
+<LI><A NAME="TOC1" HREF="rluserman.html#SEC1">Command Line Editing</A>
+<UL>
+<LI><A NAME="TOC2" HREF="rluserman.html#SEC2">Introduction to Line Editing</A>
+<LI><A NAME="TOC3" HREF="rluserman.html#SEC3">Readline Interaction</A>
+<UL>
+<LI><A NAME="TOC4" HREF="rluserman.html#SEC4">Readline Bare Essentials</A>
+<LI><A NAME="TOC5" HREF="rluserman.html#SEC5">Readline Movement Commands</A>
+<LI><A NAME="TOC6" HREF="rluserman.html#SEC6">Readline Killing Commands</A>
+<LI><A NAME="TOC7" HREF="rluserman.html#SEC7">Readline Arguments</A>
+<LI><A NAME="TOC8" HREF="rluserman.html#SEC8">Searching for Commands in the History</A>
+</UL>
+<LI><A NAME="TOC9" HREF="rluserman.html#SEC9">Readline Init File</A>
+<UL>
+<LI><A NAME="TOC10" HREF="rluserman.html#SEC10">Readline Init File Syntax</A>
+<LI><A NAME="TOC11" HREF="rluserman.html#SEC11">Conditional Init Constructs</A>
+<LI><A NAME="TOC12" HREF="rluserman.html#SEC12">Sample Init File</A>
+</UL>
+<LI><A NAME="TOC13" HREF="rluserman.html#SEC13">Bindable Readline Commands</A>
+<UL>
+<LI><A NAME="TOC14" HREF="rluserman.html#SEC14">Commands For Moving</A>
+<LI><A NAME="TOC15" HREF="rluserman.html#SEC15">Commands For Manipulating The History</A>
+<LI><A NAME="TOC16" HREF="rluserman.html#SEC16">Commands For Changing Text</A>
+<LI><A NAME="TOC17" HREF="rluserman.html#SEC17">Killing And Yanking</A>
+<LI><A NAME="TOC18" HREF="rluserman.html#SEC18">Specifying Numeric Arguments</A>
+<LI><A NAME="TOC19" HREF="rluserman.html#SEC19">Letting Readline Type For You</A>
+<LI><A NAME="TOC20" HREF="rluserman.html#SEC20">Keyboard Macros</A>
+<LI><A NAME="TOC21" HREF="rluserman.html#SEC21">Some Miscellaneous Commands</A>
+</UL>
+<LI><A NAME="TOC22" HREF="rluserman.html#SEC22">Readline vi Mode</A>
+</UL>
+</UL>
+<P><HR><P>
+
+<P>
+This document describes the end user interface of the GNU Readline Library,
+a utility which aids in the consistency of user interface across discrete
+programs that need to provide a command line interface.
+
+</P>
+<P>
+Published by the Free Software Foundation <BR>
+59 Temple Place, Suite 330, <BR>
+Boston, MA 02111 USA
+
+</P>
+<P>
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+</P>
+<P>
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+</P>
+<P>
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Free Software Foundation.
+
+</P>
+<P>
+Copyright (C) 1988-1999 Free Software Foundation, Inc.
+
+</P>
+
+
+
+<H1><A NAME="SEC1" HREF="rluserman.html#TOC1">Command Line Editing</A></H1>
+
+<P>
+This chapter describes the basic features of the GNU
+command line editing interface.
+
+</P>
+
+<UL>
+<LI><A HREF="rluserman.html#SEC2">Introduction and Notation</A>: Notation used in this text.
+<LI><A HREF="rluserman.html#SEC3">Readline Interaction</A>: The minimum set of commands for editing a line.
+<LI><A HREF="rluserman.html#SEC9">Readline Init File</A>: Customizing Readline from a user's view.
+<LI><A HREF="rluserman.html#SEC13">Bindable Readline Commands</A>: A description of most of the Readline commands
+ available for binding
+<LI><A HREF="rluserman.html#SEC22">Readline vi Mode</A>: A short description of how to make Readline
+ behave like the vi editor.
+</UL>
+
+
+
+<H2><A NAME="SEC2" HREF="rluserman.html#TOC2">Introduction to Line Editing</A></H2>
+
+<P>
+The following paragraphs describe the notation used to represent
+keystrokes.
+
+</P>
+<P>
+The text <KBD>C-k</KBD> is read as `Control-K' and describes the character
+produced when the <KBD>k</KBD> key is pressed while the Control key
+is depressed.
+
+</P>
+<P>
+The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character
+produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD>
+key is pressed.
+The Meta key is labeled <KBD>ALT</KBD> on many keyboards.
+On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of
+the space bar), the <KBD>ALT</KBD> on the left side is generally set to
+work as a Meta key.
+The <KBD>ALT</KBD> key on the right may also be configured to work as a
+Meta key or may be configured as some other modifier, such as a
+Compose key for typing accented characters.
+
+</P>
+<P>
+If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as
+a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD>
+<I>first</I>, and then typing <KBD>k</KBD>.
+Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key.
+
+</P>
+<P>
+The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the
+character produced by <EM>metafying</EM> <KBD>C-k</KBD>.
+
+</P>
+<P>
+In addition, several keys have their own names. Specifically,
+<KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all
+stand for themselves when seen in this text, or in an init file
+(see section <A HREF="rluserman.html#SEC9">Readline Init File</A>).
+If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will
+produce the desired character.
+The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on
+some keyboards.
+
+</P>
+
+
+<H2><A NAME="SEC3" HREF="rluserman.html#TOC3">Readline Interaction</A></H2>
+<P>
+<A NAME="IDX1"></A>
+
+</P>
+<P>
+Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press <KBD>RETURN</KBD>. You do not have to be at the
+end of the line to press <KBD>RETURN</KBD>; the entire line is accepted
+regardless of the location of the cursor within the line.
+
+</P>
+
+<UL>
+<LI><A HREF="rluserman.html#SEC4">Readline Bare Essentials</A>: The least you need to know about Readline.
+<LI><A HREF="rluserman.html#SEC5">Readline Movement Commands</A>: Moving about the input line.
+<LI><A HREF="rluserman.html#SEC6">Readline Killing Commands</A>: How to delete text, and how to get it back!
+<LI><A HREF="rluserman.html#SEC7">Readline Arguments</A>: Giving numeric arguments to commands.
+<LI><A HREF="rluserman.html#SEC8">Searching</A>: Searching through previous lines.
+</UL>
+
+
+
+<H3><A NAME="SEC4" HREF="rluserman.html#TOC4">Readline Bare Essentials</A></H3>
+<P>
+<A NAME="IDX2"></A>
+<A NAME="IDX3"></A>
+<A NAME="IDX4"></A>
+
+</P>
+<P>
+In order to enter characters into the line, simply type them. The typed
+character appears where the cursor was, and then the cursor moves one
+space to the right. If you mistype a character, you can use your
+erase character to back up and delete the mistyped character.
+
+</P>
+<P>
+Sometimes you may mistype a character, and
+not notice the error until you have typed several other characters. In
+that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then
+correct your mistake. Afterwards, you can move the cursor to the right
+with <KBD>C-f</KBD>.
+
+</P>
+<P>
+When you add text in the middle of a line, you will notice that characters
+to the right of the cursor are `pushed over' to make room for the text
+that you have inserted. Likewise, when you delete text behind the cursor,
+characters to the right of the cursor are `pulled back' to fill in the
+blank space created by the removal of the text. A list of the bare
+essentials for editing the text of an input line follows.
+
+</P>
+<DL COMPACT>
+
+<DT><KBD>C-b</KBD>
+<DD>
+Move back one character.
+<DT><KBD>C-f</KBD>
+<DD>
+Move forward one character.
+<DT><KBD>DEL</KBD> or <KBD>Backspace</KBD>
+<DD>
+Delete the character to the left of the cursor.
+<DT><KBD>C-d</KBD>
+<DD>
+Delete the character underneath the cursor.
+<DT>Printing characters
+<DD>
+Insert the character into the line at the cursor.
+<DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD>
+<DD>
+Undo the last editing command. You can undo all the way back to an
+empty line.
+</DL>
+
+<P>
+(Depending on your configuration, the <KBD>Backspace</KBD> key be set to
+delete the character to the left of the cursor and the <KBD>DEL</KBD> key set
+to delete the character underneath the cursor, like <KBD>C-d</KBD>, rather
+than the character to the left of the cursor.)
+
+</P>
+
+
+<H3><A NAME="SEC5" HREF="rluserman.html#TOC5">Readline Movement Commands</A></H3>
+
+<P>
+The above table describes the most basic keystrokes that you need
+in order to do editing of the input line. For your convenience, many
+other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>,
+<KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly
+about the line.
+
+</P>
+<DL COMPACT>
+
+<DT><KBD>C-a</KBD>
+<DD>
+Move to the start of the line.
+<DT><KBD>C-e</KBD>
+<DD>
+Move to the end of the line.
+<DT><KBD>M-f</KBD>
+<DD>
+Move forward a word, where a word is composed of letters and digits.
+<DT><KBD>M-b</KBD>
+<DD>
+Move backward a word.
+<DT><KBD>C-l</KBD>
+<DD>
+Clear the screen, reprinting the current line at the top.
+</DL>
+
+<P>
+Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves
+forward a word. It is a loose convention that control keystrokes
+operate on characters while meta keystrokes operate on words.
+
+</P>
+
+
+<H3><A NAME="SEC6" HREF="rluserman.html#TOC6">Readline Killing Commands</A></H3>
+
+<P>
+<A NAME="IDX5"></A>
+<A NAME="IDX6"></A>
+
+</P>
+<P>
+<EM>Killing</EM> text means to delete the text from the line, but to save
+it away for later use, usually by <EM>yanking</EM> (re-inserting)
+it back into the line.
+(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
+
+</P>
+<P>
+If the description for a command says that it `kills' text, then you can
+be sure that you can get the text back in a different (or the same)
+place later.
+
+</P>
+<P>
+When you use a kill command, the text is saved in a <EM>kill-ring</EM>.
+Any number of consecutive kills save all of the killed text together, so
+that when you yank it back, you get it all. The kill
+ring is not line specific; the text that you killed on a previously
+typed line is available to be yanked back later, when you are typing
+another line.
+<A NAME="IDX7"></A>
+
+</P>
+<P>
+Here is the list of commands for killing text.
+
+</P>
+<DL COMPACT>
+
+<DT><KBD>C-k</KBD>
+<DD>
+Kill the text from the current cursor position to the end of the line.
+
+<DT><KBD>M-d</KBD>
+<DD>
+Kill from the cursor to the end of the current word, or, if between
+words, to the end of the next word.
+Word boundaries are the same as those used by <KBD>M-f</KBD>.
+
+<DT><KBD>M-DEL</KBD>
+<DD>
+Kill from the cursor the start of the previous word, or, if between
+words, to the start of the previous word.
+Word boundaries are the same as those used by <KBD>M-b</KBD>.
+
+<DT><KBD>C-w</KBD>
+<DD>
+Kill from the cursor to the previous whitespace. This is different than
+<KBD>M-DEL</KBD> because the word boundaries differ.
+
+</DL>
+
+<P>
+Here is how to <EM>yank</EM> the text back into the line. Yanking
+means to copy the most-recently-killed text from the kill buffer.
+
+</P>
+<DL COMPACT>
+
+<DT><KBD>C-y</KBD>
+<DD>
+Yank the most recently killed text back into the buffer at the cursor.
+
+<DT><KBD>M-y</KBD>
+<DD>
+Rotate the kill-ring, and yank the new top. You can only do this if
+the prior command is <KBD>C-y</KBD> or <KBD>M-y</KBD>.
+</DL>
+
+
+
+<H3><A NAME="SEC7" HREF="rluserman.html#TOC7">Readline Arguments</A></H3>
+
+<P>
+You can pass numeric arguments to Readline commands. Sometimes the
+argument acts as a repeat count, other times it is the <I>sign</I> of the
+argument that is significant. If you pass a negative argument to a
+command which normally acts in a forward direction, that command will
+act in a backward direction. For example, to kill text back to the
+start of the line, you might type <SAMP>`M-- C-k'</SAMP>.
+
+</P>
+<P>
+The general way to pass numeric arguments to a command is to type meta
+digits before the command. If the first `digit' typed is a minus
+sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once
+you have typed one meta digit to get the argument started, you can type
+the remainder of the digits, and then the command. For example, to give
+the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>.
+
+</P>
+
+
+<H3><A NAME="SEC8" HREF="rluserman.html#TOC8">Searching for Commands in the History</A></H3>
+
+<P>
+Readline provides commands for searching through the command history
+for lines containing a specified string.
+There are two search modes: <VAR>incremental</VAR> and <VAR>non-incremental</VAR>.
+
+</P>
+<P>
+Incremental searches begin before the user has finished typing the
+search string.
+As each character of the search string is typed, Readline displays
+the next entry from the history matching the string typed so far.
+An incremental search requires only as many characters as needed to
+find the desired history entry.
+To search backward in the history for a particular string, type
+<KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history.
+The characters present in the value of the <CODE>isearch-terminators</CODE> variable
+are used to terminate an incremental search.
+If that variable has not been assigned a value, the <KBD>ESC</KBD> and
+<KBD>C-J</KBD> characters will terminate an incremental search.
+<KBD>C-g</KBD> will abort an incremental search and restore the original line.
+When the search is terminated, the history entry containing the
+search string becomes the current line.
+
+</P>
+<P>
+To find other matching entries in the history list, type <KBD>C-r</KBD> or
+<KBD>C-s</KBD> as appropriate.
+This will search backward or forward in the history for the next
+entry matching the search string typed so far.
+Any other key sequence bound to a Readline command will terminate
+the search and execute that command.
+For instance, a <KBD>RET</KBD> will terminate the search and accept
+the line, thereby executing the command from the history list.
+
+</P>
+<P>
+Non-incremental searches read the entire search string before starting
+to search for matching history lines. The search string may be
+typed by the user or be part of the contents of the current line.
+
+</P>
+
+
+<H2><A NAME="SEC9" HREF="rluserman.html#TOC9">Readline Init File</A></H2>
+<P>
+<A NAME="IDX8"></A>
+
+</P>
+<P>
+Although the Readline library comes with a set of Emacs-like
+keybindings installed by default, it is possible to use a different set
+of keybindings.
+Any user can customize programs that use Readline by putting
+commands in an <EM>inputrc</EM> file, conventionally in his home directory.
+The name of this
+file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If
+that variable is unset, the default is <TT>`~/.inputrc'</TT>.
+
+</P>
+<P>
+When a program which uses the Readline library starts up, the
+init file is read, and the key bindings are set.
+
+</P>
+<P>
+In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+
+</P>
+
+<UL>
+<LI><A HREF="rluserman.html#SEC10">Readline Init File Syntax</A>: Syntax for the commands in the inputrc file.
+
+<LI><A HREF="rluserman.html#SEC11">Conditional Init Constructs</A>: Conditional key bindings in the inputrc file.
+
+<LI><A HREF="rluserman.html#SEC12">Sample Init File</A>: An example inputrc file.
+</UL>
+
+
+
+<H3><A NAME="SEC10" HREF="rluserman.html#TOC10">Readline Init File Syntax</A></H3>
+
+<P>
+There are only a few basic constructs allowed in the
+Readline init file. Blank lines are ignored.
+Lines beginning with a <SAMP>`#'</SAMP> are comments.
+Lines beginning with a <SAMP>`$'</SAMP> indicate conditional
+constructs (see section <A HREF="rluserman.html#SEC11">Conditional Init Constructs</A>). Other lines
+denote variable settings and key bindings.
+
+</P>
+<DL COMPACT>
+
+<DT>Variable Settings
+<DD>
+You can modify the run-time behavior of Readline by
+altering the values of variables in Readline
+using the <CODE>set</CODE> command within the init file. Here is how to
+change from the default Emacs-like key binding to use
+<CODE>vi</CODE> line editing commands:
+
+
+<PRE>
+set editing-mode vi
+</PRE>
+
+A great deal of run-time behavior is changeable with the following
+variables.
+
+<DL COMPACT>
+
+<DT><CODE>bell-style</CODE>
+<DD>
+<A NAME="IDX9"></A>
+Controls what happens when Readline wants to ring the terminal bell.
+If set to <SAMP>`none'</SAMP>, Readline never rings the bell. If set to
+<SAMP>`visible'</SAMP>, Readline uses a visible bell if one is available.
+If set to <SAMP>`audible'</SAMP> (the default), Readline attempts to ring
+the terminal's bell.
+
+<DT><CODE>comment-begin</CODE>
+<DD>
+<A NAME="IDX10"></A>
+The string to insert at the beginning of the line when the
+<CODE>insert-comment</CODE> command is executed. The default value
+is <CODE>"#"</CODE>.
+
+<DT><CODE>completion-ignore-case</CODE>
+<DD>
+If set to <SAMP>`on'</SAMP>, Readline performs filename matching and completion
+in a case-insensitive fashion.
+The default value is <SAMP>`off'</SAMP>.
+
+<DT><CODE>completion-query-items</CODE>
+<DD>
+<A NAME="IDX11"></A>
+The number of possible completions that determines when the user is
+asked whether he wants to see the list of possibilities. If the
+number of possible completions is greater than this value,
+Readline will ask the user whether or not he wishes to view
+them; otherwise, they are simply listed. The default limit is
+<CODE>100</CODE>.
+
+<DT><CODE>convert-meta</CODE>
+<DD>
+<A NAME="IDX12"></A>
+If set to <SAMP>`on'</SAMP>, Readline will convert characters with the
+eighth bit set to an ASCII key sequence by stripping the eighth
+bit and prefixing an <KBD>ESC</KBD> character, converting them to a
+meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>.
+
+<DT><CODE>disable-completion</CODE>
+<DD>
+<A NAME="IDX13"></A>
+If set to <SAMP>`On'</SAMP>, Readline will inhibit word completion.
+Completion characters will be inserted into the line as if they had
+been mapped to <CODE>self-insert</CODE>. The default is <SAMP>`off'</SAMP>.
+
+<DT><CODE>editing-mode</CODE>
+<DD>
+<A NAME="IDX14"></A>
+The <CODE>editing-mode</CODE> variable controls which default set of
+key bindings is used. By default, Readline starts up in Emacs editing
+mode, where the keystrokes are most similar to Emacs. This variable can be
+set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
+
+<DT><CODE>enable-keypad</CODE>
+<DD>
+<A NAME="IDX15"></A>
+When set to <SAMP>`on'</SAMP>, Readline will try to enable the application
+keypad when it is called. Some systems need this to enable the
+arrow keys. The default is <SAMP>`off'</SAMP>.
+
+<DT><CODE>expand-tilde</CODE>
+<DD>
+<A NAME="IDX16"></A>
+If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
+attempts word completion. The default is <SAMP>`off'</SAMP>.
+
+<DT><CODE>horizontal-scroll-mode</CODE>
+<DD>
+<A NAME="IDX17"></A>
+This variable can be set to either <SAMP>`on'</SAMP> or <SAMP>`off'</SAMP>. Setting it
+to <SAMP>`on'</SAMP> means that the text of the lines being edited will scroll
+horizontally on a single screen line when they are longer than the width
+of the screen, instead of wrapping onto a new screen line. By default,
+this variable is set to <SAMP>`off'</SAMP>.
+
+<DT><CODE>input-meta</CODE>
+<DD>
+<A NAME="IDX18"></A>
+<A NAME="IDX19"></A>
+If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it
+will not strip the eighth bit from the characters it reads),
+regardless of what the terminal claims it can support. The
+default value is <SAMP>`off'</SAMP>. The name <CODE>meta-flag</CODE> is a
+synonym for this variable.
+
+<DT><CODE>isearch-terminators</CODE>
+<DD>
+<A NAME="IDX20"></A>
+The string of characters that should terminate an incremental search without
+subsequently executing the character as a command (see section <A HREF="rluserman.html#SEC8">Searching for Commands in the History</A>).
+If this variable has not been given a value, the characters <KBD>ESC</KBD> and
+<KBD>C-J</KBD> will terminate an incremental search.
+
+<DT><CODE>keymap</CODE>
+<DD>
+<A NAME="IDX21"></A>
+Sets Readline's idea of the current keymap for key binding commands.
+Acceptable <CODE>keymap</CODE> names are
+<CODE>emacs</CODE>,
+<CODE>emacs-standard</CODE>,
+<CODE>emacs-meta</CODE>,
+<CODE>emacs-ctlx</CODE>,
+<CODE>vi</CODE>,
+<CODE>vi-command</CODE>, and
+<CODE>vi-insert</CODE>.
+<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is
+equivalent to <CODE>emacs-standard</CODE>. The default value is <CODE>emacs</CODE>.
+The value of the <CODE>editing-mode</CODE> variable also affects the
+default keymap.
+
+<DT><CODE>mark-directories</CODE>
+<DD>
+If set to <SAMP>`on'</SAMP>, completed directory names have a slash
+appended. The default is <SAMP>`on'</SAMP>.
+
+<DT><CODE>mark-modified-lines</CODE>
+<DD>
+<A NAME="IDX22"></A>
+This variable, when set to <SAMP>`on'</SAMP>, causes Readline to display an
+asterisk (<SAMP>`*'</SAMP>) at the start of history lines which have been modified.
+This variable is <SAMP>`off'</SAMP> by default.
+
+<DT><CODE>output-meta</CODE>
+<DD>
+<A NAME="IDX23"></A>
+If set to <SAMP>`on'</SAMP>, Readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence. The default is <SAMP>`off'</SAMP>.
+
+<DT><CODE>print-completions-horizontally</CODE>
+<DD>
+If set to <SAMP>`on'</SAMP>, Readline will display completions with matches
+sorted horizontally in alphabetical order, rather than down the screen.
+The default is <SAMP>`off'</SAMP>.
+
+<DT><CODE>show-all-if-ambiguous</CODE>
+<DD>
+<A NAME="IDX24"></A>
+This alters the default behavior of the completion functions. If
+set to <SAMP>`on'</SAMP>,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+The default value is <SAMP>`off'</SAMP>.
+
+<DT><CODE>visible-stats</CODE>
+<DD>
+<A NAME="IDX25"></A>
+If set to <SAMP>`on'</SAMP>, a character denoting a file's type
+is appended to the filename when listing possible
+completions. The default is <SAMP>`off'</SAMP>.
+
+</DL>
+
+<DT>Key Bindings
+<DD>
+The syntax for controlling key bindings in the init file is
+simple. First you need to find the name of the command that you
+want to change. The following sections contain tables of the command
+name, the default keybinding, if any, and a short description of what
+the command does.
+
+Once you know the name of the command, simply place the name of the key
+you wish to bind the command to, a colon, and then the name of the
+command on a line in the init file. The name of the key
+can be expressed in different ways, depending on which is most
+comfortable for you.
+
+<DL COMPACT>
+
+<DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR>
+<DD>
+<VAR>keyname</VAR> is the name of a key spelled out in English. For example:
+
+<PRE>
+Control-u: universal-argument
+Meta-Rubout: backward-kill-word
+Control-o: "&#62; output"
+</PRE>
+
+In the above example, <KBD>C-u</KBD> is bound to the function
+<CODE>universal-argument</CODE>, and <KBD>C-o</KBD> is bound to run the macro
+expressed on the right hand side (that is, to insert the text
+<SAMP>`&#62; output'</SAMP> into the line).
+
+<DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR>
+<DD>
+<VAR>keyseq</VAR> differs from <VAR>keyname</VAR> above in that strings
+denoting an entire key sequence can be specified, by placing
+the key sequence in double quotes. Some GNU Emacs style key
+escapes can be used, as in the following example, but the
+special character names are not recognized.
+
+
+<PRE>
+"\C-u": universal-argument
+"\C-x\C-r": re-read-init-file
+"\e[11~": "Function Key 1"
+</PRE>
+
+In the above example, <KBD>C-u</KBD> is bound to the function
+<CODE>universal-argument</CODE> (just as it was in the first example),
+<SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>,
+and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert
+the text <SAMP>`Function Key 1'</SAMP>.
+
+</DL>
+
+The following GNU Emacs style escape sequences are available when
+specifying key sequences:
+
+<DL COMPACT>
+
+<DT><CODE><KBD>\C-</KBD></CODE>
+<DD>
+control prefix
+<DT><CODE><KBD>\M-</KBD></CODE>
+<DD>
+meta prefix
+<DT><CODE><KBD>\e</KBD></CODE>
+<DD>
+an escape character
+<DT><CODE><KBD>\\</KBD></CODE>
+<DD>
+backslash
+<DT><CODE><KBD>\"</KBD></CODE>
+<DD>
+<KBD>"</KBD>, a double quotation mark
+<DT><CODE><KBD>\'</KBD></CODE>
+<DD>
+<KBD>'</KBD>, a single quote or apostrophe
+</DL>
+
+In addition to the GNU Emacs style escape sequences, a second
+set of backslash escapes is available:
+
+<DL COMPACT>
+
+<DT><CODE>\a</CODE>
+<DD>
+alert (bell)
+<DT><CODE>\b</CODE>
+<DD>
+backspace
+<DT><CODE>\d</CODE>
+<DD>
+delete
+<DT><CODE>\f</CODE>
+<DD>
+form feed
+<DT><CODE>\n</CODE>
+<DD>
+newline
+<DT><CODE>\r</CODE>
+<DD>
+carriage return
+<DT><CODE>\t</CODE>
+<DD>
+horizontal tab
+<DT><CODE>\v</CODE>
+<DD>
+vertical tab
+<DT><CODE>\<VAR>nnn</VAR></CODE>
+<DD>
+the character whose <CODE>ASCII</CODE> code is the octal value <VAR>nnn</VAR>
+(one to three digits)
+<DT><CODE>\x<VAR>nnn</VAR></CODE>
+<DD>
+the character whose <CODE>ASCII</CODE> code is the hexadecimal value <VAR>nnn</VAR>
+(one to three digits)
+</DL>
+
+When entering the text of a macro, single or double quotes must
+be used to indicate a macro definition.
+Unquoted text is assumed to be a function name.
+In the macro body, the backslash escapes described above are expanded.
+Backslash will quote any other character in the macro text,
+including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>.
+For example, the following binding will make <SAMP>`C-x \'</SAMP>
+insert a single <SAMP>`\'</SAMP> into the line:
+
+<PRE>
+"\C-x\\": "\\"
+</PRE>
+
+</DL>
+
+
+
+<H3><A NAME="SEC11" HREF="rluserman.html#TOC11">Conditional Init Constructs</A></H3>
+
+<P>
+Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key
+bindings and variable settings to be performed as the result
+of tests. There are four parser directives used.
+
+</P>
+<DL COMPACT>
+
+<DT><CODE>$if</CODE>
+<DD>
+The <CODE>$if</CODE> construct allows bindings to be made based on the
+editing mode, the terminal being used, or the application using
+Readline. The text of the test extends to the end of the line;
+no characters are required to isolate it.
+
+<DL COMPACT>
+
+<DT><CODE>mode</CODE>
+<DD>
+The <CODE>mode=</CODE> form of the <CODE>$if</CODE> directive is used to test
+whether Readline is in <CODE>emacs</CODE> or <CODE>vi</CODE> mode.
+This may be used in conjunction
+with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in
+the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if
+Readline is starting out in <CODE>emacs</CODE> mode.
+
+<DT><CODE>term</CODE>
+<DD>
+The <CODE>term=</CODE> form may be used to include terminal-specific
+key bindings, perhaps to bind the key sequences output by the
+terminal's function keys. The word on the right side of the
+<SAMP>`='</SAMP> is tested against both the full name of the terminal and
+the portion of the terminal name before the first <SAMP>`-'</SAMP>. This
+allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
+for instance.
+
+<DT><CODE>application</CODE>
+<DD>
+The <VAR>application</VAR> construct is used to include
+application-specific settings. Each program using the Readline
+library sets the <VAR>application name</VAR>, and you can test for it.
+This could be used to bind key sequences to functions useful for
+a specific program. For instance, the following command adds a
+key sequence that quotes the current or previous word in Bash:
+
+<PRE>
+$if Bash
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+$endif
+</PRE>
+
+</DL>
+
+<DT><CODE>$endif</CODE>
+<DD>
+This command, as seen in the previous example, terminates an
+<CODE>$if</CODE> command.
+
+<DT><CODE>$else</CODE>
+<DD>
+Commands in this branch of the <CODE>$if</CODE> directive are executed if
+the test fails.
+
+<DT><CODE>$include</CODE>
+<DD>
+This directive takes a single filename as an argument and reads commands
+and bindings from that file.
+
+<PRE>
+$include /etc/inputrc
+</PRE>
+
+</DL>
+
+
+
+<H3><A NAME="SEC12" HREF="rluserman.html#TOC12">Sample Init File</A></H3>
+
+<P>
+Here is an example of an inputrc file. This illustrates key
+binding, variable assignment, and conditional syntax.
+
+</P>
+
+<PRE>
+# This file controls the behaviour of line input editing for
+# programs that use the Gnu Readline library. Existing programs
+# include FTP, Bash, and Gdb.
+#
+# You can re-read the inputrc file with C-x C-r.
+# Lines beginning with '#' are comments.
+#
+# First, include any systemwide bindings and variable assignments from
+# /etc/Inputrc
+$include /etc/Inputrc
+
+#
+# Set various bindings for emacs mode.
+
+set editing-mode emacs
+
+$if mode=emacs
+
+Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+#
+# Arrow keys in keypad mode
+#
+#"\M-OD": backward-char
+#"\M-OC": forward-char
+#"\M-OA": previous-history
+#"\M-OB": next-history
+#
+# Arrow keys in ANSI mode
+#
+"\M-[D": backward-char
+"\M-[C": forward-char
+"\M-[A": previous-history
+"\M-[B": next-history
+#
+# Arrow keys in 8 bit keypad mode
+#
+#"\M-\C-OD": backward-char
+#"\M-\C-OC": forward-char
+#"\M-\C-OA": previous-history
+#"\M-\C-OB": next-history
+#
+# Arrow keys in 8 bit ANSI mode
+#
+#"\M-\C-[D": backward-char
+#"\M-\C-[C": forward-char
+#"\M-\C-[A": previous-history
+#"\M-\C-[B": next-history
+
+C-q: quoted-insert
+
+$endif
+
+# An old-style binding. This happens to be the default.
+TAB: complete
+
+# Macros that are convenient for shell interaction
+$if Bash
+# edit the path
+"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+# prepare to type a quoted word -- insert open and close double quotes
+# and move to just after the open quote
+"\C-x\"": "\"\"\C-b"
+# insert a backslash (testing backslash escapes in sequences and macros)
+"\C-x\\": "\\"
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+# Add a binding to refresh the line, which is unbound
+"\C-xr": redraw-current-line
+# Edit variable on current line.
+"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+$endif
+
+# use a visible bell if one is available
+set bell-style visible
+
+# don't strip characters to 7 bits when reading
+set input-meta on
+
+# allow iso-latin1 characters to be inserted rather than converted to
+# prefix-meta sequences
+set convert-meta off
+
+# display characters with the eighth bit set directly rather than
+# as meta-prefixed characters
+set output-meta on
+
+# if there are more than 150 possible completions for a word, ask the
+# user if he wants to see all of them
+set completion-query-items 150
+
+# For FTP
+$if Ftp
+"\C-xg": "get \M-?"
+"\C-xt": "put \M-?"
+"\M-.": yank-last-arg
+$endif
+</PRE>
+
+
+
+<H2><A NAME="SEC13" HREF="rluserman.html#TOC13">Bindable Readline Commands</A></H2>
+
+
+<UL>
+<LI><A HREF="rluserman.html#SEC14">Commands For Moving</A>: Moving about the line.
+<LI><A HREF="rluserman.html#SEC15">Commands For History</A>: Getting at previous lines.
+<LI><A HREF="rluserman.html#SEC16">Commands For Text</A>: Commands for changing text.
+<LI><A HREF="rluserman.html#SEC17">Commands For Killing</A>: Commands for killing and yanking.
+<LI><A HREF="rluserman.html#SEC18">Numeric Arguments</A>: Specifying numeric arguments, repeat counts.
+<LI><A HREF="rluserman.html#SEC19">Commands For Completion</A>: Getting Readline to do the typing for you.
+<LI><A HREF="rluserman.html#SEC20">Keyboard Macros</A>: Saving and re-executing typed characters
+<LI><A HREF="rluserman.html#SEC21">Miscellaneous Commands</A>: Other miscellaneous commands.
+</UL>
+
+<P>
+This section describes Readline commands that may be bound to key
+sequences.
+
+</P>
+<P>
+Command names without an accompanying key sequence are unbound by default.
+In the following descriptions, <VAR>point</VAR> refers to the current cursor
+position, and <VAR>mark</VAR> refers to a cursor position saved by the
+<CODE>set-mark</CODE> command.
+The text between the point and mark is referred to as the <VAR>region</VAR>.
+
+</P>
+
+
+<H3><A NAME="SEC14" HREF="rluserman.html#TOC14">Commands For Moving</A></H3>
+<DL COMPACT>
+
+<DT><CODE>beginning-of-line (C-a)</CODE>
+<DD>
+<A NAME="IDX26"></A>
+Move to the start of the current line.
+
+<DT><CODE>end-of-line (C-e)</CODE>
+<DD>
+<A NAME="IDX27"></A>
+Move to the end of the line.
+
+<DT><CODE>forward-char (C-f)</CODE>
+<DD>
+<A NAME="IDX28"></A>
+Move forward a character.
+
+<DT><CODE>backward-char (C-b)</CODE>
+<DD>
+<A NAME="IDX29"></A>
+Move back a character.
+
+<DT><CODE>forward-word (M-f)</CODE>
+<DD>
+<A NAME="IDX30"></A>
+Move forward to the end of the next word. Words are composed of
+letters and digits.
+
+<DT><CODE>backward-word (M-b)</CODE>
+<DD>
+<A NAME="IDX31"></A>
+Move back to the start of the current or previous word. Words are
+composed of letters and digits.
+
+<DT><CODE>clear-screen (C-l)</CODE>
+<DD>
+<A NAME="IDX32"></A>
+Clear the screen and redraw the current line,
+leaving the current line at the top of the screen.
+
+<DT><CODE>redraw-current-line ()</CODE>
+<DD>
+<A NAME="IDX33"></A>
+Refresh the current line. By default, this is unbound.
+
+</DL>
+
+
+
+<H3><A NAME="SEC15" HREF="rluserman.html#TOC15">Commands For Manipulating The History</A></H3>
+
+<DL COMPACT>
+
+<DT><CODE>accept-line (Newline, Return)</CODE>
+<DD>
+<A NAME="IDX34"></A>
+Accept the line regardless of where the cursor is. If this line is
+non-empty, add it to the history list. If this line was a history
+line, then restore the history line to its original state.
+
+<DT><CODE>previous-history (C-p)</CODE>
+<DD>
+<A NAME="IDX35"></A>
+Move `up' through the history list.
+
+<DT><CODE>next-history (C-n)</CODE>
+<DD>
+<A NAME="IDX36"></A>
+Move `down' through the history list.
+
+<DT><CODE>beginning-of-history (M-&#60;)</CODE>
+<DD>
+<A NAME="IDX37"></A>
+Move to the first line in the history.
+
+<DT><CODE>end-of-history (M-&#62;)</CODE>
+<DD>
+<A NAME="IDX38"></A>
+Move to the end of the input history, i.e., the line currently
+being entered.
+
+<DT><CODE>reverse-search-history (C-r)</CODE>
+<DD>
+<A NAME="IDX39"></A>
+Search backward starting at the current line and moving `up' through
+the history as necessary. This is an incremental search.
+
+<DT><CODE>forward-search-history (C-s)</CODE>
+<DD>
+<A NAME="IDX40"></A>
+Search forward starting at the current line and moving `down' through
+the the history as necessary. This is an incremental search.
+
+<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
+<DD>
+<A NAME="IDX41"></A>
+Search backward starting at the current line and moving `up'
+through the history as necessary using a non-incremental search
+for a string supplied by the user.
+
+<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
+<DD>
+<A NAME="IDX42"></A>
+Search forward starting at the current line and moving `down'
+through the the history as necessary using a non-incremental search
+for a string supplied by the user.
+
+<DT><CODE>history-search-forward ()</CODE>
+<DD>
+<A NAME="IDX43"></A>
+Search forward through the history for the string of characters
+between the start of the current line and the point.
+This is a non-incremental search.
+By default, this command is unbound.
+
+<DT><CODE>history-search-backward ()</CODE>
+<DD>
+<A NAME="IDX44"></A>
+Search backward through the history for the string of characters
+between the start of the current line and the point. This
+is a non-incremental search. By default, this command is unbound.
+
+<DT><CODE>yank-nth-arg (M-C-y)</CODE>
+<DD>
+<A NAME="IDX45"></A>
+Insert the first argument to the previous command (usually
+the second word on the previous line). With an argument <VAR>n</VAR>,
+insert the <VAR>n</VAR>th word from the previous command (the words
+in the previous command begin with word 0). A negative argument
+inserts the <VAR>n</VAR>th word from the end of the previous command.
+
+<DT><CODE>yank-last-arg (M-., M-_)</CODE>
+<DD>
+<A NAME="IDX46"></A>
+Insert last argument to the previous command (the last word of the
+previous history entry). With an
+argument, behave exactly like <CODE>yank-nth-arg</CODE>.
+Successive calls to <CODE>yank-last-arg</CODE> move back through the history
+list, inserting the last argument of each line in turn.
+
+</DL>
+
+
+
+<H3><A NAME="SEC16" HREF="rluserman.html#TOC16">Commands For Changing Text</A></H3>
+
+<DL COMPACT>
+
+<DT><CODE>delete-char (C-d)</CODE>
+<DD>
+<A NAME="IDX47"></A>
+Delete the character under the cursor. If the cursor is at the
+beginning of the line, there are no characters in the line, and
+the last character typed was not bound to <CODE>delete-char</CODE>, then
+return <CODE>EOF</CODE>.
+
+<DT><CODE>backward-delete-char (Rubout)</CODE>
+<DD>
+<A NAME="IDX48"></A>
+Delete the character behind the cursor. A numeric argument means
+to kill the characters instead of deleting them.
+
+<DT><CODE>forward-backward-delete-char ()</CODE>
+<DD>
+<A NAME="IDX49"></A>
+Delete the character under the cursor, unless the cursor is at the
+end of the line, in which case the character behind the cursor is
+deleted. By default, this is not bound to a key.
+
+<DT><CODE>quoted-insert (C-q, C-v)</CODE>
+<DD>
+<A NAME="IDX50"></A>
+Add the next character typed to the line verbatim. This is
+how to insert key sequences like <KBD>C-q</KBD>, for example.
+
+<DT><CODE>tab-insert (M-TAB)</CODE>
+<DD>
+<A NAME="IDX51"></A>
+Insert a tab character.
+
+<DT><CODE>self-insert (a, b, A, 1, !, ...)</CODE>
+<DD>
+<A NAME="IDX52"></A>
+Insert yourself.
+
+<DT><CODE>transpose-chars (C-t)</CODE>
+<DD>
+<A NAME="IDX53"></A>
+Drag the character before the cursor forward over
+the character at the cursor, moving the
+cursor forward as well. If the insertion point
+is at the end of the line, then this
+transposes the last two characters of the line.
+Negative arguments have no effect.
+
+<DT><CODE>transpose-words (M-t)</CODE>
+<DD>
+<A NAME="IDX54"></A>
+Drag the word before point past the word after point,
+moving point past that word as well.
+
+<DT><CODE>upcase-word (M-u)</CODE>
+<DD>
+<A NAME="IDX55"></A>
+Uppercase the current (or following) word. With a negative argument,
+uppercase the previous word, but do not move the cursor.
+
+<DT><CODE>downcase-word (M-l)</CODE>
+<DD>
+<A NAME="IDX56"></A>
+Lowercase the current (or following) word. With a negative argument,
+lowercase the previous word, but do not move the cursor.
+
+<DT><CODE>capitalize-word (M-c)</CODE>
+<DD>
+<A NAME="IDX57"></A>
+Capitalize the current (or following) word. With a negative argument,
+capitalize the previous word, but do not move the cursor.
+
+</DL>
+
+
+
+<H3><A NAME="SEC17" HREF="rluserman.html#TOC17">Killing And Yanking</A></H3>
+
+<DL COMPACT>
+
+<DT><CODE>kill-line (C-k)</CODE>
+<DD>
+<A NAME="IDX58"></A>
+Kill the text from point to the end of the line.
+
+<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
+<DD>
+<A NAME="IDX59"></A>
+Kill backward to the beginning of the line.
+
+<DT><CODE>unix-line-discard (C-u)</CODE>
+<DD>
+<A NAME="IDX60"></A>
+Kill backward from the cursor to the beginning of the current line.
+
+<DT><CODE>kill-whole-line ()</CODE>
+<DD>
+<A NAME="IDX61"></A>
+Kill all characters on the current line, no matter point is.
+By default, this is unbound.
+
+<DT><CODE>kill-word (M-d)</CODE>
+<DD>
+<A NAME="IDX62"></A>
+Kill from point to the end of the current word, or if between
+words, to the end of the next word.
+Word boundaries are the same as <CODE>forward-word</CODE>.
+
+<DT><CODE>backward-kill-word (M-DEL)</CODE>
+<DD>
+<A NAME="IDX63"></A>
+Kill the word behind point.
+Word boundaries are the same as <CODE>backward-word</CODE>.
+
+<DT><CODE>unix-word-rubout (C-w)</CODE>
+<DD>
+<A NAME="IDX64"></A>
+Kill the word behind point, using white space as a word boundary.
+The killed text is saved on the kill-ring.
+
+<DT><CODE>delete-horizontal-space ()</CODE>
+<DD>
+<A NAME="IDX65"></A>
+Delete all spaces and tabs around point. By default, this is unbound.
+
+<DT><CODE>kill-region ()</CODE>
+<DD>
+<A NAME="IDX66"></A>
+Kill the text in the current region.
+By default, this command is unbound.
+
+<DT><CODE>copy-region-as-kill ()</CODE>
+<DD>
+<A NAME="IDX67"></A>
+Copy the text in the region to the kill buffer, so it can be yanked
+right away. By default, this command is unbound.
+
+<DT><CODE>copy-backward-word ()</CODE>
+<DD>
+<A NAME="IDX68"></A>
+Copy the word before point to the kill buffer.
+The word boundaries are the same as <CODE>backward-word</CODE>.
+By default, this command is unbound.
+
+<DT><CODE>copy-forward-word ()</CODE>
+<DD>
+<A NAME="IDX69"></A>
+Copy the word following point to the kill buffer.
+The word boundaries are the same as <CODE>forward-word</CODE>.
+By default, this command is unbound.
+
+<DT><CODE>yank (C-y)</CODE>
+<DD>
+<A NAME="IDX70"></A>
+Yank the top of the kill ring into the buffer at the current
+cursor position.
+
+<DT><CODE>yank-pop (M-y)</CODE>
+<DD>
+<A NAME="IDX71"></A>
+Rotate the kill-ring, and yank the new top. You can only do this if
+the prior command is yank or yank-pop.
+</DL>
+
+
+
+<H3><A NAME="SEC18" HREF="rluserman.html#TOC18">Specifying Numeric Arguments</A></H3>
+<DL COMPACT>
+
+<DT><CODE>digit-argument (M-0, M-1, ... M--)</CODE>
+<DD>
+<A NAME="IDX72"></A>
+Add this digit to the argument already accumulating, or start a new
+argument. <KBD>M--</KBD> starts a negative argument.
+
+<DT><CODE>universal-argument ()</CODE>
+<DD>
+<A NAME="IDX73"></A>
+This is another way to specify an argument.
+If this command is followed by one or more digits, optionally with a
+leading minus sign, those digits define the argument.
+If the command is followed by digits, executing <CODE>universal-argument</CODE>
+again ends the numeric argument, but is otherwise ignored.
+As a special case, if this command is immediately followed by a
+character that is neither a digit or minus sign, the argument count
+for the next command is multiplied by four.
+The argument count is initially one, so executing this function the
+first time makes the argument count four, a second time makes the
+argument count sixteen, and so on.
+By default, this is not bound to a key.
+</DL>
+
+
+
+<H3><A NAME="SEC19" HREF="rluserman.html#TOC19">Letting Readline Type For You</A></H3>
+
+<DL COMPACT>
+
+<DT><CODE>complete (TAB)</CODE>
+<DD>
+<A NAME="IDX74"></A>
+Attempt to do completion on the text before the cursor. This is
+application-specific. Generally, if you are typing a filename
+argument, you can do filename completion; if you are typing a command,
+you can do command completion; if you are typing in a symbol to GDB, you
+can do symbol name completion; if you are typing in a variable to Bash,
+you can do variable name completion, and so on.
+
+<DT><CODE>possible-completions (M-?)</CODE>
+<DD>
+<A NAME="IDX75"></A>
+List the possible completions of the text before the cursor.
+
+<DT><CODE>insert-completions (M-*)</CODE>
+<DD>
+<A NAME="IDX76"></A>
+Insert all completions of the text before point that would have
+been generated by <CODE>possible-completions</CODE>.
+
+<DT><CODE>menu-complete ()</CODE>
+<DD>
+<A NAME="IDX77"></A>
+Similar to <CODE>complete</CODE>, but replaces the word to be completed
+with a single match from the list of possible completions.
+Repeated execution of <CODE>menu-complete</CODE> steps through the list
+of possible completions, inserting each match in turn.
+At the end of the list of completions, the bell is rung and the
+original text is restored.
+An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list
+of matches; a negative argument may be used to move backward
+through the list.
+This command is intended to be bound to <CODE>TAB</CODE>, but is unbound
+by default.
+
+<DT><CODE>delete-char-or-list ()</CODE>
+<DD>
+<A NAME="IDX78"></A>
+Deletes the character under the cursor if not at the beginning or
+end of the line (like <CODE>delete-char</CODE>).
+If at the end of the line, behaves identically to
+<CODE>possible-completions</CODE>.
+This command is unbound by default.
+
+</DL>
+
+
+
+<H3><A NAME="SEC20" HREF="rluserman.html#TOC20">Keyboard Macros</A></H3>
+<DL COMPACT>
+
+<DT><CODE>start-kbd-macro (C-x ()</CODE>
+<DD>
+<A NAME="IDX79"></A>
+Begin saving the characters typed into the current keyboard macro.
+
+<DT><CODE>end-kbd-macro (C-x ))</CODE>
+<DD>
+<A NAME="IDX80"></A>
+Stop saving the characters typed into the current keyboard macro
+and save the definition.
+
+<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
+<DD>
+<A NAME="IDX81"></A>
+Re-execute the last keyboard macro defined, by making the characters
+in the macro appear as if typed at the keyboard.
+
+</DL>
+
+
+
+<H3><A NAME="SEC21" HREF="rluserman.html#TOC21">Some Miscellaneous Commands</A></H3>
+<DL COMPACT>
+
+<DT><CODE>re-read-init-file (C-x C-r)</CODE>
+<DD>
+<A NAME="IDX82"></A>
+Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
+any bindings or variable assignments found there.
+
+<DT><CODE>abort (C-g)</CODE>
+<DD>
+<A NAME="IDX83"></A>
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+<CODE>bell-style</CODE>).
+
+<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, ...)</CODE>
+<DD>
+<A NAME="IDX84"></A>
+If the metafied character <VAR>x</VAR> is lowercase, run the command
+that is bound to the corresponding uppercase character.
+
+<DT><CODE>prefix-meta (ESC)</CODE>
+<DD>
+<A NAME="IDX85"></A>
+Make the next character typed be metafied. This is for keyboards
+without a meta key. Typing <SAMP>`ESC f'</SAMP> is equivalent to typing
+<SAMP>`M-f'</SAMP>.
+
+<DT><CODE>undo (C-_, C-x C-u)</CODE>
+<DD>
+<A NAME="IDX86"></A>
+Incremental undo, separately remembered for each line.
+
+<DT><CODE>revert-line (M-r)</CODE>
+<DD>
+<A NAME="IDX87"></A>
+Undo all changes made to this line. This is like executing the <CODE>undo</CODE>
+command enough times to get back to the beginning.
+
+<DT><CODE>tilde-expand (M-~)</CODE>
+<DD>
+<A NAME="IDX88"></A>
+Perform tilde expansion on the current word.
+
+<DT><CODE>set-mark (C-@)</CODE>
+<DD>
+<A NAME="IDX89"></A>
+Set the mark to the current point. If a
+numeric argument is supplied, the mark is set to that position.
+
+<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
+<DD>
+<A NAME="IDX90"></A>
+Swap the point with the mark. The current cursor position is set to
+the saved position, and the old cursor position is saved as the mark.
+
+<DT><CODE>character-search (C-])</CODE>
+<DD>
+<A NAME="IDX91"></A>
+A character is read and point is moved to the next occurrence of that
+character. A negative count searches for previous occurrences.
+
+<DT><CODE>character-search-backward (M-C-])</CODE>
+<DD>
+<A NAME="IDX92"></A>
+A character is read and point is moved to the previous occurrence
+of that character. A negative count searches for subsequent
+occurrences.
+
+<DT><CODE>insert-comment (M-#)</CODE>
+<DD>
+<A NAME="IDX93"></A>
+The value of the <CODE>comment-begin</CODE>
+variable is inserted at the beginning of the current line,
+and the line is accepted as if a newline had been typed.
+
+<DT><CODE>dump-functions ()</CODE>
+<DD>
+<A NAME="IDX94"></A>
+Print all of the functions and their key bindings to the
+Readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+
+<DT><CODE>dump-variables ()</CODE>
+<DD>
+<A NAME="IDX95"></A>
+Print all of the settable variables and their values to the
+Readline output stream. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+
+<DT><CODE>dump-macros ()</CODE>
+<DD>
+<A NAME="IDX96"></A>
+Print all of the Readline key sequences bound to macros and the
+strings they ouput. If a numeric argument is supplied,
+the output is formatted in such a way that it can be made part
+of an <VAR>inputrc</VAR> file. This command is unbound by default.
+
+</DL>
+
+
+
+<H2><A NAME="SEC22" HREF="rluserman.html#TOC22">Readline vi Mode</A></H2>
+
+<P>
+While the Readline library does not have a full set of <CODE>vi</CODE>
+editing functions, it does contain enough to allow simple editing
+of the line. The Readline <CODE>vi</CODE> mode behaves as specified in
+the POSIX 1003.2 standard.
+
+</P>
+<P>
+In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE>
+editing modes, use the command M-C-j (toggle-editing-mode).
+The Readline default is <CODE>emacs</CODE> mode.
+
+</P>
+<P>
+When you enter a line in <CODE>vi</CODE> mode, you are already placed in
+`insertion' mode, as if you had typed an <SAMP>`i'</SAMP>. Pressing <KBD>ESC</KBD>
+switches you into `command' mode, where you can edit the text of the
+line with the standard <CODE>vi</CODE> movement keys, move to previous
+history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and
+so forth.
+
+</P>
+
+<P><HR><P>
+This document was generated on 1 March 2000 using the
+<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>
+translator version 1.52.</P>
+</BODY>
+</HTML>
diff --git a/readline/doc/rluserman.info b/readline/doc/rluserman.info
new file mode 100644
index 00000000000..b714421c402
--- /dev/null
+++ b/readline/doc/rluserman.info
@@ -0,0 +1,1189 @@
+This is Info file rluserman.info, produced by Makeinfo version 1.68
+from the input file
+/usr/homes/chet/src/bash/readline-src/doc/rluserman.texinfo.
+
+INFO-DIR-SECTION Libraries
+START-INFO-DIR-ENTRY
+* Readline: (readline). The GNU readline library API
+END-INFO-DIR-ENTRY
+
+ This document describes the end user interface of the GNU Readline
+Library, a utility which aids in the consistency of user interface
+across discrete programs that need to provide a command line interface.
+
+ Copyright (C) 1988-1999 Free Software Foundation, Inc.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice pare
+preserved on all copies.
+
+ Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation approved by the Free Software Foundation.
+
+
+File: rluserman.info, Node: Top, Next: Command Line Editing, Up: (dir)
+
+GNU Readline Library
+********************
+
+ This document describes the end user interface of the GNU Readline
+Library, a utility which aids in the consistency of user interface
+across discrete programs that need to provide a command line interface.
+
+* Menu:
+
+* Command Line Editing:: GNU Readline User's Manual.
+
+
+File: rluserman.info, Node: Command Line Editing, Prev: Top, Up: Top
+
+Command Line Editing
+********************
+
+ This chapter describes the basic features of the GNU command line
+editing interface.
+
+* Menu:
+
+* Introduction and Notation:: Notation used in this text.
+* Readline Interaction:: The minimum set of commands for editing a line.
+* Readline Init File:: Customizing Readline from a user's view.
+* Bindable Readline Commands:: A description of most of the Readline commands
+ available for binding
+* Readline vi Mode:: A short description of how to make Readline
+ behave like the vi editor.
+
+
+File: rluserman.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
+
+Introduction to Line Editing
+============================
+
+ The following paragraphs describe the notation used to represent
+keystrokes.
+
+ The text <C-k> is read as `Control-K' and describes the character
+produced when the <k> key is pressed while the Control key is depressed.
+
+ The text <M-k> is read as `Meta-K' and describes the character
+produced when the Meta key (if you have one) is depressed, and the <k>
+key is pressed. The Meta key is labeled <ALT> on many keyboards. On
+keyboards with two keys labeled <ALT> (usually to either side of the
+space bar), the <ALT> on the left side is generally set to work as a
+Meta key. The <ALT> key on the right may also be configured to work as
+a Meta key or may be configured as some other modifier, such as a
+Compose key for typing accented characters.
+
+ If you do not have a Meta or <ALT> key, or another key working as a
+Meta key, the identical keystroke can be generated by typing <ESC>
+first, and then typing <k>. Either process is known as "metafying" the
+<k> key.
+
+ The text <M-C-k> is read as `Meta-Control-k' and describes the
+character produced by "metafying" <C-k>.
+
+ In addition, several keys have their own names. Specifically,
+<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves
+when seen in this text, or in an init file (*note Readline Init
+File::.). If your keyboard lacks a <LFD> key, typing <C-j> will
+produce the desired character. The <RET> key may be labeled <Return>
+or <Enter> on some keyboards.
+
+
+File: rluserman.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
+
+Readline Interaction
+====================
+
+ Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press <RETURN>. You do not have to be at the end
+of the line to press <RETURN>; the entire line is accepted regardless
+of the location of the cursor within the line.
+
+* Menu:
+
+* Readline Bare Essentials:: The least you need to know about Readline.
+* Readline Movement Commands:: Moving about the input line.
+* Readline Killing Commands:: How to delete text, and how to get it back!
+* Readline Arguments:: Giving numeric arguments to commands.
+* Searching:: Searching through previous lines.
+
+
+File: rluserman.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
+
+Readline Bare Essentials
+------------------------
+
+ In order to enter characters into the line, simply type them. The
+typed character appears where the cursor was, and then the cursor moves
+one space to the right. If you mistype a character, you can use your
+erase character to back up and delete the mistyped character.
+
+ Sometimes you may mistype a character, and not notice the error
+until you have typed several other characters. In that case, you can
+type <C-b> to move the cursor to the left, and then correct your
+mistake. Afterwards, you can move the cursor to the right with <C-f>.
+
+ When you add text in the middle of a line, you will notice that
+characters to the right of the cursor are `pushed over' to make room
+for the text that you have inserted. Likewise, when you delete text
+behind the cursor, characters to the right of the cursor are `pulled
+back' to fill in the blank space created by the removal of the text. A
+list of the bare essentials for editing the text of an input line
+follows.
+
+<C-b>
+ Move back one character.
+
+<C-f>
+ Move forward one character.
+
+<DEL> or <Backspace>
+ Delete the character to the left of the cursor.
+
+<C-d>
+ Delete the character underneath the cursor.
+
+Printing characters
+ Insert the character into the line at the cursor.
+
+<C-_> or <C-x C-u>
+ Undo the last editing command. You can undo all the way back to an
+ empty line.
+
+(Depending on your configuration, the <Backspace> key be set to delete
+the character to the left of the cursor and the <DEL> key set to delete
+the character underneath the cursor, like <C-d>, rather than the
+character to the left of the cursor.)
+
+
+File: rluserman.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
+
+Readline Movement Commands
+--------------------------
+
+ The above table describes the most basic keystrokes that you need in
+order to do editing of the input line. For your convenience, many
+other commands have been added in addition to <C-b>, <C-f>, <C-d>, and
+<DEL>. Here are some commands for moving more rapidly about the line.
+
+<C-a>
+ Move to the start of the line.
+
+<C-e>
+ Move to the end of the line.
+
+<M-f>
+ Move forward a word, where a word is composed of letters and
+ digits.
+
+<M-b>
+ Move backward a word.
+
+<C-l>
+ Clear the screen, reprinting the current line at the top.
+
+ Notice how <C-f> moves forward a character, while <M-f> moves
+forward a word. It is a loose convention that control keystrokes
+operate on characters while meta keystrokes operate on words.
+
+
+File: rluserman.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
+
+Readline Killing Commands
+-------------------------
+
+ "Killing" text means to delete the text from the line, but to save
+it away for later use, usually by "yanking" (re-inserting) it back into
+the line. (`Cut' and `paste' are more recent jargon for `kill' and
+`yank'.)
+
+ If the description for a command says that it `kills' text, then you
+can be sure that you can get the text back in a different (or the same)
+place later.
+
+ When you use a kill command, the text is saved in a "kill-ring".
+Any number of consecutive kills save all of the killed text together, so
+that when you yank it back, you get it all. The kill ring is not line
+specific; the text that you killed on a previously typed line is
+available to be yanked back later, when you are typing another line.
+
+ Here is the list of commands for killing text.
+
+<C-k>
+ Kill the text from the current cursor position to the end of the
+ line.
+
+<M-d>
+ Kill from the cursor to the end of the current word, or, if between
+ words, to the end of the next word. Word boundaries are the same
+ as those used by <M-f>.
+
+<M-DEL>
+ Kill from the cursor the start of the previous word, or, if between
+ words, to the start of the previous word. Word boundaries are the
+ same as those used by <M-b>.
+
+<C-w>
+ Kill from the cursor to the previous whitespace. This is
+ different than <M-DEL> because the word boundaries differ.
+
+ Here is how to "yank" the text back into the line. Yanking means to
+copy the most-recently-killed text from the kill buffer.
+
+<C-y>
+ Yank the most recently killed text back into the buffer at the
+ cursor.
+
+<M-y>
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is <C-y> or <M-y>.
+
+
+File: rluserman.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
+
+Readline Arguments
+------------------
+
+ You can pass numeric arguments to Readline commands. Sometimes the
+argument acts as a repeat count, other times it is the sign of the
+argument that is significant. If you pass a negative argument to a
+command which normally acts in a forward direction, that command will
+act in a backward direction. For example, to kill text back to the
+start of the line, you might type `M-- C-k'.
+
+ The general way to pass numeric arguments to a command is to type
+meta digits before the command. If the first `digit' typed is a minus
+sign (`-'), then the sign of the argument will be negative. Once you
+have typed one meta digit to get the argument started, you can type the
+remainder of the digits, and then the command. For example, to give
+the <C-d> command an argument of 10, you could type `M-1 0 C-d'.
+
+
+File: rluserman.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction
+
+Searching for Commands in the History
+-------------------------------------
+
+ Readline provides commands for searching through the command history
+for lines containing a specified string. There are two search modes:
+INCREMENTAL and NON-INCREMENTAL.
+
+ Incremental searches begin before the user has finished typing the
+search string. As each character of the search string is typed,
+Readline displays the next entry from the history matching the string
+typed so far. An incremental search requires only as many characters
+as needed to find the desired history entry. To search backward in the
+history for a particular string, type <C-r>. Typing <C-s> searches
+forward through the history. The characters present in the value of
+the `isearch-terminators' variable are used to terminate an incremental
+search. If that variable has not been assigned a value, the <ESC> and
+<C-J> characters will terminate an incremental search. <C-g> will
+abort an incremental search and restore the original line. When the
+search is terminated, the history entry containing the search string
+becomes the current line.
+
+ To find other matching entries in the history list, type <C-r> or
+<C-s> as appropriate. This will search backward or forward in the
+history for the next entry matching the search string typed so far.
+Any other key sequence bound to a Readline command will terminate the
+search and execute that command. For instance, a <RET> will terminate
+the search and accept the line, thereby executing the command from the
+history list.
+
+ Non-incremental searches read the entire search string before
+starting to search for matching history lines. The search string may be
+typed by the user or be part of the contents of the current line.
+
+
+File: rluserman.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
+
+Readline Init File
+==================
+
+ Although the Readline library comes with a set of Emacs-like
+keybindings installed by default, it is possible to use a different set
+of keybindings. Any user can customize programs that use Readline by
+putting commands in an "inputrc" file, conventionally in his home
+directory. The name of this file is taken from the value of the
+environment variable `INPUTRC'. If that variable is unset, the default
+is `~/.inputrc'.
+
+ When a program which uses the Readline library starts up, the init
+file is read, and the key bindings are set.
+
+ In addition, the `C-x C-r' command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+
+* Menu:
+
+* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
+
+* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
+
+* Sample Init File:: An example inputrc file.
+
+
+File: rluserman.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File
+
+Readline Init File Syntax
+-------------------------
+
+ There are only a few basic constructs allowed in the Readline init
+file. Blank lines are ignored. Lines beginning with a `#' are
+comments. Lines beginning with a `$' indicate conditional constructs
+(*note Conditional Init Constructs::.). Other lines denote variable
+settings and key bindings.
+
+Variable Settings
+ You can modify the run-time behavior of Readline by altering the
+ values of variables in Readline using the `set' command within the
+ init file. Here is how to change from the default Emacs-like key
+ binding to use `vi' line editing commands:
+
+ set editing-mode vi
+
+ A great deal of run-time behavior is changeable with the following
+ variables.
+
+ `bell-style'
+ Controls what happens when Readline wants to ring the
+ terminal bell. If set to `none', Readline never rings the
+ bell. If set to `visible', Readline uses a visible bell if
+ one is available. If set to `audible' (the default),
+ Readline attempts to ring the terminal's bell.
+
+ `comment-begin'
+ The string to insert at the beginning of the line when the
+ `insert-comment' command is executed. The default value is
+ `"#"'.
+
+ `completion-ignore-case'
+ If set to `on', Readline performs filename matching and
+ completion in a case-insensitive fashion. The default value
+ is `off'.
+
+ `completion-query-items'
+ The number of possible completions that determines when the
+ user is asked whether he wants to see the list of
+ possibilities. If the number of possible completions is
+ greater than this value, Readline will ask the user whether
+ or not he wishes to view them; otherwise, they are simply
+ listed. The default limit is `100'.
+
+ `convert-meta'
+ If set to `on', Readline will convert characters with the
+ eighth bit set to an ASCII key sequence by stripping the
+ eighth bit and prefixing an <ESC> character, converting them
+ to a meta-prefixed key sequence. The default value is `on'.
+
+ `disable-completion'
+ If set to `On', Readline will inhibit word completion.
+ Completion characters will be inserted into the line as if
+ they had been mapped to `self-insert'. The default is `off'.
+
+ `editing-mode'
+ The `editing-mode' variable controls which default set of key
+ bindings is used. By default, Readline starts up in Emacs
+ editing mode, where the keystrokes are most similar to Emacs.
+ This variable can be set to either `emacs' or `vi'.
+
+ `enable-keypad'
+ When set to `on', Readline will try to enable the application
+ keypad when it is called. Some systems need this to enable
+ the arrow keys. The default is `off'.
+
+ `expand-tilde'
+ If set to `on', tilde expansion is performed when Readline
+ attempts word completion. The default is `off'.
+
+ `horizontal-scroll-mode'
+ This variable can be set to either `on' or `off'. Setting it
+ to `on' means that the text of the lines being edited will
+ scroll horizontally on a single screen line when they are
+ longer than the width of the screen, instead of wrapping onto
+ a new screen line. By default, this variable is set to `off'.
+
+ `input-meta'
+ If set to `on', Readline will enable eight-bit input (it will
+ not strip the eighth bit from the characters it reads),
+ regardless of what the terminal claims it can support. The
+ default value is `off'. The name `meta-flag' is a synonym
+ for this variable.
+
+ `isearch-terminators'
+ The string of characters that should terminate an incremental
+ search without subsequently executing the character as a
+ command (*note Searching::.). If this variable has not been
+ given a value, the characters <ESC> and <C-J> will terminate
+ an incremental search.
+
+ `keymap'
+ Sets Readline's idea of the current keymap for key binding
+ commands. Acceptable `keymap' names are `emacs',
+ `emacs-standard', `emacs-meta', `emacs-ctlx', `vi',
+ `vi-command', and `vi-insert'. `vi' is equivalent to
+ `vi-command'; `emacs' is equivalent to `emacs-standard'. The
+ default value is `emacs'. The value of the `editing-mode'
+ variable also affects the default keymap.
+
+ `mark-directories'
+ If set to `on', completed directory names have a slash
+ appended. The default is `on'.
+
+ `mark-modified-lines'
+ This variable, when set to `on', causes Readline to display an
+ asterisk (`*') at the start of history lines which have been
+ modified. This variable is `off' by default.
+
+ `output-meta'
+ If set to `on', Readline will display characters with the
+ eighth bit set directly rather than as a meta-prefixed escape
+ sequence. The default is `off'.
+
+ `print-completions-horizontally'
+ If set to `on', Readline will display completions with matches
+ sorted horizontally in alphabetical order, rather than down
+ the screen. The default is `off'.
+
+ `show-all-if-ambiguous'
+ This alters the default behavior of the completion functions.
+ If set to `on', words which have more than one possible
+ completion cause the matches to be listed immediately instead
+ of ringing the bell. The default value is `off'.
+
+ `visible-stats'
+ If set to `on', a character denoting a file's type is
+ appended to the filename when listing possible completions.
+ The default is `off'.
+
+Key Bindings
+ The syntax for controlling key bindings in the init file is
+ simple. First you need to find the name of the command that you
+ want to change. The following sections contain tables of the
+ command name, the default keybinding, if any, and a short
+ description of what the command does.
+
+ Once you know the name of the command, simply place the name of
+ the key you wish to bind the command to, a colon, and then the
+ name of the command on a line in the init file. The name of the
+ key can be expressed in different ways, depending on which is most
+ comfortable for you.
+
+ KEYNAME: FUNCTION-NAME or MACRO
+ KEYNAME is the name of a key spelled out in English. For
+ example:
+ Control-u: universal-argument
+ Meta-Rubout: backward-kill-word
+ Control-o: "> output"
+
+ In the above example, <C-u> is bound to the function
+ `universal-argument', and <C-o> is bound to run the macro
+ expressed on the right hand side (that is, to insert the text
+ `> output' into the line).
+
+ "KEYSEQ": FUNCTION-NAME or MACRO
+ KEYSEQ differs from KEYNAME above in that strings denoting an
+ entire key sequence can be specified, by placing the key
+ sequence in double quotes. Some GNU Emacs style key escapes
+ can be used, as in the following example, but the special
+ character names are not recognized.
+
+ "\C-u": universal-argument
+ "\C-x\C-r": re-read-init-file
+ "\e[11~": "Function Key 1"
+
+ In the above example, <C-u> is bound to the function
+ `universal-argument' (just as it was in the first example),
+ `<C-x> <C-r>' is bound to the function `re-read-init-file',
+ and `<ESC> <[> <1> <1> <~>' is bound to insert the text
+ `Function Key 1'.
+
+ The following GNU Emacs style escape sequences are available when
+ specifying key sequences:
+
+ `\C-'
+ control prefix
+
+ `\M-'
+ meta prefix
+
+ `\e'
+ an escape character
+
+ `\\'
+ backslash
+
+ `\"'
+ <">, a double quotation mark
+
+ `\''
+ <'>, a single quote or apostrophe
+
+ In addition to the GNU Emacs style escape sequences, a second set
+ of backslash escapes is available:
+
+ `\a'
+ alert (bell)
+
+ `\b'
+ backspace
+
+ `\d'
+ delete
+
+ `\f'
+ form feed
+
+ `\n'
+ newline
+
+ `\r'
+ carriage return
+
+ `\t'
+ horizontal tab
+
+ `\v'
+ vertical tab
+
+ `\NNN'
+ the character whose `ASCII' code is the octal value NNN (one
+ to three digits)
+
+ `\xNNN'
+ the character whose `ASCII' code is the hexadecimal value NNN
+ (one to three digits)
+
+ When entering the text of a macro, single or double quotes must be
+ used to indicate a macro definition. Unquoted text is assumed to
+ be a function name. In the macro body, the backslash escapes
+ described above are expanded. Backslash will quote any other
+ character in the macro text, including `"' and `''. For example,
+ the following binding will make `C-x \' insert a single `\' into
+ the line:
+ "\C-x\\": "\\"
+
+
+File: rluserman.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File
+
+Conditional Init Constructs
+---------------------------
+
+ Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key bindings
+and variable settings to be performed as the result of tests. There
+are four parser directives used.
+
+`$if'
+ The `$if' construct allows bindings to be made based on the
+ editing mode, the terminal being used, or the application using
+ Readline. The text of the test extends to the end of the line; no
+ characters are required to isolate it.
+
+ `mode'
+ The `mode=' form of the `$if' directive is used to test
+ whether Readline is in `emacs' or `vi' mode. This may be
+ used in conjunction with the `set keymap' command, for
+ instance, to set bindings in the `emacs-standard' and
+ `emacs-ctlx' keymaps only if Readline is starting out in
+ `emacs' mode.
+
+ `term'
+ The `term=' form may be used to include terminal-specific key
+ bindings, perhaps to bind the key sequences output by the
+ terminal's function keys. The word on the right side of the
+ `=' is tested against both the full name of the terminal and
+ the portion of the terminal name before the first `-'. This
+ allows `sun' to match both `sun' and `sun-cmd', for instance.
+
+ `application'
+ The APPLICATION construct is used to include
+ application-specific settings. Each program using the
+ Readline library sets the APPLICATION NAME, and you can test
+ for it. This could be used to bind key sequences to
+ functions useful for a specific program. For instance, the
+ following command adds a key sequence that quotes the current
+ or previous word in Bash:
+ $if Bash
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ $endif
+
+`$endif'
+ This command, as seen in the previous example, terminates an `$if'
+ command.
+
+`$else'
+ Commands in this branch of the `$if' directive are executed if the
+ test fails.
+
+`$include'
+ This directive takes a single filename as an argument and reads
+ commands and bindings from that file.
+ $include /etc/inputrc
+
+
+File: rluserman.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File
+
+Sample Init File
+----------------
+
+ Here is an example of an inputrc file. This illustrates key
+binding, variable assignment, and conditional syntax.
+
+
+ # This file controls the behaviour of line input editing for
+ # programs that use the Gnu Readline library. Existing programs
+ # include FTP, Bash, and Gdb.
+ #
+ # You can re-read the inputrc file with C-x C-r.
+ # Lines beginning with '#' are comments.
+ #
+ # First, include any systemwide bindings and variable assignments from
+ # /etc/Inputrc
+ $include /etc/Inputrc
+
+ #
+ # Set various bindings for emacs mode.
+
+ set editing-mode emacs
+
+ $if mode=emacs
+
+ Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+ #
+ # Arrow keys in keypad mode
+ #
+ #"\M-OD": backward-char
+ #"\M-OC": forward-char
+ #"\M-OA": previous-history
+ #"\M-OB": next-history
+ #
+ # Arrow keys in ANSI mode
+ #
+ "\M-[D": backward-char
+ "\M-[C": forward-char
+ "\M-[A": previous-history
+ "\M-[B": next-history
+ #
+ # Arrow keys in 8 bit keypad mode
+ #
+ #"\M-\C-OD": backward-char
+ #"\M-\C-OC": forward-char
+ #"\M-\C-OA": previous-history
+ #"\M-\C-OB": next-history
+ #
+ # Arrow keys in 8 bit ANSI mode
+ #
+ #"\M-\C-[D": backward-char
+ #"\M-\C-[C": forward-char
+ #"\M-\C-[A": previous-history
+ #"\M-\C-[B": next-history
+
+ C-q: quoted-insert
+
+ $endif
+
+ # An old-style binding. This happens to be the default.
+ TAB: complete
+
+ # Macros that are convenient for shell interaction
+ $if Bash
+ # edit the path
+ "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+ # prepare to type a quoted word -- insert open and close double quotes
+ # and move to just after the open quote
+ "\C-x\"": "\"\"\C-b"
+ # insert a backslash (testing backslash escapes in sequences and macros)
+ "\C-x\\": "\\"
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ # Add a binding to refresh the line, which is unbound
+ "\C-xr": redraw-current-line
+ # Edit variable on current line.
+ "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+ $endif
+
+ # use a visible bell if one is available
+ set bell-style visible
+
+ # don't strip characters to 7 bits when reading
+ set input-meta on
+
+ # allow iso-latin1 characters to be inserted rather than converted to
+ # prefix-meta sequences
+ set convert-meta off
+
+ # display characters with the eighth bit set directly rather than
+ # as meta-prefixed characters
+ set output-meta on
+
+ # if there are more than 150 possible completions for a word, ask the
+ # user if he wants to see all of them
+ set completion-query-items 150
+
+ # For FTP
+ $if Ftp
+ "\C-xg": "get \M-?"
+ "\C-xt": "put \M-?"
+ "\M-.": yank-last-arg
+ $endif
+
+
+File: rluserman.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
+
+Bindable Readline Commands
+==========================
+
+* Menu:
+
+* Commands For Moving:: Moving about the line.
+* Commands For History:: Getting at previous lines.
+* Commands For Text:: Commands for changing text.
+* Commands For Killing:: Commands for killing and yanking.
+* Numeric Arguments:: Specifying numeric arguments, repeat counts.
+* Commands For Completion:: Getting Readline to do the typing for you.
+* Keyboard Macros:: Saving and re-executing typed characters
+* Miscellaneous Commands:: Other miscellaneous commands.
+
+ This section describes Readline commands that may be bound to key
+sequences.
+
+ Command names without an accompanying key sequence are unbound by
+default. In the following descriptions, POINT refers to the current
+cursor position, and MARK refers to a cursor position saved by the
+`set-mark' command. The text between the point and mark is referred to
+as the REGION.
+
+
+File: rluserman.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
+
+Commands For Moving
+-------------------
+
+`beginning-of-line (C-a)'
+ Move to the start of the current line.
+
+`end-of-line (C-e)'
+ Move to the end of the line.
+
+`forward-char (C-f)'
+ Move forward a character.
+
+`backward-char (C-b)'
+ Move back a character.
+
+`forward-word (M-f)'
+ Move forward to the end of the next word. Words are composed of
+ letters and digits.
+
+`backward-word (M-b)'
+ Move back to the start of the current or previous word. Words are
+ composed of letters and digits.
+
+`clear-screen (C-l)'
+ Clear the screen and redraw the current line, leaving the current
+ line at the top of the screen.
+
+`redraw-current-line ()'
+ Refresh the current line. By default, this is unbound.
+
+
+File: rluserman.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
+
+Commands For Manipulating The History
+-------------------------------------
+
+`accept-line (Newline, Return)'
+ Accept the line regardless of where the cursor is. If this line is
+ non-empty, add it to the history list. If this line was a history
+ line, then restore the history line to its original state.
+
+`previous-history (C-p)'
+ Move `up' through the history list.
+
+`next-history (C-n)'
+ Move `down' through the history list.
+
+`beginning-of-history (M-<)'
+ Move to the first line in the history.
+
+`end-of-history (M->)'
+ Move to the end of the input history, i.e., the line currently
+ being entered.
+
+`reverse-search-history (C-r)'
+ Search backward starting at the current line and moving `up'
+ through the history as necessary. This is an incremental search.
+
+`forward-search-history (C-s)'
+ Search forward starting at the current line and moving `down'
+ through the the history as necessary. This is an incremental
+ search.
+
+`non-incremental-reverse-search-history (M-p)'
+ Search backward starting at the current line and moving `up'
+ through the history as necessary using a non-incremental search
+ for a string supplied by the user.
+
+`non-incremental-forward-search-history (M-n)'
+ Search forward starting at the current line and moving `down'
+ through the the history as necessary using a non-incremental search
+ for a string supplied by the user.
+
+`history-search-forward ()'
+ Search forward through the history for the string of characters
+ between the start of the current line and the point. This is a
+ non-incremental search. By default, this command is unbound.
+
+`history-search-backward ()'
+ Search backward through the history for the string of characters
+ between the start of the current line and the point. This is a
+ non-incremental search. By default, this command is unbound.
+
+`yank-nth-arg (M-C-y)'
+ Insert the first argument to the previous command (usually the
+ second word on the previous line). With an argument N, insert the
+ Nth word from the previous command (the words in the previous
+ command begin with word 0). A negative argument inserts the Nth
+ word from the end of the previous command.
+
+`yank-last-arg (M-., M-_)'
+ Insert last argument to the previous command (the last word of the
+ previous history entry). With an argument, behave exactly like
+ `yank-nth-arg'. Successive calls to `yank-last-arg' move back
+ through the history list, inserting the last argument of each line
+ in turn.
+
+
+File: rluserman.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
+
+Commands For Changing Text
+--------------------------
+
+`delete-char (C-d)'
+ Delete the character under the cursor. If the cursor is at the
+ beginning of the line, there are no characters in the line, and
+ the last character typed was not bound to `delete-char', then
+ return `EOF'.
+
+`backward-delete-char (Rubout)'
+ Delete the character behind the cursor. A numeric argument means
+ to kill the characters instead of deleting them.
+
+`forward-backward-delete-char ()'
+ Delete the character under the cursor, unless the cursor is at the
+ end of the line, in which case the character behind the cursor is
+ deleted. By default, this is not bound to a key.
+
+`quoted-insert (C-q, C-v)'
+ Add the next character typed to the line verbatim. This is how to
+ insert key sequences like <C-q>, for example.
+
+`tab-insert (M-TAB)'
+ Insert a tab character.
+
+`self-insert (a, b, A, 1, !, ...)'
+ Insert yourself.
+
+`transpose-chars (C-t)'
+ Drag the character before the cursor forward over the character at
+ the cursor, moving the cursor forward as well. If the insertion
+ point is at the end of the line, then this transposes the last two
+ characters of the line. Negative arguments have no effect.
+
+`transpose-words (M-t)'
+ Drag the word before point past the word after point, moving point
+ past that word as well.
+
+`upcase-word (M-u)'
+ Uppercase the current (or following) word. With a negative
+ argument, uppercase the previous word, but do not move the cursor.
+
+`downcase-word (M-l)'
+ Lowercase the current (or following) word. With a negative
+ argument, lowercase the previous word, but do not move the cursor.
+
+`capitalize-word (M-c)'
+ Capitalize the current (or following) word. With a negative
+ argument, capitalize the previous word, but do not move the cursor.
+
+
+File: rluserman.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
+
+Killing And Yanking
+-------------------
+
+`kill-line (C-k)'
+ Kill the text from point to the end of the line.
+
+`backward-kill-line (C-x Rubout)'
+ Kill backward to the beginning of the line.
+
+`unix-line-discard (C-u)'
+ Kill backward from the cursor to the beginning of the current line.
+
+`kill-whole-line ()'
+ Kill all characters on the current line, no matter point is. By
+ default, this is unbound.
+
+`kill-word (M-d)'
+ Kill from point to the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the same
+ as `forward-word'.
+
+`backward-kill-word (M-DEL)'
+ Kill the word behind point. Word boundaries are the same as
+ `backward-word'.
+
+`unix-word-rubout (C-w)'
+ Kill the word behind point, using white space as a word boundary.
+ The killed text is saved on the kill-ring.
+
+`delete-horizontal-space ()'
+ Delete all spaces and tabs around point. By default, this is
+ unbound.
+
+`kill-region ()'
+ Kill the text in the current region. By default, this command is
+ unbound.
+
+`copy-region-as-kill ()'
+ Copy the text in the region to the kill buffer, so it can be yanked
+ right away. By default, this command is unbound.
+
+`copy-backward-word ()'
+ Copy the word before point to the kill buffer. The word
+ boundaries are the same as `backward-word'. By default, this
+ command is unbound.
+
+`copy-forward-word ()'
+ Copy the word following point to the kill buffer. The word
+ boundaries are the same as `forward-word'. By default, this
+ command is unbound.
+
+`yank (C-y)'
+ Yank the top of the kill ring into the buffer at the current
+ cursor position.
+
+`yank-pop (M-y)'
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is yank or yank-pop.
+
+
+File: rluserman.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
+
+Specifying Numeric Arguments
+----------------------------
+
+`digit-argument (M-0, M-1, ... M--)'
+ Add this digit to the argument already accumulating, or start a new
+ argument. <M-> starts a negative argument.
+
+`universal-argument ()'
+ This is another way to specify an argument. If this command is
+ followed by one or more digits, optionally with a leading minus
+ sign, those digits define the argument. If the command is
+ followed by digits, executing `universal-argument' again ends the
+ numeric argument, but is otherwise ignored. As a special case, if
+ this command is immediately followed by a character that is
+ neither a digit or minus sign, the argument count for the next
+ command is multiplied by four. The argument count is initially
+ one, so executing this function the first time makes the argument
+ count four, a second time makes the argument count sixteen, and so
+ on. By default, this is not bound to a key.
+
+
+File: rluserman.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
+
+Letting Readline Type For You
+-----------------------------
+
+`complete (TAB)'
+ Attempt to do completion on the text before the cursor. This is
+ application-specific. Generally, if you are typing a filename
+ argument, you can do filename completion; if you are typing a
+ command, you can do command completion; if you are typing in a
+ symbol to GDB, you can do symbol name completion; if you are
+ typing in a variable to Bash, you can do variable name completion,
+ and so on.
+
+`possible-completions (M-?)'
+ List the possible completions of the text before the cursor.
+
+`insert-completions (M-*)'
+ Insert all completions of the text before point that would have
+ been generated by `possible-completions'.
+
+`menu-complete ()'
+ Similar to `complete', but replaces the word to be completed with
+ a single match from the list of possible completions. Repeated
+ execution of `menu-complete' steps through the list of possible
+ completions, inserting each match in turn. At the end of the list
+ of completions, the bell is rung and the original text is restored.
+ An argument of N moves N positions forward in the list of matches;
+ a negative argument may be used to move backward through the list.
+ This command is intended to be bound to `TAB', but is unbound by
+ default.
+
+`delete-char-or-list ()'
+ Deletes the character under the cursor if not at the beginning or
+ end of the line (like `delete-char'). If at the end of the line,
+ behaves identically to `possible-completions'. This command is
+ unbound by default.
+
+
+File: rluserman.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
+
+Keyboard Macros
+---------------
+
+`start-kbd-macro (C-x ()'
+ Begin saving the characters typed into the current keyboard macro.
+
+`end-kbd-macro (C-x ))'
+ Stop saving the characters typed into the current keyboard macro
+ and save the definition.
+
+`call-last-kbd-macro (C-x e)'
+ Re-execute the last keyboard macro defined, by making the
+ characters in the macro appear as if typed at the keyboard.
+
+
+File: rluserman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
+
+Some Miscellaneous Commands
+---------------------------
+
+`re-read-init-file (C-x C-r)'
+ Read in the contents of the INPUTRC file, and incorporate any
+ bindings or variable assignments found there.
+
+`abort (C-g)'
+ Abort the current editing command and ring the terminal's bell
+ (subject to the setting of `bell-style').
+
+`do-uppercase-version (M-a, M-b, M-X, ...)'
+ If the metafied character X is lowercase, run the command that is
+ bound to the corresponding uppercase character.
+
+`prefix-meta (ESC)'
+ Make the next character typed be metafied. This is for keyboards
+ without a meta key. Typing `ESC f' is equivalent to typing `M-f'.
+
+`undo (C-_, C-x C-u)'
+ Incremental undo, separately remembered for each line.
+
+`revert-line (M-r)'
+ Undo all changes made to this line. This is like executing the
+ `undo' command enough times to get back to the beginning.
+
+`tilde-expand (M-~)'
+ Perform tilde expansion on the current word.
+
+`set-mark (C-@)'
+ Set the mark to the current point. If a numeric argument is
+ supplied, the mark is set to that position.
+
+`exchange-point-and-mark (C-x C-x)'
+ Swap the point with the mark. The current cursor position is set
+ to the saved position, and the old cursor position is saved as the
+ mark.
+
+`character-search (C-])'
+ A character is read and point is moved to the next occurrence of
+ that character. A negative count searches for previous
+ occurrences.
+
+`character-search-backward (M-C-])'
+ A character is read and point is moved to the previous occurrence
+ of that character. A negative count searches for subsequent
+ occurrences.
+
+`insert-comment (M-#)'
+ The value of the `comment-begin' variable is inserted at the
+ beginning of the current line, and the line is accepted as if a
+ newline had been typed.
+
+`dump-functions ()'
+ Print all of the functions and their key bindings to the Readline
+ output stream. If a numeric argument is supplied, the output is
+ formatted in such a way that it can be made part of an INPUTRC
+ file. This command is unbound by default.
+
+`dump-variables ()'
+ Print all of the settable variables and their values to the
+ Readline output stream. If a numeric argument is supplied, the
+ output is formatted in such a way that it can be made part of an
+ INPUTRC file. This command is unbound by default.
+
+`dump-macros ()'
+ Print all of the Readline key sequences bound to macros and the
+ strings they ouput. If a numeric argument is supplied, the output
+ is formatted in such a way that it can be made part of an INPUTRC
+ file. This command is unbound by default.
+
+
+File: rluserman.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
+
+Readline vi Mode
+================
+
+ While the Readline library does not have a full set of `vi' editing
+functions, it does contain enough to allow simple editing of the line.
+The Readline `vi' mode behaves as specified in the POSIX 1003.2
+standard.
+
+ In order to switch interactively between `emacs' and `vi' editing
+modes, use the command M-C-j (toggle-editing-mode). The Readline
+default is `emacs' mode.
+
+ When you enter a line in `vi' mode, you are already placed in
+`insertion' mode, as if you had typed an `i'. Pressing <ESC> switches
+you into `command' mode, where you can edit the text of the line with
+the standard `vi' movement keys, move to previous history lines with
+`k' and subsequent lines with `j', and so forth.
+
+
+
+Tag Table:
+Node: Top1221
+Node: Command Line Editing1617
+Node: Introduction and Notation2231
+Node: Readline Interaction3850
+Node: Readline Bare Essentials5044
+Node: Readline Movement Commands6826
+Node: Readline Killing Commands7784
+Node: Readline Arguments9691
+Node: Searching10667
+Node: Readline Init File12511
+Node: Readline Init File Syntax13573
+Node: Conditional Init Constructs22839
+Node: Sample Init File25279
+Node: Bindable Readline Commands28450
+Node: Commands For Moving29495
+Node: Commands For History30345
+Node: Commands For Text33063
+Node: Commands For Killing35067
+Node: Numeric Arguments37035
+Node: Commands For Completion38163
+Node: Keyboard Macros39912
+Node: Miscellaneous Commands40472
+Node: Readline vi Mode43277
+
+End Tag Table
diff --git a/readline/doc/rluserman.ps b/readline/doc/rluserman.ps
new file mode 100644
index 00000000000..4edf5787904
--- /dev/null
+++ b/readline/doc/rluserman.ps
@@ -0,0 +1,1897 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.82 Copyright 1998 Radical Eye Software
+%%Title: rluserman.dvi
+%%Pages: 22
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -D 300 -t letter -o rluserman.ps rluserman.dvi
+%DVIPSParameters: dpi=300, compressed
+%DVIPSSource: TeX output 2000.03.01:1453
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IE 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IE N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IE 256 array N 2 string 0 1 255{IE S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+TeXDict begin 40258431 52099146 1000 300 300 (rluserman.dvi)
+@start
+%DVIPSBitmapFont: Fa cmti10 10.95 1
+/Fa 1 47 df<127012F8A212F012E005057B840E>46 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fb cmbxti10 14.4 1
+/Fb 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fc cmmi10 10.95 1
+/Fc 1 59 df<127012F8A3127005057C840D>58 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fd cmsltt10 10.95 6
+/Fd 6 102 df<1206120FEA1F80120FA21203EA0700A25A120E123C127C12F01260090E
+769B18>39 D<387FFFC0B512E0A26C13C013047C8F18>45 D<EB3E18EBFFB84813F8EA07
+C1EB8078EA0E00121E001C137048133014005AA35AA614C0EA7001A2130338380780383C
+0F00EA1FFE6C5AEA03F0151C7C9B18>67 D<3907E01F80000FEB3FC0000714803903B02E
+00146EA214CE380730DC1331149CA21333141C000E5B13371336133E133C131848C65AA6
+38FE03F800FF7F00FE5B1A1C7F9B18>77 D<126012F0A37E1278A3127C123CA3123E121E
+A3121F7EA313801207A313C01203A413E01201A313F0120013600C24789F18>92
+D<13F8EA07FE487E381F0780EA3C03387801C0127012E0A2B5FCA2148000E0C7FCA21303
+3870078038780F00EA3FFE6C5AEA07F012147B9318>101 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fe cmbx12 13.14 46
+/Fe 46 122 df<123C127E12FFA4127E123C08087C8711>46 D<131C133C13FC12FFA212
+00B3AA387FFFFCA216237CA21F>49 D<48B4FC000713C0381E07F0383803F8386001FC38
+7C00FE12FE14FF147FA2127C003813FFC7FC14FEA2EB01FC14F8EB03F0EB07E01480EB0F
+00131E5B1370EBE003EA01C038038007380700061206380FFFFE5A5A4813FCB5FCA21823
+7DA21F>I<48B4FC000713E0381E03F0383801F8003C13FC387E00FEA3123EEA1C010000
+13FCA2EB03F8EB07F0EB0FC03801FF00A2380007E0EB01F014F8EB00FC14FE14FFA21210
+127C12FEA214FEA2387C01FC007013F8383E07F0380FFFC00001130018237DA21F>I<14
+381478A214F81301130313071306130C131C13381330136013E0EA01C01380EA03005A12
+0E5A12185A12705AB612C0A2390001F800A790387FFFC0A21A237EA21F>I<0018130C00
+1F137CEBFFF814F014E014C01480EBFC000018C7FCA513FF001B13E0381F03F0381C00F8
+000813FCC7127EA3147FA2127812FCA3147E5A006013FC1270383801F8381E07E03807FF
+C03801FE0018237DA21F>I<EB1FC0EB7FF03801F0383803E00C3807803E000F137EEA1F
+005AA2007E133C1400A338FE3FC0EB7FF0EB80F800FF13FCEB007C147E5A147FA4127EA4
+003E137E123F6C137C380F80F83807C1F03803FFC038007F0018237DA21F>I<1230123C
+003FB512C0A215804814005C5C38600018A200E05B485B5CC6485AA249C7FC1306130EA2
+5BA2133CA25BA213F8A41201A66C5A13601A257DA41F>I<EBFF80000313E0380F01F838
+1C007C48133C141E1278A2127C127E387F803C13E0383FF878381FFDF0EBFFC07E000313
+E014F8000F13FCEA1E1F383C07FEEA7803EB00FF48133F141F140FA3140E1278141C6C13
+38381F80F03807FFE00001130018237DA21F>I<141CA2143EA3147FA24A7EA39038019F
+C0A29038031FE0140F01077FEB0607A2010C7F1403011C7FEB1801A2496C7EA2017FB5FC
+A29039E0007F8049133FA2484880151F00038190C7120FA2486E7ED8FFF090B51280A229
+257EA42E>65 D<B612E015FC3903F0007FED3F80ED1FC0ED0FE0A216F0A21507150FA216
+E0151F16C0ED7F80913801FE0090B512F815FF9039F0003FC0ED0FE0ED07F016F8150316
+FCA616F81507ED0FF0ED1FE0ED7FC0B7120015F826257EA42C>I<9138FF8008010FEBF0
+1890393FC03C789039FE0006F8D801F81303484813014848130048481478121F48481438
+A2007F151890C8FCA2481500A97E16187F123FA26C6C1430120F6C6C14606C6C14C06C6C
+EB0180D800FEEB070090383FC01E90380FFFF8010013C025257DA42C>I<B7FCA23903F8
+007FED0F8015071503A21501A3ED00C01406A21600A2140E141EEBFFFEA2EBF81E140E14
+06A21660A291C7FC16C0A415011503A2ED0F80153FB7FCA223257EA428>69
+D<B612FEA23803F800151F8181A281A3ED01801403A292C7FCA25C5C90B5FCA2EBF80F80
+80A491C8FCAAB512F0A221257EA427>I<B500E0B512E0A23B03F80003F800AF90B6FCA2
+9038F80003B0B500E0B512E0A22B257EA430>72 D<B512E0A23803F800B3AFB512E0A213
+257EA417>I<B539E007FF80A2D803F8C7EA780016605E4B5A0307C7FC150E15185D5D5D
+EC03804AC8FC140E141F4A7E147FECDFC09038FB8FE09038FF0FF0EBFC07496C7E816E7E
+1400157F82153F6F7E6F7E8215076F7E82B539E03FFFC0A22A257EA430>75
+D<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E153E157CEC03FCB6FCA220257E
+A425>I<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA36D1406A26D6C130CA26D6C1318
+A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A291387E0300A3EC3F06A2EC1F8C
+A2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A235257EA43A>I<D8FFF8903807
+FFE07FD803FE9038003C006D14187F6D7E6D7E806D7E6D7E13036D7E6D7E80EC7F80EC3F
+C0141FEC0FE015F0EC07F8EC03FC1401EC00FE157F1698ED3FD8ED1FF8150F15071503A2
+150115001678486C1438D8FFFC1418A22B257EA430>I<B67E15F83903F801FEEC007F6F
+7E6F7EA282A55EA24B5A4BC7FCEC01FE90B512F815C09038F803F06E7E6E7E157EA2157F
+A482A31760ED3FC017C0ED1FE1B539E00FFF80923801FE002B257EA42E>82
+D<01FF1380000713E3380F80F7381E001F48130F481307140312F81401A27E91C7FCB4FC
+EA7FE013FE383FFFE014F86C13FE00077F6C1480C67E010313C0EB003FEC0FE01407A200
+C01303A315C07E6C13076C14806CEB0F0038FFC03E38E3FFF838803FE01B257DA422>I<
+007FB612F8A2397E00FE010078EC00780070153800601518A200E0151C160C5AA4C71400
+B3A390B512FEA226247EA32B>I<B539C001FFE0A2D807F8C7EA1C006C6C141816386C6C
+14306C6C5C16E06D6C5B6D6C485A1503D91FE090C7FC90380FF006150E903807F80C6D6C
+5A15386D6C5A903800FF6015E06E5A6E5AAE90380FFFFCA22B257FA42E>89
+D<EA07FF001F13E0383E03F0383F00F880147E121EC7FCA3EB1FFE3803FE7EEA0FC0EA1F
+00123E127E5AA314BEEA7E01383F073E391FFE1FE03807F00F1B187E971E>97
+D<EAFFC0A2120FACEBC1FCEBCFFF9038FC0FC09038F007E09038C003F0A2EC01F8A215FC
+A815F8A2EC03F013E09038F007E090381C1F80390E0FFF00380C03F81E267FA522>I<EB
+7FE03803FFF83807C07C381F80FC13005A007E1378140012FEA8127E127F6C130CEA1F80
+EBC0183807E0703803FFE038007F0016187E971B>I<ECFFC0A2140FAC137F3803FFCF38
+0FE0FF381F803F383F000FA2127EA212FEA8127EA27E141F381F803F380FC0EF3903FFCF
+FC3800FE0F1E267EA522>I<137F3803FFC03807C1F0380F80F8EA1F0048137C127E147E
+12FEA2B512FEA248C7FCA3127EA214067E6C130C380F80183807E0703803FFE038007F80
+17187E971C>I<EB1FC0EB7FF0EA01F83803E1F8120713C1380FC0F01400A7B5FCA2EA0F
+C0B3A2EAFFFEA215267EA513>I<3901FF07C00007EBDFE0380F83F1EA1F01393E00F800
+007E7FA6003E5B6C485A380F83E0EBFFC0001190C7FC0030C8FCA21238123C383FFFE06C
+13FC806C7F481480383C003F48EB0FC000F81307A4007CEB0F806CEB1F00381F807E3807
+FFF8C613C01B247E971F>I<EAFFC0A2120FAC14FE9038C3FF809038CE0FC013D89038D0
+07E013E0A213C0AF39FFFC7FFEA21F267EA522>I<120FEA1F80EA3FC0A4EA1F80EA0F00
+C7FCA7EA7FC0A2120FB3A2EAFFF8A20D277EA611>I<EAFFC0A2120FACEC1FF0A2EC0780
+EC0E005C14305CEBC1C0EBC38013C713DFEBFFC0EBE7E0EBC3F0138180EB80FC147E80A2
+EC1F80EC0FC039FFF83FF8A21D267FA520>107 D<EAFFC0A2120FB3B0EAFFFCA20E267E
+A511>I<26FF80FE137F903A83FF81FFC03B0F8E0FC707E0019813CC903A9007E803F001
+A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E9733>I<38FF80FE903883FF80390F8E
+0FC0139890389007E013A0A213C0AF39FFFC7FFEA21F187E9722>I<EB7F803803FFF038
+07C0F8381F807E48487EA2007EEB1F80A200FE14C0A8007E1480A26CEB3F00A2381F807E
+6C6C5A3803FFF038007F801A187E971F>I<38FFC1FCEBCFFF390FFC1FC09038F007E001
+C013F0140315F8140115FCA8EC03F8A215F0EBE0079038F00FE09038DC1F809038CFFF00
+EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38FF83E0EB8FF8380F8C7CEB90FC13B013
+A01478EBE0005BAEEAFFFEA216187F9719>114 D<3807F8C0EA1FFFEA3C07EA7001EAF0
+00A300FC1300B47EEA7FFC7F383FFF80000F13C0120338001FE01303EAC001A212E014C0
+EAF00338FC078038EFFF00EAC3FC13187E9718>I<13C0A41201A312031207120F121FB5
+12C0A2380FC000AC1460A63807E0C013E13801FF8038007E0013237FA218>I<39FFC07F
+E0A2000F1307B0140FA200071317EBE0673903FFC7FE38007F071F187E9722>I<39FFF8
+0FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00005B13FE
+EB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D187F9720>I<39FFF83FF0A2390FC00F
+003807E00E6C6C5A6D5A6C6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F81361EB
+E0FC3801C07E3803807F3907003F8048131F39FFC07FF8A21D187F9720>120
+D<39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00
+005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21306A25B1230EA781CEAFC185B
+1370EA68E0EA7FC0001FC8FC1D237F9720>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Ff cmsl10 10.95 22
+/Ff 22 122 df<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF0380380
+70A4380700E0A6380E01C0A6381C0380001E13C038FF0FF016207E9F19>12
+D<EAFFF0A20C027E8A0F>45 D<3A07FF803FE03A00F8001F000178130C5D4913205D5D4A
+C7FC1402140848485A5C146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F
+48487E81140781140381380F00016D487E39FFF00FFE231F7E9E23>75
+D<EA07F8EA0C0CEA1E061307121C1200A313FFEA07C7EA1E07EA3C0E127800F01310A313
+1EEB2E2038784F40381F878014147D9317>97 D<13FEEA0383380E0780121C0038130090
+C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D9314>99
+D<13F8EA070EEA0E07121C383803801278127012F0A2B5FC00F0C7FC5AA46C5AEA7002EA
+3004EA1C18EA07E011147D9314>101 D<EB07C0EB1C60EB30F01360EBE0E0EBC0001201
+A5485AEA3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB3E11EB
+E1A33801C1C2380381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FCA21218
+121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0381C0700EA07FC181F80
+9417>I<EA01C0EA03E0A213C0EA0180C7FCA6EA0380121F12071203A2EA0700A6120EA6
+5A121EEAFF800B1F7F9E0C>105 D<13E0120712011200A2485AA6485AEB81FCEB80F014
+C0EB81801400EA07045B13181338137C131C120E7FA2130F7F1480EA1C03381E07C038FF
+8FF016207E9F18>107 D<13E0120712011200A2EA01C0A6EA0380A6EA0700A6120EA65A
+121EEAFF800B207F9F0C>I<390387C07C391F9861863907A072073903C03403EB803800
+07EB7807EB0070A5000EEBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<
+38038F80381F90E0EA07A03803C0601380000713E01300A5380E01C0A6381C0380001E13
+C038FF8FF014147E9319>I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438
+E001E0A214C0130300F0138038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807
+EC383801F01C6C487E140F48487E1580A53903800F00A2140E141E141C5C38074070EB61
+C0011FC7FC90C8FCA3120EA4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E
+01E0123C003813C0127812F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA
+0007A3130EA4131EEBFFC0131D7D9318>I<EA038E381FB380EA07C71203EB8300EA0780
+90C7FCA5120EA65A121EEAFFC011147E9312>I<EA01F9EA0607EA080312181301EA3802
+EA3C00121F13F0EA07FCEA01FEEA001FEA40071303A212601306EAF004EAC818EA87E010
+147F9312>I<1380EA0100A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840
+EA0F800D1C7C9B12>I<381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA2
+5BEA305E381F9F8011147B9319>I<381FF0FF3803C0780001137014403800E0C0EBE180
+EB73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03E038FE07
+FC18147F9318>120 D<390FF83F803901E00E00EBC00C140813E000005B143014205C13
+705CA20171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000F1C8FC12
+E61278191D809318>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fg cmr8 8 41
+/Fg 41 124 df<126012F0A212701210A21220A21240A2040A7D960A>39
+D<EAFF80A2090280870C>45 D<1206120E12FE120EB1EAFFE00B157D9412>49
+D<13101338A3135CA3138EA3EA0107A238020380A33807FFC0EA0401A2380800E0A20018
+13F0123838FE03FE17177F961A>65 D<EAFFFE381C0380EB00E014601470A414E0EB01C0
+381FFF8014C0381C00E0147014301438A4147014E0EB01C0B5120015177F9619>I<EBFC
+1038038330380E00B0481370481330123000701310126012E01400A51410126012700030
+132012386C13406C138038038300EA00FC14177E9619>I<B5FC381C01C0EB00E0143014
+381418141C140C140EA7140C141CA2143814301460EB01C0B5120017177F961B>I<B512
+E0EA1C00146014201410A3EB0400A3130CEA1FFCEA1C0C13041408A2130014181410A214
+3014F0B5FC15177F9618>I<B512E0EA1C00146014201410A3EB0400A3130CEA1FFCEA1C
+0C1304A390C7FCA6EAFFC014177F9617>I<EA0FF8EA00E0B112E0A2EAC1C0EA6180EA1F
+000D177E9612>74 D<EAFFC0001CC7FCAD1420A31460A2144014C01303B5FC13177F9616
+>76 D<00FEEB03F8001E14C000171305A338138009A23811C011A33810E021A2EB7041A3
+EB3881A2EB1D01A2130EA2123839FE040FF81D177F9620>I<00FC13FE001E1338001F13
+101217EA1380EA11C0A2EA10E013701338A2131C130E130F1307EB0390EB01D0A2EB00F0
+14701430123800FE131017177F961A>I<EAFFFE381C0380EB00C014601470A4146014C0
+EB0380381FFE00001CC7FCAAB47E14177F9618>80 D<EAFFFC381C0380EB00C014E01470
+A414E014C0EB0380381FFE00381C0780EB01C0EB00E0A514E1A2147238FF803C18177F96
+1A>82 D<EA0FC4EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FC
+EA001C130E13061280A3EAC004EAE008EAD810EA87E00F177E9614>I<387FFFF8386038
+1800401308A200801304A300001300AF3803FF8016177F9619>I<38FF80FE381C003814
+10B06C132012066C13403801818038007E0017177F961A>I<12FCA212C0B3AB12FCA206
+217D980A>91 D<EA3FC0EA70601330EA20381200EA03F8EA1E3812301270EAE039A21379
+EA70FFEA1F1E100E7F8D12>97 D<12F81238A8EA39F0EA3E0CEA380613077F1480A41400
+5B1306EA361CEA21F011177F9614>I<EA07F0EA18381230EA7010EA600012E0A41260EA
+70081230EA1830EA07C00D0E7F8D10>I<133E130EA8EA07CEEA1C3EEA300E1270126012
+E0A412601270EA301EEA182E3807CF8011177F9614>I<EA0FC0EA1860EA3030EA7038EA
+E018EAFFF8EAE000A31260EA7008EA3010EA1830EA07C00D0E7F8D10>I<EA03E0EA0670
+120EEA1C201300A5EAFF80EA1C00ACEA7F800C1780960B>I<EA0F9EEA18E3EA3060EA70
+70A3EA3060EA18C0EA2F80EA20001260EA3FE013F813FCEA600EEAC006A3EA600CEA3838
+EA0FE010157F8D12>I<1203EA0780A2EA0300C7FCA5EA1F801203AF1243EAE30012E712
+7C091D82960B>106 D<12F81238A8133E13381330134013801239EA3FC0EA39E0123813
+F01378133CA2EAFE7F10177F9613>I<12F81238B3A312FE07177F960A>I<EAF8F8EA3B1C
+EA3C0E1238AA38FE3F80110E7F8D14>110 D<EA07C0EA1830EA3018EA600CA2EAE00EA5
+EA701CEA3018EA1830EA07C00F0E7F8D12>I<EAF9F0EA3E1CEA380613077F1480A41400
+5B130EEA3E1CEA39F00038C7FCA512FE11147F8D14>I<EA07C2EA1C26EA381EEA700E12
+6012E0A412601270EA301EEA1C2EEA07CEEA000EA5EB3F8011147F8D13>I<EAF9E0EA3A
+70123CEA38201300A9B4FC0C0E7F8D0E>I<EA1F40EA60C0EAC040A2EAE000B4FCEA7F80
+EA1FC0EA01E0EA8060A212C0EAE0C0EA9F000B0E7F8D0E>I<1208A31218A21238EAFFC0
+EA3800A71340A4EA1C80EA0F000A147F930E>I<EAF83EEA380EAA131EEA1C2E3807CF80
+110E7F8D14>I<38FEFE7C383838381410133C001C1320134C381E4E60380ECE40138700
+0713801303A200031300EA0201160E7F8D19>119 D<EAFE3FEA3C1CEA1C10EA0E20EA07
+4013C0EA0380EA01C0EA02E0EA04F0EA0870EA1838EA383CEAFC7F100E7F8D13>I<EAFE
+1FEA380EEA3C0CEA1C08A2EA0E10A2EA0720A213E0EA03C0A2EA0180A21300A212E2A212
+A4127810147F8D13>I<B512801101808812>123 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fh cmsy9 9 2
+/Fh 2 106 df<13801201EA0300A31206A25AA35AA35AA25AA35AA21260A37EA27EA37E
+A37EA27EA3EA0180120009267D9B0F>104 D<12C0A21260A37EA27EA37EA37EA27EA3EA
+0180A2EA0300A31206A25AA35AA35AA25AA35AA209267E9B0F>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fi cmcsc10 10.95 8
+/Fi 8 118 df<EAFFF0EA0F00B3ABEAFFF00C1F7D9E12>73 D<EB1FE0EB70383801C00E
+48487E39070003804814C0001EEB01E048EB00F0A2007C14F8A20078147800F8147CA900
+781478007C14F8A2003C14F0003E1301001E14E06CEB03C06C148039038007003801E01E
+38007038EB1FE01E217C9F26>79 D<B512F0380F803E0007130FEC0780EC03C0A215E0A4
+15C0A2EC0780EC0F00143EEBFFF00180C7FCAD487EEAFFFC1B1F7D9E22>I<3803F02038
+0C0C60381803E0EA30005A146012E01420A36C13007E127CEA7F80EA3FFC6CB4FC000713
+80000113C038000FE013031301EB00F014707EA46C136014E06C13C038F8018038C60300
+EA81FC14217C9F1C>83 D<397FF807FE390FE001F0D807C013C06C6C6C5A000149C7FCEB
+F0023800F806EB78046D5AEB3E18EB1F106D5A14C0130713036D7E497EEB06F8EB0478EB
+087CEB183EEB101EEB201F496C7EEBC007496C7ED801007F486D7E481300391F8001F83A
+FFC007FF80211F7E9E25>88 D<EB7E083803819838070078000C1338001C13185A007813
+08127000F01300A5EB03FEEB00381270127812387E120C1207380380D838007F0817177E
+961D>103 D<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2131C
+130E1307A2EB03A0EB01E0A213001460123800FE132016177E961C>110
+D<38FF81FC381C00701420B0000C1340120E6C138038018300EA007C16177E961C>117
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fj cmbx12 17.28 18
+/Fj 18 117 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1007FB512F0A3
+1C2E7AAD28>49 D<913A03FF800180023FEBF00349B5EAFC0701079038003F0FD91FF8EB
+079FD93FC0EB01FFD9FF807F4848C8127F4848153F0007161F49150F485A001F1607A248
+5A1703127FA24992C7FCA212FFA9127FA27FEF0380123FA26C7E1707000F17006C7E6D15
+0E0003161E6C6C151C6C6C6C1478D93FC05CD91FF8EB03E0D907FFEB3F800101D9FFFEC7
+FCD9003F13F80203138031317CB03A>67 D<B812F0A3C6903880003FEE07F816031600A2
+1778A21738A3171C1507A31700A25D5D5D91B5FCA3EC803F818181A21707A392C7120EA4
+171EA2173CA2177C17FC16011607163FB812F8A330317EB035>69
+D<B67EA3000190C9FCB3A9EE0380A416071700A25EA35E5E5E5E4B5A150FB7FCA329317D
+B030>76 D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780
+A3481603A5C792C7FCB3AA017FB6FCA331307DAF38>84 D<EBFFF0000313FF390F803F80
+9038C00FE0486C6C7EA26E7ED80FC07FEA0780C7FCA414FF131FEBFFE33803FC03EA0FF0
+EA1FC0123FEA7F80A2EAFF00A31407A2387F800D393FC01DFE3A1FE078FFF03907FFE07F
+C6EB803F24207E9F27>97 D<EA01F812FFA3120F1207ADEC3FE0ECFFFC9038FBE07F9039
+FF001F8049EB0FC04914E049EB07F016F8A2ED03FCA316FEA816FCA3ED07F8A216F06DEB
+0FE06D14C001E7EB3F809039C3C0FE00903880FFF89038003FC027327EB12D>I<ED0FC0
+EC07FFA3EC007F153FADEB07F8EB3FFF9038FE07BF3903F801FF3907E0007F120F484813
+3F123FA2485AA312FFA8127FA36C7EA2121F6C6C137F000714FF2603F00313E03A01FC0F
+3FFE38007FFEEB0FF027327DB12D>100 D<EB0FFC90387FFF803901FC0FC03903F003E0
+3907E001F0000F14F8391FC000FC003F14FEA24848137E157FA212FFA290B6FCA20180C7
+FCA4127FA36C6C1307121F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0903807
+FE0020207E9F25>I<EB01FE90380FFF8090381FC3C090387F07E09038FE0FF0120113FC
+1203EC07E0EC018091C7FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C327EB119>I<90
+391FF007C09039FFFE3FE03A01F83F79F03907E00FC3000F14E19039C007E0E0001FECF0
+00A2003F80A5001F5CA2000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9FC
+121EA2121F7F90B57E6C14F015FC6C806C801680000F15C0003FC7127F007EEC1FE0007C
+140F00FC1407A4007EEC0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0
+D8001F90C7FC242F7E9F28>I<EA03C0487E487E487EA46C5A6C5A6C5AC8FCA9EA01F812
+7FA31207B3A7B51280A311337DB217>105 D<EA01F812FFA3120F1207B3B3A6B512C0A3
+12327DB117>108 D<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01E0FC02C09038
+8300FE280FF1801FC6137F2607F30013CC01F602F8148001FC5CA3495CB3B500C3B5380F
+FFFCA33E207D9F43>I<3903F007F800FFEB3FFEEC783F02C013803A0FF1801FC03807F3
+0001F614E013FCA35BB3B500C3B5FCA328207D9F2D>I<EB07FC90387FFFC03901FC07F0
+3903F001F848486C7E4848137E001F147F003F158049133F007F15C0A300FF15E0A8007F
+15C0A36C6CEB7F80A2001F15006C6C13FE00075C3903F803F83901FE0FF039007FFFC0D9
+07FCC7FC23207E9F28>I<3801FF86000713FEEA1F00003C133E48131E140E12F8A36C90
+C7FCB47E13FC387FFFC06C13F0806C7F00077F00017FEA003F01001380143F0060131F00
+E0130FA27E15007E6C131E6C131C38FF807838F3FFF038C07F8019207D9F20>115
+D<131CA5133CA3137CA213FC120112031207381FFFFEB5FCA2D803FCC7FCB0EC0380A712
+01EC0700EA00FEEB7F0EEB3FFCEB07F0192E7FAD1F>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fk cmsy10 10.95 1
+/Fk 1 14 df<14FF010713E090381F00F80178131E01E01307D80180EB018048C812C000
+061560481530A248151848150CA2481506A4481503A900601506A46C150CA26C15186C15
+30A26C15606C15C06C6CEB0180D800E0EB07000178131E011F13F8903807FFE0010090C7
+FC282B7EA02D>13 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fl cmbx12 14.4 39
+/Fl 39 122 df<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2120612
+0E5A5A12100A157B8813>44 D<121C127FA2EAFF80A3EA7F00A2121C09097B8813>46
+D<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49
+D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2
+127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049C7FC131E4913E013
+705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA622>I<EB7F803803
+FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00A2147E5C495AEB07
+F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA215C0143F48148000
+7CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA25C5C5C5C5BA2EB03
+BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12F0B612F8
+A3C7EA7F00A890381FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C5C14C091
+C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215E0A21218
+127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C613801B277DA6
+22>I<B612F815FF16C03A03F8001FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED
+07F0150FED1FC0EDFF8090B5EAFE00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216
+FFA616FE1501ED03FC1507ED1FF8B712E016C0EDFE0028297DA830>66
+D<91387FE003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F484814
+7F4848143F4848141F485A160F485A1607127FA290C9FC5AA97E7F1607123FA26C7E160E
+6C7E6C6C141C6C6C143C6C6C14786CB4EB01F090397FF007C0011FB512800107EBFE0090
+38007FF028297CA831>I<B712E0A33903FC001FED07F01501A215001670A3913801C078
+1638A302031300A2140F90B5FCA3EBFC0F1403A20201130EA3161C91C7FCA3163C163816
+7816F815011503151FB712F0A327297EA82C>69 D<B712C0A33903FC003FED0FE0150315
+01A21500A316F0913801C070A316001403A2140F90B5FCA3EBFC0F1403A21401A491C8FC
+A9B512FCA324297EA82A>I<B512F0A33803FC00B3B1B512F0A314297EA819>73
+D<B512FCA3D803FCC8FCB3A3ED01C0A415031680A21507A2150FA2151F157F913801FF00
+B7FCA322297EA828>76 D<D8FFFE92383FFF80A26D5D0003EFE000A2D9BF8014EFA2D99F
+C0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D983F8130EA2D981FC131CA3D980FE1338
+A2027F1370A291383F80E0A391381FC1C0A291380FE380A2913807F700A3EC03FEA26E5A
+A26E5AD8FFFE0203B51280A2157039297DA840>I<B612E015FE6F7E3A03FC003FE0ED0F
+F06F7E6F7E150182A65E4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC0
+6F7E6F7E6F7EA9170EA21503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>82
+D<9038FF80600003EBF0E0000F13F8381F80FD383F001F003E1307481303A200FC1301A2
+14007EA26C140013C0EA7FFCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB
+007FEC1FF0140F140700E01303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE00
+00E15B38C01FF01C297CA825>I<B500F0EBFFFEA3D803FCC7EA0380B3AA0001ED07007F
+0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7FC2F297EA834
+>85 D<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E13016C
+604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F160E17F0
+9126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703FC70035BA291
+3AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E80021E141E
+A242297FA845>87 D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4
+EB3FFF3801FC3FEA0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F38
+03FC031E1B7E9A21>97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F0
+9038F001F89038E000FCA2157EA2157FA8157EA315FCA29038F001F89038F803F090389C
+0FE090380FFF80390E01FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F
+80EA3F00A248133E007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE0
+0E3803F83C3801FFF838003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807
+F03F380FC00F381F8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E0
+7FFF3801FFE738007F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F13
+0048EB0F80127E15C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003
+803907C007003803F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC
+7FEA03F813F01207143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<90
+38FF80F00003EBE3F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E13
+3E003F137E6C137C380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14
+C06C14E06C14F0121F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC0
+1F806CB5120038007FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E30FC0
+01E413E0EBE80701F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F80EA
+1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>
+I<EAFFE0A3120FB3B2EAFFFEA30F2A7EA912>108 D<26FFC07FEB1FC0903AC1FFC07FF0
+903AC307E0C1F8D80FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03CFF
+FE3FFF8FFFE0A3331B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC807
+01D813F013D0A213E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E390F
+C01F80391F800FC0393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A239
+1F800FC0390FC01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFC1F0EBC7FC
+EBC63E380FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114
+D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C
+13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C137038FF01E038E7FF
+C000C11300161B7E9A1B>I<13E0A41201A31203A21207120F381FFFE0B5FCA2380FE000
+AD1470A73807F0E0000313C03801FF8038007F0014267FA51A>I<39FFE07FF0A3000F13
+07B2140FA2000713173903F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FFA339
+0FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA214
+9EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B0FE0
+0FE001C02607F007EB0380A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC2600
+FE1C5B15FE9039FF387E3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2
+EC800701075CA22E1B7F9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F003801
+FE1E00005BEB7F3814F86D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F
+803901E01FC0D803C013E0EB800F39FFF03FFFA3201B7F9A23>I<39FFFC03FFA3390FF0
+00F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB
+3F9C14FC6D5AA26D5AA36D5AA26D5AA25CA21307003890C7FCEA7C0FEAFE0E131E131C5B
+EA74F0EA3FE0EA0F8020277F9A23>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fm cmtt10 10.95 77
+/Fm 77 127 df<127012F8B012701200A5127012F8A31270051C779B18>33
+D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5
+12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18>
+I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C38013C7A338F1C0001279123F
+6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EBC7001271EA79DEEA3FFEEA1F
+F8EA07E0EA01C0A3120011247D9F18>I<1238127CA2127E123E120EA3121CA2123812F8
+12F012C0070E789B18>39 D<137013F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA4
+5AA81270A47EA27E121E7EEA0780EA03C0EA01F0120013700C24799F18>I<126012F012
+787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA01C0A2EA03801207EA0F0012
+1E5A5A5A12600C247C9F18>I<EA01C0A4EA41C138F1C780EAFDDF387FFF00EA1FFCEA07
+F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C100EA01C0A411147D9718>I<121C123E127E
+127F123F121F1207120E121E127C12F81260080C788518>44 D<387FFFC0B512E0A26C13
+C013047E8F18>I<1230127812FCA2127812300606778518>I<1303EB0780A2130F14005B
+131EA2133E133C137C1378A213F85B12015B12035BA212075B120F90C7FCA25A121E123E
+123CA2127C127812F85AA2126011247D9F18>I<EA01F0EA07FC487EEA1F1FEA1C073838
+0380007813C0EA7001A238E000E0A9EAF001007013C0A2EA780300381380381C0700EA1F
+1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203A21207120F123F12FF12FB12431203
+B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<383FFF80A30038C7FCA8EA3BF8EA3FFE7F383C
+0780383003C0EA0001EB00E0A2126012F0A238E001C0EA7003387C0F80383FFF00EA1FFC
+EA03F0131C7E9B18>53 D<12E0B512E0A214C038E00380EB0700C65A131E131C5BA25B13
+F05BA2485AA3485AA448C7FCA7131D7E9C18>55 D<EA03F8EA0FFE487E383E0F80EA3803
+387001C0A438380380EA3C07381FFF00EA07FC487EEA1F1F383C0780387001C000F013E0
+EAE000A4387001C0EA7803383E0F80381FFF006C5AEA03F8131C7E9B18>I<1230127812
+FCA2127812301200A81230127812FCA2127812300614779318>58
+D<14C0EB03E01307EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FCA2127F6C
+7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E01303EB00C013187E9918>60
+D<387FFFC0B512E0A26C13C0C8FCA4387FFFC0B512E0A26C13C0130C7E9318>I<126012
+F87E127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E0A2EB1FC0EB3F80EBFE0048
+5AEA07F0485AEA3F8048C7FC12FC5A126013187E9918>I<EA0FF0EA3FFC48B4FCEA700F
+38F00380A2EA600738000F00133E5BEA01F05B485AA55BC8FCA5EA0380487EA36C5A111C
+7D9B18>I<137CEA01FEEA07FF380F8780381E03C0EA3C1DEA387F3870FFE0EA71E313C1
+12E1EAE380A638E1C1C0127113E33870FF8038387F00EA3C1C381E00E0EA0F833807FFC0
+0001138038007E00131C7E9B18>I<137013F8A213D8A2EA01DCA3138CEA038EA4EA0707
+A5380FFF80A3EA0E03381C01C0A3387F07F000FF13F8007F13F0151C7F9B18>I<EA7FFC
+B5FC6C1380381C03C01301EB00E0A4130114C01307381FFF80140014C0EA1C03EB00E014
+F01470A414F014E01303387FFFC0B51280387FFE00141C7F9B18>I<EBF8E0EA03FEEA07
+FFEA0F07EA1E03EA3C01EA38005AA214005AA8127014E0A27E123C381E01C0EA0F073807
+FF803803FE00EA00F8131C7E9B18>I<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E013
+00A214F01470A814F014E0A2130114C01303EB0F80387FFF00485AEA7FF8141C7F9B18>
+I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A315
+1C7F9B18>I<B512F8A3381C0038A41400A21307A3EA1FFFA3EA1C07A390C7FCA7EAFFC0
+A3151C7F9B18>I<3801F1C0EA03FDEA0FFFEA1F0FEA1C03123813011270A290C7FC5AA5
+EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FDEA01F1141C7E9B
+18>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8
+387F07F0151C7F9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C
+7D9B18>I<387F07F038FF87F8387F07F0381C03C0EB07801400130E131E5B13385B13F0
+121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380A2EB01C0387F03F038FF87F8387F03F0
+151C7F9B18>75 D<EAFFC0A3001CC7FCB114E0A5B5FCA3131C7E9B18>I<38FC01F8EAFE
+03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03F8A3151C
+7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A213
+311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>I<EA0FFE383FFF8048
+13C0EA7803EA700100F013E0EAE000B0EAF001007013C0EA7C07EA7FFF6C1380380FFE00
+131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01E013001470A514E01301EB03C0EA1FFF
+1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA0FFE383FFF804813C0EA7803EA7001
+00F013E0EAE000AE1370A2EAF079387039C0EA783FEA7FFF6C1380380FFE00EA000FEB07
+80A2EB03C01301A213227E9B18>I<EA7FF8EAFFFE6C7E381C0F80130314C01301A31303
+1480130F381FFF005BA2EA1C0F7FEB0380A5149CA3387F01F8EAFF81387F00F0161C7F9B
+18>I<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A390C7FC12701278123FEA1FF0EA07FE
+C67EEB0F80EB03C01301EB00E0A2126012E0130100F013C038F80780B5FCEBFE00EAE7F8
+131C7E9B18>I<387FFFF8B5FCA238E07038A400001300B2EA07FFA3151C7F9B18>I<38FF
+83FEA3381C0070B36C13E0EA0F01380783C03803FF806C1300EA007C171C809B18>I<38
+FE03F8EAFF07EAFE03381C01C0EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3
+EA00F8A21370A9EA01FC487E6C5A151C7F9B18>89 D<EAFFF8A3EAE000B3ACEAFFF8A30D
+24779F18>91 D<126012F0A27E1278127C123CA2123E121E121F7EA27F12077F1203A27F
+12017F12007F1378A2137C133C133E131EA2131F7F14801307A2EB030011247D9F18>I<
+EAFFF8A3EA0038B3ACEAFFF8A30D247F9F18>I<387FFFC0B512E0A26C13C013047E7F18>
+95 D<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF1207121FEA7F03127812E0A3
+EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>97 D<127E12FE127E120EA5133EEB
+FF80000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E1380
+38063E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838030048C7FCA25AA61270
+EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I<EB1F80133F131F1303A5
+EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007A2EA380FEA3C1F381FFF
+F0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA3E0F38380780EA7003A2
+38E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF8000071300EA01F812147D
+9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0B5FCA23801C000AEEA7F
+FFA3131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00487EA5EA1C0EEA1E1EEA
+1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F038700070481338A4007813F0
+EA7E03381FFFC06C13803801FC00151F7F9318>I<127E12FE127E120EA5133EEBFF8000
+0F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC171C809B18>I<EA0380EA
+07C0A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C18>I<1338137CA31338
+1300A4EA0FFCA3EA001CB3A4EA6038EAF078EAFFF0EA7FE0EA3F800E277E9C18>I<127E
+12FE127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA0E0F7FEB03
+8014C0387FC7F812FF127F151C7F9B18>I<EAFFC0A31201B3A4B51280A3111C7D9B18>I<
+38F9C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB3E3E17148093
+18>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC7FC38FFE7FE387FC7
+FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A238E000E0A5EAF001
+007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318>I<EA7E3E38FEFF
+80007F13C0380FC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E1380
+EB3E0090C7FCA7EA7FC0487E6C5A151E809318>I<3801F380EA07FBEA1FFFEA3E1FEA38
+0FEA7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB1FF0EB
+3FF8EB1FF0151E7E9318>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0005BA290C7FC
+A9EAFFFC7F5B14147E9318>I<EA07F7EA3FFF5AEA780FEAE007A3007CC7FCEA7FE0EA1F
+FCEA03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F011147D9318>I<48
+7E1203A4387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C1380EB3E0013197F
+9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE3801FCFC1714
+809318>I<387F8FF000FF13F8007F13F0381C01C0380E0380A338070700A3138FEA038E
+A3EA01DCA3EA00F8A2137015147F9318>I<38FF07F8138F1307383800E0A4381C01C013
+7113F9A213D9EA1DDD000D1380A3138DEA0F8FA23807070015147F9318>I<387F8FF013
+9F138F380F0700EA078EEA039EEA01DC13F81200137013F07FEA01DCEA039E138EEA0707
+000E1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000FF13F8007F13F038
+0E01C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013DC1378A31370A313
+F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA2387001E0EB03C0EB
+078038000F00131E5B13F8485AEA03C0485A380F0070121E5A5AB512F0A314147F9318>
+I<EB07E0131F137FEB780013E0AB1201EA7FC0485AA26C7EEA01E01200AB1378EB7FE013
+1F130713247E9F18>I<127CB4FC13C01203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0005B
+ABEA03C012FF90C7FC127C13247E9F18>125 D<EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA
+60C00F067C9B18>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fn cmr10 10.95 72
+/Fn 72 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7
+B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701
+A290C7FCA6B512E0EA0700B2383FC3FC1620809F19>I<127012F812FCA212741204A312
+08A21210A212201240060E7C9F0D>39 D<13401380EA01005A12061204120C5AA2123812
+30A212701260A412E0AC1260A412701230A212381218A27E120412067E7EEA008013400A
+2E7BA112>I<7E12407E12307E1208120C7EA212077EA213801201A413C0AC1380A41203
+1300A25A1206A25A120812185A12205A5A0A2E7EA112>I<127012F012F8A212781208A3
+1210A31220A21240050E7C840D>44 D<EAFFF0A20C02808A0F>I<127012F8A312700505
+7C840D>I<EA03F0EA0E1C487EEA1806EA380738700380A400F013C0AD00701380A3EA78
+0700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>48 D<13801203120F12F31203B3A6
+EA07C0EAFFFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00401380128000F013C0EAF8
+03A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7FC000613405A5A00101380
+EA3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F007813801307A2EA380F12
+001400A2131E131C1370EA07F0EA003C130E130FEB0780A214C0122012F8A300F0138012
+40EB0F00EA200EEA183CEA07F0121F7E9D17>I<1306A2130EA2131E132EA2134E138EA2
+EA010E1202A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17
+>I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA180EEA10071480EA0003A214
+C0A3127012F0A200E013801240EB0700EA20066C5AEA0838EA07E0121F7E9D17>I<137C
+EA0182EA0701380E0380EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEAF406
+EAF807EB0380A200F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D
+17>I<1240387FFFE014C0A23840008038800100A21302485AA25B5BA25BA21360A213E0
+5B1201A41203A76C5A131F7E9D17>I<EA03F0EA0C0CEA1006EA3003382001801260A312
+7038780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F38300F80EA6007EB01
+C012C01300A31480EA600100201300EA1002EA0C0CEA03F0121F7E9D17>I<EA03F0EA0E
+18487E487E13071270EB038012F0A214C0A5EA7007A21238EA180BEA0E13EA03E3380003
+80A3EB07001230EA7806130EEA700CEA2018EA1070EA0FC0121F7E9D17>I<127012F8A3
+12701200AA127012F8A3127005147C930D>I<127012F8A312701200AA127012F012F8A2
+12781208A31210A31220A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB
+2078A3497EA2EBC03EEB801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E14
+E039FF801FFE1F207F9F22>65 D<B512E0380F0078141EA2801580A515005C141E147CEB
+FFF0EB007C141FEC0F80EC07C0140315E0A515C014071580EC0F00143EB512F01B1F7E9E
+20>I<90380FE0109038381C309038E002703803C00139078000F048C71270121E15305A
+1510127C127800F81400A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E0
+0300EB380CEB0FF01C217E9F21>I<B512F83807801EEC0780EC03C0EC01E0EC00F01570
+1578A2153CA3153EA8153CA2157C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F
+7F9E23>I<B61280380F000F14031401140015C01540A314401500A214C0130113FF1301
+13001440A3EC0020A31540A315C01401EC0380140FB6FC1B1F7E9E1F>I<B61280380780
+071401A2140015C01540A4EC2000A3146014E013FF138014601420A391C7FCA87FEAFFFE
+1A1F7F9E1E>I<90380FE0109038381C309038E002703803C00139078000F048C7127012
+1E15305A1510127C127800F81400A7EC3FFEEC01F000781300127C123CA27EA27E6C7E39
+03C001703900E002309038380C1090380FF0001F217E9F24>I<39FFF07FF8390F000780
+AD90B5FCEB0007AF39FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>
+I<3807FFC038003E00131EB3A3122012F8A3EAF01CEA403CEA6038EA1070EA0FC012207F
+9E17>I<39FFF007FC390F0003E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB
+13C0EB21E01341EB80F0EB0078A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F
+7E9E23>I<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E
+1C>I<B46CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D13
+83A290380E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F
+7F9E2A>I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB07
+80A2EB03C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D
+1F7E9E22>I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0
+A2007C14F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E0
+6CEB03C06C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F00
+7C141E80EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F
+>I<B57E380F00F0143C8080A21580A41500A2141E5C14F0EBFF80EB01C0EB0070A28014
+3CA3143EA31504143F141FEC0F0839FFF00788C7EA01F01E207E9E21>82
+D<3803F040380C0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF8
+6CB4FC00071380C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F80180
+38C60300EA81FC14217E9F19>I<007FB512E038780F010060EB006000401420A200C014
+3000801410A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC00
+80B3A46CEB01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003
+FE391F8000F86CC7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213
+F8EB7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF0
+7FF81FF03B1F000FC007C06C903907800180170015C001805C00071502EC09E013C00003
+5DEC19F01410D801E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C14
+4090383D000F133F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<39
+FFF001FF391F800078000F146012076D1340000314807F3901F001001200EBF802EB7C06
+EB3C04EB3E08131EEB1F10EB0FB0EB07A014E06D5AACEB3FFC201F7F9E22>89
+D<12FFA212C0B3B3A512FFA2082D7CA10D>91 D<12FFA21203B3B3A512FFA2082D80A10D
+>93 D<120812101220A21240A21280A312B812FCA2127C1238060E7D9F0D>96
+D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA078EEA1E0E1238127800F01310A313
+1E127838386720380F83C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00
+C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C15207E9F
+19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0A61270127800381380A2381C
+0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112
+381278127012F0A61270A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA
+0E1C487E487EA21270EB038012F0A2B5FC00F0C7FCA31270A26C1380A2381C0100EA0706
+EA01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE0
+1020809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA
+33E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C
+13C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A2
+121CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F
+7F9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA
+6180EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013
+E0EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12
+FC121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D039038391E01E01CA2
+001C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38
+FF8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A600
+7013E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA1C7CEAFD87381E01
+8014C0381C00E014F014701478A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7
+FCA8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03EA38011278127012F0A612
+7012781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD
+18EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE0
+00127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F14
+7F9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C
+7F9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83
+F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370
+A3132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D8
+0704138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB40081E14
+7F9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F01370
+137813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC16147F9318>
+I<38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00
+E8A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E12
+60EA401C133813781370EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA70
+06130EEAFFFE10147F9314>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fo cmbx12 20.736 19
+/Fo 19 122 df<DB1FFC14C00203B5EAC001021FECF003027FECFC07903B01FFFC00FE0F
+010701C0EB1F9F4948C7EA07FFD93FF880494814004948157F485B4A153F4890C9121F48
+5A000F170F5B001F1707A2485A1803A2127FA24993C8FCA212FFAA041FB61280127FA27F
+DC0001EBC000123FA36C7EA26C7EA26C7E7E6C7F806C7F6D6C5CEB3FFCD90FFF5C6D01C0
+EB1FBF010101FCEBFF1F6D6CB5EAFE0F021FECF8030203ECE0009126001FFEC9FC413D7B
+BB4C>71 D<B612F8A439007FF000B3B3AFB612F8A41D3B7DBA24>73
+D<B612FEA426007FF0C9FCB3ADEF03C0A517071880A3170FA3171FA2173F177F17FF5E04
+071300163FB9FCA4323B7DBA3A>76 D<B500F00207B512E0808080D8007F92390007E000
+6E6F5A81017B7F81137901787F6E7E6E7E81141F6E7E6E7F6E7F82806E7F6F7E6F7E826F
+7E816F13806F13C017E06F13F081EE7FF8EE3FFC17FEEE1FFF827013837013C318E37013
+F382EF7FFBEF3FFFA283838383A28383187F183FA201FC161FB500FC150F18071803A243
+3B7CBA4C>78 D<B712F8EEFFC017F817FE3B007FF0001FFF040313C004007F717E717EA2
+84171FA284A660A2173F604D5A604C485A4C5BDC1FFEC8FC91B612F817C0A29139F0007F
+F0EE1FF8707E707E707E8482A284A584A5F101E0A27013F0A2F103C0EF7FF8B600F89039
+3FFC078094381FFE0F0507B51200050113FCCBEA1FF0433C7CBA48>82
+D<B600F80107B512E0A426007FF0C83807E000725AB3B3A3013F4C5AA280011F4CC7FCA2
+6D6C151E0107163E6E5D6D6C5D6D6D13019026007FE0EB0FE0DA3FFCEB7FC0020FB65A02
+034AC8FCDA007F13F003071380433C7DBA4A>85 D<EB3FFE48B512E0000714F8390FE007
+FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F38
+03FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F
+0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4
+FC021F13F0027F13FC9138FC03FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF0
+17F8A2EE07FCA317FEA917FCA3160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EB
+FF009039F0FC07FE91387FFFF8D9E01F13E09026C003FEC7FC2F3C7DBB36>I<903801FF
+F0010F13FE013FEBFF809039FF801FC03901FE003F4848EB7FE0485A485A121F4848EB3F
+C0ED1F80007FEC0F004990C7FCA212FFAA127F7FA2123F6D14F0121F6C6CEB01E012076C
+6CEB03C06CB4EB0F806C9038C03F0090383FFFFE010F13F8010113C024267DA52B>I<EE
+3F80ED3FFFA4150181B0ECFF80010F13F0013F13FC9038FFC03F3901FE000F4848130348
+487F48487F121F485AA2127F5BA312FFA9127FA36C7EA2121F6C6C5B6C6C5B00035CD801
+FE011F13C02700FF807E13FE90387FFFF8010F13E0010113002F3C7DBB36>I<49B47E01
+0F13F0017F13FC9038FF81FE3A03FE007F80D807F8133F4848EB1FC0ED0FE0485A003F15
+F01507485A16F8A212FFA290B6FCA301C0C8FCA4127FA36C7E1678121F7F000F15F06C6C
+13016C6CEB03E06C6CEB0FC03A00FFC07F8090393FFFFE00010F13F8010013C025267DA5
+2C>I<EC1FF0ECFFFC010313FF90390FF83F8090381FE07F90393FC0FFC0495A13FFA248
+9038007F80ED3F00151E92C7FCAAB67EA4000190C8FCB3AC007F13FEA4223C7DBB1E>I<
+EA01E0EA07F8487EA2487EA46C5AA26C5AEA01E0C8FCAB13FE127FA412071203B3AAB512
+F0A4143D7DBC1A>105 D<13FE12FFA412071203B3B3AEB512F8A4153C7DBB1A>108
+D<D801FCEBFF8000FF010313F0020F7F91381E03FC91383801FE000701607F0003497E01
+FD15805C01FFC7FCA35BB3A4B5D8F83F13FEA42F267CA536>110
+D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F00079038E0FFC000035BEBFD80A2
+01FFEB7F809138003F00151E92C7FC5BB3A3B512FCA422267DA528>114
+D<90383FF0383903FFFE7848EBFFF8381FC00F383F0003003E13005A157812FCA27E6C14
+0013C013FC387FFFF06C13FEECFF806C14C06C14E0000314F0C614F8011F13FCEB007FEC
+07FE0070130100F01300157E7EA27E157C6C14FC6C14F890388001F09038F00FE000F9B5
+12C0D8F07F130038C01FF81F267DA526>I<130FA55BA45BA25BA25B5A5A5A001FEBFFF0
+B6FCA3000190C7FCB3153CA86C14781480017F13F090383FC1E090381FFFC06D13809038
+01FE001E377EB626>I<B500F0EBFFFCA4D803FEC7EA1F806D15006C151E806C5DA26E13
+7C017F14786E13F8013F5CECF001011F5CECF803010F5CA2ECFC0701075CECFE0F010391
+C7FC6E5A6D131E15BE6D13BC15FC6E5AA36E5AA26E5AA26E5AA26E5AA2140F92C8FC5C14
+1E0008133E007F133C147C38FF807814F8EB81F0EB83E06C485A387C1F80D83FFFC9FCEA
+1FFCEA07F02E377EA533>121 D E
+%EndDVIPSBitmapFont
+end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+%%BeginPaperSize: Letter
+letter
+%%EndPaperSize
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 75 693 a Fo(GNU)33 b(Readline)h(Library)e(User)h(In)m(terface)p
+75 743 1800 17 v 936 791 a Fn(Edition)17 b(4.1,)c(for)i
+Fm(Readline)f(Library)g Fn(V)l(ersion)i(4.1.)1609 845
+y(Jan)o(uary)f(2000)75 2467 y Fl(Brian)23 b(F)-6 b(o)n(x,)23
+b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)75
+2534 y(Chet)22 b(Ramey)-6 b(,)23 b(Case)e(W)-6 b(estern)23
+b(Reserv)n(e)f(Univ)n(ersit)n(y)p 75 2570 1800 9 v eop
+%%Page: 2 2
+2 1 bop 75 250 a Fn(This)22 b(do)q(cumen)o(t)f(describ)q(es)i(the)f
+(end)f(user)h(in)o(terface)f(of)g(the)g(GNU)g(Readline)j(Library)l(,)f
+(a)e(utilit)o(y)75 305 y(whic)o(h)14 b(aids)f(in)g(the)g(consistency)h
+(of)e(user)h(in)o(terface)g(across)f(discrete)h(programs)f(that)g(need)
+h(to)f(pro)o(vide)75 360 y(a)j(command)g(line)i(in)o(terface.)75
+427 y(Published)g(b)o(y)f(the)f(F)l(ree)g(Soft)o(w)o(are)f(F)l
+(oundation)75 482 y(59)h(T)l(emple)h(Place,)f(Suite)i(330,)75
+537 y(Boston,)d(MA)h(02111)f(USA)75 604 y(P)o(ermission)j(is)f(gran)o
+(ted)g(to)f(mak)o(e)h(and)g(distribute)i(v)o(erbatim)d(copies)i(of)f
+(this)h(man)o(ual)f(pro)o(vided)h(the)75 659 y(cop)o(yrigh)o(t)e
+(notice)h(and)f(this)h(p)q(ermission)g(notice)g(are)f(preserv)o(ed)h
+(on)f(all)h(copies.)75 726 y(P)o(ermission)c(is)h(gran)o(ted)e(to)g
+(cop)o(y)h(and)g(distribute)h(mo)q(di\014ed)g(v)o(ersions)f(of)f(this)h
+(man)o(ual)g(under)h(the)f(con-)75 781 y(ditions)k(for)e(v)o(erbatim)h
+(cop)o(ying,)g(pro)o(vided)h(that)e(the)h(en)o(tire)h(resulting)g
+(deriv)o(ed)g(w)o(ork)e(is)h(distributed)75 836 y(under)h(the)f(terms)g
+(of)g(a)f(p)q(ermission)j(notice)f(iden)o(tical)h(to)e(this)g(one.)75
+903 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)h(and)f
+(distribute)i(translations)f(of)f(this)h(man)o(ual)g(in)o(to)f(another)
+g(lan-)75 958 y(guage,)e(under)h(the)f(ab)q(o)o(v)o(e)g(conditions)i
+(for)d(mo)q(di\014ed)j(v)o(ersions,)e(except)h(that)f(this)h(p)q
+(ermission)g(notice)75 1013 y(ma)o(y)f(b)q(e)i(stated)f(in)h(a)f
+(translation)g(appro)o(v)o(ed)g(b)o(y)g(the)g(F)l(ree)h(Soft)o(w)o(are)
+d(F)l(oundation.)75 2661 y(Cop)o(yrigh)o(t)301 2660 y(c)289
+2661 y Fk(\015)i Fn(1988-1999)e(F)l(ree)i(Soft)o(w)o(are)f(F)l
+(oundation,)h(Inc.)p eop
+%%Page: 1 3
+1 2 bop 75 -58 a Fn(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(1)75 183 y Fj(1)41 b(Command)28 b(Line)e(Editing)137
+299 y Fn(This)16 b(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f
+(of)g(the)g Fi(gnu)g Fn(command)g(line)i(editing)f(in)o(terface.)75
+426 y Fl(1.1)33 b(In)n(tro)r(duction)24 b(to)e(Line)i(Editing)137
+522 y Fn(The)16 b(follo)o(wing)g(paragraphs)e(describ)q(e)j(the)e
+(notation)g(used)h(to)e(represen)o(t)i(k)o(eystrok)o(es.)137
+589 y(The)h(text)327 587 y Fh(h)p 339 561 56 2 v 339
+589 a Fg(C-k)p 339 597 V 393 587 a Fh(i)424 589 y Fn(is)f(read)g(as)g
+(`Con)o(trol-K')f(and)h(describ)q(es)i(the)e(c)o(haracter)g(pro)q
+(duced)h(when)f(the)1831 587 y Fh(h)p 1844 561 19 2 v
+1844 589 a Fg(k)p 1844 597 V 1860 587 a Fh(i)75 644 y
+Fn(k)o(ey)f(is)h(pressed)g(while)g(the)f(Con)o(trol)g(k)o(ey)g(is)h
+(depressed.)137 711 y(The)f(text)325 709 y Fh(h)p 337
+683 63 2 v 337 711 a Fg(M-k)p 337 719 V 397 709 a Fh(i)427
+711 y Fn(is)g(read)g(as)f(`Meta-K')g(and)h(describ)q(es)i(the)e(c)o
+(haracter)f(pro)q(duced)i(when)f(the)g(Meta)75 766 y(k)o(ey)f(\(if)g(y)
+o(ou)g(ha)o(v)o(e)g(one\))g(is)h(depressed,)g(and)f(the)930
+764 y Fh(h)p 942 738 19 2 v 942 766 a Fg(k)p 942 774
+V 958 764 a Fh(i)987 766 y Fn(k)o(ey)g(is)h(pressed.)20
+b(The)15 b(Meta)e(k)o(ey)h(is)h(lab)q(eled)1779 764 y
+Fh(h)p 1791 738 72 2 v 1791 766 a Fg(AL)m(T)p 1791 774
+V 1860 764 a Fh(i)75 821 y Fn(on)e(man)o(y)g(k)o(eyb)q(oards.)19
+b(On)13 b(k)o(eyb)q(oards)g(with)h(t)o(w)o(o)e(k)o(eys)g(lab)q(eled)
+1213 819 y Fh(h)p 1225 793 V 1225 821 a Fg(AL)m(T)p 1225
+828 V 1294 819 a Fh(i)1322 821 y Fn(\(usually)i(to)e(either)i(side)g
+(of)f(the)75 876 y(space)j(bar\),)f(the)388 874 y Fh(h)p
+400 847 V 400 876 a Fg(AL)m(T)p 400 883 V 469 874 a Fh(i)499
+876 y Fn(on)h(the)g(left)g(side)g(is)g(generally)h(set)f(to)f(w)o(ork)g
+(as)g(a)g(Meta)g(k)o(ey)l(.)22 b(The)1697 874 y Fh(h)p
+1709 847 V 1709 876 a Fg(AL)m(T)p 1709 883 V 1778 874
+a Fh(i)1808 876 y Fn(k)o(ey)75 930 y(on)17 b(the)f(righ)o(t)h(ma)o(y)f
+(also)h(b)q(e)g(con\014gured)g(to)f(w)o(ork)g(as)g(a)h(Meta)f(k)o(ey)g
+(or)g(ma)o(y)g(b)q(e)i(con\014gured)f(as)f(some)75 985
+y(other)f(mo)q(di\014er,)h(suc)o(h)f(as)g(a)g(Comp)q(ose)g(k)o(ey)g
+(for)f(t)o(yping)i(accen)o(ted)f(c)o(haracters.)137 1052
+y(If)c(y)o(ou)g(do)g(not)f(ha)o(v)o(e)h(a)f(Meta)h(or)694
+1050 y Fh(h)p 706 1024 V 706 1052 a Fg(AL)m(T)p 706 1060
+V 775 1050 a Fh(i)801 1052 y Fn(k)o(ey)l(,)g(or)g(another)f(k)o(ey)h(w)
+o(orking)f(as)h(a)f(Meta)h(k)o(ey)l(,)g(the)g(iden)o(tical)75
+1107 y(k)o(eystrok)o(e)f(can)i(b)q(e)f(generated)h(b)o(y)f(t)o(yping)
+809 1105 y Fh(h)p 821 1079 70 2 v 821 1107 a Fg(ESC)p
+821 1115 V 888 1105 a Fh(i)915 1107 y Ff(\014rst)p Fn(,)g(and)g(then)h
+(t)o(yping)1339 1105 y Fh(h)p 1351 1079 19 2 v 1351 1107
+a Fg(k)p 1351 1115 V 1368 1105 a Fh(i)1383 1107 y Fn(.)18
+b(Either)12 b(pro)q(cess)f(is)h(kno)o(wn)75 1162 y(as)j
+Ff(metafying)k Fn(the)425 1160 y Fh(h)p 437 1134 V 437
+1162 a Fg(k)p 437 1169 V 454 1160 a Fh(i)484 1162 y Fn(k)o(ey)l(.)137
+1229 y(The)h(text)334 1227 y Fh(h)p 347 1201 100 2 v
+347 1229 a Fg(M-C-k)p 347 1236 V 444 1227 a Fh(i)479
+1229 y Fn(is)g(read)g(as)f(`Meta-Con)o(trol-k')f(and)i(describ)q(es)h
+(the)f(c)o(haracter)f(pro)q(duced)i(b)o(y)75 1283 y Ff(metafying)291
+1281 y Fh(h)p 303 1255 56 2 v 303 1283 a Fg(C-k)p 303
+1291 V 357 1281 a Fh(i)372 1283 y Fn(.)137 1350 y(In)e(addition,)h(sev)
+o(eral)f(k)o(eys)f(ha)o(v)o(e)g(their)h(o)o(wn)f(names.)30
+b(Sp)q(eci\014cally)l(,)1384 1348 y Fh(h)p 1396 1322
+73 2 v 1396 1350 a Fg(DEL)p 1396 1358 V 1467 1348 a Fh(i)1482
+1350 y Fn(,)1514 1348 y Fh(h)p 1526 1322 70 2 v 1526
+1350 a Fg(ESC)p 1526 1358 V 1593 1348 a Fh(i)1608 1350
+y Fn(,)1640 1348 y Fh(h)p 1652 1322 72 2 v 1652 1350
+a Fg(LFD)p 1652 1358 V 1722 1348 a Fh(i)1737 1350 y Fn(,)1768
+1348 y Fh(h)p 1780 1322 70 2 v 1780 1350 a Fg(SPC)p 1780
+1358 V 1847 1348 a Fh(i)1862 1350 y Fn(,)75 1403 y Fh(h)p
+87 1377 76 2 v 87 1405 a Fg(RET)p 87 1413 V 160 1403
+a Fh(i)175 1405 y Fn(,)23 b(and)306 1403 y Fh(h)p 318
+1377 74 2 v 318 1405 a Fg(T)m(AB)p 318 1413 V 390 1403
+a Fh(i)427 1405 y Fn(all)f(stand)g(for)f(themselv)o(es)h(when)h(seen)f
+(in)g(this)g(text,)h(or)e(in)i(an)e(init)i(\014le)g(\(see)75
+1460 y(Section)d(1.3)f([Readline)i(Init)f(File],)h(page)e(4\).)32
+b(If)19 b(y)o(our)g(k)o(eyb)q(oard)h(lac)o(ks)f(a)1444
+1458 y Fh(h)p 1456 1432 72 2 v 1456 1460 a Fg(LFD)p 1456
+1468 V 1526 1458 a Fh(i)1560 1460 y Fn(k)o(ey)l(,)h(t)o(yping)1802
+1458 y Fh(h)p 1814 1432 49 2 v 1814 1460 a Fg(C-j)p 1814
+1468 V 1860 1458 a Fh(i)75 1515 y Fn(will)c(pro)q(duce)g(the)f(desired)
+h(c)o(haracter.)j(The)874 1513 y Fh(h)p 886 1487 76 2
+v 886 1515 a Fg(RET)p 886 1522 V 959 1513 a Fh(i)989
+1515 y Fn(k)o(ey)c(ma)o(y)f(b)q(e)h(lab)q(eled)1385 1513
+y Fh(h)p 1397 1487 109 2 v 1397 1515 a Fg(Return)p 1397
+1522 V 1503 1513 a Fh(i)1533 1515 y Fn(or)1588 1513 y
+Fh(h)p 1600 1487 86 2 v 1600 1515 a Fg(En)o(ter)p 1600
+1522 V 1684 1513 a Fh(i)1714 1515 y Fn(on)f(some)75 1569
+y(k)o(eyb)q(oards.)75 1697 y Fl(1.2)33 b(Readline)23
+b(In)n(teraction)137 1793 y Fn(Often)13 b(during)h(an)e(in)o(teractiv)o
+(e)h(session)g(y)o(ou)g(t)o(yp)q(e)f(in)i(a)e(long)h(line)h(of)e(text,)
+h(only)g(to)f(notice)h(that)f(the)75 1848 y(\014rst)k(w)o(ord)f(on)h
+(the)h(line)h(is)e(missp)q(elled.)26 b(The)16 b(Readline)j(library)e
+(giv)o(es)f(y)o(ou)g(a)g(set)g(of)g(commands)g(for)75
+1903 y(manipulating)g(the)f(text)g(as)f(y)o(ou)h(t)o(yp)q(e)g(it)g(in,)
+g(allo)o(wing)h(y)o(ou)f(to)f(just)h(\014x)g(y)o(our)f(t)o(yp)q(o,)g
+(and)h(not)g(forcing)75 1958 y(y)o(ou)f(to)f(ret)o(yp)q(e)h(the)g(ma)s
+(jorit)o(y)f(of)h(the)g(line.)21 b(Using)15 b(these)f(editing)h
+(commands,)f(y)o(ou)g(mo)o(v)o(e)f(the)h(cursor)75 2012
+y(to)i(the)i(place)g(that)e(needs)i(correction,)g(and)f(delete)h(or)f
+(insert)g(the)h(text)e(of)h(the)g(corrections.)26 b(Then,)75
+2067 y(when)16 b(y)o(ou)f(are)h(satis\014ed)g(with)g(the)f(line,)i(y)o
+(ou)e(simply)i(press)1160 2065 y Fh(h)p 1172 2039 155
+2 v 1172 2067 a Fg(RETURN)p 1172 2075 V 1324 2065 a Fh(i)1339
+2067 y Fn(.)k(Y)l(ou)16 b(do)f(not)g(ha)o(v)o(e)g(to)g(b)q(e)i(at)75
+2122 y(the)g(end)g(of)f(the)g(line)i(to)e(press)634 2120
+y Fh(h)p 646 2094 V 646 2122 a Fg(RETURN)p 646 2130 V
+798 2120 a Fh(i)813 2122 y Fn(;)g(the)h(en)o(tire)g(line)h(is)f
+(accepted)g(regardless)g(of)f(the)g(lo)q(cation)75 2177
+y(of)f(the)g(cursor)g(within)h(the)g(line.)75 2288 y
+Fe(1.2.1)30 b(Readline)20 b(Bare)g(Essen)n(tials)137
+2384 y Fn(In)12 b(order)g(to)f(en)o(ter)g(c)o(haracters)g(in)o(to)g
+(the)h(line,)h(simply)g(t)o(yp)q(e)f(them.)18 b(The)12
+b(t)o(yp)q(ed)g(c)o(haracter)f(app)q(ears)75 2439 y(where)16
+b(the)h(cursor)f(w)o(as,)f(and)h(then)h(the)f(cursor)g(mo)o(v)o(es)g
+(one)g(space)g(to)g(the)g(righ)o(t.)23 b(If)17 b(y)o(ou)f(mist)o(yp)q
+(e)g(a)75 2493 y(c)o(haracter,)e(y)o(ou)h(can)g(use)h(y)o(our)f(erase)g
+(c)o(haracter)f(to)h(bac)o(k)g(up)g(and)h(delete)g(the)f(mist)o(yp)q
+(ed)h(c)o(haracter.)137 2560 y(Sometimes)g(y)o(ou)f(ma)o(y)g(mist)o(yp)
+q(e)h(a)f(c)o(haracter,)f(and)i(not)f(notice)h(the)f(error)g(un)o(til)i
+(y)o(ou)e(ha)o(v)o(e)g(t)o(yp)q(ed)75 2615 y(sev)o(eral)f(other)f(c)o
+(haracters.)19 b(In)14 b(that)g(case,)f(y)o(ou)h(can)g(t)o(yp)q(e)1102
+2613 y Fh(h)p 1114 2587 57 2 v 1114 2615 a Fg(C-b)p 1114
+2623 V 1168 2613 a Fh(i)1197 2615 y Fn(to)f(mo)o(v)o(e)g(the)h(cursor)g
+(to)f(the)h(left,)g(and)75 2670 y(then)i(correct)e(y)o(our)h(mistak)o
+(e.)20 b(Afterw)o(ards,)13 b(y)o(ou)i(can)g(mo)o(v)o(e)g(the)g(cursor)g
+(to)g(the)g(righ)o(t)g(with)1714 2668 y Fh(h)p 1727 2642
+49 2 v 1727 2670 a Fg(C-f)p 1727 2678 V 1772 2668 a Fh(i)1787
+2670 y Fn(.)p eop
+%%Page: 2 4
+2 3 bop 75 -58 a Fn(2)1322 b(GNU)15 b(Readline)i(Library)137
+183 y(When)g(y)o(ou)f(add)g(text)g(in)h(the)g(middle)h(of)e(a)f(line,)j
+(y)o(ou)e(will)i(notice)f(that)f(c)o(haracters)f(to)h(the)g(righ)o(t)75
+238 y(of)e(the)g(cursor)g(are)g(`pushed)h(o)o(v)o(er')f(to)f(mak)o(e)h
+(ro)q(om)g(for)f(the)i(text)f(that)f(y)o(ou)h(ha)o(v)o(e)g(inserted.)21
+b(Lik)o(ewise,)75 293 y(when)e(y)o(ou)g(delete)h(text)e(b)q(ehind)j
+(the)e(cursor,)g(c)o(haracters)f(to)g(the)h(righ)o(t)f(of)g(the)h
+(cursor)g(are)f(`pulled)75 348 y(bac)o(k')11 b(to)g(\014ll)h(in)h(the)e
+(blank)h(space)g(created)f(b)o(y)h(the)f(remo)o(v)m(al)g(of)g(the)h
+(text.)18 b(A)11 b(list)h(of)f(the)h(bare)f(essen)o(tials)75
+402 y(for)k(editing)h(the)f(text)g(of)g(an)g(input)h(line)h(follo)o
+(ws.)75 479 y Fh(h)p 87 453 57 2 v 87 481 a Fg(C-b)p
+87 489 V 142 479 a Fh(i)315 481 y Fn(Mo)o(v)o(e)d(bac)o(k)h(one)h(c)o
+(haracter.)75 558 y Fh(h)p 87 532 49 2 v 87 560 a Fg(C-f)p
+87 567 V 133 558 a Fh(i)315 560 y Fn(Mo)o(v)o(e)e(forw)o(ard)g(one)h(c)
+o(haracter.)75 636 y Fh(h)p 87 610 73 2 v 87 638 a Fg(DEL)p
+87 646 V 158 636 a Fh(i)188 638 y Fn(or)244 636 y Fh(h)p
+256 610 159 2 v 256 638 a Fg(Bac)o(kspace)p 256 646 V
+412 636 a Fh(i)315 693 y Fn(Delete)h(the)f(c)o(haracter)g(to)f(the)h
+(left)h(of)f(the)g(cursor.)75 770 y Fh(h)p 87 744 57
+2 v 87 772 a Fg(C-d)p 87 779 V 142 770 a Fh(i)315 772
+y Fn(Delete)h(the)f(c)o(haracter)g(underneath)h(the)f(cursor.)75
+850 y(Prin)o(ting)h(c)o(haracters)315 905 y(Insert)f(the)h(c)o
+(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h(cursor.)75
+981 y Fh(h)p 87 955 50 2 v 87 983 a Fg(C-)p 126 983 11
+2 v 87 991 50 2 v 135 981 a Fh(i)165 983 y Fn(or)221
+981 y Fh(h)p 233 955 125 2 v 233 983 a Fg(C-x)c(C-u)p
+233 991 V 355 981 a Fh(i)315 1038 y Fn(Undo)17 b(the)g(last)f(editing)i
+(command.)25 b(Y)l(ou)17 b(can)g(undo)g(all)g(the)g(w)o(a)o(y)f(bac)o
+(k)h(to)f(an)g(empt)o(y)315 1093 y(line.)75 1172 y(\(Dep)q(ending)i(on)
+f(y)o(our)g(con\014guration,)g(the)863 1170 y Fh(h)p
+875 1144 159 2 v 875 1172 a Fg(Bac)o(kspace)p 875 1179
+V 1032 1170 a Fh(i)1063 1172 y Fn(k)o(ey)g(b)q(e)h(set)f(to)f(delete)i
+(the)f(c)o(haracter)g(to)f(the)75 1226 y(left)h(of)f(the)h(cursor)f
+(and)g(the)596 1224 y Fh(h)p 608 1198 73 2 v 608 1226
+a Fg(DEL)p 608 1234 V 679 1224 a Fh(i)710 1226 y Fn(k)o(ey)h(set)f(to)g
+(delete)h(the)g(c)o(haracter)f(underneath)h(the)g(cursor,)f(lik)o(e)75
+1279 y Fh(h)p 87 1253 57 2 v 87 1281 a Fg(C-d)p 87 1289
+V 142 1279 a Fh(i)157 1281 y Fn(,)f(rather)f(than)h(the)h(c)o(haracter)
+e(to)h(the)g(left)g(of)g(the)g(cursor.\))75 1392 y Fe(1.2.2)30
+b(Readline)20 b(Mo)n(v)n(emen)n(t)i(Commands)137 1487
+y Fn(The)14 b(ab)q(o)o(v)o(e)e(table)i(describ)q(es)g(the)g(most)e
+(basic)i(k)o(eystrok)o(es)d(that)i(y)o(ou)g(need)h(in)f(order)g(to)g
+(do)g(editing)75 1542 y(of)f(the)h(input)h(line.)21 b(F)l(or)12
+b(y)o(our)g(con)o(v)o(enience,)i(man)o(y)f(other)f(commands)h(ha)o(v)o
+(e)f(b)q(een)i(added)f(in)h(addition)75 1597 y(to)130
+1595 y Fh(h)p 142 1569 V 142 1597 a Fg(C-b)p 142 1605
+V 197 1595 a Fh(i)212 1597 y Fn(,)239 1595 y Fh(h)p 251
+1569 49 2 v 251 1597 a Fg(C-f)p 251 1605 V 297 1595 a
+Fh(i)312 1597 y Fn(,)339 1595 y Fh(h)p 351 1569 57 2
+v 351 1597 a Fg(C-d)p 351 1605 V 406 1595 a Fh(i)421
+1597 y Fn(,)g(and)536 1595 y Fh(h)p 548 1569 73 2 v 548
+1597 a Fg(DEL)p 548 1605 V 619 1595 a Fh(i)634 1597 y
+Fn(.)20 b(Here)15 b(are)f(some)g(commands)h(for)f(mo)o(ving)g(more)h
+(rapidly)g(ab)q(out)g(the)75 1652 y(line.)75 1728 y Fh(h)p
+87 1702 55 2 v 87 1730 a Fg(C-a)p 87 1738 V 140 1728
+a Fh(i)315 1730 y Fn(Mo)o(v)o(e)f(to)h(the)g(start)f(of)h(the)g(line.)
+75 1807 y Fh(h)p 87 1781 53 2 v 87 1809 a Fg(C-e)p 87
+1817 V 138 1807 a Fh(i)315 1809 y Fn(Mo)o(v)o(e)f(to)h(the)g(end)h(of)f
+(the)g(line.)75 1885 y Fh(h)p 87 1859 55 2 v 87 1887
+a Fg(M-f)p 87 1895 V 140 1885 a Fh(i)315 1887 y Fn(Mo)o(v)o(e)f(forw)o
+(ard)g(a)h(w)o(ord,)f(where)i(a)e(w)o(ord)h(is)h(comp)q(osed)f(of)g
+(letters)g(and)h(digits.)75 1964 y Fh(h)p 87 1938 64
+2 v 87 1966 a Fg(M-b)p 87 1974 V 149 1964 a Fh(i)315
+1966 y Fn(Mo)o(v)o(e)e(bac)o(kw)o(ard)h(a)g(w)o(ord.)75
+2043 y Fh(h)p 87 2017 48 2 v 87 2045 a Fg(C-l)p 87 2052
+V 132 2043 a Fh(i)315 2045 y Fn(Clear)g(the)h(screen,)f(reprin)o(ting)h
+(the)f(curren)o(t)g(line)i(at)e(the)g(top.)137 2123 y(Notice)d(ho)o(w)
+368 2121 y Fh(h)p 380 2095 49 2 v 380 2123 a Fg(C-f)p
+380 2131 V 426 2121 a Fh(i)452 2123 y Fn(mo)o(v)o(es)f(forw)o(ard)f(a)i
+(c)o(haracter,)f(while)1105 2121 y Fh(h)p 1117 2095 55
+2 v 1117 2123 a Fg(M-f)p 1117 2131 V 1170 2121 a Fh(i)1197
+2123 y Fn(mo)o(v)o(es)f(forw)o(ard)h(a)g(w)o(ord.)18
+b(It)12 b(is)g(a)g(lo)q(ose)75 2178 y(con)o(v)o(en)o(tion)j(that)f(con)
+o(trol)h(k)o(eystrok)o(es)f(op)q(erate)h(on)f(c)o(haracters)h(while)h
+(meta)e(k)o(eystrok)o(es)g(op)q(erate)h(on)75 2233 y(w)o(ords.)75
+2343 y Fe(1.2.3)30 b(Readline)20 b(Killing)h(Commands)137
+2439 y Ff(Killing)26 b Fn(text)18 b(means)g(to)g(delete)i(the)f(text)f
+(from)g(the)h(line,)i(but)d(to)g(sa)o(v)o(e)g(it)h(a)o(w)o(a)o(y)e(for)
+h(later)h(use,)75 2494 y(usually)f(b)o(y)f Ff(y)o(anking)22
+b Fn(\(re-inserting\))17 b(it)g(bac)o(k)g(in)o(to)g(the)h(line.)27
+b(\(`Cut')15 b(and)j(`paste')e(are)g(more)h(recen)o(t)75
+2549 y(jargon)d(for)h(`kill')h(and)g(`y)o(ank'.\))137
+2615 y(If)g(the)f(description)h(for)f(a)g(command)g(sa)o(ys)f(that)h
+(it)g(`kills')h(text,)e(then)i(y)o(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o
+(ou)75 2670 y(can)h(get)g(the)g(text)g(bac)o(k)g(in)h(a)f(di\013eren)o
+(t)g(\(or)g(the)g(same\))g(place)h(later.)p eop
+%%Page: 3 5
+3 4 bop 75 -58 a Fn(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(3)137 183 y(When)12 b(y)o(ou)g(use)g(a)f(kill)i(command,)f(the)g
+(text)f(is)h(sa)o(v)o(ed)f(in)i(a)e Ff(kill-ring)p Fn(.)21
+b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75
+238 y(kills)17 b(sa)o(v)o(e)e(all)h(of)f(the)h(killed)i(text)d
+(together,)f(so)h(that)g(when)h(y)o(ou)f(y)o(ank)g(it)h(bac)o(k,)f(y)o
+(ou)g(get)g(it)h(all.)22 b(The)75 293 y(kill)c(ring)f(is)f(not)g(line)i
+(sp)q(eci\014c;)g(the)e(text)g(that)f(y)o(ou)h(killed)j(on)d(a)g
+(previously)h(t)o(yp)q(ed)g(line)h(is)e(a)o(v)m(ailable)75
+348 y(to)f(b)q(e)g(y)o(ank)o(ed)g(bac)o(k)h(later,)e(when)i(y)o(ou)f
+(are)g(t)o(yping)g(another)g(line.)137 415 y(Here)h(is)f(the)h(list)g
+(of)e(commands)h(for)g(killing)j(text.)75 492 y Fh(h)p
+87 466 56 2 v 87 494 a Fg(C-k)p 87 502 V 141 492 a Fh(i)315
+494 y Fn(Kill)f(the)f(text)e(from)h(the)g(curren)o(t)g(cursor)g(p)q
+(osition)h(to)f(the)g(end)h(of)f(the)g(line.)75 571 y
+Fh(h)p 87 545 64 2 v 87 573 a Fg(M-d)p 87 581 V 149 571
+a Fh(i)315 573 y Fn(Kill)g(from)e(the)g(cursor)g(to)f(the)i(end)g(of)e
+(the)i(curren)o(t)f(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)
+e(to)h(the)315 628 y(end)j(of)f(the)g(next)g(w)o(ord.)k(W)l(ord)c(b)q
+(oundaries)i(are)e(the)g(same)g(as)g(those)f(used)i(b)o(y)1728
+626 y Fh(h)p 1740 600 55 2 v 1740 628 a Fg(M-f)p 1740
+636 V 1793 626 a Fh(i)1808 628 y Fn(.)75 705 y Fh(h)p
+87 679 118 2 v 87 707 a Fg(M-DEL)p 87 715 V 202 705 a
+Fh(i)315 707 y Fn(Kill)21 b(from)e(the)g(cursor)f(the)h(start)f(of)h
+(the)g(previous)h(w)o(ord,)f(or,)g(if)g(b)q(et)o(w)o(een)h(w)o(ords,)f
+(to)315 762 y(the)14 b(start)f(of)g(the)h(previous)g(w)o(ord.)19
+b(W)l(ord)14 b(b)q(oundaries)h(are)e(the)h(same)g(as)f(those)h(used)g
+(b)o(y)315 815 y Fh(h)p 327 789 64 2 v 327 817 a Fg(M-b)p
+327 825 V 389 815 a Fh(i)404 817 y Fn(.)75 894 y Fh(h)p
+87 868 63 2 v 87 896 a Fg(C-w)p 87 904 V 148 894 a Fh(i)315
+896 y Fn(Kill)k(from)d(the)h(cursor)g(to)f(the)h(previous)h
+(whitespace.)22 b(This)17 b(is)f(di\013eren)o(t)g(than)1733
+894 y Fh(h)p 1745 868 118 2 v 1745 896 a Fg(M-DEL)p 1745
+904 V 1860 894 a Fh(i)315 951 y Fn(b)q(ecause)g(the)f(w)o(ord)g(b)q
+(oundaries)h(di\013er.)137 1030 y(Here)21 b(is)h(ho)o(w)e(to)g
+Ff(y)o(ank)j Fn(the)e(text)f(bac)o(k)h(in)o(to)g(the)f(line.)39
+b(Y)l(anking)21 b(means)g(to)f(cop)o(y)h(the)g(most-)75
+1085 y(recen)o(tly-killed)d(text)d(from)f(the)i(kill)h(bu\013er.)75
+1163 y Fh(h)p 87 1137 56 2 v 87 1165 a Fg(C-y)p 87 1172
+V 141 1163 a Fh(i)315 1165 y Fn(Y)l(ank)e(the)h(most)e(recen)o(tly)i
+(killed)h(text)e(bac)o(k)g(in)o(to)g(the)h(bu\013er)f(at)f(the)i
+(cursor.)75 1242 y Fh(h)p 87 1216 63 2 v 87 1244 a Fg(M-y)p
+87 1252 V 148 1242 a Fh(i)315 1244 y Fn(Rotate)h(the)g(kill-ring,)j
+(and)d(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f
+(this)h(if)f(the)h(prior)315 1299 y(command)d(is)568
+1297 y Fh(h)p 580 1271 56 2 v 580 1299 a Fg(C-y)p 580
+1306 V 634 1297 a Fh(i)664 1299 y Fn(or)719 1297 y Fh(h)p
+732 1271 63 2 v 732 1299 a Fg(M-y)p 732 1306 V 792 1297
+a Fh(i)807 1299 y Fn(.)75 1410 y Fe(1.2.4)30 b(Readline)20
+b(Argumen)n(ts)137 1506 y Fn(Y)l(ou)15 b(can)g(pass)f(n)o(umeric)i
+(argumen)o(ts)e(to)g(Readline)i(commands.)k(Sometimes)15
+b(the)g(argumen)o(t)e(acts)75 1561 y(as)20 b(a)g(rep)q(eat)g(coun)o(t,)
+h(other)f(times)g(it)h(is)g(the)f Ff(sign)h Fn(of)f(the)g(argumen)o(t)f
+(that)h(is)h(signi\014can)o(t.)36 b(If)20 b(y)o(ou)75
+1616 y(pass)d(a)f(negativ)o(e)h(argumen)o(t)f(to)g(a)g(command)h(whic)o
+(h)h(normally)f(acts)f(in)i(a)e(forw)o(ard)g(direction,)i(that)75
+1671 y(command)g(will)h(act)e(in)i(a)e(bac)o(kw)o(ard)g(direction.)28
+b(F)l(or)17 b(example,)i(to)e(kill)j(text)d(bac)o(k)g(to)g(the)h(start)
+e(of)75 1726 y(the)f(line,)i(y)o(ou)e(migh)o(t)g(t)o(yp)q(e)g(`)p
+Fm(M--)f(C-k)p Fn('.)137 1793 y(The)h(general)f(w)o(a)o(y)f(to)h(pass)g
+(n)o(umeric)h(argumen)o(ts)e(to)g(a)h(command)g(is)h(to)e(t)o(yp)q(e)h
+(meta)g(digits)h(b)q(efore)75 1847 y(the)h(command.)k(If)c(the)f
+(\014rst)g(`digit')h(t)o(yp)q(ed)f(is)h(a)g(min)o(us)g(sign)g(\(`)p
+Fm(-)p Fn('\),)d(then)j(the)f(sign)h(of)f(the)h(argumen)o(t)75
+1902 y(will)g(b)q(e)f(negativ)o(e.)k(Once)c(y)o(ou)f(ha)o(v)o(e)g(t)o
+(yp)q(ed)g(one)h(meta)e(digit)i(to)f(get)f(the)h(argumen)o(t)g
+(started,)f(y)o(ou)h(can)75 1957 y(t)o(yp)q(e)19 b(the)g(remainder)g
+(of)f(the)h(digits,)h(and)f(then)g(the)g(command.)30
+b(F)l(or)18 b(example,)i(to)e(giv)o(e)h(the)1793 1955
+y Fh(h)p 1805 1929 57 2 v 1805 1957 a Fg(C-d)p 1805 1965
+V 1860 1955 a Fh(i)75 2012 y Fn(command)c(an)g(argumen)o(t)g(of)f(10,)h
+(y)o(ou)f(could)j(t)o(yp)q(e)e(`)p Fm(M-1)f(0)h(C-d)p
+Fn('.)75 2123 y Fe(1.2.5)30 b(Searc)n(hing)21 b(for)f(Commands)h(in)f
+(the)h(History)137 2219 y Fn(Readline)e(pro)o(vides)d(commands)g(for)g
+(searc)o(hing)g(through)g(the)g(command)g(history)g(for)g(lines)i(con-)
+75 2274 y(taining)e(a)f(sp)q(eci\014ed)i(string.)j(There)c(are)e(t)o(w)
+o(o)g(searc)o(h)h(mo)q(des:)20 b Ff(incremen)o(tal)e
+Fn(and)e Ff(non-incremen)o(tal)p Fn(.)137 2341 y(Incremen)o(tal)e
+(searc)o(hes)f(b)q(egin)h(b)q(efore)f(the)g(user)g(has)g(\014nished)h
+(t)o(yping)f(the)g(searc)o(h)g(string.)19 b(As)13 b(eac)o(h)75
+2396 y(c)o(haracter)k(of)g(the)h(searc)o(h)g(string)f(is)h(t)o(yp)q
+(ed,)h(Readline)h(displa)o(ys)e(the)g(next)g(en)o(try)f(from)g(the)h
+(history)75 2451 y(matc)o(hing)12 b(the)g(string)g(t)o(yp)q(ed)g(so)g
+(far.)18 b(An)13 b(incremen)o(tal)g(searc)o(h)f(requires)g(only)h(as)f
+(man)o(y)f(c)o(haracters)g(as)75 2506 y(needed)16 b(to)d(\014nd)j(the)e
+(desired)i(history)e(en)o(try)l(.)19 b(T)l(o)c(searc)o(h)f(bac)o(kw)o
+(ard)f(in)j(the)e(history)g(for)g(a)g(particular)75 2560
+y(string,)g(t)o(yp)q(e)317 2558 y Fh(h)p 329 2532 51
+2 v 329 2560 a Fg(C-r)p 329 2568 V 378 2558 a Fh(i)393
+2560 y Fn(.)19 b(T)o(yping)580 2558 y Fh(h)p 592 2532
+52 2 v 592 2560 a Fg(C-s)p 592 2568 V 641 2558 a Fh(i)670
+2560 y Fn(searc)o(hes)14 b(forw)o(ard)f(through)g(the)h(history)l(.)20
+b(The)14 b(c)o(haracters)f(presen)o(t)75 2615 y(in)20
+b(the)f(v)m(alue)h(of)f(the)g Fm(isearch-terminators)d
+Fn(v)m(ariable)k(are)f(used)h(to)e(terminate)h(an)g(incremen)o(tal)75
+2670 y(searc)o(h.)29 b(If)19 b(that)e(v)m(ariable)j(has)e(not)g(b)q
+(een)i(assigned)f(a)f(v)m(alue,)i(the)1282 2668 y Fh(h)p
+1294 2642 70 2 v 1294 2670 a Fg(ESC)p 1294 2678 V 1361
+2668 a Fh(i)1395 2670 y Fn(and)1486 2668 y Fh(h)p 1498
+2642 56 2 v 1498 2670 a Fg(C-J)p 1498 2678 V 1551 2668
+a Fh(i)1585 2670 y Fn(c)o(haracters)d(will)p eop
+%%Page: 4 6
+4 5 bop 75 -58 a Fn(4)1322 b(GNU)15 b(Readline)i(Library)75
+183 y(terminate)k(an)f(incremen)o(tal)i(searc)o(h.)780
+181 y Fh(h)p 792 155 55 2 v 792 183 a Fg(C-g)p 792 191
+V 845 181 a Fh(i)880 183 y Fn(will)g(ab)q(ort)e(an)h(incremen)o(tal)h
+(searc)o(h)e(and)h(restore)f(the)75 238 y(original)c(line.)21
+b(When)15 b(the)f(searc)o(h)g(is)h(terminated,)g(the)f(history)h(en)o
+(try)f(con)o(taining)h(the)g(searc)o(h)f(string)75 293
+y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 357 y(T)l(o)g(\014nd)h
+(other)e(matc)o(hing)h(en)o(tries)h(in)f(the)g(history)g(list,)h(t)o
+(yp)q(e)1231 355 y Fh(h)p 1243 329 51 2 v 1243 357 a
+Fg(C-r)p 1243 364 V 1292 355 a Fh(i)1322 357 y Fn(or)1377
+355 y Fh(h)p 1389 329 52 2 v 1389 357 a Fg(C-s)p 1389
+364 V 1438 355 a Fh(i)1468 357 y Fn(as)f(appropriate.)k(This)75
+412 y(will)c(searc)o(h)e(bac)o(kw)o(ard)f(or)g(forw)o(ard)g(in)i(the)f
+(history)g(for)g(the)g(next)g(en)o(try)g(matc)o(hing)g(the)g(searc)o(h)
+g(string)75 466 y(t)o(yp)q(ed)19 b(so)g(far.)30 b(An)o(y)19
+b(other)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e(a)h(Readline)i(command)d
+(will)j(terminate)e(the)75 521 y(searc)o(h)h(and)h(execute)g(that)f
+(command.)35 b(F)l(or)20 b(instance,)i(a)1151 519 y Fh(h)p
+1163 493 76 2 v 1163 521 a Fg(RET)p 1163 529 V 1236 519
+a Fh(i)1271 521 y Fn(will)g(terminate)f(the)f(searc)o(h)h(and)75
+576 y(accept)15 b(the)h(line,)g(thereb)o(y)f(executing)i(the)e(command)
+g(from)g(the)g(history)g(list.)137 640 y(Non-incremen)o(tal)25
+b(searc)o(hes)e(read)h(the)f(en)o(tire)h(searc)o(h)f(string)g(b)q
+(efore)h(starting)f(to)f(searc)o(h)i(for)75 695 y(matc)o(hing)d
+(history)h(lines.)39 b(The)22 b(searc)o(h)f(string)g(ma)o(y)g(b)q(e)h
+(t)o(yp)q(ed)f(b)o(y)h(the)f(user)h(or)e(b)q(e)i(part)f(of)g(the)75
+750 y(con)o(ten)o(ts)15 b(of)f(the)i(curren)o(t)f(line.)75
+868 y Fl(1.3)33 b(Readline)23 b(Init)h(File)137 961 y
+Fn(Although)f(the)g(Readline)i(library)e(comes)g(with)g(a)f(set)g(of)g
+(Emacs-lik)o(e)i(k)o(eybindings)g(installed)75 1016 y(b)o(y)d(default,)
+h(it)f(is)h(p)q(ossible)g(to)e(use)i(a)e(di\013eren)o(t)h(set)g(of)f(k)
+o(eybindings.)39 b(An)o(y)20 b(user)h(can)g(customize)75
+1071 y(programs)15 b(that)h(use)g(Readline)j(b)o(y)d(putting)g
+(commands)g(in)i(an)e Ff(inputrc)k Fn(\014le,)d(con)o(v)o(en)o
+(tionally)g(in)g(his)75 1126 y(home)g(directory)l(.)24
+b(The)17 b(name)g(of)f(this)h(\014le)g(is)g(tak)o(en)g(from)e(the)i(v)m
+(alue)h(of)e(the)h(en)o(vironmen)o(t)g(v)m(ariable)75
+1181 y Fm(INPUTRC)p Fn(.)i(If)c(that)g(v)m(ariable)h(is)g(unset,)f(the)
+g(default)h(is)g(`)p Fm(~/.inputrc)p Fn('.)137 1244 y(When)f(a)g
+(program)f(whic)o(h)h(uses)g(the)g(Readline)i(library)f(starts)d(up,)i
+(the)g(init)h(\014le)g(is)f(read,)g(and)g(the)75 1299
+y(k)o(ey)g(bindings)i(are)e(set.)137 1363 y(In)f(addition,)h(the)e
+Fm(C-x)i(C-r)e Fn(command)g(re-reads)h(this)g(init)g(\014le,)h(th)o(us)
+e(incorp)q(orating)h(an)o(y)f(c)o(hanges)75 1418 y(that)h(y)o(ou)h
+(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75 1520 y Fe(1.3.1)30
+b(Readline)20 b(Init)g(File)h(Syn)n(tax)137 1613 y Fn(There)c(are)g
+(only)g(a)g(few)f(basic)i(constructs)e(allo)o(w)o(ed)i(in)f(the)g
+(Readline)i(init)f(\014le.)26 b(Blank)18 b(lines)g(are)75
+1668 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d(a)h(`)p
+Fm(#)p Fn(')e(are)h(commen)o(ts.)35 b(Lines)22 b(b)q(eginning)h(with)e
+(a)f(`)p Fm($)p Fn(')f(indicate)75 1723 y(conditional)c(constructs)f
+(\(see)g(Section)g(1.3.2)f([Conditional)h(Init)h(Constructs],)e(page)h
+(8\).)k(Other)c(lines)75 1778 y(denote)h(v)m(ariable)i(settings)e(and)h
+(k)o(ey)f(bindings.)75 1851 y(V)l(ariable)h(Settings)315
+1906 y(Y)l(ou)k(can)h(mo)q(dify)g(the)f(run-time)h(b)q(eha)o(vior)g(of)
+e(Readline)k(b)o(y)d(altering)h(the)f(v)m(alues)h(of)315
+1960 y(v)m(ariables)13 b(in)g(Readline)i(using)d(the)g
+Fm(set)g Fn(command)g(within)h(the)f(init)h(\014le.)20
+b(Here)13 b(is)f(ho)o(w)g(to)315 2015 y(c)o(hange)e(from)g(the)g
+(default)h(Emacs-lik)o(e)g(k)o(ey)f(binding)i(to)e(use)g
+Fm(vi)g Fn(line)i(editing)g(commands:)435 2076 y Fm(set)23
+b(editing-mode)g(vi)315 2140 y Fn(A)15 b(great)g(deal)g(of)g(run-time)h
+(b)q(eha)o(vior)g(is)g(c)o(hangeable)g(with)f(the)h(follo)o(wing)f(v)m
+(ariables.)315 2213 y Fm(bell-style)555 2268 y Fn(Con)o(trols)21
+b(what)h(happ)q(ens)h(when)f(Readline)i(w)o(an)o(ts)d(to)g(ring)i(the)f
+(termi-)555 2323 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p
+Fm(none)p Fn(',)g(Readline)j(nev)o(er)e(rings)g(the)f(b)q(ell.)32
+b(If)19 b(set)g(to)555 2378 y(`)p Fm(visible)p Fn(',)c(Readline)j(uses)
+f(a)f(visible)j(b)q(ell)g(if)e(one)f(is)h(a)o(v)m(ailable.)26
+b(If)16 b(set)h(to)555 2432 y(`)p Fm(audible)p Fn(')g(\(the)h
+(default\),)i(Readline)h(attempts)d(to)g(ring)h(the)g(terminal's)555
+2487 y(b)q(ell.)315 2560 y Fm(comment-begin)555 2615
+y Fn(The)c(string)f(to)g(insert)i(at)d(the)i(b)q(eginning)i(of)d(the)h
+(line)h(when)f(the)g Fm(insert-)555 2670 y(comment)f
+Fn(command)h(is)h(executed.)21 b(The)15 b(default)h(v)m(alue)g(is)g
+Fm("#")p Fn(.)p eop
+%%Page: 5 7
+5 6 bop 75 -58 a Fn(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(5)315 183 y Fm(completion-ignore-case)555 238 y Fn(If)14
+b(set)f(to)g(`)p Fm(on)p Fn(',)g(Readline)j(p)q(erforms)d(\014lename)i
+(matc)o(hing)f(and)g(completion)555 293 y(in)i(a)f(case-insensitiv)o(e)
+i(fashion.)k(The)15 b(default)h(v)m(alue)g(is)g(`)p Fm(off)p
+Fn('.)315 384 y Fm(completion-query-items)555 439 y Fn(The)d(n)o(um)o
+(b)q(er)h(of)e(p)q(ossible)j(completions)g(that)d(determines)i(when)g
+(the)f(user)555 494 y(is)21 b(ask)o(ed)g(whether)g(he)h(w)o(an)o(ts)d
+(to)i(see)g(the)g(list)h(of)e(p)q(ossibilitie)q(s.)40
+b(If)21 b(the)555 549 y(n)o(um)o(b)q(er)14 b(of)f(p)q(ossible)i
+(completions)f(is)g(greater)f(than)g(this)h(v)m(alue,)h(Readline)555
+604 y(will)g(ask)e(the)g(user)h(whether)f(or)g(not)g(he)g(wishes)h(to)f
+(view)h(them;)f(otherwise,)555 658 y(they)i(are)g(simply)i(listed.)k
+(The)15 b(default)h(limit)h(is)e Fm(100)p Fn(.)315 750
+y Fm(convert-meta)555 805 y Fn(If)i(set)g(to)g(`)p Fm(on)p
+Fn(',)f(Readline)k(will)e(con)o(v)o(ert)f(c)o(haracters)f(with)i(the)f
+(eigh)o(th)g(bit)555 860 y(set)f(to)f(an)h(ASCI)q(I)h(k)o(ey)f
+(sequence)h(b)o(y)f(stripping)h(the)f(eigh)o(th)h(bit)f(and)h(pre-)555
+915 y(\014xing)i(an)749 913 y Fh(h)p 761 887 70 2 v 761
+915 a Fg(ESC)p 761 922 V 828 913 a Fh(i)861 915 y Fn(c)o(haracter,)f
+(con)o(v)o(erting)g(them)g(to)g(a)f(meta-pre\014xed)i(k)o(ey)555
+969 y(sequence.)i(The)15 b(default)h(v)m(alue)h(is)e(`)p
+Fm(on)p Fn('.)315 1061 y Fm(disable-completion)555 1116
+y Fn(If)k(set)f(to)f(`)p Fm(On)p Fn(',)h(Readline)j(will)f(inhibit)g(w)
+o(ord)e(completion.)30 b(Completion)555 1171 y(c)o(haracters)12
+b(will)j(b)q(e)f(inserted)g(in)o(to)f(the)g(line)h(as)f(if)h(they)f
+(had)g(b)q(een)h(mapp)q(ed)555 1225 y(to)h Fm(self-insert)p
+Fn(.)j(The)d(default)h(is)g(`)p Fm(off)p Fn('.)315 1317
+y Fm(editing-mode)555 1372 y Fn(The)f Fm(editing-mode)d
+Fn(v)m(ariable)k(con)o(trols)e(whic)o(h)h(default)g(set)f(of)g(k)o(ey)g
+(bind-)555 1427 y(ings)f(is)g(used.)20 b(By)12 b(default,)i(Readline)g
+(starts)e(up)h(in)g(Emacs)f(editing)i(mo)q(de,)555 1481
+y(where)h(the)f(k)o(eystrok)o(es)g(are)g(most)g(similar)i(to)d(Emacs.)
+20 b(This)15 b(v)m(ariable)h(can)555 1536 y(b)q(e)g(set)f(to)f(either)i
+(`)p Fm(emacs)p Fn(')e(or)h(`)p Fm(vi)p Fn('.)315 1628
+y Fm(enable-keypad)555 1683 y Fn(When)d(set)f(to)h(`)p
+Fm(on)p Fn(',)e(Readline)k(will)g(try)d(to)g(enable)i(the)f
+(application)h(k)o(eypad)555 1737 y(when)h(it)f(is)h(called.)21
+b(Some)13 b(systems)g(need)h(this)g(to)f(enable)h(the)g(arro)o(w)e(k)o
+(eys.)555 1792 y(The)j(default)h(is)g(`)p Fm(off)p Fn('.)315
+1884 y Fm(expand-tilde)555 1939 y Fn(If)e(set)g(to)f(`)p
+Fm(on)p Fn(',)f(tilde)k(expansion)e(is)h(p)q(erformed)f(when)g
+(Readline)i(attempts)555 1994 y(w)o(ord)f(completion.)21
+b(The)15 b(default)h(is)f(`)p Fm(off)p Fn('.)315 2085
+y Fm(horizontal-scroll-mode)555 2140 y Fn(This)k(v)m(ariable)g(can)f(b)
+q(e)g(set)g(to)f(either)i(`)p Fm(on)p Fn(')e(or)g(`)p
+Fm(off)p Fn('.)27 b(Setting)19 b(it)f(to)f(`)p Fm(on)p
+Fn(')555 2195 y(means)c(that)f(the)i(text)e(of)h(the)g(lines)i(b)q
+(eing)f(edited)g(will)h(scroll)f(horizon)o(tally)555
+2250 y(on)i(a)f(single)i(screen)g(line)g(when)g(they)f(are)f(longer)h
+(than)g(the)g(width)g(of)g(the)555 2304 y(screen,)e(instead)f(of)g
+(wrapping)g(on)o(to)f(a)h(new)g(screen)h(line.)21 b(By)13
+b(default,)h(this)555 2359 y(v)m(ariable)j(is)e(set)g(to)g(`)p
+Fm(off)p Fn('.)315 2451 y Fm(input-meta)555 2506 y Fn(If)h(set)g(to)f
+(`)p Fm(on)p Fn(',)f(Readline)k(will)g(enable)f(eigh)o(t-bit)f(input)h
+(\(it)f(will)h(not)f(strip)555 2560 y(the)f(eigh)o(th)g(bit)h(from)e
+(the)h(c)o(haracters)f(it)i(reads\),)e(regardless)h(of)f(what)h(the)555
+2615 y(terminal)21 b(claims)g(it)f(can)g(supp)q(ort.)34
+b(The)20 b(default)h(v)m(alue)g(is)g(`)p Fm(off)p Fn('.)33
+b(The)555 2670 y(name)15 b Fm(meta-flag)f Fn(is)i(a)f(synon)o(ym)g(for)
+f(this)i(v)m(ariable.)p eop
+%%Page: 6 8
+6 7 bop 75 -58 a Fn(6)1322 b(GNU)15 b(Readline)i(Library)315
+183 y Fm(isearch-terminators)555 238 y Fn(The)26 b(string)g(of)f(c)o
+(haracters)g(that)g(should)i(terminate)f(an)g(incremen)o(tal)555
+293 y(searc)o(h)e(without)h(subsequen)o(tly)g(executing)h(the)e(c)o
+(haracter)g(as)g(a)g(com-)555 348 y(mand)19 b(\(see)f(Section)i(1.2.5)d
+([Searc)o(hing],)i(page)f(3\).)29 b(If)19 b(this)g(v)m(ariable)h(has)
+555 402 y(not)13 b(b)q(een)h(giv)o(en)g(a)f(v)m(alue,)i(the)e(c)o
+(haracters)1312 400 y Fh(h)p 1324 374 70 2 v 1324 402
+a Fg(ESC)p 1324 410 V 1391 400 a Fh(i)1419 402 y Fn(and)1505
+400 y Fh(h)p 1518 374 56 2 v 1518 402 a Fg(C-J)p 1518
+410 V 1571 400 a Fh(i)1599 402 y Fn(will)i(terminate)555
+457 y(an)g(incremen)o(tal)h(searc)o(h.)315 540 y Fm(keymap)114
+b Fn(Sets)17 b(Readline's)j(idea)e(of)f(the)h(curren)o(t)g(k)o(eymap)f
+(for)g(k)o(ey)g(binding)j(com-)555 595 y(mands.)41 b(Acceptable)23
+b Fm(keymap)f Fn(names)g(are)f Fm(emacs)p Fn(,)i Fm(emacs-standard)p
+Fn(,)555 650 y Fm(emacs-meta)p Fn(,)15 b Fm(emacs-ctlx)p
+Fn(,)h Fm(vi)p Fn(,)g Fm(vi-command)p Fn(,)g(and)h Fm(vi-insert)p
+Fn(.)23 b Fm(vi)16 b Fn(is)555 705 y(equiv)m(alen)o(t)e(to)f
+Fm(vi-command)p Fn(;)e Fm(emacs)h Fn(is)i(equiv)m(alen)o(t)g(to)e
+Fm(emacs-standard)p Fn(.)555 759 y(The)f(default)h(v)m(alue)g(is)f
+Fm(emacs)p Fn(.)18 b(The)11 b(v)m(alue)i(of)d(the)h Fm(editing-mode)f
+Fn(v)m(ariable)555 814 y(also)15 b(a\013ects)g(the)g(default)h(k)o
+(eymap.)315 897 y Fm(mark-directories)555 952 y Fn(If)j(set)g(to)g(`)p
+Fm(on)p Fn(',)f(completed)i(directory)g(names)f(ha)o(v)o(e)f(a)h(slash)
+h(app)q(ended.)555 1007 y(The)15 b(default)h(is)g(`)p
+Fm(on)p Fn('.)315 1090 y Fm(mark-modified-lines)555 1145
+y Fn(This)j(v)m(ariable,)g(when)g(set)e(to)h(`)p Fm(on)p
+Fn(',)f(causes)h(Readline)i(to)d(displa)o(y)i(an)f(as-)555
+1200 y(terisk)f(\(`)p Fm(*)p Fn('\))e(at)i(the)f(start)g(of)h(history)f
+(lines)j(whic)o(h)e(ha)o(v)o(e)g(b)q(een)h(mo)q(di\014ed.)555
+1254 y(This)e(v)m(ariable)g(is)g(`)p Fm(off)p Fn(')e(b)o(y)h(default.)
+315 1337 y Fm(output-meta)555 1392 y Fn(If)j(set)f(to)g(`)p
+Fm(on)p Fn(',)g(Readline)j(will)g(displa)o(y)f(c)o(haracters)d(with)j
+(the)e(eigh)o(th)h(bit)555 1447 y(set)g(directly)i(rather)d(than)h(as)g
+(a)g(meta-pre\014xed)h(escap)q(e)g(sequence.)30 b(The)555
+1502 y(default)16 b(is)f(`)p Fm(off)p Fn('.)315 1585
+y Fm(print-completions-horizont)o(ally)555 1640 y Fn(If)d(set)g(to)f(`)
+p Fm(on)p Fn(',)h(Readline)i(will)f(displa)o(y)h(completions)f(with)f
+(matc)o(hes)f(sorted)555 1694 y(horizon)o(tally)23 b(in)f(alphab)q
+(etical)i(order,)f(rather)e(than)g(do)o(wn)h(the)g(screen.)555
+1749 y(The)15 b(default)h(is)g(`)p Fm(off)p Fn('.)315
+1832 y Fm(show-all-if-ambiguous)555 1887 y Fn(This)g(alters)e(the)i
+(default)f(b)q(eha)o(vior)h(of)e(the)h(completion)h(functions.)21
+b(If)15 b(set)555 1942 y(to)e(`)p Fm(on)p Fn(',)g(w)o(ords)g(whic)o(h)h
+(ha)o(v)o(e)g(more)f(than)g(one)h(p)q(ossible)i(completion)f(cause)555
+1997 y(the)20 b(matc)o(hes)f(to)f(b)q(e)j(listed)f(immediately)h
+(instead)f(of)f(ringing)i(the)e(b)q(ell.)555 2051 y(The)c(default)h(v)m
+(alue)h(is)e(`)p Fm(off)p Fn('.)315 2134 y Fm(visible-stats)555
+2189 y Fn(If)h(set)g(to)f(`)p Fm(on)p Fn(',)g(a)h(c)o(haracter)f
+(denoting)h(a)g(\014le's)h(t)o(yp)q(e)f(is)g(app)q(ended)i(to)d(the)555
+2244 y(\014lename)h(when)g(listing)h(p)q(ossible)g(completions.)j(The)c
+(default)g(is)f(`)p Fm(off)p Fn('.)75 2327 y(Key)h(Bindings)315
+2382 y(The)21 b(syn)o(tax)f(for)h(con)o(trolling)h(k)o(ey)f(bindings)h
+(in)g(the)f(init)h(\014le)g(is)g(simple.)39 b(First)20
+b(y)o(ou)315 2437 y(need)15 b(to)e(\014nd)h(the)g(name)g(of)g(the)f
+(command)h(that)f(y)o(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19
+b(The)14 b(follo)o(wing)315 2491 y(sections)k(con)o(tain)h(tables)f(of)
+f(the)h(command)g(name,)g(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)
+l(,)315 2546 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g
+(command)g(do)q(es.)315 2615 y(Once)j(y)o(ou)g(kno)o(w)e(the)i(name)f
+(of)g(the)h(command,)f(simply)i(place)g(the)e(name)h(of)f(the)g(k)o(ey)
+315 2670 y(y)o(ou)c(wish)h(to)f(bind)i(the)f(command)f(to,)g(a)g
+(colon,)h(and)g(then)f(the)h(name)f(of)h(the)f(command)p
+eop
+%%Page: 7 9
+7 8 bop 75 -58 a Fn(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(7)315 183 y(on)19 b(a)g(line)i(in)f(the)g(init)g(\014le.)34
+b(The)19 b(name)h(of)e(the)i(k)o(ey)f(can)h(b)q(e)g(expressed)g(in)g
+(di\013eren)o(t)315 238 y(w)o(a)o(ys,)14 b(dep)q(ending)j(on)e(whic)o
+(h)h(is)g(most)e(comfortable)h(for)g(y)o(ou.)315 316
+y Ff(k)o(eyname)s Fn(:)k Ff(function-name)g Fn(or)c Ff(macro)555
+371 y(k)o(eyname)i Fn(is)e(the)f(name)h(of)f(a)g(k)o(ey)g(sp)q(elled)j
+(out)d(in)h(English.)21 b(F)l(or)13 b(example:)675 435
+y Fm(Control-u:)22 b(universal-argument)675 487 y(Meta-Rubout:)g
+(backward-kill-word)675 538 y(Control-o:)g(">)i(output")555
+605 y Fn(In)19 b(the)f(ab)q(o)o(v)o(e)g(example,)1023
+603 y Fh(h)p 1035 577 57 2 v 1035 605 a Fg(C-u)p 1035
+613 V 1090 603 a Fh(i)1123 605 y Fn(is)h(b)q(ound)g(to)f(the)g
+(function)h Fm(universal-)555 660 y(argument)p Fn(,)g(and)872
+658 y Fh(h)p 884 632 55 2 v 884 660 a Fg(C-o)p 884 667
+V 937 658 a Fh(i)971 660 y Fn(is)h(b)q(ound)g(to)f(run)h(the)f(macro)g
+(expressed)h(on)g(the)555 715 y(righ)o(t)13 b(hand)h(side)h(\(that)e
+(is,)h(to)f(insert)h(the)g(text)f(`)p Fm(>)h(output)p
+Fn(')f(in)o(to)g(the)h(line\).)315 793 y Fm(")p Ff(k)o(eyseq)q
+Fm(")p Fn(:)20 b Ff(function-name)e Fn(or)d Ff(macro)555
+848 y(k)o(eyseq)i Fn(di\013ers)e(from)g Ff(k)o(eyname)j
+Fn(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g(an)f(en-)555
+902 y(tire)i(k)o(ey)g(sequence)h(can)f(b)q(e)g(sp)q(eci\014ed,)i(b)o(y)
+e(placing)h(the)f(k)o(ey)g(sequence)h(in)555 957 y(double)e(quotes.)j
+(Some)c Fi(gnu)g Fn(Emacs)f(st)o(yle)h(k)o(ey)g(escap)q(es)g(can)g(b)q
+(e)g(used,)g(as)555 1012 y(in)j(the)f(follo)o(wing)g(example,)h(but)f
+(the)g(sp)q(ecial)i(c)o(haracter)d(names)h(are)f(not)555
+1067 y(recognized.)675 1130 y Fm("\\C-u":)23 b(universal-argument)675
+1182 y("\\C-x\\C-r":)f(re-read-init-file)675 1234 y("\\e[11~":)h
+("Function)f(Key)i(1")555 1301 y Fn(In)19 b(the)f(ab)q(o)o(v)o(e)g
+(example,)1023 1299 y Fh(h)p 1035 1273 57 2 v 1035 1301
+a Fg(C-u)p 1035 1308 V 1090 1299 a Fh(i)1123 1301 y Fn(is)h(b)q(ound)g
+(to)f(the)g(function)h Fm(universal-)555 1355 y(argument)9
+b Fn(\(just)h(as)h(it)g(w)o(as)e(in)j(the)e(\014rst)h(example\),)g(`)
+1463 1353 y Fh(h)p 1475 1327 56 2 v 1475 1355 a Fg(C-x)p
+1475 1363 V 1529 1353 a Fh(i)k(h)p 1571 1327 51 2 v 1571
+1355 a Fg(C-r)p 1571 1363 V 1620 1353 a Fh(i)1635 1355
+y Fn(')10 b(is)h(b)q(ound)h(to)555 1410 y(the)k(function)i
+Fm(re-read-init-file)p Fn(,)c(and)i(`)1351 1408 y Fh(h)p
+1363 1382 70 2 v 1363 1410 a Fg(ESC)p 1363 1418 V 1430
+1408 a Fh(i)f(h)p 1472 1382 10 2 v 1472 1410 a Fg([)p
+1472 1419 V 1480 1408 a Fh(i)g(h)p 1522 1382 18 2 v 1522
+1410 a Fg(1)p 1522 1418 V 1538 1408 a Fh(i)g(h)p 1580
+1382 V 1580 1410 a Fg(1)p 1580 1418 V 1595 1408 a Fh(i)g(h)p
+1637 1382 24 2 v 1637 1410 a Fm(~)p 1637 1418 V 1659
+1408 a Fh(i)1674 1410 y Fn(')h(is)h(b)q(ound)555 1465
+y(to)e(insert)g(the)g(text)g(`)p Fm(Function)f(Key)h(1)p
+Fn('.)315 1543 y(The)g(follo)o(wing)h Fi(gnu)e Fn(Emacs)h(st)o(yle)g
+(escap)q(e)h(sequences)g(are)e(a)o(v)m(ailable)j(when)e(sp)q(ecifying)
+315 1598 y(k)o(ey)g(sequences:)315 1676 y Fd(\\C-)168
+b Fn(con)o(trol)15 b(pre\014x)315 1755 y Fd(\\M-)168
+b Fn(meta)15 b(pre\014x)315 1833 y Fd(\\e)192 b Fn(an)15
+b(escap)q(e)h(c)o(haracter)315 1911 y Fd(\\\\)192 b Fn(bac)o(kslash)315
+1989 y Fd(\\)p Fm(")555 1987 y Fh(h)p 567 1961 V 567
+1989 a Fm(")p 567 1997 V 589 1987 a Fh(i)604 1989 y Fn(,)15
+b(a)f(double)j(quotation)e(mark)315 2068 y Fd(\\')555
+2066 y Fh(h)p 567 2040 10 2 v 567 2068 a Fg(')p 567 2075
+V 575 2066 a Fh(i)590 2068 y Fn(,)g(a)f(single)j(quote)e(or)g(ap)q
+(ostrophe)315 2146 y(In)f(addition)h(to)f(the)f Fi(gnu)h
+Fn(Emacs)g(st)o(yle)f(escap)q(e)i(sequences,)g(a)e(second)i(set)e(of)h
+(bac)o(kslash)315 2201 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315
+2279 y Fm(\\a)192 b Fn(alert)15 b(\(b)q(ell\))315 2357
+y Fm(\\b)192 b Fn(bac)o(kspace)315 2435 y Fm(\\d)g Fn(delete)315
+2514 y Fm(\\f)g Fn(form)14 b(feed)315 2592 y Fm(\\n)192
+b Fn(newline)315 2670 y Fm(\\r)g Fn(carriage)15 b(return)p
+eop
+%%Page: 8 10
+8 9 bop 75 -58 a Fn(8)1322 b(GNU)15 b(Readline)i(Library)315
+183 y Fm(\\t)192 b Fn(horizon)o(tal)16 b(tab)315 262
+y Fm(\\v)192 b Fn(v)o(ertical)16 b(tab)315 340 y Fm(\\)p
+Ff(nnn)141 b Fn(the)13 b(c)o(haracter)e(whose)i Fm(ASCII)e
+Fn(co)q(de)j(is)f(the)f(o)q(ctal)h(v)m(alue)h Ff(nnn)f
+Fn(\(one)f(to)g(three)555 395 y(digits\))315 473 y Fm(\\x)p
+Ff(nnn)117 b Fn(the)15 b(c)o(haracter)e(whose)i Fm(ASCII)e
+Fn(co)q(de)j(is)f(the)f(hexadecimal)i(v)m(alue)g Ff(nnn)f
+Fn(\(one)555 528 y(to)g(three)g(digits\))315 607 y(When)k(en)o(tering)g
+(the)g(text)f(of)g(a)h(macro,)f(single)i(or)e(double)i(quotes)f(m)o
+(ust)f(b)q(e)h(used)h(to)315 662 y(indicate)12 b(a)f(macro)f
+(de\014nition.)20 b(Unquoted)11 b(text)f(is)i(assumed)e(to)h(b)q(e)g(a)
+f(function)i(name.)18 b(In)315 716 y(the)11 b(macro)f(b)q(o)q(dy)l(,)i
+(the)f(bac)o(kslash)g(escap)q(es)g(describ)q(ed)i(ab)q(o)o(v)o(e)d(are)
+g(expanded.)20 b(Bac)o(kslash)315 771 y(will)i(quote)d(an)o(y)h(other)g
+(c)o(haracter)f(in)i(the)f(macro)f(text,)h(including)j(`)p
+Fm(")p Fn(')c(and)h(`)p Fm(')p Fn('.)34 b(F)l(or)315
+826 y(example,)14 b(the)f(follo)o(wing)g(binding)i(will)g(mak)o(e)d(`)p
+Fm(C-x)i(\\)p Fn(')f(insert)g(a)g(single)h(`)p Fm(\\)p
+Fn(')e(in)o(to)h(the)g(line:)435 890 y Fm("\\C-x\\\\":)23
+b("\\\\")75 1000 y Fe(1.3.2)30 b(Conditional)20 b(Init)g(Constructs)137
+1096 y Fn(Readline)g(implemen)o(ts)f(a)f(facilit)o(y)g(similar)h(in)g
+(spirit)f(to)f(the)h(conditional)h(compilation)g(features)75
+1150 y(of)e(the)g(C)g(prepro)q(cessor)g(whic)o(h)i(allo)o(ws)e(k)o(ey)g
+(bindings)i(and)f(v)m(ariable)g(settings)f(to)g(b)q(e)h(p)q(erformed)f
+(as)75 1205 y(the)e(result)h(of)f(tests.)k(There)c(are)g(four)g(parser)
+g(directiv)o(es)h(used.)75 1284 y Fm($if)168 b Fn(The)16
+b Fm($if)f Fn(construct)g(allo)o(ws)h(bindings)i(to)d(b)q(e)h(made)g
+(based)g(on)f(the)h(editing)h(mo)q(de,)f(the)315 1338
+y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i(using)e
+(Readline.)34 b(The)19 b(text)g(of)f(the)i(test)315 1393
+y(extends)c(to)e(the)h(end)h(of)f(the)g(line;)i(no)e(c)o(haracters)f
+(are)h(required)i(to)d(isolate)i(it.)315 1472 y Fm(mode)144
+b Fn(The)11 b Fm(mode=)e Fn(form)h(of)g(the)h Fm($if)f
+Fn(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline)555
+1527 y(is)k(in)h Fm(emacs)e Fn(or)g Fm(vi)g Fn(mo)q(de.)20
+b(This)c(ma)o(y)e(b)q(e)h(used)g(in)h(conjunction)g(with)f(the)555
+1581 y(`)p Fm(set)f(keymap)p Fn(')f(command,)g(for)h(instance,)g(to)f
+(set)h(bindings)h(in)g(the)f Fm(emacs-)555 1636 y(standard)d
+Fn(and)i Fm(emacs-ctlx)e Fn(k)o(eymaps)h(only)i(if)f(Readline)h(is)f
+(starting)f(out)555 1691 y(in)k Fm(emacs)f Fn(mo)q(de.)315
+1769 y Fm(term)144 b Fn(The)14 b Fm(term=)e Fn(form)h(ma)o(y)g(b)q(e)h
+(used)g(to)f(include)j(terminal-sp)q(eci\014c)g(k)o(ey)d(bind-)555
+1824 y(ings,)19 b(p)q(erhaps)g(to)e(bind)i(the)g(k)o(ey)e(sequences)j
+(output)e(b)o(y)g(the)g(terminal's)555 1879 y(function)13
+b(k)o(eys.)18 b(The)13 b(w)o(ord)e(on)h(the)g(righ)o(t)g(side)g(of)g
+(the)g(`)p Fm(=)p Fn(')f(is)h(tested)g(against)555 1934
+y(b)q(oth)j(the)g(full)i(name)e(of)f(the)h(terminal)h(and)f(the)g(p)q
+(ortion)h(of)e(the)h(terminal)555 1989 y(name)i(b)q(efore)g(the)g
+(\014rst)f(`)p Fm(-)p Fn('.)24 b(This)17 b(allo)o(ws)g
+Fm(sun)f Fn(to)g(matc)o(h)h(b)q(oth)f Fm(sun)h Fn(and)555
+2043 y Fm(sun-cmd)p Fn(,)d(for)g(instance.)315 2122 y
+Fm(application)555 2177 y Fn(The)d Ff(application)i Fn(construct)e(is)g
+(used)h(to)e(include)j(application-sp)q(eci)q(\014c)h(set-)555
+2231 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e(Readline)j
+(library)e(sets)f(the)g Ff(application)555 2286 y(name)p
+Fn(,)17 b(and)f(y)o(ou)h(can)f(test)g(for)g(it.)24 b(This)18
+b(could)f(b)q(e)g(used)g(to)f(bind)i(k)o(ey)f(se-)555
+2341 y(quences)c(to)e(functions)i(useful)g(for)e(a)h(sp)q(eci\014c)i
+(program.)j(F)l(or)12 b(instance,)h(the)555 2396 y(follo)o(wing)i
+(command)f(adds)g(a)f(k)o(ey)h(sequence)h(that)f(quotes)f(the)i(curren)
+o(t)e(or)555 2451 y(previous)j(w)o(ord)e(in)i(Bash:)675
+2514 y Fm($if)23 b(Bash)675 2566 y(#)h(Quote)f(the)g(current)g(or)h
+(previous)f(word)675 2618 y("\\C-xq":)g("\\eb\\"\\ef\\"")675
+2670 y($endif)p eop
+%%Page: 9 11
+9 10 bop 75 -58 a Fn(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(9)75 183 y Fm($endif)96 b Fn(This)16 b(command,)e(as)h(seen)h(in)g
+(the)f(previous)h(example,)g(terminates)f(an)g Fm($if)f
+Fn(command.)75 263 y Fm($else)120 b Fn(Commands)15 b(in)h(this)f(branc)
+o(h)h(of)e(the)i Fm($if)e Fn(directiv)o(e)j(are)e(executed)h(if)g(the)f
+(test)g(fails.)75 343 y Fm($include)48 b Fn(This)14 b(directiv)o(e)i
+(tak)o(es)d(a)g(single)i(\014lename)g(as)f(an)f(argumen)o(t)g(and)h
+(reads)g(commands)g(and)315 397 y(bindings)j(from)e(that)f(\014le.)435
+462 y Fm($include)23 b(/etc/inputrc)75 574 y Fe(1.3.3)30
+b(Sample)20 b(Init)h(File)137 670 y Fn(Here)16 b(is)g(an)f(example)h
+(of)f(an)h(inputrc)g(\014le.)22 b(This)16 b(illustrates)g(k)o(ey)g
+(binding,)h(v)m(ariable)f(assignmen)o(t,)75 725 y(and)f(conditional)i
+(syn)o(tax.)p eop
+%%Page: 10 12
+10 11 bop 75 -58 a Fn(10)1299 b(GNU)15 b(Readline)i(Library)195
+235 y Fm(#)24 b(This)f(file)g(controls)g(the)h(behaviour)e(of)i(line)f
+(input)g(editing)g(for)195 287 y(#)h(programs)e(that)i(use)f(the)h(Gnu)
+f(Readline)g(library.)47 b(Existing)22 b(programs)195
+339 y(#)i(include)f(FTP,)g(Bash,)g(and)h(Gdb.)195 391
+y(#)195 443 y(#)g(You)f(can)h(re-read)f(the)g(inputrc)g(file)g(with)h
+(C-x)f(C-r.)195 495 y(#)h(Lines)f(beginning)g(with)g('#')g(are)h
+(comments.)195 546 y(#)195 598 y(#)g(First,)f(include)g(any)g
+(systemwide)g(bindings)f(and)i(variable)f(assignments)f(from)195
+650 y(#)i(/etc/Inputrc)195 702 y($include)f(/etc/Inputrc)195
+806 y(#)195 858 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.)
+195 962 y(set)g(editing-mode)g(emacs)195 1065 y($if)g(mode=emacs)195
+1169 y(Meta-Control-h:)46 b(backward-kill-word)21 b(Text)i(after)h(the)
+f(function)g(name)g(is)h(ignored)p 1986 1179 21 38 v
+195 1273 a(#)195 1325 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195
+1377 y(#)195 1429 y(#"\\M-OD":)190 b(backward-char)195
+1480 y(#"\\M-OC":)g(forward-char)195 1532 y(#"\\M-OA":)g
+(previous-history)195 1584 y(#"\\M-OB":)g(next-history)195
+1636 y(#)195 1688 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195
+1740 y(#)195 1792 y("\\M-[D":)190 b(backward-char)195
+1844 y("\\M-[C":)g(forward-char)195 1896 y("\\M-[A":)g
+(previous-history)195 1947 y("\\M-[B":)g(next-history)195
+1999 y(#)195 2051 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode)
+195 2103 y(#)195 2155 y(#"\\M-\\C-OD":)165 b(backward-char)195
+2207 y(#"\\M-\\C-OC":)g(forward-char)195 2259 y(#"\\M-\\C-OA":)g
+(previous-history)195 2311 y(#"\\M-\\C-OB":)g(next-history)195
+2363 y(#)195 2414 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
+195 2466 y(#)195 2518 y(#"\\M-\\C-[D":)165 b(backward-char)195
+2570 y(#"\\M-\\C-[C":)g(forward-char)195 2622 y(#"\\M-\\C-[A":)g
+(previous-history)p eop
+%%Page: 11 13
+11 12 bop 75 -58 a Fn(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(11)195 183 y Fm(#"\\M-\\C-[B":)165 b(next-history)195
+287 y(C-q:)23 b(quoted-insert)195 391 y($endif)195 495
+y(#)h(An)f(old-style)g(binding.)47 b(This)23 b(happens)g(to)g(be)h(the)
+f(default.)195 546 y(TAB:)g(complete)195 650 y(#)h(Macros)f(that)g(are)
+h(convenient)e(for)h(shell)h(interaction)195 702 y($if)f(Bash)195
+754 y(#)h(edit)f(the)g(path)195 806 y("\\C-xp":)g
+("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195 858 y(#)h(prepare)f(to)g
+(type)h(a)f(quoted)g(word)h(--)f(insert)g(open)h(and)f(close)g(double)g
+(quotes)195 910 y(#)h(and)f(move)g(to)h(just)f(after)h(the)f(open)g
+(quote)195 962 y("\\C-x\\"":)g("\\"\\"\\C-b")195 1013
+y(#)h(insert)f(a)g(backslash)g(\(testing)g(backslash)g(escapes)f(in)i
+(sequences)f(and)g(macros\))195 1065 y("\\C-x\\\\":)g("\\\\")195
+1117 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)195
+1169 y("\\C-xq":)g("\\eb\\"\\ef\\"")195 1221 y(#)h(Add)f(a)h(binding)f
+(to)g(refresh)g(the)h(line,)f(which)g(is)h(unbound)195
+1273 y("\\C-xr":)f(redraw-current-line)195 1325 y(#)h(Edit)f(variable)g
+(on)g(current)g(line.)195 1377 y("\\M-\\C-v":)f
+("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)o(")195 1429 y($endif)195
+1532 y(#)i(use)f(a)h(visible)f(bell)g(if)h(one)f(is)h(available)195
+1584 y(set)f(bell-style)g(visible)195 1688 y(#)h(don't)f(strip)g
+(characters)g(to)g(7)h(bits)f(when)h(reading)195 1740
+y(set)f(input-meta)g(on)195 1844 y(#)h(allow)f(iso-latin1)f(characters)
+h(to)g(be)h(inserted)f(rather)g(than)g(converted)g(to)195
+1896 y(#)h(prefix-meta)e(sequences)195 1947 y(set)h(convert-meta)g(off)
+195 2051 y(#)h(display)f(characters)f(with)h(the)h(eighth)f(bit)g(set)h
+(directly)f(rather)g(than)195 2103 y(#)h(as)f(meta-prefixed)f
+(characters)195 2155 y(set)h(output-meta)g(on)195 2259
+y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g(completions)f
+(for)i(a)f(word,)h(ask)f(the)195 2311 y(#)h(user)f(if)h(he)f(wants)g
+(to)h(see)f(all)h(of)f(them)195 2363 y(set)g(completion-query-items)e
+(150)195 2466 y(#)j(For)f(FTP)195 2518 y($if)g(Ftp)195
+2570 y("\\C-xg":)g("get)g(\\M-?")195 2622 y("\\C-xt":)g("put)g(\\M-?")p
+eop
+%%Page: 12 14
+12 13 bop 75 -58 a Fn(12)1299 b(GNU)15 b(Readline)i(Library)195
+183 y Fm("\\M-.":)23 b(yank-last-arg)195 235 y($endif)75
+359 y Fl(1.4)33 b(Bindable)24 b(Readline)f(Commands)137
+453 y Fn(This)16 b(section)g(describ)q(es)h(Readline)g(commands)e(that)
+g(ma)o(y)f(b)q(e)i(b)q(ound)g(to)f(k)o(ey)g(sequences.)137
+519 y(Command)j(names)g(without)h(an)f(accompan)o(ying)g(k)o(ey)g
+(sequence)i(are)e(un)o(b)q(ound)h(b)o(y)g(default.)29
+b(In)75 573 y(the)15 b(follo)o(wing)h(descriptions,)g
+Ff(p)q(oin)o(t)h Fn(refers)e(to)f(the)i(curren)o(t)f(cursor)f(p)q
+(osition,)i(and)g Ff(mark)h Fn(refers)e(to)f(a)75 628
+y(cursor)h(p)q(osition)h(sa)o(v)o(ed)e(b)o(y)h(the)g
+Fm(set-mark)f Fn(command.)20 b(The)15 b(text)g(b)q(et)o(w)o(een)g(the)g
+(p)q(oin)o(t)h(and)f(mark)f(is)75 683 y(referred)h(to)g(as)g(the)g
+Ff(region)p Fn(.)75 790 y Fe(1.4.1)30 b(Commands)21 b(F)-5
+b(or)19 b(Mo)n(ving)75 895 y Fm(beginning-of-line)13
+b(\(C-a\))315 950 y Fn(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g
+(curren)o(t)g(line.)75 1026 y Fm(end-of-line)f(\(C-e\))315
+1081 y Fn(Mo)o(v)o(e)g(to)h(the)g(end)h(of)f(the)g(line.)75
+1157 y Fm(forward-char)f(\(C-f\))315 1212 y Fn(Mo)o(v)o(e)g(forw)o(ard)
+g(a)h(c)o(haracter.)75 1288 y Fm(backward-char)e(\(C-b\))315
+1343 y Fn(Mo)o(v)o(e)h(bac)o(k)h(a)g(c)o(haracter.)75
+1419 y Fm(forward-word)f(\(M-f\))315 1474 y Fn(Mo)o(v)o(e)g(forw)o(ard)
+g(to)g(the)i(end)g(of)e(the)h(next)h(w)o(ord.)j(W)l(ords)c(are)f(comp)q
+(osed)i(of)f(letters)g(and)315 1529 y(digits.)75 1605
+y Fm(backward-word)e(\(M-b\))315 1660 y Fn(Mo)o(v)o(e)j(bac)o(k)g(to)h
+(the)f(start)g(of)g(the)h(curren)o(t)g(or)f(previous)i(w)o(ord.)24
+b(W)l(ords)16 b(are)h(comp)q(osed)315 1715 y(of)e(letters)g(and)g
+(digits.)75 1791 y Fm(clear-screen)f(\(C-l\))315 1846
+y Fn(Clear)f(the)h(screen)g(and)f(redra)o(w)g(the)g(curren)o(t)g(line,)
+i(lea)o(ving)g(the)e(curren)o(t)g(line)i(at)e(the)g(top)315
+1900 y(of)i(the)g(screen.)75 1977 y Fm(redraw-current-line)e(\(\))315
+2031 y Fn(Refresh)j(the)f(curren)o(t)g(line.)22 b(By)15
+b(default,)h(this)f(is)h(un)o(b)q(ound.)75 2138 y Fe(1.4.2)30
+b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f(History)75
+2244 y Fm(accept-line)14 b(\(Newline,)g(Return\))315
+2298 y Fn(Accept)h(the)g(line)i(regardless)e(of)g(where)g(the)g(cursor)
+f(is.)20 b(If)c(this)f(line)h(is)g(non-empt)o(y)l(,)f(add)315
+2353 y(it)f(to)g(the)g(history)g(list.)20 b(If)14 b(this)h(line)g(w)o
+(as)e(a)h(history)g(line,)i(then)e(restore)f(the)h(history)g(line)315
+2408 y(to)h(its)g(original)h(state.)75 2484 y Fm(previous-history)d
+(\(C-p\))315 2539 y Fn(Mo)o(v)o(e)h(`up')h(through)g(the)g(history)g
+(list.)75 2615 y Fm(next-history)f(\(C-n\))315 2670 y
+Fn(Mo)o(v)o(e)g(`do)o(wn')g(through)h(the)h(history)f(list.)p
+eop
+%%Page: 13 15
+13 14 bop 75 -58 a Fn(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(13)75 183 y Fm(beginning-of-history)12 b(\(M-<\))315
+238 y Fn(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)i(in)f(the)f(history)l
+(.)75 314 y Fm(end-of-history)e(\(M->\))315 369 y Fn(Mo)o(v)o(e)h(to)h
+(the)g(end)h(of)f(the)g(input)h(history)l(,)f(i.e.,)g(the)g(line)i
+(curren)o(tly)f(b)q(eing)g(en)o(tered.)75 445 y Fm
+(reverse-search-history)c(\(C-r\))315 500 y Fn(Searc)o(h)k(bac)o(kw)o
+(ard)e(starting)h(at)g(the)h(curren)o(t)f(line)j(and)d(mo)o(ving)h
+(`up')f(through)g(the)h(his-)315 555 y(tory)e(as)h(necessary)l(.)20
+b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 631
+y Fm(forward-search-history)c(\(C-s\))315 686 y Fn(Searc)o(h)j(forw)o
+(ard)e(starting)h(at)h(the)f(curren)o(t)h(line)h(and)f(mo)o(ving)g(`do)
+o(wn')f(through)g(the)h(the)315 741 y(history)g(as)g(necessary)l(.)20
+b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 817
+y Fm(non-incremental-reverse-se)o(arch-hi)o(story)c(\(M-p\))315
+872 y Fn(Searc)o(h)k(bac)o(kw)o(ard)e(starting)h(at)g(the)h(curren)o(t)
+f(line)j(and)d(mo)o(ving)h(`up')f(through)g(the)h(his-)315
+926 y(tory)h(as)h(necessary)g(using)h(a)e(non-incremen)o(tal)j(searc)o
+(h)e(for)f(a)h(string)g(supplied)i(b)o(y)e(the)315 981
+y(user.)75 1057 y Fm(non-incremental-forward-se)o(arch-hi)o(story)12
+b(\(M-n\))315 1112 y Fn(Searc)o(h)j(forw)o(ard)e(starting)h(at)h(the)f
+(curren)o(t)h(line)h(and)f(mo)o(ving)g(`do)o(wn')f(through)g(the)h(the)
+315 1167 y(history)e(as)g(necessary)h(using)g(a)f(non-incremen)o(tal)i
+(searc)o(h)e(for)g(a)g(string)g(supplied)j(b)o(y)d(the)315
+1222 y(user.)75 1298 y Fm(history-search-forward)f(\(\))315
+1353 y Fn(Searc)o(h)21 b(forw)o(ard)e(through)i(the)f(history)h(for)f
+(the)h(string)g(of)f(c)o(haracters)g(b)q(et)o(w)o(een)h(the)315
+1407 y(start)16 b(of)h(the)h(curren)o(t)g(line)h(and)e(the)h(p)q(oin)o
+(t.)28 b(This)18 b(is)g(a)f(non-incremen)o(tal)i(searc)o(h.)27
+b(By)315 1462 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
+1538 y Fm(history-search-backward)c(\(\))315 1593 y Fn(Searc)o(h)18
+b(bac)o(kw)o(ard)e(through)h(the)h(history)f(for)g(the)g(string)h(of)f
+(c)o(haracters)f(b)q(et)o(w)o(een)i(the)315 1648 y(start)e(of)h(the)h
+(curren)o(t)g(line)h(and)e(the)h(p)q(oin)o(t.)28 b(This)18
+b(is)g(a)f(non-incremen)o(tal)i(searc)o(h.)27 b(By)315
+1703 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
+1779 y Fm(yank-nth-arg)e(\(M-C-y\))315 1834 y Fn(Insert)f(the)g
+(\014rst)g(argumen)o(t)f(to)g(the)i(previous)f(command)g(\(usually)h
+(the)f(second)h(w)o(ord)e(on)315 1889 y(the)i(previous)i(line\).)21
+b(With)14 b(an)h(argumen)o(t)e Ff(n)p Fn(,)i(insert)f(the)h
+Ff(n)p Fn(th)f(w)o(ord)g(from)g(the)g(previous)315 1943
+y(command)f(\(the)h(w)o(ords)f(in)h(the)g(previous)g(command)g(b)q
+(egin)h(with)f(w)o(ord)e(0\).)19 b(A)14 b(negativ)o(e)315
+1998 y(argumen)o(t)g(inserts)i(the)f Ff(n)p Fn(th)h(w)o(ord)e(from)h
+(the)g(end)h(of)e(the)i(previous)g(command.)75 2074 y
+Fm(yank-last-arg)d(\(M-.,)i(M-_\))315 2129 y Fn(Insert)j(last)f
+(argumen)o(t)g(to)g(the)g(previous)i(command)e(\(the)g(last)h(w)o(ord)f
+(of)g(the)g(previous)315 2184 y(history)e(en)o(try\).)20
+b(With)15 b(an)g(argumen)o(t,)g(b)q(eha)o(v)o(e)g(exactly)h(lik)o(e)g
+Fm(yank-nth-arg)p Fn(.)j(Succes-)315 2239 y(siv)o(e)f(calls)g(to)f
+Fm(yank-last-arg)e Fn(mo)o(v)o(e)i(bac)o(k)g(through)g(the)g(history)g
+(list,)i(inserting)f(the)315 2294 y(last)d(argumen)o(t)g(of)f(eac)o(h)i
+(line)g(in)g(turn.)75 2400 y Fe(1.4.3)30 b(Commands)21
+b(F)-5 b(or)19 b(Changing)i(T)-5 b(ext)75 2506 y Fm(delete-char)14
+b(\(C-d\))315 2560 y Fn(Delete)j(the)f(c)o(haracter)g(under)h(the)f
+(cursor.)23 b(If)16 b(the)h(cursor)f(is)h(at)e(the)i(b)q(eginning)h(of)
+e(the)315 2615 y(line,)j(there)e(are)g(no)g(c)o(haracters)f(in)i(the)g
+(line,)h(and)e(the)g(last)g(c)o(haracter)g(t)o(yp)q(ed)g(w)o(as)f(not)
+315 2670 y(b)q(ound)g(to)f Fm(delete-char)p Fn(,)e(then)j(return)f
+Fm(EOF)p Fn(.)p eop
+%%Page: 14 16
+14 15 bop 75 -58 a Fn(14)1299 b(GNU)15 b(Readline)i(Library)75
+183 y Fm(backward-delete-char)12 b(\(Rubout\))315 238
+y Fn(Delete)k(the)f(c)o(haracter)f(b)q(ehind)j(the)f(cursor.)j(A)c(n)o
+(umeric)h(argumen)o(t)e(means)i(to)e(kill)j(the)315 293
+y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
+378 y Fm(forward-backward-delete-ch)o(ar)12 b(\(\))315
+432 y Fn(Delete)20 b(the)f(c)o(haracter)f(under)i(the)f(cursor,)h
+(unless)g(the)f(cursor)g(is)h(at)e(the)h(end)h(of)f(the)315
+487 y(line,)e(in)g(whic)o(h)g(case)e(the)h(c)o(haracter)g(b)q(ehind)h
+(the)f(cursor)g(is)g(deleted.)23 b(By)16 b(default,)h(this)315
+542 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 627
+y Fm(quoted-insert)e(\(C-q,)i(C-v\))315 682 y Fn(Add)j(the)f(next)g(c)o
+(haracter)g(t)o(yp)q(ed)g(to)f(the)i(line)g(v)o(erbatim.)26
+b(This)18 b(is)f(ho)o(w)g(to)g(insert)g(k)o(ey)315 736
+y(sequences)f(lik)o(e)605 734 y Fh(h)p 617 708 56 2 v
+617 736 a Fg(C-q)p 617 744 V 671 734 a Fh(i)685 736 y
+Fn(,)f(for)g(example.)75 821 y Fm(tab-insert)f(\(M-TAB\))315
+876 y Fn(Insert)h(a)g(tab)g(c)o(haracter.)75 961 y Fm(self-insert)f
+(\(a,)g(b,)h(A,)g(1,)g(!,)g(...\))315 1016 y Fn(Insert)g(y)o(ourself.)
+75 1100 y Fm(transpose-chars)e(\(C-t\))315 1155 y Fn(Drag)i(the)h(c)o
+(haracter)f(b)q(efore)h(the)h(cursor)e(forw)o(ard)g(o)o(v)o(er)g(the)h
+(c)o(haracter)f(at)h(the)g(cursor,)315 1210 y(mo)o(ving)i(the)f(cursor)
+h(forw)o(ard)e(as)i(w)o(ell.)28 b(If)18 b(the)g(insertion)h(p)q(oin)o
+(t)f(is)g(at)f(the)h(end)h(of)e(the)315 1265 y(line,)c(then)e(this)h
+(transp)q(oses)e(the)h(last)g(t)o(w)o(o)f(c)o(haracters)g(of)h(the)g
+(line.)20 b(Negativ)o(e)11 b(argumen)o(ts)315 1320 y(ha)o(v)o(e)k(no)g
+(e\013ect.)75 1404 y Fm(transpose-words)e(\(M-t\))315
+1459 y Fn(Drag)i(the)h(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)h(past)f(the)g
+(w)o(ord)f(after)h(p)q(oin)o(t,)g(mo)o(ving)g(p)q(oin)o(t)h(past)f
+(that)315 1514 y(w)o(ord)f(as)f(w)o(ell.)75 1599 y Fm(upcase-word)g
+(\(M-u\))315 1654 y Fn(Upp)q(ercase)j(the)f(curren)o(t)g(\(or)f(follo)o
+(wing\))h(w)o(ord.)22 b(With)16 b(a)g(negativ)o(e)g(argumen)o(t,)f(upp)
+q(er-)315 1708 y(case)g(the)g(previous)h(w)o(ord,)f(but)g(do)g(not)g
+(mo)o(v)o(e)f(the)i(cursor.)75 1793 y Fm(downcase-word)d(\(M-l\))315
+1848 y Fn(Lo)o(w)o(ercase)d(the)h(curren)o(t)g(\(or)f(follo)o(wing\))h
+(w)o(ord.)17 b(With)11 b(a)g(negativ)o(e)g(argumen)o(t,)f(lo)o(w)o
+(ercase)315 1903 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o
+(v)o(e)f(the)h(cursor.)75 1988 y Fm(capitalize-word)e(\(M-c\))315
+2042 y Fn(Capitalize)f(the)f(curren)o(t)f(\(or)g(follo)o(wing\))h(w)o
+(ord.)18 b(With)11 b(a)f(negativ)o(e)h(argumen)o(t,)f(capitalize)315
+2097 y(the)15 b(previous)h(w)o(ord,)e(but)i(do)f(not)g(mo)o(v)o(e)f
+(the)h(cursor.)75 2220 y Fe(1.4.4)30 b(Killing)20 b(And)h(Y)-5
+b(anking)75 2336 y Fm(kill-line)14 b(\(C-k\))315 2391
+y Fn(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
+(the)g(line.)75 2476 y Fm(backward-kill-line)e(\(C-x)h(Rubout\))315
+2530 y Fn(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
+(line.)75 2615 y Fm(unix-line-discard)e(\(C-u\))315 2670
+y Fn(Kill)k(bac)o(kw)o(ard)e(from)f(the)i(cursor)e(to)h(the)g(b)q
+(eginning)j(of)c(the)i(curren)o(t)f(line.)p eop
+%%Page: 15 17
+15 16 bop 75 -58 a Fn(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(15)75 183 y Fm(kill-whole-line)13 b(\(\))315 238 y
+Fn(Kill)20 b(all)f(c)o(haracters)e(on)h(the)g(curren)o(t)f(line,)j(no)e
+(matter)f(p)q(oin)o(t)h(is.)28 b(By)18 b(default,)h(this)f(is)315
+293 y(un)o(b)q(ound.)75 374 y Fm(kill-word)c(\(M-d\))315
+429 y Fn(Kill)j(from)d(p)q(oin)o(t)h(to)f(the)h(end)g(of)f(the)h
+(curren)o(t)g(w)o(ord,)e(or)i(if)g(b)q(et)o(w)o(een)g(w)o(ords,)e(to)i
+(the)f(end)315 483 y(of)h(the)g(next)g(w)o(ord.)20 b(W)l(ord)14
+b(b)q(oundaries)j(are)e(the)g(same)g(as)g Fm(forward-word)p
+Fn(.)75 564 y Fm(backward-kill-word)e(\(M-DEL\))315 619
+y Fn(Kill)k(the)d(w)o(ord)g(b)q(ehind)i(p)q(oin)o(t.)21
+b(W)l(ord)14 b(b)q(oundaries)h(are)f(the)h(same)f(as)g
+Fm(backward-word)p Fn(.)75 700 y Fm(unix-word-rubout)f(\(C-w\))315
+755 y Fn(Kill)18 b(the)e(w)o(ord)f(b)q(ehind)j(p)q(oin)o(t,)e(using)h
+(white)f(space)g(as)g(a)f(w)o(ord)g(b)q(oundary)l(.)23
+b(The)16 b(killed)315 810 y(text)f(is)g(sa)o(v)o(ed)g(on)g(the)h
+(kill-ring.)75 891 y Fm(delete-horizontal-space)c(\(\))315
+946 y Fn(Delete)k(all)g(spaces)f(and)h(tabs)e(around)i(p)q(oin)o(t.)k
+(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75 1027
+y Fm(kill-region)e(\(\))315 1082 y Fn(Kill)j(the)f(text)e(in)i(the)g
+(curren)o(t)f(region.)20 b(By)15 b(default,)h(this)f(command)g(is)h(un)
+o(b)q(ound.)75 1163 y Fm(copy-region-as-kill)d(\(\))315
+1217 y Fn(Cop)o(y)j(the)i(text)e(in)i(the)f(region)g(to)g(the)g(kill)h
+(bu\013er,)f(so)g(it)g(can)g(b)q(e)h(y)o(ank)o(ed)f(righ)o(t)g(a)o(w)o
+(a)o(y)l(.)315 1272 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q
+(ound.)75 1353 y Fm(copy-backward-word)d(\(\))315 1408
+y Fn(Cop)o(y)19 b(the)g(w)o(ord)g(b)q(efore)g(p)q(oin)o(t)h(to)e(the)i
+(kill)h(bu\013er.)32 b(The)19 b(w)o(ord)g(b)q(oundaries)h(are)f(the)315
+1463 y(same)c(as)g Fm(backward-word)p Fn(.)j(By)d(default,)g(this)h
+(command)f(is)h(un)o(b)q(ound.)75 1544 y Fm(copy-forward-word)d(\(\))
+315 1599 y Fn(Cop)o(y)i(the)h(w)o(ord)e(follo)o(wing)j(p)q(oin)o(t)f
+(to)f(the)g(kill)j(bu\013er.)i(The)c(w)o(ord)f(b)q(oundaries)i(are)e
+(the)315 1653 y(same)g(as)g Fm(forward-word)p Fn(.)j(By)d(default,)h
+(this)f(command)g(is)h(un)o(b)q(ound.)75 1734 y Fm(yank)f(\(C-y\))315
+1789 y Fn(Y)l(ank)g(the)h(top)f(of)f(the)i(kill)h(ring)e(in)o(to)g(the)
+h(bu\013er)f(at)f(the)i(curren)o(t)f(cursor)g(p)q(osition.)75
+1870 y Fm(yank-pop)f(\(M-y\))315 1925 y Fn(Rotate)j(the)g(kill-ring,)j
+(and)d(y)o(ank)g(the)h(new)f(top.)26 b(Y)l(ou)17 b(can)h(only)g(do)f
+(this)h(if)f(the)h(prior)315 1980 y(command)d(is)h(y)o(ank)f(or)f(y)o
+(ank-p)q(op.)75 2095 y Fe(1.4.5)30 b(Sp)r(ecifying)20
+b(Numeric)h(Argumen)n(ts)75 2205 y Fm(digit-argument)13
+b(\(M-0,)i(M-1,)f(...)h(M--\))315 2260 y Fn(Add)f(this)g(digit)g(to)f
+(the)h(argumen)o(t)e(already)i(accum)o(ulating,)g(or)f(start)f(a)h(new)
+h(argumen)o(t.)315 2313 y Fh(h)p 327 2287 50 2 v 327
+2315 a Fg(M{)p 327 2323 V 375 2313 a Fh(i)405 2315 y
+Fn(starts)g(a)h(negativ)o(e)g(argumen)o(t.)75 2396 y
+Fm(universal-argument)e(\(\))315 2451 y Fn(This)g(is)h(another)e(w)o(a)
+o(y)g(to)g(sp)q(ecify)i(an)f(argumen)o(t.)18 b(If)13
+b(this)g(command)g(is)g(follo)o(w)o(ed)g(b)o(y)g(one)315
+2506 y(or)h(more)h(digits,)g(optionally)h(with)f(a)g(leading)h(min)o
+(us)f(sign,)g(those)g(digits)g(de\014ne)h(the)f(ar-)315
+2560 y(gumen)o(t.)k(If)c(the)g(command)f(is)h(follo)o(w)o(ed)g(b)o(y)g
+(digits,)g(executing)g Fm(universal-argument)315 2615
+y Fn(again)h(ends)g(the)g(n)o(umeric)h(argumen)o(t,)e(but)h(is)h
+(otherwise)f(ignored.)22 b(As)16 b(a)g(sp)q(ecial)h(case,)315
+2670 y(if)g(this)g(command)f(is)h(immediately)h(follo)o(w)o(ed)f(b)o(y)
+f(a)g(c)o(haracter)g(that)g(is)h(neither)g(a)f(digit)p
+eop
+%%Page: 16 18
+16 17 bop 75 -58 a Fn(16)1299 b(GNU)15 b(Readline)i(Library)315
+183 y(or)c(min)o(us)i(sign,)f(the)g(argumen)o(t)g(coun)o(t)f(for)h(the)
+g(next)g(command)g(is)g(m)o(ultiplied)j(b)o(y)d(four.)315
+238 y(The)19 b(argumen)o(t)f(coun)o(t)g(is)h(initially)j(one,)d(so)f
+(executing)i(this)f(function)h(the)e(\014rst)h(time)315
+293 y(mak)o(es)c(the)h(argumen)o(t)f(coun)o(t)h(four,)f(a)h(second)g
+(time)g(mak)o(es)g(the)g(argumen)o(t)f(coun)o(t)g(six-)315
+348 y(teen,)g(and)g(so)g(on.)20 b(By)15 b(default,)h(this)f(is)h(not)f
+(b)q(ound)h(to)f(a)g(k)o(ey)l(.)75 472 y Fe(1.4.6)30
+b(Letting)20 b(Readline)g(T)n(yp)r(e)h(F)-5 b(or)19 b(Y)-5
+b(ou)75 590 y Fm(complete)14 b(\(TAB\))315 644 y Fn(A)o(ttempt)j(to)g
+(do)h(completion)g(on)g(the)g(text)f(b)q(efore)h(the)g(cursor.)27
+b(This)18 b(is)g(application-)315 699 y(sp)q(eci\014c.)k(Generally)l(,)
+15 b(if)g(y)o(ou)g(are)f(t)o(yping)h(a)g(\014lename)g(argumen)o(t,)f(y)
+o(ou)g(can)h(do)g(\014lename)315 754 y(completion;)h(if)g(y)o(ou)f(are)
+g(t)o(yping)h(a)f(command,)f(y)o(ou)h(can)h(do)f(command)g(completion;)
+h(if)315 809 y(y)o(ou)i(are)g(t)o(yping)g(in)h(a)f(sym)o(b)q(ol)h(to)e
+(GDB,)h(y)o(ou)g(can)g(do)g(sym)o(b)q(ol)h(name)f(completion;)i(if)315
+864 y(y)o(ou)13 b(are)g(t)o(yping)g(in)h(a)f(v)m(ariable)h(to)f(Bash,)g
+(y)o(ou)g(can)g(do)g(v)m(ariable)h(name)f(completion,)i(and)315
+918 y(so)g(on.)75 1004 y Fm(possible-completions)d(\(M-?\))315
+1059 y Fn(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b)
+q(efore)h(the)f(cursor.)75 1145 y Fm(insert-completions)e(\(M-*\))315
+1199 y Fn(Insert)j(all)g(completions)g(of)f(the)g(text)g(b)q(efore)h(p)
+q(oin)o(t)f(that)g(w)o(ould)h(ha)o(v)o(e)f(b)q(een)h(generated)315
+1254 y(b)o(y)f Fm(possible-completions)p Fn(.)75 1340
+y Fm(menu-complete)e(\(\))315 1395 y Fn(Similar)g(to)f
+Fm(complete)p Fn(,)f(but)h(replaces)h(the)f(w)o(ord)f(to)g(b)q(e)i
+(completed)f(with)h(a)e(single)j(matc)o(h)315 1450 y(from)k(the)h(list)
+h(of)e(p)q(ossible)j(completions.)32 b(Rep)q(eated)20
+b(execution)g(of)f Fm(menu-complete)315 1504 y Fn(steps)h(through)g
+(the)g(list)h(of)f(p)q(ossible)i(completions,)g(inserting)f(eac)o(h)f
+(matc)o(h)f(in)i(turn.)315 1559 y(A)o(t)c(the)g(end)h(of)f(the)h(list)g
+(of)f(completions,)i(the)e(b)q(ell)j(is)e(rung)f(and)h(the)f(original)i
+(text)d(is)315 1614 y(restored.)26 b(An)17 b(argumen)o(t)g(of)g
+Ff(n)g Fn(mo)o(v)o(es)g Ff(n)g Fn(p)q(ositions)h(forw)o(ard)e(in)i(the)
+g(list)g(of)f(matc)o(hes;)315 1669 y(a)j(negativ)o(e)g(argumen)o(t)f
+(ma)o(y)g(b)q(e)i(used)f(to)f(mo)o(v)o(e)h(bac)o(kw)o(ard)f(through)g
+(the)h(list.)35 b(This)315 1724 y(command)15 b(is)h(in)o(tended)g(to)f
+(b)q(e)h(b)q(ound)g(to)f Fm(TAB)p Fn(,)f(but)h(is)h(un)o(b)q(ound)g(b)o
+(y)f(default.)75 1809 y Fm(delete-char-or-list)e(\(\))315
+1864 y Fn(Deletes)h(the)f(c)o(haracter)g(under)h(the)g(cursor)f(if)h
+(not)f(at)g(the)g(b)q(eginning)j(or)d(end)h(of)f(the)g(line)315
+1919 y(\(lik)o(e)i Fm(delete-char)p Fn(\).)j(If)d(at)f(the)h(end)g(of)f
+(the)g(line,)i(b)q(eha)o(v)o(es)f(iden)o(tically)i(to)d
+Fm(possible-)315 1974 y(completions)p Fn(.)k(This)e(command)f(is)h(un)o
+(b)q(ound)g(b)o(y)f(default.)75 2098 y Fe(1.4.7)30 b(Keyb)r(oard)20
+b(Macros)75 2216 y Fm(start-kbd-macro)13 b(\(C-x)i(\(\))315
+2270 y Fn(Begin)h(sa)o(ving)f(the)h(c)o(haracters)e(t)o(yp)q(ed)i(in)o
+(to)f(the)g(curren)o(t)g(k)o(eyb)q(oard)g(macro.)75 2356
+y Fm(end-kbd-macro)e(\(C-x)i(\)\))315 2411 y Fn(Stop)f(sa)o(ving)f(the)
+h(c)o(haracters)f(t)o(yp)q(ed)h(in)o(to)f(the)h(curren)o(t)g(k)o(eyb)q
+(oard)f(macro)g(and)h(sa)o(v)o(e)f(the)315 2466 y(de\014nition.)75
+2552 y Fm(call-last-kbd-macro)g(\(C-x)h(e\))315 2606
+y Fn(Re-execute)19 b(the)f(last)f(k)o(eyb)q(oard)h(macro)f(de\014ned,)i
+(b)o(y)e(making)h(the)g(c)o(haracters)e(in)j(the)315
+2661 y(macro)14 b(app)q(ear)i(as)f(if)g(t)o(yp)q(ed)h(at)e(the)i(k)o
+(eyb)q(oard.)p eop
+%%Page: 17 19
+17 18 bop 75 -58 a Fn(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(17)75 183 y Fe(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands)75
+298 y Fm(re-read-init-file)13 b(\(C-x)h(C-r\))315 353
+y Fn(Read)e(in)f(the)g(con)o(ten)o(ts)g(of)f(the)h Ff(inputrc)k
+Fn(\014le,)d(and)g(incorp)q(orate)f(an)o(y)f(bindings)j(or)e(v)m
+(ariable)315 407 y(assignmen)o(ts)k(found)h(there.)75
+491 y Fm(abort)e(\(C-g\))315 546 y Fn(Ab)q(ort)f(the)g(curren)o(t)h
+(editing)g(command)f(and)h(ring)f(the)h(terminal's)f(b)q(ell)i(\(sub)s
+(ject)e(to)g(the)315 600 y(setting)i(of)g Fm(bell-style)p
+Fn(\).)75 684 y Fm(do-uppercase-version)d(\(M-a,)j(M-b,)f(M-)p
+Ff(x)p Fm(,)h Fc(:)8 b(:)g(:)n Fm(\))315 739 y Fn(If)14
+b(the)g(meta\014ed)g(c)o(haracter)f Ff(x)k Fn(is)d(lo)o(w)o(ercase,)g
+(run)g(the)g(command)f(that)h(is)g(b)q(ound)h(to)e(the)315
+794 y(corresp)q(onding)j(upp)q(ercase)g(c)o(haracter.)75
+877 y Fm(prefix-meta)e(\(ESC\))315 932 y Fn(Mak)o(e)j(the)i(next)f(c)o
+(haracter)f(t)o(yp)q(ed)i(b)q(e)g(meta\014ed.)28 b(This)19
+b(is)g(for)e(k)o(eyb)q(oards)h(without)g(a)315 987 y(meta)d(k)o(ey)l(.)
+20 b(T)o(yping)15 b(`)p Fm(ESC)g(f)p Fn(')f(is)i(equiv)m(alen)o(t)h(to)
+d(t)o(yping)i(`)p Fm(M-f)p Fn('.)75 1070 y Fm(undo)f(\(C-_,)f(C-x)h
+(C-u\))315 1125 y Fn(Incremen)o(tal)h(undo,)f(separately)h(remem)o(b)q
+(ered)g(for)e(eac)o(h)h(line.)75 1209 y Fm(revert-line)f(\(M-r\))315
+1263 y Fn(Undo)j(all)g(c)o(hanges)g(made)f(to)g(this)h(line.)26
+b(This)17 b(is)g(lik)o(e)h(executing)f(the)g Fm(undo)f
+Fn(command)315 1318 y(enough)g(times)f(to)g(get)f(bac)o(k)h(to)g(the)g
+(b)q(eginning.)75 1402 y Fm(tilde-expand)f(\(M-~\))315
+1456 y Fn(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o
+(ord.)75 1540 y Fm(set-mark)f(\(C-@\))315 1595 y Fn(Set)g(the)f(mark)g
+(to)g(the)h(curren)o(t)g(p)q(oin)o(t.)19 b(If)14 b(a)g(n)o(umeric)g
+(argumen)o(t)f(is)h(supplied,)i(the)e(mark)315 1650 y(is)i(set)f(to)f
+(that)h(p)q(osition.)75 1733 y Fm(exchange-point-and-mark)d(\(C-x)j
+(C-x\))315 1788 y Fn(Sw)o(ap)g(the)h(p)q(oin)o(t)g(with)g(the)g(mark.)k
+(The)c(curren)o(t)f(cursor)h(p)q(osition)g(is)g(set)g(to)f(the)g(sa)o
+(v)o(ed)315 1843 y(p)q(osition,)h(and)f(the)h(old)f(cursor)g(p)q
+(osition)h(is)g(sa)o(v)o(ed)f(as)g(the)g(mark.)75 1926
+y Fm(character-search)e(\(C-]\))315 1981 y Fn(A)f(c)o(haracter)g(is)h
+(read)g(and)f(p)q(oin)o(t)h(is)g(mo)o(v)o(ed)f(to)g(the)g(next)h(o)q
+(ccurrence)g(of)f(that)g(c)o(haracter.)315 2036 y(A)j(negativ)o(e)h
+(coun)o(t)f(searc)o(hes)g(for)f(previous)i(o)q(ccurrences.)75
+2119 y Fm(character-search-backward)c(\(M-C-]\))315 2174
+y Fn(A)22 b(c)o(haracter)g(is)h(read)f(and)h(p)q(oin)o(t)g(is)g(mo)o(v)
+o(ed)f(to)g(the)g(previous)h(o)q(ccurrence)h(of)e(that)315
+2229 y(c)o(haracter.)d(A)c(negativ)o(e)h(coun)o(t)f(searc)o(hes)g(for)f
+(subsequen)o(t)i(o)q(ccurrences.)75 2312 y Fm(insert-comment)d(\(M-#\))
+315 2367 y Fn(The)19 b(v)m(alue)i(of)e(the)g Fm(comment-begin)e
+Fn(v)m(ariable)k(is)f(inserted)g(at)e(the)i(b)q(eginning)h(of)e(the)315
+2422 y(curren)o(t)c(line,)i(and)e(the)g(line)i(is)f(accepted)g(as)e(if)
+i(a)f(newline)i(had)f(b)q(een)g(t)o(yp)q(ed.)75 2506
+y Fm(dump-functions)d(\(\))315 2560 y Fn(Prin)o(t)g(all)h(of)f(the)g
+(functions)h(and)g(their)g(k)o(ey)f(bindings)i(to)d(the)i(Readline)h
+(output)e(stream.)315 2615 y(If)j(a)g(n)o(umeric)g(argumen)o(t)f(is)i
+(supplied,)h(the)e(output)f(is)i(formatted)d(in)j(suc)o(h)f(a)g(w)o(a)o
+(y)f(that)315 2670 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g
+Ff(inputrc)k Fn(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o
+(y)f(default.)p eop
+%%Page: 18 20
+18 19 bop 75 -58 a Fn(18)1299 b(GNU)15 b(Readline)i(Library)75
+183 y Fm(dump-variables)c(\(\))315 238 y Fn(Prin)o(t)e(all)g(of)f(the)h
+(settable)g(v)m(ariables)h(and)f(their)g(v)m(alues)h(to)e(the)h
+(Readline)i(output)d(stream.)315 293 y(If)16 b(a)g(n)o(umeric)g
+(argumen)o(t)f(is)i(supplied,)h(the)e(output)f(is)i(formatted)d(in)j
+(suc)o(h)f(a)g(w)o(a)o(y)f(that)315 348 y(it)g(can)h(b)q(e)g(made)f
+(part)f(of)h(an)g Ff(inputrc)k Fn(\014le.)i(This)16 b(command)f(is)h
+(un)o(b)q(ound)g(b)o(y)f(default.)75 427 y Fm(dump-macros)f(\(\))315
+482 y Fn(Prin)o(t)j(all)h(of)e(the)h(Readline)i(k)o(ey)e(sequences)h(b)
+q(ound)g(to)e(macros)g(and)h(the)g(strings)g(they)315
+537 y(ouput.)30 b(If)19 b(a)f(n)o(umeric)i(argumen)o(t)d(is)i
+(supplied,)j(the)c(output)h(is)g(formatted)e(in)i(suc)o(h)g(a)315
+592 y(w)o(a)o(y)14 b(that)g(it)i(can)f(b)q(e)g(made)g(part)g(of)f(an)h
+Ff(inputrc)k Fn(\014le.)i(This)15 b(command)g(is)h(un)o(b)q(ound)g(b)o
+(y)315 647 y(default.)75 775 y Fl(1.5)33 b(Readline)23
+b(vi)h(Mo)r(de)137 871 y Fn(While)13 b(the)f(Readline)j(library)d(do)q
+(es)g(not)g(ha)o(v)o(e)f(a)h(full)h(set)f(of)f Fm(vi)g
+Fn(editing)j(functions,)f(it)f(do)q(es)g(con)o(tain)75
+926 y(enough)17 b(to)g(allo)o(w)g(simple)h(editing)h(of)d(the)i(line.)
+27 b(The)17 b(Readline)i Fm(vi)e Fn(mo)q(de)g(b)q(eha)o(v)o(es)g(as)g
+(sp)q(eci\014ed)i(in)75 981 y(the)c Fi(POSIX)h Fn(1003.2)d(standard.)
+137 1048 y(In)i(order)g(to)f(switc)o(h)g(in)o(teractiv)o(ely)i(b)q(et)o
+(w)o(een)f Fm(emacs)e Fn(and)i Fm(vi)f Fn(editing)i(mo)q(des,)f(use)f
+(the)h(command)75 1103 y(M-C-j)g(\(toggle-editing-mo)q(de\).)21
+b(The)15 b(Readline)j(default)d(is)h Fm(emacs)f Fn(mo)q(de.)137
+1170 y(When)h(y)o(ou)e(en)o(ter)h(a)g(line)i(in)e Fm(vi)g
+Fn(mo)q(de,)g(y)o(ou)g(are)f(already)i(placed)g(in)g(`insertion')f(mo)q
+(de,)g(as)g(if)g(y)o(ou)75 1225 y(had)e(t)o(yp)q(ed)h(an)f(`)p
+Fm(i)p Fn('.)18 b(Pressing)608 1223 y Fh(h)p 620 1197
+70 2 v 620 1225 a Fg(ESC)p 620 1233 V 687 1223 a Fh(i)715
+1225 y Fn(switc)o(hes)13 b(y)o(ou)g(in)o(to)g(`command')f(mo)q(de,)i
+(where)f(y)o(ou)g(can)g(edit)h(the)75 1280 y(text)i(of)h(the)g(line)h
+(with)g(the)f(standard)f Fm(vi)h Fn(mo)o(v)o(emen)o(t)f(k)o(eys,)g(mo)o
+(v)o(e)g(to)h(previous)g(history)g(lines)i(with)75 1335
+y(`)p Fm(k)p Fn(')14 b(and)i(subsequen)o(t)f(lines)i(with)f(`)p
+Fm(j)p Fn(',)e(and)h(so)g(forth.)p eop
+%%Page: -1 21
+-1 20 bop 1862 -58 a Fn(i)75 183 y Fj(T)-7 b(able)27
+b(of)f(Con)n(ten)n(ts)75 354 y Fl(1)67 b(Command)22 b(Line)i(Editing)d
+Fb(.)10 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h
+(.)f(.)g(.)g(.)42 b Fl(1)224 423 y Fn(1.1)j(In)o(tro)q(duction)16
+b(to)f(Line)h(Editing)e Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)27 b Fn(1)224 478 y(1.2)45 b(Readline)17 b(In)o(teraction)8
+b Fa(.)g(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)23 b Fn(1)374 532 y(1.2.1)44 b(Readline)17
+b(Bare)e(Essen)o(tials)f Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
+b Fn(1)374 587 y(1.2.2)44 b(Readline)17 b(Mo)o(v)o(emen)o(t)d(Commands)
+7 b Fa(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
+(.)h(.)21 b Fn(2)374 642 y(1.2.3)44 b(Readline)17 b(Killing)h(Commands)
+11 b Fa(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)25 b Fn(2)374 697 y(1.2.4)44 b(Readline)17
+b(Argumen)o(ts)12 b Fa(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27
+b Fn(3)374 752 y(1.2.5)44 b(Searc)o(hing)16 b(for)e(Commands)h(in)h
+(the)f(History)e Fa(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
+b Fn(3)224 806 y(1.3)45 b(Readline)17 b(Init)g(File)e
+Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)29 b Fn(4)374 861 y(1.3.1)44 b(Readline)17
+b(Init)f(File)h(Syn)o(tax)7 b Fa(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21
+b Fn(4)374 916 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)5
+b Fa(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)g(.)f(.)19 b Fn(8)374 971 y(1.3.3)44 b(Sample)16
+b(Init)g(File)11 b Fa(.)e(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)26 b Fn(9)224 1026 y(1.4)45 b(Bindable)17 b(Readline)h
+(Commands)6 b Fa(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21
+b Fn(12)374 1080 y(1.4.1)44 b(Commands)14 b(F)l(or)h(Mo)o(ving)e
+Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)28 b Fn(12)374 1135 y(1.4.2)44
+b(Commands)14 b(F)l(or)h(Manipulating)i(The)e(History)9
+b Fa(.)e(.)h(.)f(.)h(.)f(.)h(.)24 b Fn(12)374 1190 y(1.4.3)44
+b(Commands)14 b(F)l(or)h(Changing)h(T)l(ext)e Fa(.)8
+b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30
+b Fn(13)374 1245 y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)9
+b Fa(.)e(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)24 b Fn(14)374
+1299 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)c
+Fa(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)27
+b Fn(15)374 1354 y(1.4.6)44 b(Letting)15 b(Readline)j(T)o(yp)q(e)d(F)l
+(or)g(Y)l(ou)10 b Fa(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)25 b Fn(16)374 1409 y(1.4.7)44 b(Keyb)q(oard)15
+b(Macros)6 b Fa(.)h(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)21
+b Fn(16)374 1464 y(1.4.8)44 b(Some)15 b(Miscellaneous)i(Commands)7
+b Fa(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+22 b Fn(17)224 1519 y(1.5)45 b(Readline)17 b(vi)f(Mo)q(de)e
+Fa(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)28 b Fn(18)p eop
+%%Page: -2 22
+-2 21 bop 75 -58 a Fn(ii)1321 b(GNU)15 b(Readline)i(Library)p
+eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/readline/doc/rluserman.texinfo b/readline/doc/rluserman.texinfo
new file mode 100644
index 00000000000..e6a3dcde2a9
--- /dev/null
+++ b/readline/doc/rluserman.texinfo
@@ -0,0 +1,94 @@
+\input texinfo @c -*-texinfo-*-
+@comment %**start of header (This is for running Texinfo on a region.)
+@setfilename rluserman.info
+@settitle GNU Readline Library
+@comment %**end of header (This is for running Texinfo on a region.)
+@setchapternewpage odd
+
+@include manvers.texinfo
+
+@ifinfo
+@dircategory Libraries
+@direntry
+* Readline: (readline). The GNU readline library API
+@end direntry
+
+This document describes the end user interface of the GNU Readline Library,
+a utility which aids in the consistency of user interface across discrete
+programs that need to provide a command line interface.
+
+Copyright (C) 1988-1999 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+pare preserved on all copies.
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+@end ignore
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Free Software Foundation.
+@end ifinfo
+
+@titlepage
+@title GNU Readline Library User Interface
+@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
+@subtitle @value{UPDATE-MONTH}
+@author Brian Fox, Free Software Foundation
+@author Chet Ramey, Case Western Reserve University
+
+@page
+This document describes the end user interface of the GNU Readline Library,
+a utility which aids in the consistency of user interface across discrete
+programs that need to provide a command line interface.
+
+Published by the Free Software Foundation @*
+59 Temple Place, Suite 330, @*
+Boston, MA 02111 USA
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Free Software Foundation.
+
+@vskip 0pt plus 1filll
+Copyright @copyright{} 1988-1999 Free Software Foundation, Inc.
+@end titlepage
+
+@ifinfo
+@node Top
+@top GNU Readline Library
+
+This document describes the end user interface of the GNU Readline Library,
+a utility which aids in the consistency of user interface across discrete
+programs that need to provide a command line interface.
+
+@menu
+* Command Line Editing:: GNU Readline User's Manual.
+@end menu
+@end ifinfo
+
+@include rluser.texinfo
+
+@contents
+@bye
diff --git a/readline/examples/excallback.c b/readline/examples/excallback.c
new file mode 100644
index 00000000000..ca03fc3dafd
--- /dev/null
+++ b/readline/examples/excallback.c
@@ -0,0 +1,186 @@
+/*
+From: Jeff Solomon <jsolomon@stanford.edu>
+Date: Fri, 9 Apr 1999 10:13:27 -0700 (PDT)
+To: chet@po.cwru.edu
+Subject: new readline example
+Message-ID: <14094.12094.527305.199695@mrclean.Stanford.EDU>
+
+Chet,
+
+I've been using readline 4.0. Specifically, I've been using the perl
+version Term::ReadLine::Gnu. It works great.
+
+Anyway, I've been playing around the alternate interface and I wanted
+to contribute a little C program, callback.c, to you that you could
+use as an example of the alternate interface in the /examples
+directory of the readline distribution.
+
+My example shows how, using the alternate interface, you can
+interactively change the prompt (which is very nice imo). Also, I
+point out that you must roll your own terminal setting when using the
+alternate interface because readline depreps (using your parlance) the
+terminal while in the user callback. I try to demostrate what I mean
+with an example. I've included the program below.
+
+To compile, I just put the program in the examples directory and made
+the appropriate changes to the EXECUTABLES and OBJECTS line and added
+an additional target 'callback'.
+
+I compiled on my Sun Solaris2.6 box using Sun's cc.
+
+Let me know what you think.
+
+Jeff
+*/
+
+#if defined (HAVE_CONFIG_H)
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <sys/types.h>
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <termios.h> /* xxx - should make this more general */
+
+#ifdef READLINE_LIBRARY
+# include "readline.h"
+#else
+# include <readline/readline.h>
+#endif
+
+/* This little examples demonstrates the alternate interface to using readline.
+ * In the alternate interface, the user maintains control over program flow and
+ * only calls readline when STDIN is readable. Using the alternate interface,
+ * you can do anything else while still using readline (like talking to a
+ * network or another program) without blocking.
+ *
+ * Specifically, this program highlights two importants features of the
+ * alternate interface. The first is the ability to interactively change the
+ * prompt, which can't be done using the regular interface since rl_prompt is
+ * read-only.
+ *
+ * The second feature really highlights a subtle point when using the alternate
+ * interface. That is, readline will not alter the terminal when inside your
+ * callback handler. So let's so, your callback executes a user command that
+ * takes a non-trivial amount of time to complete (seconds). While your
+ * executing the command, the user continues to type keystrokes and expects them
+ * to be re-echoed on the new prompt when it returns. Unfortunately, the default
+ * terminal configuration doesn't do this. After the prompt returns, the user
+ * must hit one additional keystroke and then will see all of his previous
+ * keystrokes. To illustrate this, compile and run this program. Type "sleep" at
+ * the prompt and then type "bar" before the prompt returns (you have 3
+ * seconds). Notice how "bar" is re-echoed on the prompt after the prompt
+ * returns? This is what you expect to happen. Now comment out the 4 lines below
+ * the line that says COMMENT LINE BELOW. Recompile and rerun the program and do
+ * the same thing. When the prompt returns, you should not see "bar". Now type
+ * "f", see how "barf" magically appears? This behavior is un-expected and not
+ * desired.
+ */
+
+void process_line(char *line);
+int change_prompt(void);
+char *get_prompt(void);
+
+int prompt = 1;
+char prompt_buf[40], line_buf[256];
+tcflag_t old_lflag;
+cc_t old_vtime;
+struct termios term;
+
+int
+main()
+{
+ fd_set fds;
+
+ /* Adjust the terminal slightly before the handler is installed. Disable
+ * canonical mode processing and set the input character time flag to be
+ * non-blocking.
+ */
+ if( tcgetattr(STDIN_FILENO, &term) < 0 ) {
+ perror("tcgetattr");
+ exit(1);
+ }
+ old_lflag = term.c_lflag;
+ old_vtime = term.c_cc[VTIME];
+ term.c_lflag &= ~ICANON;
+ term.c_cc[VTIME] = 1;
+ /* COMMENT LINE BELOW - see above */
+ if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) {
+ perror("tcsetattr");
+ exit(1);
+ }
+
+ rl_add_defun("change-prompt", change_prompt, CTRL('t'));
+ rl_callback_handler_install(get_prompt(), process_line);
+
+ while(1) {
+ FD_ZERO(&fds);
+ FD_SET(fileno(stdin), &fds);
+
+ if( select(FD_SETSIZE, &fds, NULL, NULL, NULL) < 0) {
+ perror("select");
+ exit(1);
+ }
+
+ if( FD_ISSET(fileno(stdin), &fds) ) {
+ rl_callback_read_char();
+ }
+ }
+}
+
+void
+process_line(char *line)
+{
+ if( line == NULL ) {
+ fprintf(stderr, "\n", line);
+
+ /* reset the old terminal setting before exiting */
+ term.c_lflag = old_lflag;
+ term.c_cc[VTIME] = old_vtime;
+ if( tcsetattr(STDIN_FILENO, TCSANOW, &term) < 0 ) {
+ perror("tcsetattr");
+ exit(1);
+ }
+ exit(0);
+ }
+
+ if( strcmp(line, "sleep") == 0 ) {
+ sleep(3);
+ } else {
+ fprintf(stderr, "|%s|\n", line);
+ }
+}
+
+int
+change_prompt(void)
+{
+ /* toggle the prompt variable */
+ prompt = !prompt;
+
+ /* save away the current contents of the line */
+ strcpy(line_buf, rl_line_buffer);
+
+ /* install a new handler which will change the prompt and erase the current line */
+ rl_callback_handler_install(get_prompt(), process_line);
+
+ /* insert the old text on the new line */
+ rl_insert_text(line_buf);
+
+ /* redraw the current line - this is an undocumented function. It invokes the
+ * redraw-current-line command.
+ */
+ rl_refresh_line(0, 0);
+}
+
+char *
+get_prompt(void)
+{
+ /* The prompts can even be different lengths! */
+ sprintf(prompt_buf, "%s",
+ prompt ? "Hit ctrl-t to toggle prompt> " : "Pretty cool huh?> ");
+ return prompt_buf;
+}
diff --git a/readline/examples/rlfe.c b/readline/examples/rlfe.c
new file mode 100644
index 00000000000..5c3c8fde45b
--- /dev/null
+++ b/readline/examples/rlfe.c
@@ -0,0 +1,685 @@
+/* A front-end using readline to "cook" input lines for Kawa.
+ *
+ * Copyright (C) 1999 Per Bothner
+ *
+ * This front-end program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * Some code from Johnson & Troan: "Linux Application Development"
+ * (Addison-Wesley, 1998) was used directly or for inspiration.
+ */
+
+/* PROBLEMS/TODO:
+ *
+ * Only tested under Linux; needs to be ported.
+ *
+ * When running mc -c under the Linux console, mc does not recognize
+ * mouse clicks, which mc does when not running under fep.
+ *
+ * Pasting selected text containing tabs is like hitting the tab character,
+ * which invokes readline completion. We don't want this. I don't know
+ * if this is fixable without integrating fep into a terminal emulator.
+ *
+ * Echo suppression is a kludge, but can only be avoided with better kernel
+ * support: We need a tty mode to disable "real" echoing, while still
+ * letting the inferior think its tty driver to doing echoing.
+ * Stevens's book claims SCR$ and BSD4.3+ have TIOCREMOTE.
+ *
+ * The latest readline may have some hooks we can use to avoid having
+ * to back up the prompt.
+ *
+ * Desirable readline feature: When in cooked no-echo mode (e.g. password),
+ * echo characters are they are types with '*', but remove them when done.
+ *
+ * A synchronous output while we're editing an input line should be
+ * inserted in the output view *before* the input line, so that the
+ * lines being edited (with the prompt) float at the end of the input.
+ *
+ * A "page mode" option to emulate more/less behavior: At each page of
+ * output, pause for a user command. This required parsing the output
+ * to keep track of line lengths. It also requires remembering the
+ * output, if we want an option to scroll back, which suggests that
+ * this should be integrated with a terminal emulator like xterm.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdio.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <signal.h>
+#include <netdb.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <grp.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <termios.h>
+
+#ifdef READLINE_LIBRARY
+# include "readline.h"
+# include "history.h"
+#else
+# include <readline/readline.h>
+# include <readline/history.h>
+#endif
+
+#ifndef COMMAND
+#define COMMAND "/bin/sh"
+#endif
+#ifndef COMMAND_ARGS
+#define COMMAND_ARGS COMMAND
+#endif
+
+#ifndef HAVE_MEMMOVE
+# if __GNUC__ > 1
+# define memmove(d, s, n) __builtin_memcpy(d, s, n)
+# else
+# define memmove(d, s, n) memcpy(d, s, n)
+# endif
+#else
+# define memmove(d, s, n) memcpy(d, s, n)
+#endif
+
+#define APPLICATION_NAME "Fep"
+
+static int in_from_inferior_fd;
+static int out_to_inferior_fd;
+
+/* Unfortunately, we cannot safely display echo from the inferior process.
+ The reason is that the echo bit in the pty is "owned" by the inferior,
+ and if we try to turn it off, we could confuse the inferior.
+ Thus, when echoing, we get echo twice: First readline echoes while
+ we're actually editing. Then we send the line to the inferior, and the
+ terminal driver send back an extra echo.
+ The work-around is to remember the input lines, and when we see that
+ line come back, we supress the output.
+ A better solution (supposedly available on SVR4) would be a smarter
+ terminal driver, with more flags ... */
+#define ECHO_SUPPRESS_MAX 1024
+char echo_suppress_buffer[ECHO_SUPPRESS_MAX];
+int echo_suppress_start = 0;
+int echo_suppress_limit = 0;
+
+#define DEBUG
+
+#ifdef DEBUG
+FILE *logfile = NULL;
+#define DPRINT0(FMT) (fprintf(logfile, FMT), fflush(logfile))
+#define DPRINT1(FMT, V1) (fprintf(logfile, FMT, V1), fflush(logfile))
+#define DPRINT2(FMT, V1, V2) (fprintf(logfile, FMT, V1, V2), fflush(logfile))
+#else
+#define DPRINT0(FMT) /* Do nothing */
+#define DPRINT1(FMT, V1) /* Do nothing */
+#define DPRINT2(FMT, V1, V2) /* Do nothing */
+#endif
+
+struct termios orig_term;
+
+/* Pid of child process. */
+static pid_t child = -1;
+
+static void
+sig_child (int signo)
+{
+ int status;
+ wait (&status);
+ DPRINT0 ("(Child process died.)\n");
+ tcsetattr(STDIN_FILENO, TCSANOW, &orig_term);
+ exit (0);
+}
+
+volatile int propagate_sigwinch = 0;
+
+/* sigwinch_handler
+ * propagate window size changes from input file descriptor to
+ * master side of pty.
+ */
+void sigwinch_handler(int signal) {
+ propagate_sigwinch = 1;
+}
+
+/* get_master_pty() takes a double-indirect character pointer in which
+ * to put a slave name, and returns an integer file descriptor.
+ * If it returns < 0, an error has occurred.
+ * Otherwise, it has returned the master pty file descriptor, and fills
+ * in *name with the name of the corresponding slave pty.
+ * Once the slave pty has been opened, you are responsible to free *name.
+ */
+
+int get_master_pty(char **name) {
+ int i, j;
+ /* default to returning error */
+ int master = -1;
+
+ /* create a dummy name to fill in */
+ *name = strdup("/dev/ptyXX");
+
+ /* search for an unused pty */
+ for (i=0; i<16 && master <= 0; i++) {
+ for (j=0; j<16 && master <= 0; j++) {
+ (*name)[5] = 'p';
+ (*name)[8] = "pqrstuvwxyzPQRST"[i];
+ (*name)[9] = "0123456789abcdef"[j];
+ /* open the master pty */
+ if ((master = open(*name, O_RDWR)) < 0) {
+ if (errno == ENOENT) {
+ /* we are out of pty devices */
+ free (*name);
+ return (master);
+ }
+ }
+ else {
+ /* By substituting a letter, we change the master pty
+ * name into the slave pty name.
+ */
+ (*name)[5] = 't';
+ if (access(*name, R_OK|W_OK) != 0)
+ {
+ close(master);
+ master = -1;
+ }
+ }
+ }
+ }
+ if ((master < 0) && (i == 16) && (j == 16)) {
+ /* must have tried every pty unsuccessfully */
+ free (*name);
+ return (master);
+ }
+
+ (*name)[5] = 't';
+
+ return (master);
+}
+
+/* get_slave_pty() returns an integer file descriptor.
+ * If it returns < 0, an error has occurred.
+ * Otherwise, it has returned the slave file descriptor.
+ */
+
+int get_slave_pty(char *name) {
+ struct group *gptr;
+ gid_t gid;
+ int slave = -1;
+
+ /* chown/chmod the corresponding pty, if possible.
+ * This will only work if the process has root permissions.
+ * Alternatively, write and exec a small setuid program that
+ * does just this.
+ */
+ if ((gptr = getgrnam("tty")) != 0) {
+ gid = gptr->gr_gid;
+ } else {
+ /* if the tty group does not exist, don't change the
+ * group on the slave pty, only the owner
+ */
+ gid = -1;
+ }
+
+ /* Note that we do not check for errors here. If this is code
+ * where these actions are critical, check for errors!
+ */
+ chown(name, getuid(), gid);
+ /* This code only makes the slave read/writeable for the user.
+ * If this is for an interactive shell that will want to
+ * receive "write" and "wall" messages, OR S_IWGRP into the
+ * second argument below.
+ */
+ chmod(name, S_IRUSR|S_IWUSR);
+
+ /* open the corresponding slave pty */
+ slave = open(name, O_RDWR);
+ return (slave);
+}
+
+/* Certain special characters, such as ctrl/C, we want to pass directly
+ to the inferior, rather than letting readline handle them. */
+
+static char special_chars[20];
+static int special_chars_count;
+
+static void
+add_special_char(int ch)
+{
+ if (ch != 0)
+ special_chars[special_chars_count++] = ch;
+}
+
+static int eof_char;
+
+static int
+is_special_char(int ch)
+{
+ int i;
+#if 0
+ if (ch == eof_char && rl_point == rl_end)
+ return 1;
+#endif
+ for (i = special_chars_count; --i >= 0; )
+ if (special_chars[i] == ch)
+ return 1;
+ return 0;
+}
+
+static char buf[1024];
+/* buf[0 .. buf_count-1] is the what has been emitted on the current line.
+ It is used as the readline prompt. */
+static int buf_count = 0;
+
+int num_keys = 0;
+
+static void
+null_prep_terminal (int meta)
+{
+}
+
+static void
+null_deprep_terminal ()
+{
+}
+
+char pending_special_char;
+
+static void
+line_handler (char *line)
+{
+ if (line == NULL)
+ {
+ char buf[1];
+ DPRINT0("saw eof!\n");
+ buf[0] = '\004'; /* ctrl/d */
+ write (out_to_inferior_fd, buf, 1);
+ }
+ else
+ {
+ static char enter[] = "\r";
+ /* Send line to inferior: */
+ int length = strlen (line);
+ if (length > ECHO_SUPPRESS_MAX-2)
+ {
+ echo_suppress_start = 0;
+ echo_suppress_limit = 0;
+ }
+ else
+ {
+ if (echo_suppress_limit + length > ECHO_SUPPRESS_MAX - 2)
+ {
+ if (echo_suppress_limit - echo_suppress_start + length
+ <= ECHO_SUPPRESS_MAX - 2)
+ {
+ memmove (echo_suppress_buffer,
+ echo_suppress_buffer + echo_suppress_start,
+ echo_suppress_limit - echo_suppress_start);
+ echo_suppress_limit -= echo_suppress_start;
+ echo_suppress_start = 0;
+ }
+ else
+ {
+ echo_suppress_limit = 0;
+ }
+ echo_suppress_start = 0;
+ }
+ memcpy (echo_suppress_buffer + echo_suppress_limit,
+ line, length);
+ echo_suppress_limit += length;
+ echo_suppress_buffer[echo_suppress_limit++] = '\r';
+ echo_suppress_buffer[echo_suppress_limit++] = '\n';
+ }
+ write (out_to_inferior_fd, line, length);
+ if (pending_special_char == 0)
+ {
+ write (out_to_inferior_fd, enter, sizeof(enter)-1);
+ if (*line)
+ add_history (line);
+ }
+ free (line);
+ }
+ rl_callback_handler_remove ();
+ buf_count = 0;
+ num_keys = 0;
+ if (pending_special_char != 0)
+ {
+ write (out_to_inferior_fd, &pending_special_char, 1);
+ pending_special_char = 0;
+ }
+}
+
+/* Value of rl_getc_function.
+ Use this because readline should read from stdin, not rl_instream,
+ points to the pty (so readline has monitor its terminal modes). */
+
+int
+my_rl_getc (FILE *dummy)
+{
+ int ch = rl_getc (stdin);
+ if (is_special_char (ch))
+ {
+ pending_special_char = ch;
+ return '\r';
+ }
+ return ch;
+}
+
+int
+main(int argc, char** argv)
+{
+ char *path;
+ int i;
+ int master;
+ char *name;
+ int in_from_tty_fd;
+ struct sigaction act;
+ struct winsize ws;
+ struct termios t;
+ int maxfd;
+ fd_set in_set;
+ static char empty_string[1] = "";
+ char *prompt = empty_string;
+ int ioctl_err = 0;
+
+#ifdef DEBUG
+ logfile = fopen("LOG", "w");
+#endif
+
+ rl_readline_name = APPLICATION_NAME;
+
+ if ((master = get_master_pty(&name)) < 0)
+ {
+ perror("ptypair: could not open master pty");
+ exit(1);
+ }
+
+ DPRINT1("pty name: '%s'\n", name);
+
+ /* set up SIGWINCH handler */
+ act.sa_handler = sigwinch_handler;
+ sigemptyset(&(act.sa_mask));
+ act.sa_flags = 0;
+ if (sigaction(SIGWINCH, &act, NULL) < 0)
+ {
+ perror("ptypair: could not handle SIGWINCH ");
+ exit(1);
+ }
+
+ if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) < 0)
+ {
+ perror("ptypair: could not get window size");
+ exit(1);
+ }
+
+ if ((child = fork()) < 0)
+ {
+ perror("cannot fork");
+ exit(1);
+ }
+
+ if (child == 0)
+ {
+ int slave; /* file descriptor for slave pty */
+
+ /* We are in the child process */
+ close(master);
+
+#ifdef TIOCSCTTY
+ if ((slave = get_slave_pty(name)) < 0)
+ {
+ perror("ptypair: could not open slave pty");
+ exit(1);
+ }
+ free(name);
+#endif
+
+ /* We need to make this process a session group leader, because
+ * it is on a new PTY, and things like job control simply will
+ * not work correctly unless there is a session group leader
+ * and process group leader (which a session group leader
+ * automatically is). This also disassociates us from our old
+ * controlling tty.
+ */
+ if (setsid() < 0)
+ {
+ perror("could not set session leader");
+ }
+
+ /* Tie us to our new controlling tty. */
+#ifdef TIOCSCTTY
+ if (ioctl(slave, TIOCSCTTY, NULL))
+ {
+ perror("could not set new controlling tty");
+ }
+#else
+ if ((slave = get_slave_pty(name)) < 0)
+ {
+ perror("ptypair: could not open slave pty");
+ exit(1);
+ }
+ free(name);
+#endif
+
+ /* make slave pty be standard in, out, and error */
+ dup2(slave, STDIN_FILENO);
+ dup2(slave, STDOUT_FILENO);
+ dup2(slave, STDERR_FILENO);
+
+ /* at this point the slave pty should be standard input */
+ if (slave > 2)
+ {
+ close(slave);
+ }
+
+ /* Try to restore window size; failure isn't critical */
+ if (ioctl(STDOUT_FILENO, TIOCSWINSZ, &ws) < 0)
+ {
+ perror("could not restore window size");
+ }
+
+ /* now start the shell */
+ {
+ static char* command_args[] = { COMMAND_ARGS, NULL };
+ if (argc <= 1)
+ execvp(COMMAND, command_args);
+ else
+ execvp(argv[1], &argv[1]);
+ }
+
+ /* should never be reached */
+ exit(1);
+ }
+
+ /* parent */
+ signal (SIGCHLD, sig_child);
+ free(name);
+
+ /* Note that we only set termios settings for standard input;
+ * the master side of a pty is NOT a tty.
+ */
+ tcgetattr(STDIN_FILENO, &orig_term);
+
+ t = orig_term;
+ eof_char = t.c_cc[VEOF];
+ /* add_special_char(t.c_cc[VEOF]);*/
+ add_special_char(t.c_cc[VINTR]);
+ add_special_char(t.c_cc[VQUIT]);
+ add_special_char(t.c_cc[VSUSP]);
+#if defined (VDISCARD)
+ add_special_char(t.c_cc[VDISCARD]);
+#endif
+
+#if 0
+ t.c_lflag |= (ICANON | ISIG | ECHO | ECHOCTL | ECHOE | \
+ ECHOK | ECHOKE | ECHONL | ECHOPRT );
+#else
+ t.c_lflag &= ~(ICANON | ISIG | ECHO | ECHOCTL | ECHOE | \
+ ECHOK | ECHOKE | ECHONL | ECHOPRT );
+#endif
+ t.c_iflag |= IGNBRK;
+ t.c_cc[VMIN] = 1;
+ t.c_cc[VTIME] = 0;
+ tcsetattr(STDIN_FILENO, TCSANOW, &t);
+ in_from_inferior_fd = master;
+ out_to_inferior_fd = master;
+ rl_instream = fdopen (master, "r");
+ rl_getc_function = my_rl_getc;
+
+ rl_prep_term_function = null_prep_terminal;
+ rl_deprep_term_function = null_deprep_terminal;
+ rl_callback_handler_install (prompt, line_handler);
+
+ in_from_tty_fd = STDIN_FILENO;
+ FD_ZERO (&in_set);
+ maxfd = in_from_inferior_fd > in_from_tty_fd ? in_from_inferior_fd
+ : in_from_tty_fd;
+ for (;;)
+ {
+ int num;
+ FD_SET (in_from_inferior_fd, &in_set);
+ FD_SET (in_from_tty_fd, &in_set);
+
+ num = select(maxfd+1, &in_set, NULL, NULL, NULL);
+
+ if (propagate_sigwinch)
+ {
+ struct winsize ws;
+ if (ioctl (STDIN_FILENO, TIOCGWINSZ, &ws) >= 0)
+ {
+ ioctl (master, TIOCSWINSZ, &ws);
+ }
+ propagate_sigwinch = 0;
+ continue;
+ }
+
+ if (num <= 0)
+ {
+ perror ("select");
+ exit (-1);
+ }
+ if (FD_ISSET (in_from_tty_fd, &in_set))
+ {
+ extern int readline_echoing_p;
+ struct termios term_master;
+ int do_canon = 1;
+ int ioctl_ret;
+
+ DPRINT1("[tty avail num_keys:%d]\n", num_keys);
+
+ /* If we can't get tty modes for the master side of the pty, we
+ can't handle non-canonical-mode programs. Always assume the
+ master is in canonical echo mode if we can't tell. */
+ ioctl_ret = tcgetattr(master, &term_master);
+
+ if (ioctl_ret >= 0)
+ {
+ DPRINT2 ("echo:%d, canon:%d\n",
+ (term_master.c_lflag & ECHO) != 0,
+ (term_master.c_lflag & ICANON) != 0);
+ do_canon = (term_master.c_lflag & ICANON) != 0;
+ readline_echoing_p = (term_master.c_lflag & ECHO) != 0;
+ }
+ else
+ {
+ if (ioctl_err == 0)
+ DPRINT1("tcgetattr on master fd failed: errno = %d\n", errno);
+ ioctl_err = 1;
+ }
+
+ if (do_canon == 0 && num_keys == 0)
+ {
+ char ch[10];
+ int count = read (STDIN_FILENO, ch, sizeof(ch));
+ write (out_to_inferior_fd, ch, count);
+ }
+ else
+ {
+ if (num_keys == 0)
+ {
+ int i;
+ /* Re-install callback handler for new prompt. */
+ if (prompt != empty_string)
+ free (prompt);
+ prompt = malloc (buf_count + 1);
+ if (prompt == NULL)
+ prompt = empty_string;
+ else
+ {
+ memcpy (prompt, buf, buf_count);
+ prompt[buf_count] = '\0';
+ DPRINT1("New prompt '%s'\n", prompt);
+#if 0 /* ifdef HAVE_RL_ALREADY_PROMPTED -- doesn't work */
+ rl_already_prompted = buf_count > 0;
+#else
+ if (buf_count > 0)
+ write (1, "\r", 1);
+#endif
+ }
+ rl_callback_handler_install (prompt, line_handler);
+ }
+ num_keys++;
+ rl_callback_read_char ();
+ }
+ }
+ else /* input from inferior. */
+ {
+ int i;
+ int count;
+ int old_count;
+ if (buf_count > (sizeof(buf) >> 2))
+ buf_count = 0;
+ count = read (in_from_inferior_fd, buf+buf_count,
+ sizeof(buf) - buf_count);
+ if (count <= 0)
+ {
+ DPRINT0 ("(Connection closed by foreign host.)\n");
+ tcsetattr(STDIN_FILENO, TCSANOW, &orig_term);
+ exit (0);
+ }
+ old_count = buf_count;
+
+ /* Look for any pending echo that we need to suppress. */
+ while (echo_suppress_start < echo_suppress_limit
+ && count > 0
+ && buf[buf_count] == echo_suppress_buffer[echo_suppress_start])
+ {
+ count--;
+ buf_count++;
+ echo_suppress_start++;
+ }
+
+ /* Write to the terminal anything that was not suppressed. */
+ if (count > 0)
+ write (1, buf + buf_count, count);
+
+ /* Finally, look for a prompt candidate.
+ * When we get around to going input (from the keyboard),
+ * we will consider the prompt to be anything since the last
+ * line terminator. So we need to save that text in the
+ * initial part of buf. However, anything before the
+ * most recent end-of-line is not interesting. */
+ buf_count += count;
+#if 1
+ for (i = buf_count; --i >= old_count; )
+#else
+ for (i = buf_count - 1; i-- >= buf_count - count; )
+#endif
+ {
+ if (buf[i] == '\n' || buf[i] == '\r')
+ {
+ i++;
+ memmove (buf, buf+i, buf_count - i);
+ buf_count -= i;
+ break;
+ }
+ }
+ DPRINT2("-> i: %d, buf_count: %d\n", i, buf_count);
+ }
+ }
+}
diff --git a/readline/rlprivate.h b/readline/rlprivate.h
new file mode 100644
index 00000000000..c05230e3325
--- /dev/null
+++ b/readline/rlprivate.h
@@ -0,0 +1,271 @@
+/* rlprivate.h -- functions and variables global to the readline library,
+ but not intended for use by applications. */
+
+/* Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This file is part of the GNU Readline Library, a library for
+ reading lines of text with interactive input and history editing.
+
+ The GNU Readline Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2, or
+ (at your option) any later version.
+
+ The GNU Readline Library is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ The GNU General Public License is often shipped with GNU software, and
+ is generally kept in a file called COPYING or LICENSE. If you do not
+ have a copy of the license, write to the Free Software Foundation,
+ 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#if !defined (_RL_PRIVATE_H_)
+#define _RL_PRIVATE_H_
+
+#include "rlconf.h" /* for VISIBLE_STATS */
+#include "rlstdc.h"
+#include "posixjmp.h" /* defines procenv_t */
+
+/*************************************************************************
+ * *
+ * Global functions undocumented in texinfo manual and not in readline.h *
+ * *
+ *************************************************************************/
+
+/* terminal.c */
+extern char *rl_get_termcap __P((char *));
+
+/*************************************************************************
+ * *
+ * Global variables undocumented in texinfo manual and not in readline.h *
+ * *
+ *************************************************************************/
+
+/* complete.c */
+extern int rl_complete_with_tilde_expansion;
+#if defined (VISIBLE_STATS)
+extern int rl_visible_stats;
+#endif /* VISIBLE_STATS */
+
+/* readline.c */
+extern int rl_line_buffer_len;
+extern int rl_numeric_arg;
+extern int rl_arg_sign;
+extern int rl_explicit_arg;
+extern int rl_editing_mode;
+extern int rl_visible_prompt_length;
+extern Function *rl_last_func;
+extern int readline_echoing_p;
+extern int rl_key_sequence_length;
+
+/* display.c */
+extern int rl_display_fixed;
+
+/* parens.c */
+extern int rl_blink_matching_paren;
+
+/*************************************************************************
+ * *
+ * Global functions and variables unsed and undocumented *
+ * *
+ *************************************************************************/
+
+/* bind.c */
+extern char *rl_untranslate_keyseq __P((int));
+
+/* kill.c */
+extern int rl_set_retained_kills __P((int));
+
+/* readline.c */
+extern int rl_discard_argument __P((void));
+
+/* rltty.c */
+extern int rl_stop_output __P((int, int));
+
+/* terminal.c */
+extern void _rl_set_screen_size __P((int, int));
+
+/* undo.c */
+extern int _rl_fix_last_undo_of_type __P((int, int, int));
+
+/* util.c */
+extern char *_rl_savestring __P((char *));
+
+/*************************************************************************
+ * *
+ * Functions and variables private to the readline library *
+ * *
+ *************************************************************************/
+
+/* NOTE: Functions and variables prefixed with `_rl_' are
+ pseudo-global: they are global so they can be shared
+ between files in the readline library, but are not intended
+ to be visible to readline callers. */
+
+/*************************************************************************
+ * Undocumented private functions *
+ *************************************************************************/
+
+#if defined(READLINE_CALLBACKS)
+
+/* readline.c */
+extern void readline_internal_setup __P((void));
+extern char *readline_internal_teardown __P((int));
+extern int readline_internal_char __P((void));
+
+#endif /* READLINE_CALLBACKS */
+
+/* bind.c */
+extern void _rl_bind_if_unbound __P((char *, Function *));
+
+/* display.c */
+extern char *_rl_strip_prompt __P((char *));
+extern void _rl_move_cursor_relative __P((int, char *));
+extern void _rl_move_vert __P((int));
+extern void _rl_save_prompt __P((void));
+extern void _rl_restore_prompt __P((void));
+extern char *_rl_make_prompt_for_search __P((int));
+extern void _rl_erase_at_end_of_line __P((int));
+extern void _rl_clear_to_eol __P((int));
+extern void _rl_clear_screen __P((void));
+extern void _rl_update_final __P((void));
+extern void _rl_redisplay_after_sigwinch __P((void));
+extern void _rl_clean_up_for_exit __P((void));
+extern void _rl_erase_entire_line __P((void));
+extern int _rl_currentb_display_line __P((void));
+
+/* input.c */
+extern int _rl_any_typein __P((void));
+extern int _rl_input_available __P((void));
+extern void _rl_insert_typein __P((int));
+
+/* macro.c */
+extern void _rl_with_macro_input __P((char *));
+extern int _rl_next_macro_key __P((void));
+extern void _rl_push_executing_macro __P((void));
+extern void _rl_pop_executing_macro __P((void));
+extern void _rl_add_macro_char __P((int));
+extern void _rl_kill_kbd_macro __P((void));
+
+/* nls.c */
+extern int _rl_init_eightbit __P((void));
+
+/* parens.c */
+extern void _rl_enable_paren_matching __P((int));
+
+/* readline.c */
+extern void _rl_init_line_state __P((void));
+extern void _rl_set_the_line __P((void));
+extern int _rl_dispatch __P((int, Keymap));
+extern int _rl_init_argument __P((void));
+extern void _rl_fix_point __P((int));
+extern void _rl_replace_text __P((char *, int, int));
+extern int _rl_char_search_internal __P((int, int, int));
+extern int _rl_set_mark_at_pos __P((int));
+
+/* rltty.c */
+extern int _rl_disable_tty_signals __P((void));
+extern int _rl_restore_tty_signals __P((void));
+
+/* terminal.c */
+extern void _rl_get_screen_size __P((int, int));
+extern int _rl_init_terminal_io __P((char *));
+#ifdef _MINIX
+extern void _rl_output_character_function __P((int));
+#else
+extern int _rl_output_character_function __P((int));
+#endif
+extern void _rl_output_some_chars __P((char *, int));
+extern int _rl_backspace __P((int));
+extern void _rl_enable_meta_key __P((void));
+extern void _rl_control_keypad __P((int));
+
+/* util.c */
+extern int alphabetic __P((int));
+extern int _rl_abort_internal __P((void));
+extern char *_rl_strindex __P((char *, char *));
+extern int _rl_qsort_string_compare __P((char **, char **));
+extern int (_rl_uppercase_p) __P((int));
+extern int (_rl_lowercase_p) __P((int));
+extern int (_rl_pure_alphabetic) __P((int));
+extern int (_rl_digit_p) __P((int));
+extern int (_rl_to_lower) __P((int));
+extern int (_rl_to_upper) __P((int));
+extern int (_rl_digit_value) __P((int));
+
+/* vi_mode.c */
+extern void _rl_vi_initialize_line __P((void));
+extern void _rl_vi_reset_last __P((void));
+extern void _rl_vi_set_last __P((int, int, int));
+extern int _rl_vi_textmod_command __P((int));
+extern void _rl_vi_done_inserting __P((void));
+
+/*************************************************************************
+ * Undocumented private variables *
+ *************************************************************************/
+
+/* complete.c */
+extern int _rl_complete_show_all;
+extern int _rl_complete_mark_directories;
+extern int _rl_print_completions_horizontally;
+extern int _rl_completion_case_fold;
+
+/* display.c */
+extern int _rl_vis_botlin;
+extern int _rl_last_c_pos;
+extern int _rl_suppress_redisplay;
+extern char *rl_display_prompt;
+
+/* funmap.c */
+extern char *possible_control_prefixes[];
+extern char *possible_meta_prefixes[];
+
+/* isearch.c */
+extern unsigned char *_rl_isearch_terminators;
+
+/* macro.c */
+extern int _rl_defining_kbd_macro;
+extern char *_rl_executing_macro;
+
+/* readline.c */
+extern int _rl_horizontal_scroll_mode;
+extern int _rl_mark_modified_lines;
+extern int _rl_bell_preference;
+extern int _rl_meta_flag;
+extern int _rl_convert_meta_chars_to_ascii;
+extern int _rl_output_meta_chars;
+extern char *_rl_comment_begin;
+extern unsigned char _rl_parsing_conditionalized_out;
+extern Keymap _rl_keymap;
+extern FILE *_rl_in_stream;
+extern FILE *_rl_out_stream;
+extern int _rl_last_command_was_kill;
+extern int _rl_eof_char;
+extern procenv_t readline_top_level;
+
+/* terminal.c */
+extern int _rl_enable_keypad;
+extern int _rl_enable_meta;
+extern char *term_clreol;
+extern char *term_clrpag;
+extern char *term_im;
+extern char *term_ic;
+extern char *term_ei;
+extern char *term_DC;
+extern char *term_up;
+extern char *term_dc;
+extern char *term_cr;
+extern char *term_IC;
+extern int screenheight;
+extern int screenwidth;
+extern int screenchars;
+extern int terminal_can_insert;
+extern int _rl_term_autowrap;
+
+/* undo.c */
+extern int _rl_doing_an_undo;
+extern int _rl_undo_group_level;
+
+#endif /* _RL_PRIVATE_H_ */
diff --git a/readline/rlshell.h b/readline/rlshell.h
new file mode 100644
index 00000000000..7a4e6996316
--- /dev/null
+++ b/readline/rlshell.h
@@ -0,0 +1,34 @@
+/* rlshell.h -- utility functions normally provided by bash. */
+
+/* Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This file is part of the GNU Readline Library, a library for
+ reading lines of text with interactive input and history editing.
+
+ The GNU Readline Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2, or
+ (at your option) any later version.
+
+ The GNU Readline Library is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ The GNU General Public License is often shipped with GNU software, and
+ is generally kept in a file called COPYING or LICENSE. If you do not
+ have a copy of the license, write to the Free Software Foundation,
+ 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#if !defined (_RL_SHELL_H_)
+#define _RL_SHELL_H_
+
+#include "rlstdc.h"
+
+extern char *single_quote __P((char *));
+extern void set_lines_and_columns __P((int, int));
+extern char *get_env_value __P((char *));
+extern char *get_home_dir __P((void));
+extern int unset_nodelay_mode __P((int));
+
+#endif /* _RL_SHELL_H_ */
diff --git a/readline/xmalloc.h b/readline/xmalloc.h
new file mode 100644
index 00000000000..bdf251b070a
--- /dev/null
+++ b/readline/xmalloc.h
@@ -0,0 +1,46 @@
+/* xmalloc.h -- memory allocation that aborts on errors. */
+
+/* Copyright (C) 1999 Free Software Foundation, Inc.
+
+ This file is part of the GNU Readline Library, a library for
+ reading lines of text with interactive input and history editing.
+
+ The GNU Readline Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2, or
+ (at your option) any later version.
+
+ The GNU Readline Library is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ The GNU General Public License is often shipped with GNU software, and
+ is generally kept in a file called COPYING or LICENSE. If you do not
+ have a copy of the license, write to the Free Software Foundation,
+ 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#if !defined (_XMALLOC_H_)
+#define _XMALLOC_H_
+
+#if defined (READLINE_LIBRARY)
+# include "rlstdc.h"
+#else
+# include <readline/rlstdc.h>
+#endif
+
+#ifndef PTR_T
+
+#ifdef __STDC__
+# define PTR_T void *
+#else
+# define PTR_T char *
+#endif
+
+#endif /* !PTR_T */
+
+extern char *xmalloc __P((int));
+extern char *xrealloc __P((void *, int));
+extern void xfree __P((void *));
+
+#endif /* _XMALLOC_H_ */