diff options
author | Eric Norum <WENorum@lbl.gov> | 2001-04-16 15:05:47 +0000 |
---|---|---|
committer | Eric Norum <WENorum@lbl.gov> | 2001-04-16 15:05:47 +0000 |
commit | 3a9d8c8c76e3cabb4db8597167f02e9e9df46f22 (patch) | |
tree | ea637f1aae2468734ec5e90adcbde152229527ee | |
parent | 58b2e6280bb7534e80baa06a5065793e13546146 (diff) |
Useful add-on libraries
-rw-r--r-- | readline-4.2/doc/history.dvi | bin | 0 -> 48832 bytes | |||
-rw-r--r-- | readline-4.2/doc/history.html | 1222 | ||||
-rw-r--r-- | readline-4.2/doc/history.info | 839 | ||||
-rw-r--r-- | readline-4.2/doc/history.ps | 1658 | ||||
-rw-r--r-- | readline-4.2/doc/readline.dvi | bin | 0 -> 224620 bytes | |||
-rw-r--r-- | readline-4.2/doc/readline.html | 4907 | ||||
-rw-r--r-- | readline-4.2/doc/readline.info | 3500 | ||||
-rw-r--r-- | readline-4.2/doc/readline.ps | 4988 | ||||
-rw-r--r-- | readline-4.2/doc/rluserman.html | 1608 | ||||
-rw-r--r-- | readline-4.2/doc/rluserman.ps | 1932 |
10 files changed, 20654 insertions, 0 deletions
diff --git a/readline-4.2/doc/history.dvi b/readline-4.2/doc/history.dvi Binary files differnew file mode 100644 index 0000000..0b6a726 --- /dev/null +++ b/readline-4.2/doc/history.dvi diff --git a/readline-4.2/doc/history.html b/readline-4.2/doc/history.html new file mode 100644 index 0000000..9cf15fd --- /dev/null +++ b/readline-4.2/doc/history.html @@ -0,0 +1,1222 @@ +<HTML> +<HEAD> +<!-- This HTML file has been created by texi2html 1.52 + from /usr/homes/chet/src/bash/readline-src/doc/hist.texinfo on 16 April 2001 --> + +<TITLE>GNU History Library</TITLE> +</HEAD> +<BODY> +<H1>GNU History Library</H1> +<H2>Edition 4.2, for <CODE>History Library</CODE> Version 4.2.</H2> +<H2>Apr 2001</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="history.html#SEC1">Using History Interactively</A> +<UL> +<LI><A NAME="TOC2" HREF="history.html#SEC2">History Expansion</A> +<UL> +<LI><A NAME="TOC3" HREF="history.html#SEC3">Event Designators</A> +<LI><A NAME="TOC4" HREF="history.html#SEC4">Word Designators</A> +<LI><A NAME="TOC5" HREF="history.html#SEC5">Modifiers</A> +</UL> +</UL> +<LI><A NAME="TOC6" HREF="history.html#SEC6">Programming with GNU History</A> +<UL> +<LI><A NAME="TOC7" HREF="history.html#SEC7">Introduction to History</A> +<LI><A NAME="TOC8" HREF="history.html#SEC8">History Storage</A> +<LI><A NAME="TOC9" HREF="history.html#SEC9">History Functions</A> +<UL> +<LI><A NAME="TOC10" HREF="history.html#SEC10">Initializing History and State Management</A> +<LI><A NAME="TOC11" HREF="history.html#SEC11">History List Management</A> +<LI><A NAME="TOC12" HREF="history.html#SEC12">Information About the History List</A> +<LI><A NAME="TOC13" HREF="history.html#SEC13">Moving Around the History List</A> +<LI><A NAME="TOC14" HREF="history.html#SEC14">Searching the History List</A> +<LI><A NAME="TOC15" HREF="history.html#SEC15">Managing the History File</A> +<LI><A NAME="TOC16" HREF="history.html#SEC16">History Expansion</A> +</UL> +<LI><A NAME="TOC17" HREF="history.html#SEC17">History Variables</A> +<LI><A NAME="TOC18" HREF="history.html#SEC18">History Programming Example</A> +</UL> +<LI><A NAME="TOC19" HREF="history.html#SEC19">Concept Index</A> +<LI><A NAME="TOC20" HREF="history.html#SEC20">Function and Variable Index</A> +</UL> +<P><HR><P> + +<P> +This document describes the GNU History library, a programming tool that +provides a consistent user interface for recalling lines of previously +typed input. + +</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-2001 Free Software Foundation, Inc. + +</P> + + + +<H1><A NAME="SEC1" HREF="history.html#TOC1">Using History Interactively</A></H1> + +<P> +This chapter describes how to use the GNU History Library interactively, +from a user's standpoint. It should be considered a user's guide. For +information on using the GNU History Library in your own programs, +see section <A HREF="history.html#SEC6">Programming with GNU History</A>. + +</P> + +<UL> +<LI><A HREF="history.html#SEC2">History Interaction</A>: What it feels like using History as a user. +</UL> + + + +<H2><A NAME="SEC2" HREF="history.html#TOC2">History Expansion</A></H2> +<P> +<A NAME="IDX1"></A> + +</P> +<P> +The History library provides a history expansion feature that is similar +to the history expansion provided by <CODE>csh</CODE>. This section +describes the syntax used to manipulate the history information. + +</P> +<P> +History expansions introduce words from the history list into +the input stream, making it easy to repeat commands, insert the +arguments to a previous command into the current input line, or +fix errors in previous commands quickly. + +</P> +<P> +History expansion takes place in two parts. The first is to determine +which line from the history list should be used during substitution. +The second is to select portions of that line for inclusion into the +current one. The line selected from the history is called the +<EM>event</EM>, and the portions of that line that are acted upon are +called <EM>words</EM>. Various <EM>modifiers</EM> are available to manipulate +the selected words. The line is broken into words in the same fashion +that Bash does, so that several words +surrounded by quotes are considered one word. +History expansions are introduced by the appearance of the +history expansion character, which is <SAMP>`!'</SAMP> by default. + +</P> + + +<UL> +<LI><A HREF="history.html#SEC3">Event Designators</A>: How to specify which history line to use. +<LI><A HREF="history.html#SEC4">Word Designators</A>: Specifying which words are of interest. +<LI><A HREF="history.html#SEC5">Modifiers</A>: Modifying the results of substitution. +</UL> + + + +<H3><A NAME="SEC3" HREF="history.html#TOC3">Event Designators</A></H3> +<P> +<A NAME="IDX2"></A> + +</P> +<P> +An event designator is a reference to a command line entry in the +history list. +<A NAME="IDX3"></A> + +</P> +<DL COMPACT> + +<DT><CODE>!</CODE> +<DD> +Start a history substitution, except when followed by a space, tab, +the end of the line, <SAMP>`='</SAMP> or <SAMP>`('</SAMP>. + +<DT><CODE>!<VAR>n</VAR></CODE> +<DD> +Refer to command line <VAR>n</VAR>. + +<DT><CODE>!-<VAR>n</VAR></CODE> +<DD> +Refer to the command <VAR>n</VAR> lines back. + +<DT><CODE>!!</CODE> +<DD> +Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>. + +<DT><CODE>!<VAR>string</VAR></CODE> +<DD> +Refer to the most recent command starting with <VAR>string</VAR>. + +<DT><CODE>!?<VAR>string</VAR>[?]</CODE> +<DD> +Refer to the most recent command containing <VAR>string</VAR>. The trailing +<SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by +a newline. + +<DT><CODE>^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE> +<DD> +Quick Substitution. Repeat the last command, replacing <VAR>string1</VAR> +with <VAR>string2</VAR>. Equivalent to +<CODE>!!:s/<VAR>string1</VAR>/<VAR>string2</VAR>/</CODE>. + +<DT><CODE>!#</CODE> +<DD> +The entire command line typed so far. + +</DL> + + + +<H3><A NAME="SEC4" HREF="history.html#TOC4">Word Designators</A></H3> + +<P> +Word designators are used to select desired words from the event. +A <SAMP>`:'</SAMP> separates the event specification from the word designator. It +may be omitted if the word designator begins with a <SAMP>`^'</SAMP>, <SAMP>`$'</SAMP>, +<SAMP>`*'</SAMP>, <SAMP>`-'</SAMP>, or <SAMP>`%'</SAMP>. Words are numbered from the beginning +of the line, with the first word being denoted by 0 (zero). Words are +inserted into the current line separated by single spaces. + +</P> +<P> +For example, + +</P> +<DL COMPACT> + +<DT><CODE>!!</CODE> +<DD> +designates the preceding command. When you type this, the preceding +command is repeated in toto. + +<DT><CODE>!!:$</CODE> +<DD> +designates the last argument of the preceding command. This may be +shortened to <CODE>!$</CODE>. + +<DT><CODE>!fi:2</CODE> +<DD> +designates the second argument of the most recent command starting with +the letters <CODE>fi</CODE>. +</DL> + +<P> +Here are the word designators: + +<DL COMPACT> + +<DT><CODE>0 (zero)</CODE> +<DD> +The <CODE>0</CODE>th word. For many applications, this is the command word. + +<DT><CODE><VAR>n</VAR></CODE> +<DD> +The <VAR>n</VAR>th word. + +<DT><CODE>^</CODE> +<DD> +The first argument; that is, word 1. + +<DT><CODE>$</CODE> +<DD> +The last argument. + +<DT><CODE>%</CODE> +<DD> +The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search. + +<DT><CODE><VAR>x</VAR>-<VAR>y</VAR></CODE> +<DD> +A range of words; <SAMP>`-<VAR>y</VAR>'</SAMP> abbreviates <SAMP>`0-<VAR>y</VAR>'</SAMP>. + +<DT><CODE>*</CODE> +<DD> +All of the words, except the <CODE>0</CODE>th. This is a synonym for <SAMP>`1-$'</SAMP>. +It is not an error to use <SAMP>`*'</SAMP> if there is just one word in the event; +the empty string is returned in that case. + +<DT><CODE><VAR>x</VAR>*</CODE> +<DD> +Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> + +<DT><CODE><VAR>x</VAR>-</CODE> +<DD> +Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word. + +</DL> + +<P> +If a word designator is supplied without an event specification, the +previous command is used as the event. + +</P> + + +<H3><A NAME="SEC5" HREF="history.html#TOC5">Modifiers</A></H3> + +<P> +After the optional word designator, you can add a sequence of one or more +of the following modifiers, each preceded by a <SAMP>`:'</SAMP>. + +</P> +<DL COMPACT> + +<DT><CODE>h</CODE> +<DD> +Remove a trailing pathname component, leaving only the head. + +<DT><CODE>t</CODE> +<DD> +Remove all leading pathname components, leaving the tail. + +<DT><CODE>r</CODE> +<DD> +Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving +the basename. + +<DT><CODE>e</CODE> +<DD> +Remove all but the trailing suffix. + +<DT><CODE>p</CODE> +<DD> +Print the new command but do not execute it. + +<DT><CODE>s/<VAR>old</VAR>/<VAR>new</VAR>/</CODE> +<DD> +Substitute <VAR>new</VAR> for the first occurrence of <VAR>old</VAR> in the +event line. Any delimiter may be used in place of <SAMP>`/'</SAMP>. +The delimiter may be quoted in <VAR>old</VAR> and <VAR>new</VAR> +with a single backslash. If <SAMP>`&'</SAMP> appears in <VAR>new</VAR>, +it is replaced by <VAR>old</VAR>. A single backslash will quote +the <SAMP>`&'</SAMP>. The final delimiter is optional if it is the last +character on the input line. + +<DT><CODE>&</CODE> +<DD> +Repeat the previous substitution. + +<DT><CODE>g</CODE> +<DD> +Cause changes to be applied over the entire event line. Used in +conjunction with <SAMP>`s'</SAMP>, as in <CODE>gs/<VAR>old</VAR>/<VAR>new</VAR>/</CODE>, +or with <SAMP>`&'</SAMP>. + +</DL> + + + +<H1><A NAME="SEC6" HREF="history.html#TOC6">Programming with GNU History</A></H1> + +<P> +This chapter describes how to interface programs that you write +with the GNU History Library. +It should be considered a technical guide. +For information on the interactive use of GNU History, see section <A HREF="history.html#SEC1">Using History Interactively</A>. + +</P> + +<UL> +<LI><A HREF="history.html#SEC7">Introduction to History</A>: What is the GNU History library for? +<LI><A HREF="history.html#SEC8">History Storage</A>: How information is stored. +<LI><A HREF="history.html#SEC9">History Functions</A>: Functions that you can use. +<LI><A HREF="history.html#SEC17">History Variables</A>: Variables that control behaviour. +<LI><A HREF="history.html#SEC18">History Programming Example</A>: Example of using the GNU History Library. +</UL> + + + +<H2><A NAME="SEC7" HREF="history.html#TOC7">Introduction to History</A></H2> + +<P> +Many programs read input from the user a line at a time. The GNU +History library is able to keep track of those lines, associate arbitrary +data with each line, and utilize information from previous lines in +composing new ones. + +</P> +<P> +The programmer using the History library has available functions +for remembering lines on a history list, associating arbitrary data +with a line, removing lines from the list, searching through the list +for a line containing an arbitrary text string, and referencing any line +in the list directly. In addition, a history <EM>expansion</EM> function +is available which provides for a consistent user interface across +different programs. + +</P> +<P> +The user using programs written with the History library has the +benefit of a consistent user interface with a set of well-known +commands for manipulating the text of previous lines and using that text +in new commands. The basic history manipulation commands are similar to +the history substitution provided by <CODE>csh</CODE>. + +</P> +<P> +If the programmer desires, he can use the Readline library, which +includes some history manipulation by default, and has the added +advantage of command line editing. + +</P> +<P> +Before declaring any functions using any functionality the History +library provides in other code, an application writer should include +the file <CODE><readline/history.h></CODE> in any file that uses the +History library's features. It supplies extern declarations for all +of the library's public functions and variables, and declares all of +the public data structures. + +</P> + + +<H2><A NAME="SEC8" HREF="history.html#TOC8">History Storage</A></H2> + +<P> +The history list is an array of history entries. A history entry is +declared as follows: + +</P> + +<PRE> +typedef void *histdata_t; + +typedef struct _hist_entry { + char *line; + histdata_t data; +} HIST_ENTRY; +</PRE> + +<P> +The history list itself might therefore be declared as + +</P> + +<PRE> +HIST_ENTRY **the_history_list; +</PRE> + +<P> +The state of the History library is encapsulated into a single structure: + +</P> + +<PRE> +/* + * A structure used to pass around the current state of the history. + */ +typedef struct _hist_state { + HIST_ENTRY **entries; /* Pointer to the entries themselves. */ + int offset; /* The location pointer within this array. */ + int length; /* Number of elements within this array. */ + int size; /* Number of slots allocated to this array. */ + int flags; +} HISTORY_STATE; +</PRE> + +<P> +If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been +stifled. + +</P> + + +<H2><A NAME="SEC9" HREF="history.html#TOC9">History Functions</A></H2> + +<P> +This section describes the calling sequence for the various functions +exported by the GNU History library. + +</P> + +<UL> +<LI><A HREF="history.html#SEC10">Initializing History and State Management</A>: Functions to call when you + want to use history in a + program. +<LI><A HREF="history.html#SEC11">History List Management</A>: Functions used to manage the list + of history entries. +<LI><A HREF="history.html#SEC12">Information About the History List</A>: Functions returning information about + the history list. +<LI><A HREF="history.html#SEC13">Moving Around the History List</A>: Functions used to change the position + in the history list. +<LI><A HREF="history.html#SEC14">Searching the History List</A>: Functions to search the history list + for entries containing a string. +<LI><A HREF="history.html#SEC15">Managing the History File</A>: Functions that read and write a file + containing the history list. +<LI><A HREF="history.html#SEC16">History Expansion</A>: Functions to perform csh-like history + expansion. +</UL> + + + +<H3><A NAME="SEC10" HREF="history.html#TOC10">Initializing History and State Management</A></H3> + +<P> +This section describes functions used to initialize and manage +the state of the History library when you want to use the history +functions in your program. + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>using_history</B> <I>(void)</I> +<DD><A NAME="IDX4"></A> +Begin a session in which the history functions might be used. This +initializes the interactive variables. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>(void)</I> +<DD><A NAME="IDX5"></A> +Return a structure describing the current state of the input history. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I> +<DD><A NAME="IDX6"></A> +Set the state of the history list according to <VAR>state</VAR>. +</DL> + +</P> + + +<H3><A NAME="SEC11" HREF="history.html#TOC11">History List Management</A></H3> + +<P> +These functions manage individual entries on the history list, or set +parameters managing the list itself. + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>add_history</B> <I>(const char *string)</I> +<DD><A NAME="IDX7"></A> +Place <VAR>string</VAR> at the end of the history list. The associated data +field (if any) is set to <CODE>NULL</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I> +<DD><A NAME="IDX8"></A> +Remove history entry at offset <VAR>which</VAR> from the history. The +removed element is returned so you can free the line, data, +and containing structure. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, const char *line, histdata_t data)</I> +<DD><A NAME="IDX9"></A> +Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>. +This returns the old entry so you can dispose of the data. In the case +of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>clear_history</B> <I>(void)</I> +<DD><A NAME="IDX10"></A> +Clear the history list by deleting all the entries. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I> +<DD><A NAME="IDX11"></A> +Stifle the history list, remembering only the last <VAR>max</VAR> entries. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>unstifle_history</B> <I>(void)</I> +<DD><A NAME="IDX12"></A> +Stop stifling the history. This returns the previous amount the +history was stifled. The value is positive if the history was +stifled, negative if it wasn't. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>history_is_stifled</B> <I>(void)</I> +<DD><A NAME="IDX13"></A> +Returns non-zero if the history is stifled, zero if it is not. +</DL> + +</P> + + +<H3><A NAME="SEC12" HREF="history.html#TOC12">Information About the History List</A></H3> + +<P> +These functions return information about the entire history list or +individual list entries. + +</P> +<P> +<DL> +<DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>(void)</I> +<DD><A NAME="IDX14"></A> +Return a <CODE>NULL</CODE> terminated array of <CODE>HIST_ENTRY *</CODE> which is the +current input history. Element 0 of this list is the beginning of time. +If there is no history, return <CODE>NULL</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>where_history</B> <I>(void)</I> +<DD><A NAME="IDX15"></A> +Returns the offset of the current history element. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>(void)</I> +<DD><A NAME="IDX16"></A> +Return the history entry at the current position, as determined by +<CODE>where_history()</CODE>. If there is no entry there, return a <CODE>NULL</CODE> +pointer. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I> +<DD><A NAME="IDX17"></A> +Return the history entry at position <VAR>offset</VAR>, starting from +<CODE>history_base</CODE> (see section <A HREF="history.html#SEC17">History Variables</A>). +If there is no entry there, or if <VAR>offset</VAR> +is greater than the history length, return a <CODE>NULL</CODE> pointer. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>history_total_bytes</B> <I>(void)</I> +<DD><A NAME="IDX18"></A> +Return the number of bytes that the primary history entries are using. +This function returns the sum of the lengths of all the lines in the +history. +</DL> + +</P> + + +<H3><A NAME="SEC13" HREF="history.html#TOC13">Moving Around the History List</A></H3> + +<P> +These functions allow the current index into the history list to be +set or changed. + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I> +<DD><A NAME="IDX19"></A> +Set the current history offset to <VAR>pos</VAR>, an absolute index +into the list. +Returns 1 on success, 0 if <VAR>pos</VAR> is less than zero or greater +than the number of history entries. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>(void)</I> +<DD><A NAME="IDX20"></A> +Back up the current history offset to the previous history entry, and +return a pointer to that entry. If there is no previous entry, return +a <CODE>NULL</CODE> pointer. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>(void)</I> +<DD><A NAME="IDX21"></A> +Move the current history offset forward to the next history entry, and +return the a pointer to that entry. If there is no next entry, return +a <CODE>NULL</CODE> pointer. +</DL> + +</P> + + +<H3><A NAME="SEC14" HREF="history.html#TOC14">Searching the History List</A></H3> +<P> +<A NAME="IDX22"></A> + +</P> +<P> +These functions allow searching of the history list for entries containing +a specific string. Searching may be performed both forward and backward +from the current history position. The search may be <EM>anchored</EM>, +meaning that the string must match at the beginning of the history entry. +<A NAME="IDX23"></A> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>history_search</B> <I>(const char *string, int direction)</I> +<DD><A NAME="IDX24"></A> +Search the history for <VAR>string</VAR>, starting at the current history offset. +If <VAR>direction</VAR> is less than 0, then the search is through +previous entries, otherwise through subsequent entries. +If <VAR>string</VAR> is found, then +the current history index is set to that history entry, and the value +returned is the offset in the line of the entry where +<VAR>string</VAR> was found. Otherwise, nothing is changed, and a -1 is +returned. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>history_search_prefix</B> <I>(const char *string, int direction)</I> +<DD><A NAME="IDX25"></A> +Search the history for <VAR>string</VAR>, starting at the current history +offset. The search is anchored: matching lines must begin with +<VAR>string</VAR>. If <VAR>direction</VAR> is less than 0, then the search is +through previous entries, otherwise through subsequent entries. +If <VAR>string</VAR> is found, then the +current history index is set to that entry, and the return value is 0. +Otherwise, nothing is changed, and a -1 is returned. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>history_search_pos</B> <I>(const char *string, int direction, int pos)</I> +<DD><A NAME="IDX26"></A> +Search for <VAR>string</VAR> in the history list, starting at <VAR>pos</VAR>, an +absolute index into the list. If <VAR>direction</VAR> is negative, the search +proceeds backward from <VAR>pos</VAR>, otherwise forward. Returns the absolute +index of the history element where <VAR>string</VAR> was found, or -1 otherwise. +</DL> + +</P> + + +<H3><A NAME="SEC15" HREF="history.html#TOC15">Managing the History File</A></H3> + +<P> +The History library can read the history from and write it to a file. +This section documents the functions for managing a history file. + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>read_history</B> <I>(const char *filename)</I> +<DD><A NAME="IDX27"></A> +Add the contents of <VAR>filename</VAR> to the history list, a line at a time. +If <VAR>filename</VAR> is <CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>. +Returns 0 if successful, or <CODE>errno</CODE> if not. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>read_history_range</B> <I>(const char *filename, int from, int to)</I> +<DD><A NAME="IDX28"></A> +Read a range of lines from <VAR>filename</VAR>, adding them to the history list. +Start reading at line <VAR>from</VAR> and end at <VAR>to</VAR>. +If <VAR>from</VAR> is zero, start at the beginning. If <VAR>to</VAR> is less than +<VAR>from</VAR>, then read until the end of the file. If <VAR>filename</VAR> is +<CODE>NULL</CODE>, then read from <TT>`~/.history'</TT>. Returns 0 if successful, +or <CODE>errno</CODE> if not. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>write_history</B> <I>(const char *filename)</I> +<DD><A NAME="IDX29"></A> +Write the current history to <VAR>filename</VAR>, overwriting <VAR>filename</VAR> +if necessary. +If <VAR>filename</VAR> is <CODE>NULL</CODE>, then write the history list to +<TT>`~/.history'</TT>. +Returns 0 on success, or <CODE>errno</CODE> on a read or write error. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, const char *filename)</I> +<DD><A NAME="IDX30"></A> +Append the last <VAR>nelements</VAR> of the history list to <VAR>filename</VAR>. +If <VAR>filename</VAR> is <CODE>NULL</CODE>, then append to <TT>`~/.history'</TT>. +Returns 0 on success, or <CODE>errno</CODE> on a read or write error. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>history_truncate_file</B> <I>(const char *filename, int nlines)</I> +<DD><A NAME="IDX31"></A> +Truncate the history file <VAR>filename</VAR>, leaving only the last +<VAR>nlines</VAR> lines. +If <VAR>filename</VAR> is <CODE>NULL</CODE>, then <TT>`~/.history'</TT> is truncated. +Returns 0 on success, or <CODE>errno</CODE> on failure. +</DL> + +</P> + + +<H3><A NAME="SEC16" HREF="history.html#TOC16">History Expansion</A></H3> + +<P> +These functions implement history expansion. + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I> +<DD><A NAME="IDX32"></A> +Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer +to a string (see section <A HREF="history.html#SEC2">History Expansion</A>). Returns: +<DL COMPACT> + +<DT><CODE>0</CODE> +<DD> +If no expansions took place (or, if the only change in +the text was the removal of escape characters preceding the history expansion +character); +<DT><CODE>1</CODE> +<DD> +if expansions did take place; +<DT><CODE>-1</CODE> +<DD> +if there was an error in expansion; +<DT><CODE>2</CODE> +<DD> +if the returned line should be displayed, but not executed, +as with the <CODE>:p</CODE> modifier (see section <A HREF="history.html#SEC5">Modifiers</A>). +</DL> + +<P> +If an error ocurred in expansion, then <VAR>output</VAR> contains a descriptive +error message. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> char * <B>get_history_event</B> <I>(const char *string, int *cindex, int qchar)</I> +<DD><A NAME="IDX33"></A> +Returns the text of the history event beginning at <VAR>string</VAR> + +<VAR>*cindex</VAR>. <VAR>*cindex</VAR> is modified to point to after the event +specifier. At function entry, <VAR>cindex</VAR> points to the index into +<VAR>string</VAR> where the history event specification begins. <VAR>qchar</VAR> +is a character that is allowed to end the event specification in addition +to the "normal" terminating characters. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(const char *string)</I> +<DD><A NAME="IDX34"></A> +Return an array of tokens parsed out of <VAR>string</VAR>, much as the +shell might. The tokens are split on the characters in the +<VAR>history_word_delimiters</VAR> variable, +and shell quoting conventions are obeyed. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, const char *string)</I> +<DD><A NAME="IDX35"></A> +Extract a string segment consisting of the <VAR>first</VAR> through <VAR>last</VAR> +arguments present in <VAR>string</VAR>. Arguments are split using +<CODE>history_tokenize</CODE>. +</DL> + +</P> + + +<H2><A NAME="SEC17" HREF="history.html#TOC17">History Variables</A></H2> + +<P> +This section describes the externally-visible variables exported by +the GNU History Library. + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>history_base</B> +<DD><A NAME="IDX36"></A> +The logical offset of the first entry in the history list. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>history_length</B> +<DD><A NAME="IDX37"></A> +The number of entries currently stored in the history list. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>history_max_entries</B> +<DD><A NAME="IDX38"></A> +The maximum number of history entries. This must be changed using +<CODE>stifle_history()</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> char <B>history_expansion_char</B> +<DD><A NAME="IDX39"></A> +The character that introduces a history event. The default is <SAMP>`!'</SAMP>. +Setting this to 0 inhibits history expansion. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> char <B>history_subst_char</B> +<DD><A NAME="IDX40"></A> +The character that invokes word substitution if found at the start of +a line. The default is <SAMP>`^'</SAMP>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> char <B>history_comment_char</B> +<DD><A NAME="IDX41"></A> +During tokenization, if this character is seen as the first character +of a word, then it and all subsequent characters up to a newline are +ignored, suppressing history expansion for the remainder of the line. +This is disabled by default. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> char * <B>history_word_delimiters</B> +<DD><A NAME="IDX42"></A> +The characters that separate tokens for \fBhistory_tokenize()\fP. +The default value is <CODE>" \t\n()<>;&|"</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> char * <B>history_no_expand_chars</B> +<DD><A NAME="IDX43"></A> +The list of characters which inhibit history expansion if found immediately +following <VAR>history_expansion_char</VAR>. The default is space, tab, newline, +carriage return, and <SAMP>`='</SAMP>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B> +<DD><A NAME="IDX44"></A> +The list of additional characters which can delimit a history search +string, in addition to space, TAB, <SAMP>`:'</SAMP> and <SAMP>`?'</SAMP> in the case of +a substring search. The default is empty. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B> +<DD><A NAME="IDX45"></A> +If non-zero, single-quoted words are not scanned for the history expansion +character. The default value is 0. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_linebuf_func_t * <B>history_inhibit_expansion_function</B> +<DD><A NAME="IDX46"></A> +This should be set to the address of a function that takes two arguments: +a <CODE>char *</CODE> (<VAR>string</VAR>) +and an <CODE>int</CODE> index into that string (<VAR>i</VAR>). +It should return a non-zero value if the history expansion starting at +<VAR>string[i]</VAR> should not be performed; zero if the expansion should +be done. +It is intended for use by applications like Bash that use the history +expansion character for additional purposes. +By default, this variable is set to <CODE>NULL</CODE>. +</DL> + +</P> + + +<H2><A NAME="SEC18" HREF="history.html#TOC18">History Programming Example</A></H2> + +<P> +The following program demonstrates simple use of the GNU History Library. + +</P> + +<PRE> +#include <stdio.h> +#include <readline/history.h> + +main (argc, argv) + int argc; + char **argv; +{ + char line[1024], *t; + int len, done = 0; + + line[0] = 0; + + using_history (); + while (!done) + { + printf ("history$ "); + fflush (stdout); + t = fgets (line, sizeof (line) - 1, stdin); + if (t && *t) + { + len = strlen (t); + if (t[len - 1] == '\n') + t[len - 1] = '\0'; + } + + if (!t) + strcpy (line, "quit"); + + if (line[0]) + { + char *expansion; + int result; + + result = history_expand (line, &expansion); + if (result) + fprintf (stderr, "%s\n", expansion); + + if (result < 0 || result == 2) + { + free (expansion); + continue; + } + + add_history (expansion); + strncpy (line, expansion, sizeof (line) - 1); + free (expansion); + } + + if (strcmp (line, "quit") == 0) + done = 1; + else if (strcmp (line, "save") == 0) + write_history ("history_file"); + else if (strcmp (line, "read") == 0) + read_history ("history_file"); + else if (strcmp (line, "list") == 0) + { + register HIST_ENTRY **the_list; + register int i; + + the_list = history_list (); + if (the_list) + for (i = 0; the_list[i]; i++) + printf ("%d: %s\n", i + history_base, the_list[i]->line); + } + else if (strncmp (line, "delete", 6) == 0) + { + int which; + if ((sscanf (line + 6, "%d", &which)) == 1) + { + HIST_ENTRY *entry = remove_history (which); + if (!entry) + fprintf (stderr, "No such entry %d\n", which); + else + { + free (entry->line); + free (entry); + } + } + else + { + fprintf (stderr, "non-numeric arg given to `delete'\n"); + } + } + } +} +</PRE> + + + +<H1><A NAME="SEC19" HREF="history.html#TOC19">Concept Index</A></H1> +<P> +Jump to: +<A HREF="#cindex_a">a</A> +- +<A HREF="#cindex_e">e</A> +- +<A HREF="#cindex_h">h</A> +<P> +<H2><A NAME="cindex_a">a</A></H2> +<DIR> +<LI><A HREF="history.html#IDX23">anchored search</A> +</DIR> +<H2><A NAME="cindex_e">e</A></H2> +<DIR> +<LI><A HREF="history.html#IDX2">event designators</A> +</DIR> +<H2><A NAME="cindex_h">h</A></H2> +<DIR> +<LI><A HREF="history.html#IDX3">history events</A> +<LI><A HREF="history.html#IDX1">history expansion</A> +<LI><A HREF="history.html#IDX22">History Searching</A> +</DIR> + +</P> + + +<H1><A NAME="SEC20" HREF="history.html#TOC20">Function and Variable Index</A></H1> +<P> +Jump to: +<A HREF="#vindex_a">a</A> +- +<A HREF="#vindex_c">c</A> +- +<A HREF="#vindex_g">g</A> +- +<A HREF="#vindex_h">h</A> +- +<A HREF="#vindex_n">n</A> +- +<A HREF="#vindex_p">p</A> +- +<A HREF="#vindex_r">r</A> +- +<A HREF="#vindex_s">s</A> +- +<A HREF="#vindex_u">u</A> +- +<A HREF="#vindex_w">w</A> +<P> +<H2><A NAME="vindex_a">a</A></H2> +<DIR> +<LI><A HREF="history.html#IDX7">add_history</A> +<LI><A HREF="history.html#IDX30">append_history</A> +</DIR> +<H2><A NAME="vindex_c">c</A></H2> +<DIR> +<LI><A HREF="history.html#IDX10">clear_history</A> +<LI><A HREF="history.html#IDX16">current_history</A> +</DIR> +<H2><A NAME="vindex_g">g</A></H2> +<DIR> +<LI><A HREF="history.html#IDX33">get_history_event</A> +</DIR> +<H2><A NAME="vindex_h">h</A></H2> +<DIR> +<LI><A HREF="history.html#IDX35">history_arg_extract</A> +<LI><A HREF="history.html#IDX36">history_base</A> +<LI><A HREF="history.html#IDX41">history_comment_char</A> +<LI><A HREF="history.html#IDX32">history_expand</A> +<LI><A HREF="history.html#IDX39">history_expansion_char</A> +<LI><A HREF="history.html#IDX17">history_get</A> +<LI><A HREF="history.html#IDX5">history_get_history_state</A> +<LI><A HREF="history.html#IDX46">history_inhibit_expansion_function</A> +<LI><A HREF="history.html#IDX13">history_is_stifled</A> +<LI><A HREF="history.html#IDX37">history_length</A> +<LI><A HREF="history.html#IDX14">history_list</A> +<LI><A HREF="history.html#IDX38">history_max_entries</A> +<LI><A HREF="history.html#IDX43">history_no_expand_chars</A> +<LI><A HREF="history.html#IDX45">history_quotes_inhibit_expansion</A> +<LI><A HREF="history.html#IDX24">history_search</A> +<LI><A HREF="history.html#IDX44">history_search_delimiter_chars</A> +<LI><A HREF="history.html#IDX26">history_search_pos</A> +<LI><A HREF="history.html#IDX25">history_search_prefix</A> +<LI><A HREF="history.html#IDX6">history_set_history_state</A> +<LI><A HREF="history.html#IDX19">history_set_pos</A> +<LI><A HREF="history.html#IDX40">history_subst_char</A> +<LI><A HREF="history.html#IDX34">history_tokenize</A> +<LI><A HREF="history.html#IDX18">history_total_bytes</A> +<LI><A HREF="history.html#IDX31">history_truncate_file</A> +<LI><A HREF="history.html#IDX42">history_word_delimiters</A> +</DIR> +<H2><A NAME="vindex_n">n</A></H2> +<DIR> +<LI><A HREF="history.html#IDX21">next_history</A> +</DIR> +<H2><A NAME="vindex_p">p</A></H2> +<DIR> +<LI><A HREF="history.html#IDX20">previous_history</A> +</DIR> +<H2><A NAME="vindex_r">r</A></H2> +<DIR> +<LI><A HREF="history.html#IDX27">read_history</A> +<LI><A HREF="history.html#IDX28">read_history_range</A> +<LI><A HREF="history.html#IDX8">remove_history</A> +<LI><A HREF="history.html#IDX9">replace_history_entry</A> +</DIR> +<H2><A NAME="vindex_s">s</A></H2> +<DIR> +<LI><A HREF="history.html#IDX11">stifle_history</A> +</DIR> +<H2><A NAME="vindex_u">u</A></H2> +<DIR> +<LI><A HREF="history.html#IDX12">unstifle_history</A> +<LI><A HREF="history.html#IDX4">using_history</A> +</DIR> +<H2><A NAME="vindex_w">w</A></H2> +<DIR> +<LI><A HREF="history.html#IDX15">where_history</A> +<LI><A HREF="history.html#IDX29">write_history</A> +</DIR> + +</P> +<P><HR><P> +This document was generated on 16 April 2001 using the +<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A> +translator version 1.52.</P> +</BODY> +</HTML> diff --git a/readline-4.2/doc/history.info b/readline-4.2/doc/history.info new file mode 100644 index 0000000..5db15f6 --- /dev/null +++ b/readline-4.2/doc/history.info @@ -0,0 +1,839 @@ +This is history.info, produced by makeinfo version 4.0 from +/usr/homes/chet/src/bash/readline-src/doc/hist.texinfo. + +INFO-DIR-SECTION Libraries +START-INFO-DIR-ENTRY +* History: (history). The GNU history library API +END-INFO-DIR-ENTRY + + This document describes the GNU History library, a programming tool +that provides a consistent user interface for recalling lines of +previously typed input. + + Copyright (C) 1988-2001 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: history.info, Node: Top, Next: Using History Interactively, Up: (dir) + +GNU History Library +******************* + + This document describes the GNU History library, a programming tool +that provides a consistent user interface for recalling lines of +previously typed input. + +* Menu: + +* Using History Interactively:: GNU History User's Manual. +* Programming with GNU History:: GNU History Programmer's Manual. +* Concept Index:: Index of concepts described in this manual. +* Function and Variable Index:: Index of externally visible functions + and variables. + + +File: history.info, Node: Using History Interactively, Next: Programming with GNU History, Prev: Top, Up: Top + +Using History Interactively +*************************** + + This chapter describes how to use the GNU History Library +interactively, from a user's standpoint. It should be considered a +user's guide. For information on using the GNU History Library in your +own programs, *note Programming with GNU History::. + +* Menu: + +* History Interaction:: What it feels like using History as a user. + + +File: history.info, Node: History Interaction, Up: Using History Interactively + +History Expansion +================= + + The History library provides a history expansion feature that is +similar to the history expansion provided by `csh'. This section +describes the syntax used to manipulate the history information. + + History expansions introduce words from the history list into the +input stream, making it easy to repeat commands, insert the arguments +to a previous command into the current input line, or fix errors in +previous commands quickly. + + History expansion takes place in two parts. The first is to +determine which line from the history list should be used during +substitution. The second is to select portions of that line for +inclusion into the current one. The line selected from the history is +called the "event", and the portions of that line that are acted upon +are called "words". Various "modifiers" are available to manipulate +the selected words. The line is broken into words in the same fashion +that Bash does, so that several words surrounded by quotes are +considered one word. History expansions are introduced by the +appearance of the history expansion character, which is `!' by default. + +* Menu: + +* Event Designators:: How to specify which history line to use. +* Word Designators:: Specifying which words are of interest. +* Modifiers:: Modifying the results of substitution. + + +File: history.info, Node: Event Designators, Next: Word Designators, Up: History Interaction + +Event Designators +----------------- + + An event designator is a reference to a command line entry in the +history list. + +`!' + Start a history substitution, except when followed by a space, tab, + the end of the line, `=' or `('. + +`!N' + Refer to command line N. + +`!-N' + Refer to the command N lines back. + +`!!' + Refer to the previous command. This is a synonym for `!-1'. + +`!STRING' + Refer to the most recent command starting with STRING. + +`!?STRING[?]' + Refer to the most recent command containing STRING. The trailing + `?' may be omitted if the STRING is followed immediately by a + newline. + +`^STRING1^STRING2^' + Quick Substitution. Repeat the last command, replacing STRING1 + with STRING2. Equivalent to `!!:s/STRING1/STRING2/'. + +`!#' + The entire command line typed so far. + + +File: history.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction + +Word Designators +---------------- + + Word designators are used to select desired words from the event. A +`:' separates the event specification from the word designator. It may +be omitted if the word designator begins with a `^', `$', `*', `-', or +`%'. Words are numbered from the beginning of the line, with the first +word being denoted by 0 (zero). Words are inserted into the current +line separated by single spaces. + + For example, + +`!!' + designates the preceding command. When you type this, the + preceding command is repeated in toto. + +`!!:$' + designates the last argument of the preceding command. This may be + shortened to `!$'. + +`!fi:2' + designates the second argument of the most recent command starting + with the letters `fi'. + + Here are the word designators: + +`0 (zero)' + The `0'th word. For many applications, this is the command word. + +`N' + The Nth word. + +`^' + The first argument; that is, word 1. + +`$' + The last argument. + +`%' + The word matched by the most recent `?STRING?' search. + +`X-Y' + A range of words; `-Y' abbreviates `0-Y'. + +`*' + All of the words, except the `0'th. This is a synonym for `1-$'. + It is not an error to use `*' if there is just one word in the + event; the empty string is returned in that case. + +`X*' + Abbreviates `X-$' + +`X-' + Abbreviates `X-$' like `X*', but omits the last word. + + If a word designator is supplied without an event specification, the +previous command is used as the event. + + +File: history.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction + +Modifiers +--------- + + After the optional word designator, you can add a sequence of one or +more of the following modifiers, each preceded by a `:'. + +`h' + Remove a trailing pathname component, leaving only the head. + +`t' + Remove all leading pathname components, leaving the tail. + +`r' + Remove a trailing suffix of the form `.SUFFIX', leaving the + basename. + +`e' + Remove all but the trailing suffix. + +`p' + Print the new command but do not execute it. + +`s/OLD/NEW/' + Substitute NEW for the first occurrence of OLD in the event line. + Any delimiter may be used in place of `/'. The delimiter may be + quoted in OLD and NEW with a single backslash. If `&' appears in + NEW, it is replaced by OLD. A single backslash will quote the + `&'. The final delimiter is optional if it is the last character + on the input line. + +`&' + Repeat the previous substitution. + +`g' + Cause changes to be applied over the entire event line. Used in + conjunction with `s', as in `gs/OLD/NEW/', or with `&'. + + +File: history.info, Node: Programming with GNU History, Next: Concept Index, Prev: Using History Interactively, Up: Top + +Programming with GNU History +**************************** + + This chapter describes how to interface programs that you write with +the GNU History Library. It should be considered a technical guide. +For information on the interactive use of GNU History, *note Using +History Interactively::. + +* Menu: + +* Introduction to History:: What is the GNU History library for? +* History Storage:: How information is stored. +* History Functions:: Functions that you can use. +* History Variables:: Variables that control behaviour. +* History Programming Example:: Example of using the GNU History Library. + + +File: history.info, Node: Introduction to History, Next: History Storage, Up: Programming with GNU History + +Introduction to History +======================= + + Many programs read input from the user a line at a time. The GNU +History library is able to keep track of those lines, associate +arbitrary data with each line, and utilize information from previous +lines in composing new ones. + + The programmer using the History library has available functions for +remembering lines on a history list, associating arbitrary data with a +line, removing lines from the list, searching through the list for a +line containing an arbitrary text string, and referencing any line in +the list directly. In addition, a history "expansion" function is +available which provides for a consistent user interface across +different programs. + + The user using programs written with the History library has the +benefit of a consistent user interface with a set of well-known +commands for manipulating the text of previous lines and using that text +in new commands. The basic history manipulation commands are similar to +the history substitution provided by `csh'. + + If the programmer desires, he can use the Readline library, which +includes some history manipulation by default, and has the added +advantage of command line editing. + + Before declaring any functions using any functionality the History +library provides in other code, an application writer should include +the file `<readline/history.h>' in any file that uses the History +library's features. It supplies extern declarations for all of the +library's public functions and variables, and declares all of the +public data structures. + + +File: history.info, Node: History Storage, Next: History Functions, Prev: Introduction to History, Up: Programming with GNU History + +History Storage +=============== + + The history list is an array of history entries. A history entry is +declared as follows: + + typedef void *histdata_t; + + typedef struct _hist_entry { + char *line; + histdata_t data; + } HIST_ENTRY; + + The history list itself might therefore be declared as + + HIST_ENTRY **the_history_list; + + The state of the History library is encapsulated into a single +structure: + + /* + * A structure used to pass around the current state of the history. + */ + typedef struct _hist_state { + HIST_ENTRY **entries; /* Pointer to the entries themselves. */ + int offset; /* The location pointer within this array. */ + int length; /* Number of elements within this array. */ + int size; /* Number of slots allocated to this array. */ + int flags; + } HISTORY_STATE; + + If the flags member includes `HS_STIFLED', the history has been +stifled. + + +File: history.info, Node: History Functions, Next: History Variables, Prev: History Storage, Up: Programming with GNU History + +History Functions +================= + + This section describes the calling sequence for the various functions +exported by the GNU History library. + +* Menu: + +* Initializing History and State Management:: Functions to call when you + want to use history in a + program. +* History List Management:: Functions used to manage the list + of history entries. +* Information About the History List:: Functions returning information about + the history list. +* Moving Around the History List:: Functions used to change the position + in the history list. +* Searching the History List:: Functions to search the history list + for entries containing a string. +* Managing the History File:: Functions that read and write a file + containing the history list. +* History Expansion:: Functions to perform csh-like history + expansion. + + +File: history.info, Node: Initializing History and State Management, Next: History List Management, Up: History Functions + +Initializing History and State Management +----------------------------------------- + + This section describes functions used to initialize and manage the +state of the History library when you want to use the history functions +in your program. + + - Function: void using_history (void) + Begin a session in which the history functions might be used. This + initializes the interactive variables. + + - Function: HISTORY_STATE * history_get_history_state (void) + Return a structure describing the current state of the input + history. + + - Function: void history_set_history_state (HISTORY_STATE *state) + Set the state of the history list according to STATE. + + +File: history.info, Node: History List Management, Next: Information About the History List, Prev: Initializing History and State Management, Up: History Functions + +History List Management +----------------------- + + These functions manage individual entries on the history list, or set +parameters managing the list itself. + + - Function: void add_history (const char *string) + Place STRING at the end of the history list. The associated data + field (if any) is set to `NULL'. + + - Function: HIST_ENTRY * remove_history (int which) + Remove history entry at offset WHICH from the history. The + removed element is returned so you can free the line, data, and + containing structure. + + - Function: HIST_ENTRY * replace_history_entry (int which, const char + *line, histdata_t data) + Make the history entry at offset WHICH have LINE and DATA. This + returns the old entry so you can dispose of the data. In the case + of an invalid WHICH, a `NULL' pointer is returned. + + - Function: void clear_history (void) + Clear the history list by deleting all the entries. + + - Function: void stifle_history (int max) + Stifle the history list, remembering only the last MAX entries. + + - Function: int unstifle_history (void) + Stop stifling the history. This returns the previous amount the + history was stifled. The value is positive if the history was + stifled, negative if it wasn't. + + - Function: int history_is_stifled (void) + Returns non-zero if the history is stifled, zero if it is not. + + +File: history.info, Node: Information About the History List, Next: Moving Around the History List, Prev: History List Management, Up: History Functions + +Information About the History List +---------------------------------- + + These functions return information about the entire history list or +individual list entries. + + - Function: HIST_ENTRY ** history_list (void) + Return a `NULL' terminated array of `HIST_ENTRY *' which is the + current input history. Element 0 of this list is the beginning of + time. If there is no history, return `NULL'. + + - Function: int where_history (void) + Returns the offset of the current history element. + + - Function: HIST_ENTRY * current_history (void) + Return the history entry at the current position, as determined by + `where_history()'. If there is no entry there, return a `NULL' + pointer. + + - Function: HIST_ENTRY * history_get (int offset) + Return the history entry at position OFFSET, starting from + `history_base' (*note History Variables::). If there is no entry + there, or if OFFSET is greater than the history length, return a + `NULL' pointer. + + - Function: int history_total_bytes (void) + Return the number of bytes that the primary history entries are + using. This function returns the sum of the lengths of all the + lines in the history. + + +File: history.info, Node: Moving Around the History List, Next: Searching the History List, Prev: Information About the History List, Up: History Functions + +Moving Around the History List +------------------------------ + + These functions allow the current index into the history list to be +set or changed. + + - Function: int history_set_pos (int pos) + Set the current history offset to POS, an absolute index into the + list. Returns 1 on success, 0 if POS is less than zero or greater + than the number of history entries. + + - Function: HIST_ENTRY * previous_history (void) + Back up the current history offset to the previous history entry, + and return a pointer to that entry. If there is no previous + entry, return a `NULL' pointer. + + - Function: HIST_ENTRY * next_history (void) + Move the current history offset forward to the next history entry, + and return the a pointer to that entry. If there is no next + entry, return a `NULL' pointer. + + +File: history.info, Node: Searching the History List, Next: Managing the History File, Prev: Moving Around the History List, Up: History Functions + +Searching the History List +-------------------------- + + These functions allow searching of the history list for entries +containing a specific string. Searching may be performed both forward +and backward from the current history position. The search may be +"anchored", meaning that the string must match at the beginning of the +history entry. + + - Function: int history_search (const char *string, int direction) + Search the history for STRING, starting at the current history + offset. If DIRECTION is less than 0, then the search is through + previous entries, otherwise through subsequent entries. If STRING + is found, then the current history index is set to that history + entry, and the value returned is the offset in the line of the + entry where STRING was found. Otherwise, nothing is changed, and + a -1 is returned. + + - Function: int history_search_prefix (const char *string, int + direction) + Search the history for STRING, starting at the current history + offset. The search is anchored: matching lines must begin with + STRING. If DIRECTION is less than 0, then the search is through + previous entries, otherwise through subsequent entries. If STRING + is found, then the current history index is set to that entry, and + the return value is 0. Otherwise, nothing is changed, and a -1 is + returned. + + - Function: int history_search_pos (const char *string, int direction, + int pos) + Search for STRING in the history list, starting at POS, an + absolute index into the list. If DIRECTION is negative, the search + proceeds backward from POS, otherwise forward. Returns the + absolute index of the history element where STRING was found, or + -1 otherwise. + + +File: history.info, Node: Managing the History File, Next: History Expansion, Prev: Searching the History List, Up: History Functions + +Managing the History File +------------------------- + + The History library can read the history from and write it to a file. +This section documents the functions for managing a history file. + + - Function: int read_history (const char *filename) + Add the contents of FILENAME to the history list, a line at a time. + If FILENAME is `NULL', then read from `~/.history'. Returns 0 if + successful, or `errno' if not. + + - Function: int read_history_range (const char *filename, int from, + int to) + Read a range of lines from FILENAME, adding them to the history + list. Start reading at line FROM and end at TO. If FROM is zero, + start at the beginning. If TO is less than FROM, then read until + the end of the file. If FILENAME is `NULL', then read from + `~/.history'. Returns 0 if successful, or `errno' if not. + + - Function: int write_history (const char *filename) + Write the current history to FILENAME, overwriting FILENAME if + necessary. If FILENAME is `NULL', then write the history list to + `~/.history'. Returns 0 on success, or `errno' on a read or write + error. + + - Function: int append_history (int nelements, const char *filename) + Append the last NELEMENTS of the history list to FILENAME. If + FILENAME is `NULL', then append to `~/.history'. Returns 0 on + success, or `errno' on a read or write error. + + - Function: int history_truncate_file (const char *filename, int + nlines) + Truncate the history file FILENAME, leaving only the last NLINES + lines. If FILENAME is `NULL', then `~/.history' is truncated. + Returns 0 on success, or `errno' on failure. + + +File: history.info, Node: History Expansion, Prev: Managing the History File, Up: History Functions + +History Expansion +----------------- + + These functions implement history expansion. + + - Function: int history_expand (char *string, char **output) + Expand STRING, placing the result into OUTPUT, a pointer to a + string (*note History Interaction::). Returns: + `0' + If no expansions took place (or, if the only change in the + text was the removal of escape characters preceding the + history expansion character); + + `1' + if expansions did take place; + + `-1' + if there was an error in expansion; + + `2' + if the returned line should be displayed, but not executed, + as with the `:p' modifier (*note Modifiers::). + + If an error ocurred in expansion, then OUTPUT contains a + descriptive error message. + + - Function: char * get_history_event (const char *string, int *cindex, + int qchar) + Returns the text of the history event beginning at STRING + + *CINDEX. *CINDEX is modified to point to after the event + specifier. At function entry, CINDEX points to the index into + STRING where the history event specification begins. QCHAR is a + character that is allowed to end the event specification in + addition to the "normal" terminating characters. + + - Function: char ** history_tokenize (const char *string) + Return an array of tokens parsed out of STRING, much as the shell + might. The tokens are split on the characters in the + HISTORY_WORD_DELIMITERS variable, and shell quoting conventions + are obeyed. + + - Function: char * history_arg_extract (int first, int last, const + char *string) + Extract a string segment consisting of the FIRST through LAST + arguments present in STRING. Arguments are split using + `history_tokenize'. + + +File: history.info, Node: History Variables, Next: History Programming Example, Prev: History Functions, Up: Programming with GNU History + +History Variables +================= + + This section describes the externally-visible variables exported by +the GNU History Library. + + - Variable: int history_base + The logical offset of the first entry in the history list. + + - Variable: int history_length + The number of entries currently stored in the history list. + + - Variable: int history_max_entries + The maximum number of history entries. This must be changed using + `stifle_history()'. + + - Variable: char history_expansion_char + The character that introduces a history event. The default is `!'. + Setting this to 0 inhibits history expansion. + + - Variable: char history_subst_char + The character that invokes word substitution if found at the start + of a line. The default is `^'. + + - Variable: char history_comment_char + During tokenization, if this character is seen as the first + character of a word, then it and all subsequent characters up to a + newline are ignored, suppressing history expansion for the + remainder of the line. This is disabled by default. + + - Variable: char * history_word_delimiters + The characters that separate tokens for \fBhistory_tokenize()\fP. + The default value is `" \t\n()<>;&|"'. + + - Variable: char * history_no_expand_chars + The list of characters which inhibit history expansion if found + immediately following HISTORY_EXPANSION_CHAR. The default is + space, tab, newline, carriage return, and `='. + + - Variable: char * history_search_delimiter_chars + The list of additional characters which can delimit a history + search string, in addition to space, TAB, `:' and `?' in the case + of a substring search. The default is empty. + + - Variable: int history_quotes_inhibit_expansion + If non-zero, single-quoted words are not scanned for the history + expansion character. The default value is 0. + + - Variable: rl_linebuf_func_t * history_inhibit_expansion_function + This should be set to the address of a function that takes two + arguments: a `char *' (STRING) and an `int' index into that string + (I). It should return a non-zero value if the history expansion + starting at STRING[I] should not be performed; zero if the + expansion should be done. It is intended for use by applications + like Bash that use the history expansion character for additional + purposes. By default, this variable is set to `NULL'. + + +File: history.info, Node: History Programming Example, Prev: History Variables, Up: Programming with GNU History + +History Programming Example +=========================== + + The following program demonstrates simple use of the GNU History +Library. + + #include <stdio.h> + #include <readline/history.h> + + main (argc, argv) + int argc; + char **argv; + { + char line[1024], *t; + int len, done = 0; + + line[0] = 0; + + using_history (); + while (!done) + { + printf ("history$ "); + fflush (stdout); + t = fgets (line, sizeof (line) - 1, stdin); + if (t && *t) + { + len = strlen (t); + if (t[len - 1] == '\n') + t[len - 1] = '\0'; + } + + if (!t) + strcpy (line, "quit"); + + if (line[0]) + { + char *expansion; + int result; + + result = history_expand (line, &expansion); + if (result) + fprintf (stderr, "%s\n", expansion); + + if (result < 0 || result == 2) + { + free (expansion); + continue; + } + + add_history (expansion); + strncpy (line, expansion, sizeof (line) - 1); + free (expansion); + } + + if (strcmp (line, "quit") == 0) + done = 1; + else if (strcmp (line, "save") == 0) + write_history ("history_file"); + else if (strcmp (line, "read") == 0) + read_history ("history_file"); + else if (strcmp (line, "list") == 0) + { + register HIST_ENTRY **the_list; + register int i; + + the_list = history_list (); + if (the_list) + for (i = 0; the_list[i]; i++) + printf ("%d: %s\n", i + history_base, the_list[i]->line); + } + else if (strncmp (line, "delete", 6) == 0) + { + int which; + if ((sscanf (line + 6, "%d", &which)) == 1) + { + HIST_ENTRY *entry = remove_history (which); + if (!entry) + fprintf (stderr, "No such entry %d\n", which); + else + { + free (entry->line); + free (entry); + } + } + else + { + fprintf (stderr, "non-numeric arg given to `delete'\n"); + } + } + } + } + + +File: history.info, Node: Concept Index, Next: Function and Variable Index, Prev: Programming with GNU History, Up: Top + +Concept Index +************* + +* Menu: + +* anchored search: Searching the History List. +* event designators: Event Designators. +* history events: Event Designators. +* history expansion: History Interaction. +* History Searching: Searching the History List. + + +File: history.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top + +Function and Variable Index +*************************** + +* Menu: + +* add_history: History List Management. +* append_history: Managing the History File. +* clear_history: History List Management. +* current_history: Information About the History List. +* get_history_event: History Expansion. +* history_arg_extract: History Expansion. +* history_base: History Variables. +* history_comment_char: History Variables. +* history_expand: History Expansion. +* history_expansion_char: History Variables. +* history_get: Information About the History List. +* history_get_history_state: Initializing History and State Management. +* history_inhibit_expansion_function: History Variables. +* history_is_stifled: History List Management. +* history_length: History Variables. +* history_list: Information About the History List. +* history_max_entries: History Variables. +* history_no_expand_chars: History Variables. +* history_quotes_inhibit_expansion: History Variables. +* history_search: Searching the History List. +* history_search_delimiter_chars: History Variables. +* history_search_pos: Searching the History List. +* history_search_prefix: Searching the History List. +* history_set_history_state: Initializing History and State Management. +* history_set_pos: Moving Around the History List. +* history_subst_char: History Variables. +* history_tokenize: History Expansion. +* history_total_bytes: Information About the History List. +* history_truncate_file: Managing the History File. +* history_word_delimiters: History Variables. +* next_history: Moving Around the History List. +* previous_history: Moving Around the History List. +* read_history: Managing the History File. +* read_history_range: Managing the History File. +* remove_history: History List Management. +* replace_history_entry: History List Management. +* stifle_history: History List Management. +* unstifle_history: History List Management. +* using_history: Initializing History and State Management. +* where_history: Information About the History List. +* write_history: Managing the History File. + + + +Tag Table: +Node: Top1136 +Node: Using History Interactively1716 +Node: History Interaction2223 +Node: Event Designators3642 +Node: Word Designators4569 +Node: Modifiers6198 +Node: Programming with GNU History7336 +Node: Introduction to History8061 +Node: History Storage9746 +Node: History Functions10857 +Node: Initializing History and State Management11841 +Node: History List Management12641 +Node: Information About the History List14191 +Node: Moving Around the History List15547 +Node: Searching the History List16536 +Node: Managing the History File18454 +Node: History Expansion20260 +Node: History Variables22155 +Node: History Programming Example24725 +Node: Concept Index27447 +Node: Function and Variable Index27933 + +End Tag Table diff --git a/readline-4.2/doc/history.ps b/readline-4.2/doc/history.ps new file mode 100644 index 0000000..4532736 --- /dev/null +++ b/readline-4.2/doc/history.ps @@ -0,0 +1,1658 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software +%%Title: history.dvi +%%Pages: 20 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -D 300 -t letter -o history.ps history.dvi +%DVIPSParameters: dpi=300, compressed +%DVIPSSource: TeX output 2001.04.16:1105 +%%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/IEn 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 IEn 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/IEn 256 array N 2 string 0 1 255{IEn 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 (history.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 cmtt9 9 26 +/Fc 26 123 df<EAFFFEA30F037E7E14>95 D<EA1FC0EA7FF0EA7078EA2018EA001CA2EA +07FC121FEA3C1C127012E0A3EA707C383FFF80EA0F8F11107E8F14>97 +D<12FCA2121CA513F8EA1DFEEA1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0E +EA1DFCEA0CF81217809614>I<EA03F8EA0FFEEA1C0EEA3804EA7000126012E0A4126012 +70EA380EEA1C1EEA0FFCEA03F00F107E8F14>I<137EA2130EA5EA07CEEA0FFEEA1C3EEA +301EEA700E12E0A61270EA301EEA383E381FEFC0EA07CF12177F9614>I<EA07E0EA0FF0 +EA1C38EA301CEA700CEAE00EA2EAFFFEA2EAE00012601270EA380EEA1C1EEA0FFCEA03F0 +0F107E8F14>I<13FCEA01FEEA038EEA07041300A3EA7FFE12FFEA0700ACEAFFF8A20F17 +7F9614>I<EA07CF381FFF80EA383B38301800EA701CA3EA3018EA3838EA3FF0EA37C000 +70C7FCA2EA3FF86C7E487EEA700F38E00380A438700700EA3C1EEA1FFCEA07F011197F8F +14>I<12FCA2121CA51378EA1DFEEA1F86EA1E07121CAA38FF8FE0A21317809614>I<1206 +120FA21206C7FCA4B4FCA21207ACEAFFF8A20D187C9714>I<12FCA2121CA5EBFF80A2EB +1C005B5B5BEA1DC0EA1FE0A2EA1E70EA1C38133C131C7F38FF1F80A21117809614>107 +D<EAFF80A21203B3EAFFFEA20F177E9614>I<EAFB8EEAFFDF383CF380A2EA38E3AA38FE +FBE013791310808F14>I<EAFC78EAFDFEEA1F86EA1E07121CAA38FF8FE0A21310808F14> +I<EA07C0EA1FF0EA3C78EA701CA2EAE00EA6EA701CEA783CEA3C78EA1FF0EA07C00F107E +8F14>I<EAFCF8EAFDFEEA1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1D +FCEA1CF890C7FCA6B47EA21218808F14>I<EA03E7EA0FF7EA1C1FEA300F1270487EA6EA +700F1230EA1C3FEA0FF7EA07C7EA0007A6EB3FE0A213187F8F14>I<EAFE1FEB7F80EA0E +E3380F810090C7FCA2120EA8EAFFF0A211107F8F14>I<EA0FD8EA3FF8EA603812C0A2EA +F000EA7F80EA3FF0EA07F8EA001CEA600612E012F0EAF81CEAFFF8EACFE00F107E8F14> +I<1206120EA4EA7FFC12FFEA0E00A8130EA3131CEA07F8EA01F00F157F9414>I<EAFC3F +A2EA1C07AB131F380FFFE0EA03E71310808F14>I<38FE3F80A2383C1E00EA1C1CA36C5A +A3EA0630EA0770A36C5AA311107F8F14>I<38FE3F80A238700700EA380EA3EA39CEA3EA +1B6C121AA3EA1E7CA2EA0E3811107F8F14>I<EA7E3FA2EA1E3CEA0E78EA07705B12036C +5A12037FEA0770EA0E781338487E38FE3F80A211107F8F14>I<38FE3F80A2381C0E005B +A2120E5BA212071330A2EA0370A25B1201A25BA3485A12730077C7FC127E123C11187F8F +14>I<EA3FFF5AEA700E131C1338EA007013E0EA01C0EA0380EA0700120EEA1C07123812 +70B5FCA210107F8F14>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fd cmti9 9 1 +/Fd 1 47 df<1230127812F0126005047C830C>46 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fe cmr9 9 24 +/Fe 24 122 df<EA07E0EA1C38EA381CEA300CEA700EEA6006A2EAE007AAEA6006A2EA70 +0EEA300CEA381CEA1C38EA07E010187F9713>48 D<12035AB4FC1207B3A2EA7FF80D187D +9713>I<EA01F8EA0704EA0C06EA180E123013001270126012E0EAE3E0EAE418EAE80CEA +F00EEAE0061307A31260A2EA7006EA300EEA180CEA0C38EA07E010187F9713>54 +D<1240EA7FFF13FEA2EA4004EA80081310A2EA00201340A21380120113005AA25A1206A2 +120EA5120410197E9813>I<EA07E0EA1818EA300CEA20061260A21270EA780CEA3E18EA +1F30EA07C0EA03E0EA0CF8EA307CEA601E130FEAC0071303A3EA6002EA2004EA1818EA07 +E010187F9713>I<EA07E0EA1C30EA3018EA700CEA600EEAE006A21307A31260EA700FEA +3017EA1827EA07C7EA00071306130E130C12701318EA6030EA3060EA0F8010187F9713> +I<39FFE1FFC0390E001C00AB380FFFFC380E001CAC39FFE1FFC01A1A7F991D>72 +D<EA0FC2EA1836EA200EEA600612C01302A3EAE0001270127EEA3FE0EA1FF8EA03FCEA00 +7E130E130713031280A3EAC0021306EAE004EAD818EA87E0101A7E9915>83 +D<EA1FC0EA38707FEA101C1200A2EA03FCEA1E1C1238127012E01480A2133CEA705F381F +8F0011107F8F13>97 D<EA07F8EA1C1C1238EA700813005AA612701304EA3808EA1C18EA +07E00E107F8F11>99 D<133F1307A9EA03E7EA0C17EA180F487E127012E0A6126012706C +5AEA1C373807C7E0131A7F9915>I<EA07C0EA1C30EA30181270EA600C12E0EAFFFCEAE0 +00A41260EA7004EA3808EA1C18EA07E00E107F8F11>I<EA0FCF3818718038303000EA70 +38A4EA30306C5AEA2FC00060C7FCA21270EA3FF013FC6C7EEA600FEAC003A4EA6006EA38 +1CEA07E011187F8F13>103 D<12FC121CA9137CEA1D87381E0380A2121CAB38FF9FF014 +1A809915>I<1218123CA212181200A612FC121CAE12FF081A80990A>I<EAFC7CEA1D8738 +1E0380A2121CAB38FF9FF01410808F15>110 D<EA07E0EA1C38EA300CEA700EEA6006EA +E007A6EA6006EA700EEA381CEA1C38EA07E010107F8F13>I<EAFCFCEA1D07381E038038 +1C01C0A2EB00E0A6EB01C01480381E0300EA1D06EA1CF890C7FCA6B47E1317808F15>I< +EAFC78EA1D9CEA1E1C1308EA1C00ABEAFF800E10808F0F>114 D<EA1F20EA60E0EA4020 +12C0A2EAF000127FEA3FC0EA1FE0EA00F0EA8070133012C01320EAF040EA8F800C107F8F +0F>I<1208A41218A21238EAFFC0EA3800A81320A41218EA1C40EA07800B177F960F>I<38 +FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2EA01C0A36C5A11107F8F14> +118 D<38FE3F80383C1E00EA1C086C5AEA0F306C5A6C5A12017F1203EA0270487E1208EA +181CEA381E38FC3FC012107F8F14>120 D<38FF0F80383C0700EA1C061304A26C5AA26C +5AA3EA03A0A2EA01C0A36C5AA248C7FCA212E112E212E4127811177F8F14>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Ff cmss10 10.95 2 +/Ff 2 42 df<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012F0 +AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40 +D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012 +07A213005AA2121E121C123C12385A5A0B2E7EA112>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fg cmbx10 12 27 +/Fg 27 123 df<EB07F8EB7FFC3801FC0E3803F01F48485AEA0FC0A3141E140C91C7FCA2 +ECFF80B6FCA2380FC01FB2397FF8FFF0A21C237FA220>12 D<90380FFF80137F3801FC1F +3803F03FEA07E0EA0FC0141FA7B6FCA2380FC01FB2397FF8FFF0A21C237FA220>I<EA07 +FE381FFF80383F07E06D7E130180121E1200A2133FEA03FDEA1F81EA3E01127C12F8A4EA +7C02EA7E0C391FF87F803807E03F19167E951C>97 D<B47EA2121FABEB87F0EBBFFCEBF0 +3EEBC01F9038800F8015C0140715E0A715C0A2140F15809038C01F00381E707E381C3FFC +38180FE01B237EA220>I<EBFF80000713E0380F83F0EA1F03123E127E387C01E090C7FC +12FCA6127C127EA2003E13186C1330380FC0603807FFC0C6130015167E9519>I<49B4FC +A2EB003FAB13FE3807FFBF380FC1FF48C67E003E7F127E127CA212FCA7127C127E123E6C +5B380F81FF3907FF3FE0EA01FC1B237EA220>I<13FE3807FF80380F83C0381E01E0383E +00F0127E007C13F8147812FCB512F8A200FCC7FCA3127CA26C1318A26C1330380F80E038 +03FFC0C6130015167E951A>I<EB1F80EBFFE03801F1F0EA03E31207EA0FC3EBC1E0EBC0 +00A6EAFFFEA2EA0FC0B2EA7FFCA214237EA212>I<9038FE0F803903FF9FC0380F83E338 +1F01F3391E00F000003E7FA5001E5BEA1F01380F83E0380BFF80D808FEC7FC0018C8FCA2 +121C381FFFE014FC6C13FF7E001F1480397C001FC00078130F00F81307A3007CEB0F806C +EB1F00381F807E6CB45A000113E01A217F951D>I<B47EA2121FABEB83F0EB8FFCEB987E +EBA03EEBC03FA21380AE39FFF1FFE0A21B237DA220>I<121E123FEA7F80A4EA3F00121E +C7FCA6EAFF80A2121FB2EAFFF0A20C247EA30F>I<B47EA2121FABECFF80A2EC3C001430 +14E0EB81C00183C7FC1386139E13BE13FFEBDF80EB8FC01307806D7E6D7E130080147E39 +FFE1FFC0A21A237EA21E>107 D<EAFF80A2121FB3ADEAFFF0A20C237EA20F>I<3AFF03F8 +03F890390FFE0FFE3A1F183F183F9039201F201F014001C01380A201801380AE3BFFF0FF +F0FFF0A22C167D9531>I<38FF03F0EB0FFC381F187EEB203EEB403FA21380AE39FFF1FF +E0A21B167D9520>I<13FF000713E0380F81F0381F00F8003E137C48133EA300FC133FA7 +007C133E007E137E003E137C6C13F8380F81F03807FFE0C6130018167E951D>I<38FF87 +F0EBBFFC381FF07EEBC01F9038800F8015C0A2EC07E0A715C0140FA2EC1F8001C01300EB +F07EEBBFFCEB8FE00180C7FCA8EAFFF0A21B207E9520>I<EBFE033807FF07380FC1CF38 +1F00DF48137F007E7FA2127C12FCA7127EA2003E5B6C5BEA0FC13807FF3FEA00FC1300A8 +903801FFE0A21B207E951E>I<38FF0F80EB1FE0381F33F013631343A2EBC1E0EB8000AD +EAFFF8A214167E9518>I<3807F980EA1FFFEA3807EA7003EAF001A26CC7FCB4FC13F8EA +7FFE6C7E6C1380120738003FC0EAC007130312E0A200F0138038FC0F00EAEFFEEAC3F812 +167E9517>I<487EA41203A21207A2120F123FB5FCA2EA1F80ABEB8180A5380F830013C3 +EA07FEEA01F811207F9F16>I<38FF81FFA2381F803FAF5C5C380FC1BF3907FF3FE0EA01 +FC1B167D9520>I<39FFF01FE0A2391FC00700000F1306EBE00E0007130C13F000035BA2 +6C6C5AA26C6C5AA2EBFEE0EB7EC0137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFF3 +FF83FCA23A1F807C00E0D80FC014C08001E013010007017F1380A2D803F0EB0300ECCF83 +01F81387D801F913C61487D800FD13ECEBFF0315FC017F5BEB7E01013E5BEB3C00A20118 +136026167F9529>I<39FFF07FC0A2390FC01C006C6C5A6D5A00035B6C6C5A3800FD8013 +7F91C7FC7F6D7E497EEB37E0EB67F013C33801C1F8380380FC48487E000E137F39FF81FF +E0A21B167F951E>I<39FFF01FE0A2391FC00700000F1306EBE00E0007130C13F000035B +A26C6C5AA26C6C5AA2EBFEE0EB7EC0137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC38 +13305BEA69C0EA7F80001FC8FC1B207F951E>I<387FFFF0A2387C07E038700FC0EA601F +00E0138038C03F005B137EC65A1201485AEBF030EA07E0120FEBC070EA1F80003F1360EB +00E0EA7E03B5FCA214167E9519>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fh cmtt10 12 27 +/Fh 27 119 df<13E0A538F0E1E0EAFCE7387EEFC0381FFF00EA07FCEA01F0EA07FCEA1F +FF387EEFC038FCE7E0EAF0E13800E000A513157D991A>42 D<1338137CA2136C13EEA313 +C6A2EA01C7A438038380A4380701C0A213FFA24813E0EA0E00A4481370387F01FC38FF83 +FE387F01FC171E7F9D1A>65 D<B512F8A3381C0038A51400A2130EA3EA1FFEA3EA1C0EA3 +90C7FCA3141CA5B512FCA3161E7E9D1A>69 D<38FF83FEA3381C0070AA381FFFF0A3381C +0070AB38FF83FEA3171E7F9D1A>72 D<B51280A33801C000B3A6B51280A3111E7C9D1A> +I<38FE03FE12FFA2381D8070A213C0121CA213E0A213601370A213301338A21318131CA2 +130C130EA21306A213071303A238FF81F0A21380171E7F9D1A>78 +D<EA0FFE383FFF804813C0EA7C07EA700100F013E0EAE000B1EAF001A2007013C0EA7C07 +EA7FFF6C1380380FFE00131E7D9D1A>I<EAFFFC13FF1480381C07C0EB01E0EB00F01470 +A414F0EB01E0EB07C0381FFF8014001480381C07C01301EB00E0A514E214E7A338FF807E +A21438181E7F9D1A>82 D<3803F1C0EA0FFDEA3FFFEA7C0FEA700312E01301A390C7FC12 +701278123FEA1FF0EA07FE3800FF80EB0FC0EB01E013001470A2126012E0A214E0EAF001 +38FC03C0B5128000EF1300EAE3FC141E7D9D1A>I<387FFFFEB5FCA238E0380EA5000013 +00B33803FF80A3171E7F9D1A>I<38FF01FEA3381C00706C13E0A2380701C0A213830003 +138013C700011300A2EA00EEA2137CA21338AA48B4FCA3171E7F9D1A>89 +D<387FFFC0B512E0A26C13C013047D7E1A>95 D<EA1FF0EA3FFC487EEA780FEA30073800 +0380A2137FEA07FF121FEA3F83EA7803127012E0A3EA7007EA780F383FFFFCEA1FFDEA07 +F016157D941A>97 D<12FEA3120EA6133EEBFF80000F13E0EBC1F0EB8070EB0038120E14 +1CA7000F13381478EB80F0EBC1E0EBFFC0000E138038063E00161E7F9D1A>I<EBFF8000 +0313C0000F13E0EA1F01383C00C04813001270A25AA51270A2007813707E381F01F0380F +FFE0000313C03800FE0014157D941A>I<EB1FC0A31301A6EA01F1EA07FDEA0FFFEA1E0F +EA3C07EA7803EA700112E0A7EA7003A2EA3807EA3E0F381FFFFCEA07FDEA01F1161E7E9D +1A>I<EA01F8EA07FF481380381E07C0EA3C01387800E01270481370A2B512F0A300E0C7 +FC1270A2007813707E381F01F0380FFFE0000313803800FE0014157D941A>I<EB07E0EB +1FF0EB3FF8EB7878EBF030EBE000A4387FFFF0B5FCA23800E000AF383FFF804813C06C13 +80151E7F9D1A>I<12FEA3120EA6133EEBFF80000F13C013C1EB80E01300120EAC38FFE3 +FE13E713E3171E7F9D1A>104 D<EA01C0487EA36C5AC8FCA5EA7FE0A31200AF387FFF80 +B512C06C1380121F7C9E1A>I<EAFFE0A31200B3A6B512E0A3131E7D9D1A>108 +D<EAFE3EEBFF80B512C0EA0FC1EB80E01300120EAC38FFE3FE13E713E317157F941A> +110 D<EA01F0EA07FCEA1FFF383E0F80EA3C07387803C0EA700138E000E0A6EAF0010070 +13C0EA7803383C0780EA3E0F381FFF00EA07FCEA01F013157D941A>I<387F81F838FF8F +FC387F9FFE3803FE1EEBF80CEBE000A25B5BAAEA7FFFB5FC7E17157F941A>114 +D<487E1203A6387FFFE0B5FCA238038000AA1470A43801C1E013FF6C1380EB3F00141C7F +9B1A>116 D<38FE0FE0A3EA0E00AD1301EA0F033807FFFE7EEA00FC17157F941A>I<387F +C7FC00FF13FE007F13FC380E00E0A3380701C0A338038380A33801C700A3EA00EEA3137C +A2133817157F941A>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fi cmbx12 13.14 41 +/Fi 41 123 df<EB07FCEB3FFF9038FE0780D803F013C03807E00FA2EA0FC0A3EC030091 +C7FCA3EC7FE0B6FCA2380FC007B3A239FFFC7FFEA21F267FA522>12 +D<123C127E12FFA4127E123C08087C8711>46 D<131C133C13FC12FFA21200B3AA387FFF +FCA216237CA21F>49 D<48B4FC000713C0381E07F0383803F8386001FC387C00FE12FE14 +FF147FA2127C003813FFC7FC14FEA2EB01FC14F8EB03F0EB07E01480EB0F00131E5B1370 +EBE003EA01C038038007380700061206380FFFFE5A5A4813FCB5FCA218237DA21F>I<48 +B4FC000713E0381E03F0383801F8003C13FC387E00FEA3123EEA1C01000013FCA2EB03F8 +EB07F0EB0FC03801FF00A2380007E0EB01F014F8EB00FC14FE14FFA21210127C12FEA214 +FEA2387C01FC007013F8383E07F0380FFFC00001130018237DA21F>I<14381478A214F8 +1301130313071306130C131C13381330136013E0EA01C01380EA03005A120E5A12185A12 +705AB612C0A2390001F800A790387FFFC0A21A237EA21F>I<0018130C001F137CEBFFF8 +14F014E014C01480EBFC000018C7FCA513FF001B13E0381F03F0381C00F8000813FCC712 +7EA3147FA2127812FCA3147E5A006013FC1270383801F8381E07E03807FFC03801FE0018 +237DA21F>I<EB1FC0EB7FF03801F0383803E00C3807803E000F137EEA1F005AA2007E13 +3C1400A338FE3FC0EB7FF0EB80F800FF13FCEB007C147E5A147FA4127EA4003E137E123F +6C137C380F80F83807C1F03803FFC038007F0018237DA21F>I<1230123C003FB512C0A2 +15804814005C5C38600018A200E05B485B5CC6485AA249C7FC1306130EA25BA2133CA25B +A213F8A41201A66C5A13601A257DA41F>I<141CA2143EA3147FA24A7EA39038019FC0A2 +9038031FE0140F01077FEB0607A2010C7F1403011C7FEB1801A2496C7EA2017FB5FCA290 +39E0007F8049133FA2484880151F00038190C7120FA2486E7ED8FFF090B51280A229257E +A42E>65 D<B612E015FC3903F800FFED1FC0ED07E06F7E6F7E82150082A2167FA31780AA +1700A316FEA24B5A5E4B5A4B5AED1FC0EDFF80B648C7FC15E029257EA42F>68 +D<B7FCA23903F8007FED0F8015071503A21501A3ED00C01406A21600A2140E141EEBFFFE +A2EBF81E140E1406A21660A291C7FC16C0A415011503A2ED0F80153FB7FCA223257EA428 +>I<B612FEA23803F800151F8181A281A3ED01801403A292C7FCA25C5C90B5FCA2EBF80F +8080A491C8FCAAB512F0A221257EA427>I<B500E0B512E0A23B03F80003F800AF90B6FC +A29038F80003B0B500E0B512E0A22B257EA430>72 D<B512E0A23803F800B3AFB512E0A2 +13257EA417>I<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E153E157CEC03FC +B6FCA220257EA425>76 D<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA36D1406A26D6C +130CA26D6C1318A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A291387E0300A3 +EC3F06A2EC1F8CA2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A235257EA43A> +I<01FF1380000713E3380F80F7381E001F48130F481307140312F81401A27E91C7FCB4FC +EA7FE013FE383FFFE014F86C13FE00077F6C1480C67E010313C0EB003FEC0FE01407A200 +C01303A315C07E6C13076C14806CEB0F0038FFC03E38E3FFF838803FE01B257DA422>83 +D<B53B81FFFE01FFF0A23D07F0001FC0000F007013066C6C010F5CA26F7E6C6C5EA26D49 +6C1338000017304B7E017F01195CA291388030FE013F5E829139C0607F01011F5E03E013 +8190280FE0C03F83C7FCA29139F1801FC3010715C617E69139FB000FEE010315EC02FF14 +FC6D486D5AA24A130301005DA24A130102785CA202306D5A3C257FA43F>87 +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<EAFFC0A2120FB3B0EAFFFCA20E26 +7EA511>108 D<26FF80FE137F903A83FF81FFC03B0F8E0FC707E0019813CC903A9007E8 +03F001A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E9733>I<38FF80FE903883FF80 +390F8E0FC0139890389007E013A0A213C0AF39FFFC7FFEA21F187E9722>I<EB7F803803 +FFF03807C0F8381F807E48487EA2007EEB1F80A200FE14C0A8007E1480A26CEB3F00A238 +1F807E6C6C5A3803FFF038007F801A187E971F>I<38FFC1FCEBCFFF390FFC1FC09038F0 +07E001C013F0140315F8140115FCA8EC03F8A215F0EBE0079038F00FE09038DC1F809038 +CFFF00EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38FF83E0EB8FF8380F8C7CEB90FC +13B013A01478EBE0005BAEEAFFFEA216187F9719>114 D<3807F8C0EA1FFFEA3C07EA70 +01EAF000A300FC1300B47EEA7FFC7F383FFF80000F13C0120338001FE01303EAC001A212 +E014C0EAF00338FC078038EFFF00EAC3FC13187E9718>I<13C0A41201A312031207120F +121FB512C0A2380FC000AC1460A63807E0C013E13801FF8038007E0013237FA218>I<39 +FFC07FE0A2000F1307B0140FA200071317EBE0673903FFC7FE38007F071F187E9722>I< +39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC0000 +5B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D187F9720>I<39FFF83FF0A239 +0FC00F003807E00E6C6C5A6D5A6C6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F8 +1361EBE0FC3801C07E3803807F3907003F8048131F39FFC07FF8A21D187F9720>120 +D<39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00 +005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21306A25B1230EA781CEAFC185B +1370EA68E0EA7FC0001FC8FC1D237F9720>I<387FFFF8A2387C03F0EA700738600FE000 +E013C0EB1F80EAC03F1400137EEA00FE5B485A0003130C13F0EA07E0120FEBC01C381F80 +18003F1338387F0078387E01F8B5FCA216187E971B>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fj cmsl10 10.95 30 +/Fj 30 122 df<903803F07C90381E0DC69038380F0FEB701E01E0130EEC0C003801C01C +A548485A007FB512C03903803800A448485AA6000E5BA648485A001E7F38FF8FFC20207E +9F1B>11 D<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF038038070A4 +380700E0A6380E01C0A6381C0380001E13C038FF0FF016207E9F19>I<903803F03F9039 +1E09E0809039380F80C09039701F01E0EBE03E021E13C02601C01CC7FCA548485A007FB6 +12803903803803A43A0700700700A6000EEBE00EA64848485A001EEBE01E3AFF8FF8FFC0 +23207E9F26>14 D<13201360A4383061C0383C4380380E4E00EA0778EA01E0A2EA07B8EA +1C9CEA708FEAE083EA0180A490C7FC12147AA117>42 D<13181338EA01F8EA0E701200A5 +13E0A6EA01C0A6EA0380A6EA07001380EAFFFC0E1E7B9D17>49 D<EB3F80EBC1E0380100 +70000213785AA2000F137C1380A2EB00781206C712F814F0EB01E014C0EB0380EB070013 +0E5B5B13605B485A380300201206000813405A383FFFC0481380B5FC161E7E9D17>I<13 +FFEA01FE1380A5EA0300A61206A65AA65AA65AA65AA6B4FCA2102D7EA10D>91 +D<13FFEA01FEEA0006A5130CA61318A61330A61360A613C0A6EA0180A6EAFF00A2102D82 +A10D>93 D<EA07F8EA0C0CEA1E061307121C1200A313FFEA07C7EA1E07EA3C0E127800F0 +1310A3131EEB2E2038784F40381F878014147D9317>97 D<13FEEA0383380E0780121C00 +38130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D9314>99 +D<1438EB01F8EB00781438A21470A614E013FCEA0382EA0601121CEA3C00383801C01278 +12F0A438E00380A412F0EA700738380F00381C37803807C7E015207D9F19>I<13F8EA07 +0EEA0E07381C038012381278127012F0B5FC00F0C7FCA25AA46C5AEA7002EA3004EA1C18 +EA07E011147D9314>I<EB07C0EB1C60EB30F01360EBE0E0EBC0001201A5485AEA3FFCEA +0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB3E11EBE1A33801C1C238 +0381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FCA21218121CEA0FFF14C0 +14E0381800F04813305A5AA3006013606C13C0381C0700EA07FC181F809417>I<13E012 +0712011200A2485AA6485AEB8F80EB90E013A0EBC0601380000713E01300A5380E01C0A6 +381C0380001E13C038FF8FF014207E9F19>I<EA01C0EA03E0A213C0EA0180C7FCA6EA03 +80121F12071203A2EA0700A6120EA65A121EEAFF800B1F7F9E0C>I<13E0120712011200 +A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B207F9F0C>108 +D<390387C07C391F9861863907A072073903C03403EB80380007EB7807EB0070A5000EEB +E00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80381F90E0EA07A0 +3803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014147E9319> +I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A214C0130300F013 +8038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807EC383801F01C6C487E140F +48487E1580A53903800F00A2140E141E141C5C38074070EB61C0011FC7FC90C8FCA3120E +A4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E01E0123C003813C0127812 +F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA0007A3130EA4131EEBFFC0 +131D7D9318>I<EA038E381FB380EA07C71203EB8300EA078090C7FCA5120EA65A121EEA +FFC011147E9312>I<EA01F9EA0607EA080312181301EA3802EA3C00121F13F0EA07FCEA +01FEEA001FEA40071303A212601306EAF004EAC818EA87E010147F9312>I<1380EA0100 +A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C9B12>I<38 +1C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E381F9F8011147B +9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12075BA25BEA0390 +13A013E05B5B120190C7FC15147C9318>I<39FF9FE1FC393C078070391C030060148015 +401580EA0E0790380D81001309EB19C21311380F21C4EA0720EB40C814E8EB80F0A26C48 +5A1460000213401E147C9321>I<381FF0FF3803C0780001137014403800E0C0EBE180EB +73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03E038FE07FC +18147F9318>I<390FF83F803901E00E00EBC00C140813E000005B143014205C13705CA2 +0171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000F1C8FC12E61278 +191D809318>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fk cmcsc10 10.95 3 +/Fk 3 118 df<EB7E083803819838070078000C1338001C13185A00781308127000F013 +00A5EB03FEEB00381270127812387E120C1207380380D838007F0817177E961D>103 +D<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2131C130E1307A2 +EB03A0EB01E0A213001460123800FE132016177E961C>110 D<38FF81FC381C00701420 +B0000C1340120E6C138038018300EA007C16177E961C>117 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fl cmbx12 17.28 36 +/Fl 36 122 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1007FB512F0A3 +1C2E7AAD28>49 D<EB3FE03801FFFE0007EBFF80D80F8013C0391E003FE00038EB1FF000 +7CEB0FF8007EEB07FCB4FC018013FEA21403A2EA7F00003E1307C7FC15FCA2EC0FF8A215 +F0EC1FE015C0EC3F80EC7F00147E14F8495A495A495A49C7FC011E130E5B133849131E49 +131C485A48C7123C48B512FC5A5A5A4814F8B6FCA31F2E7CAD28>I<1578A215FCA34A7E +A24A7EA24A7FA34A7FEC0E7F021E7FEC1C3FA202387F151F02787FEC700FA202E07F1507 +010180ECC003A249486C7EA201078191C7FC498191B6FCA24981011CC7123F013C810138 +141FA24981160F01F081491407A2484881486C1403B549B512FCA336317DB03D>65 +D<B712C016FC16FFD801FEC77FEE7FE0707E161F707EA2831607A4160FA25FA24C5A4C5A +4C5A4B485ADB1FFEC7FC90B65AEEFF8049C7EA3FE0EE0FF0EE07FCA2707E83821880A718 +005E5F16074C5A4C5AEEFFF0B812C094C7FC16F831317DB039>I<913A03FF800180023F +EBF00349B5EAFC0701079038003F0FD91FF8EB079FD93FC0EB01FFD9FF807F4848C8127F +4848153F0007161F49150F485A001F1607A2485A1703127FA24992C7FCA212FFA9127FA2 +7FEF0380123FA26C7E1707000F17006C7E6D150E0003161E6C6C151C6C6C6C1478D93FC0 +5CD91FF8EB03E0D907FFEB3F800101D9FFFEC7FCD9003F13F80203138031317CB03A>I< +B812E0A3C6903880007FEE0FF016031601A21600A21770A31738A21507A21700A35D5D5D +91B5FCA3EC803F818181A592C8FCACB612C0A32D317EB033>70 D<DA03FF1303027FEBF0 +0749B5EAFC0F01079038007E1FD91FF0EB0FBFD97FC0EB03FF49487F4848C87E485A0007 +824848815B001F82A2484881A2127FA24992C7FC12FFAA0307B512F8127F7FDB00011300 +123FA26C7EA2120F7F6C7E12036C7E6C6C7E6D6C5BD91FF8497ED907FFEB3E3F01019038 +FFFC1F6D6CEBF00F0203EB800335317CB03F>I<B6D8807FB512C0A3C60180C7387FC000 +B391B7FCA30280C7127FB3A3B6D8807FB512C0A33A317EB03F>I<B61280A3C6EB8000B3 +B3A7B61280A319317EB01E>I<B56C49B512C08080C66D90390003E0006E6E5AEBEFFC13 +E780EBE3FF01E17F01E07F6E7E143F816E7E6E7E6E7E14036E7E16806E13C0ED7FE0ED3F +F0151F16F8ED0FFCED07FEED03FF6F13818117C1EE7FE1EE3FF1EE1FF9EE0FFD160717FF +828282177F173FA2171F170F486C1507B500E014031701A23A317EB03F>78 +D<B712E016FEEEFF80C6D9800013E0EE3FF0EE0FF8EE07FCA2EE03FEA217FFA717FEA2EE +07FC17F8160FEE3FE0EEFFC091B6120016F80280C8FCB3A2B67EA330317EB037>80 +D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780A3481603 +A5C792C7FCB3AA017FB6FCA331307DAF38>84 D<B6D88003B51280A3C60180C73807C000 +715AB3AE137F4DC7FC80013F150EA26D6C5C6D6C5C6D6C5C6D6C495A903A00FF801FC002 +3FB55A020F49C8FC020013E039317EB03E>I<B500FC91B5FCA3000390C8EA03C06C1780 +6E14076C170080017F150EA26E141E013F151C6E143C011F153880010F5D8001075DA26E +130101035D6E13036D5D15806D4AC7FCA26F5A027F130EEDE01E023F131CEDF03C021F13 +3815F8020F5BA2EDFCF002075B15FF6E5BA26E5BA26E90C8FCA3157EA2153CA238317EB0 +3D>I<EBFFF0000313FF390F803F809038C00FE0486C6C7EA26E7ED80FC07FEA0780C7FC +A414FF131FEBFFE33803FC03EA0FF0EA1FC0123FEA7F80A2EAFF00A31407A2387F800D39 +3FC01DFE3A1FE078FFF03907FFE07FC6EB803F24207E9F27>97 D<EA01F812FFA3120F12 +07ADEC3FE0ECFFFC9038FBE07F9039FF001F8049EB0FC04914E049EB07F016F8A2ED03FC +A316FEA816FCA3ED07F8A216F06DEB0FE06D14C001E7EB3F809039C3C0FE00903880FFF8 +9038003FC027327EB12D>I<EB0FFF017F13C03901FC01F03803F0033907E007F8120FEA +1FC0003FEB03F0EC01E04848C7FCA312FFA8127FA36C6C131CA2001F14386C7E00071470 +3903F001E03901FC07C039007FFF00EB0FF81E207D9F24>I<ED0FC0EC07FFA3EC007F15 +3FADEB07F8EB3FFF9038FE07BF3903F801FF3907E0007F120F4848133F123FA2485AA312 +FFA8127FA36C7EA2121F6C6C137F000714FF2603F00313E03A01FC0F3FFE38007FFEEB0F +F027327DB12D>I<EB0FFC90387FFF803901FC0FC03903F003E03907E001F0000F14F839 +1FC000FC003F14FEA24848137E157FA212FFA290B6FCA20180C7FCA4127FA36C6C130712 +1F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0903807FE0020207E9F25>I<EB +01FE90380FFF8090381FC3C090387F07E09038FE0FF0120113FC1203EC07E0EC018091C7 +FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C327EB119>I<90391FF007C09039FFFE3F +E03A01F83F79F03907E00FC3000F14E19039C007E0E0001FECF000A2003F80A5001F5CA2 +000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9FC121EA2121F7F90B57E6C +14F015FC6C806C801680000F15C0003FC7127F007EEC1FE0007C140F00FC1407A4007EEC +0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0D8001F90C7FC242F7E9F +28>I<EA01F812FFA3120F1207ADEC07F8EC3FFEEC783F02C013809039F9801FC0EBFB00 +01FE14E05BA35BB3B500C3B5FCA328327DB12D>I<EA03C0487E487E487EA46C5A6C5A6C +5AC8FCA9EA01F8127FA31207B3A7B51280A311337DB217>I<EA01F812FFA3120F1207B3 +B3A6B512C0A312327DB117>108 D<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01 +E0FC02C090388300FE280FF1801FC6137F2607F30013CC01F602F8148001FC5CA3495CB3 +B500C3B5380FFFFCA33E207D9F43>I<3903F007F800FFEB3FFEEC783F02C013803A0FF1 +801FC03807F30001F614E013FCA35BB3B500C3B5FCA328207D9F2D>I<EB07FC90387FFF +C03901FC07F03903F001F848486C7E4848137E001F147F003F158049133F007F15C0A300 +FF15E0A8007F15C0A36C6CEB7F80A2001F15006C6C13FE00075C3903F803F83901FE0FF0 +39007FFFC0D907FCC7FC23207E9F28>I<3901F83FE000FFEBFFFC9038FBE07F9039FF00 +3F80D80FFEEB1FC06C48EB0FE04914F0ED07F8A216FC1503A216FEA816FC1507A216F8A2 +ED0FF06D14E06DEB1FC06DEB3F809039FBC0FE009038F8FFF8EC3FC091C8FCABB512C0A3 +272E7E9F2D>I<3803F03F00FFEB7FC09038F1C3E01487390FF30FF0EA07F6A29038FC07 +E0EC03C091C7FCA25BB2B512E0A31C207E9F21>114 D<3801FF86000713FEEA1F00003C +133E48131E140E12F8A36C90C7FCB47E13FC387FFFC06C13F0806C7F00077F00017FEA00 +3F01001380143F0060131F00E0130FA27E15007E6C131E6C131C38FF807838F3FFF038C0 +7F8019207D9F20>I<131CA5133CA3137CA213FC120112031207381FFFFEB5FCA2D803FC +C7FCB0EC0380A71201EC0700EA00FEEB7F0EEB3FFCEB07F0192E7FAD1F>I<D801F8EB07 +E000FFEB03FFA3000FEB003F0007141FB3153FA20003147FA26C6CEBDFF03A00FE039FFF +90387FFF1FEB0FFC28207D9F2D>I<B5EB1FFCA3D80FF8EB03C0000715806D1307000315 +007F0001140E7F6C5CA2EC803C017F1338ECC078013F1370ECE0F0011F5B14F1010F5B14 +F9903807FB80A214FF6D90C7FCA26D5AA26D5AA21478A226207E9F2B>I<B53A1FFFE03F +F8A33C0FF000FE0007806D150300076EEB0700816D5D00039138FF800EA26C6C486D5A15 +DF01FF153C6C9039038FE038A2D97F876D5A150702C714F0D93FCF6D5AECCE03D91FFEEB +F9C09138FC01FD16FF010F5D4A7EA26D486DC7FCA20103147E4A133EA26D48131C35207E +9F3A>I<3A7FFF807FFCA33A03FC000F006C6C131E6C6C5BEC803890387FC078013F5B90 +381FE1E090380FF3C0ECFF806D90C7FC6D5A13016D7E81815B903803DFE09038078FF081 +90380F07FC90381E03FEEB3C01496C7E4914804848EB7FC00003EC3FE026FFFC01B5FCA3 +28207F9F2B>I<B5EB1FFCA3D80FF8EB03C0000715806D1307000315007F0001140E7F6C +5CA2EC803C017F1338ECC078013F1370ECE0F0011F5B14F1010F5B14F9903807FB80A214 +FF6D90C7FCA26D5AA26D5AA21478A21470A214F05C1301007C5BEAFE035C49C8FC5BEAFC +1EEA787CEA3FF0EA0FC0262E7E9F2B>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fm cmsy10 10.95 1 +/Fm 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01 +800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15 +306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0 +D900FEC7FC272B7DA02E>13 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fn cmbx12 14.4 44 +/Fn 44 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<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F14 +80A249486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F080491303 +000181491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F8 +001FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EA +FE00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1F +F8B712E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF0 +0F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290 +C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F09039 +7FF007C0011FB512800107EBFE009038007FF028297CA831>I<B712E0A33903FC001FED +07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3EBFC0F1403A202 +01130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327297EA82C>69 +D<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A316001403A2140F +90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387FE003903907 +FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F484880484880484880485A82 +485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E6C7E6C7E6C +B45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5D8F00FB5FC +A3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835>I<B512F0 +A33803FC00B3B1B512F0A314297EA819>I<D8FFFCEC7FFF7F7F00036DEB01C080EBBFE0 +139F80EB8FF8EB87FCEB83FEEB81FF01801380147F15C0EC3FE0EC1FF0EC0FF8EC07FC14 +0315FEEC01FF6E1381ED7FC1ED3FE1ED1FF1150F16F9ED07FDED03FF8181167FA2163F16 +1F160F1607D8FFFE14031601A230297EA835>78 D<B612F815FF16C03A03FC003FE0ED07 +F0ED03F816FC150116FEA716FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B5 +12F0A327297EA82E>80 D<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A65E +4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170EA2 +1503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>82 D<9038FF80600003EBF0E0 +000F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7F +FCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E0 +1303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA8 +25>I<B500F0EBFFFEA3D803FCC7EA0380B3AA0001ED07007F0000150E137F6D143CD91F +C05B90390FF003F06DB55A01001480DA1FFCC7FC2F297EA834>85 +D<B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B017F140E80013F +5CA26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE0301015CECFF076D +91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA230297FA833>I<B5 +3CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E13016C604B1380 +02801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F160E17F09126F01C +0F131E010F161C033C13F8902707F838075BA2037813FC902703FC70035BA2913AFEE001 +FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E80021E141EA242297F +A845>I<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801 +FC3FEA0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B +7E9A21>97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F09038F001F8 +9038E000FCA2157EA2157FA8157EA315FCA29038F001F89038F803F090389C0FE090380F +FF80390E01FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A2 +48133E007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE00E3803F83C +3801FFF838003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807F03F380FC0 +0F381F8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E07FFF3801FF +E738007F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F130048EB0F80 +127E15C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003803907C007 +003803F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC7FEA03F813 +F01207143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<9038FF80F000 +03EBE3F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E133E003F137E +6C137C380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14C06C14E06C +14F0121F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC01F806CB512 +0038007FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E30FC001E413E0EB +E80701F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0 +A3EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I<EAFFE0A3 +120FB3B2EAFFFEA30F2A7EA912>108 D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0 +C1F8D80FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFF +E0A3331B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013 +D0A213E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E390FC01F80391F +800FC0393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A2391F800FC039 +0FC01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038EFFF809038FE +0FE0390FF803F09038F001F801E013FC140015FEA2157FA8157E15FEA215FC140101F013 +F89038F807F09038FC0FE09038EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25> +I<38FFC1F0EBC7FCEBC63E380FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B> +114 D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14 +C06C13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C137038FF01E038 +E7FFC000C11300161B7E9A1B>I<13E0A41201A31203A21207120F381FFFE0B5FCA2380F +E000AD1470A73807F0E0000313C03801FF8038007F0014267FA51A>I<39FFE07FF0A300 +0F1307B2140FA2000713173903F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FF +A3390FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0E +A2149EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B +0FE00FE001C02607F007EB0380A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC +2600FE1C5B15FE9039FF387E3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C +5AA2EC800701075CA22E1B7F9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F00 +3801FE1E00005BEB7F3814F86D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038 +F03F803901E01FC0D803C013E0EB800F39FFF03FFFA3201B7F9A23>I<39FFFC03FFA339 +0FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA214 +9EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA25CA21307003890C7FCEA7C0FEAFE0E131E13 +1C5BEA74F0EA3FE0EA0F8020277F9A23>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fo cmtt10 10.95 76 +/Fo 76 127 df<127012F8B012701200A5127012F8A31270051C779B18>33 +D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5 +12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18> +I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C38013C7A338F1C0001279123F +6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EBC7001271EA79DEEA3FFEEA1F +F8EA07E0EA01C0A3120011247D9F18>I<EA3803387C0780A2EAEE0F1400A25B131EA213 +3EEA7C3CA2EA387CEA0078A213F85B12015BA212035BA21207EB8380EB87C0120FEB0EE0 +A2121F121EA2123E383C07C0A23818038013247E9F18>I<EA01C0EA07E0487EEA0E7048 +7EA4EB73F813F313E3380FC1C0EBC38013831303381F0700EA3F87EA7B8EEA71CEEAE1FC +12E0137CEB7870A2EA70FE387FFFE0EA3FC7380F03C0151C7F9B18>I<1238127CA2127E +123E120EA3121CA2123812F812F012C0070E789B18>I<137013F0EA01E0EA03C0EA0780 +EA0F00121E121C5AA25AA45AA81270A47EA27E121E7EEA0780EA03C0EA01F0120013700C +24799F18>I<126012F012787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA01 +C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18>I<EA01C0A4EA41C138F1C780EA +FDDF387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C100EA01C0A41114 +7D9718>I<136013F0A7387FFFC0B512E0A26C13C03800F000A7136013147E9718>I<121C +123E127E127F123F121F1207120E121E127C12F81260080C788518>I<387FFFC0B512E0 +A26C13C013047E8F18>I<1230127812FCA2127812300606778518>I<1303EB0780A2130F +14005B131EA2133E133C137C1378A213F85B12015B12035BA212075B120F90C7FCA25A12 +1E123E123CA2127C127812F85AA2126011247D9F18>I<EA01F0EA07FC487EEA1F1FEA1C +0738380380007813C0EA7001A238E000E0A9EAF001007013C0A2EA780300381380381C07 +00EA1F1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203A21207120F123F12FF12FB12 +431203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA03F0EA0FFEEA3FFF387C0F80387003 +C0EAE00138F000E0A21260C7FCA2EB01C0A21303EB0780EB0F00131E5B5B5B485AEA07C0 +485A381E00E05AEA7FFFB5FC7E131C7E9B18>I<131F5B1377A213E7120113C7EA038712 +071307120E121E123C1238127812F0B512F8A338000700A6EB7FF0A3151C7F9B18>52 +D<137E48B4FC00071380380F83C0EA1E03121C3838018090C7FC5AA2EAE1F8EAE7FEB5FC +38FE078038F803C0EAF001EB00E05AA21270A3383801C0EA3C03381E0780380FFF006C5A +EA01F8131C7E9B18>54 D<1230127812FCA2127812301200A81230127812FCA212781230 +0614779318>58 D<1218123C127EA2123C12181200A81218123C127EA2123E121E120E12 +1C123C127812F01260071A789318>I<14C0EB03E01307EB1FC0EB3F80EBFE00485AEA07 +F0485AEA3F8048C7FC12FCA2127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E013 +03EB00C013187E9918>I<387FFFC0B512E0A26C13C0C8FCA4387FFFC0B512E0A26C13C0 +130C7E9318>I<126012F87E127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E0A2 +EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FC5A126013187E9918>I<EA0F +F0EA3FFC48B4FCEA700F38F00380A2EA600738000F00133E5BEA01F05B485AA55BC8FCA5 +EA0380487EA36C5A111C7D9B18>I<137013F8A213D8A2EA01DCA3138CEA038EA4EA0707 +A5380FFF80A3EA0E03381C01C0A3387F07F000FF13F8007F13F0151C7F9B18>65 +D<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114 +C01303EB0F80387FFF00485AEA7FF8141C7F9B18>68 D<B512F0A3381C0070A41400A213 +0EA3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A3151C7F9B18>I<B512F0A3381C0070 +A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA7EAFFC0A3141C7E9B18>I<387F07F038FF +8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F0151C7F9B18 +>72 D<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<EAFFC0 +A3001CC7FCB114E0A5B5FCA3131C7E9B18>76 D<387E07F038FF0FF8387F07F0381D81C0 +A313C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03 +151C7F9B18>78 D<EA0FFE383FFF804813C0EA7803EA700100F013E0EAE000B0EAF00100 +7013C0EA7C07EA7FFF6C1380380FFE00131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01 +E013001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I< +EA7FF8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF005BA2EA1C0F7FEB +0380A5149CA3387F01F8EAFF81387F00F0161C7F9B18>82 D<3803F1C0EA1FFF5AEA7C0F +EA7003EAE001A390C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A2 +126012E0130100F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA2 +38E07038A400001300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F +01380783C03803FF806C1300EA007C171C809B18>I<38FE03F8EAFF07EAFE03381C01C0 +EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3EA00F8A21370A9EA01FC487E6C +5A151C7F9B18>89 D<EAFFF8A3EAE000B3ACEAFFF8A30D24779F18>91 +D<126012F0A27E1278127C123CA2123E121E121F7EA27F12077F1203A27F12017F12007F +1378A2137C133C133E131EA2131F7F14801307A2EB030011247D9F18>I<EAFFF8A3EA00 +38B3ACEAFFF8A30D247F9F18>I<EA0180EA07C0EA1FF0EA7EFCEAF83EEAE00E0F067C9B +18>I<387FFFC0B512E0A26C13C013047E7F18>I<1206121E123E12381270A212E0A312F8 +12FC127CA21238070E789E18>I<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF12 +07121FEA7F03127812E0A3EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>I<127E +12FE127E120EA5133EEBFF80000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80 +E013C1EBFFC0000E138038063E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838 +030048C7FCA25AA61270EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I< +EB1F80133F131F1303A5EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007 +A2EA380FEA3C1F381FFFF0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA +3E0F38380780EA7003A238E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF80 +00071300EA01F812147D9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0 +B5FCA23801C000AEEA7FFFA3131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00 +487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F03870 +0070481338A4007813F0EA7E03381FFFC06C13803801FC00151F7F9318>I<127E12FE12 +7E120EA5133EEBFF80000F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC17 +1C809B18>I<EA0380EA07C0A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C +18>I<127E12FE127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA +0E0F7FEB038014C0387FC7F812FF127F151C7F9B18>107 D<EAFFC0A31201B3A4B51280 +A3111C7D9B18>I<38F9C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E +7EEB3E3E1714809318>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC7 +FC38FFE7FE387FC7FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A2 +38E000E0A5EAF001007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318 +>I<EA7E3E38FEFF80007F13C0380FC1E01380EB0070120E1438A6000F1370A2EB80E013 +C1EBFFC0000E1380EB3E0090C7FCA7EA7FC0487E6C5A151E809318>I<3801F380EA07FB +EA1FFFEA3E1FEA380FEA7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3 +EA0003A7EB1FF0EB3FF8EB1FF0151E7E9318>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060 +EBC0005BA290C7FCA9EAFFFC7F5B14147E9318>I<EA07F7EA3FFF5AEA780FEAE007A300 +7CC7FCEA7FE0EA1FFCEA03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F0 +11147D9318>I<487E1203A4387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C +1380EB3E0013197F9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C +13FE3801FCFC1714809318>I<387F8FF000FF13F8007F13F0381C01C0380E0380A33807 +0700A3138FEA038EA3EA01DCA3EA00F8A2137015147F9318>I<38FF07F8138F13073838 +00E0A4381C01C0137113F9A213D9EA1DDD000D1380A3138DEA0F8FA23807070015147F93 +18>I<387F8FF0139F138F380F0700EA078EEA039EEA01DC13F81200137013F07FEA01DC +EA039E138EEA0707000E1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000 +FF13F8007F13F0380E01C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013 +DC1378A31370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA2 +387001E0EB03C0EB078038000F00131E5B13F8485AEA03C0485A380F0070121E5A5AB512 +F0A314147F9318>I<EB07E0131F137FEB780013E0AB1201EA7FC0485AA26C7EEA01E012 +00AB1378EB7FE0131F130713247E9F18>I<126012F0B3B012600424769F18>I<127CB4FC +13C01203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0005BABEA03C012FF90C7FC127C13247E +9F18>I<EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA60C00F067C9B18>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fp cmr10 10.95 74 +/Fp 74 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7 +B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701 +A290C7FCA6B512E0EA0700B2383FC3FC1620809F19>I<EB3FE013E0EA01C1EA0381EA07 +00A8B5FCEA0700B2383FE7FC1620809F19>I<90381F81F89038F04F043901C07C063903 +80F80FEB00F05A0270C7FCA6B7FC3907007007B23A3FE3FE3FE02320809F26>I<EA7038 +EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008A2EA2010EA40200F0E7F9F17>34 +D<127012F812FCA212741204A31208A21210A212201240060E7C9F0D>39 +D<13401380EA01005A12061204120C5AA212381230A212701260A412E0AC1260A4127012 +30A212381218A27E120412067E7EEA008013400A2E7BA112>I<7E12407E12307E120812 +0C7EA212077EA213801201A413C0AC1380A412031300A25A1206A25A120812185A12205A +5A0A2E7EA112>I<127012F012F8A212781208A31210A31220A21240050E7C840D>44 +D<EAFFF0A20C02808A0F>I<127012F8A3127005057C840D>I<EA03F0EA0E1C487EEA1806 +EA380738700380A400F013C0AD00701380A3EA780700381300EA1806EA1C0E6C5AEA03F0 +121F7E9D17>48 D<13801203120F12F31203B3A6EA07C0EA7FFE0F1E7C9D17>I<EA03F0 +EA0C1CEA100E487E00401380128000F013C0EAF803A3EA200712001480A2EB0F00130E5B +5B5B13605B485A48C7FC000613405A5A00101380EA3FFF5AB5FC121E7E9D17>I<EA03F0 +EA0C1CEA100EEA200F007813801307A2EA380F12001400A2131E131C1370EA07F0EA003C +130E130FEB0780A214C0122012F8A300F013801240EB0F00EA200EEA183CEA07F0121F7E +9D17>I<1306A2130EA2131E132EA2134E138EA2EA010E1202A212041208A212101220A2 +124012C0B512F038000E00A7EBFFE0141E7F9D17>I<EA1803EA1FFE5B5B13E00010C7FC +A6EA11F0EA161CEA180EEA10071480EA0003A214C0A3127012F0A200E013801240EB0700 +EA20066C5AEA0838EA07E0121F7E9D17>I<137CEA0182EA0701380E0380EA0C07121838 +38030090C7FC12781270A2EAF1F0EAF21CEAF406EAF807EB0380A200F013C0A51270A214 +801238EB07001218EA0C0E6C5AEA01F0121F7E9D17>I<1240387FFFE014C0A238400080 +38800100A21302485AA25B5BA25BA21360A213E05B1201A41203A76C5A131F7E9D17>I< +EA03F0EA0C0CEA1006EA3003382001801260A3127038780300123EEA3F06EA1FC8EA0FF0 +EA03F8487EEA0C7EEA103F38300F80EA6007EB01C012C01300A31480EA600100201300EA +1002EA0C0CEA03F0121F7E9D17>I<EA03F0EA0E18487E487E13071270EB038012F0A214 +C0A5EA7007A21238EA180BEA0E13EA03E338000380A3EB07001230EA7806130EEA700CEA +2018EA1070EA0FC0121F7E9D17>I<127012F8A312701200AA127012F8A3127005147C93 +0D>I<127012F8A312701200AA127012F012F8A212781208A31210A31220A21240051D7C +930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA2EBC03EEB801EA248B5FC +EB000FA20002EB0780A348EB03C0A2120C001E14E039FF801FFE1F207F9F22>65 +D<B512E0380F0078141EA2801580A515005C141E147CEBFFF0EB007C141FEC0F80EC07C0 +140315E0A515C014071580EC0F00143EB512F01B1F7E9E20>I<90380FE0109038381C30 +9038E002703803C00139078000F048C71270121E15305A1510127C127800F81400A91278 +007C1410123CA26C1420A27E6C6C13406C6C13803900E00300EB380CEB0FF01C217E9F21 +>I<B512F83807801EEC0780EC03C0EC01E0EC00F015701578A2153CA3153EA8153CA215 +7C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F7F9E23>I<B61280380F000F14 +031401140015C01540A314401500A214C0130113FF130113001440A3EC0020A31540A315 +C01401EC0380140FB6FC1B1F7E9E1F>I<B61280380780071401A2140015C01540A4EC20 +00A3146014E013FF138014601420A391C7FCA87FEAFFFE1A1F7F9E1E>I<90380FE02090 +387818609038E004E03803800238070001481300001E1460A25A1520127C127800F81400 +A7EC7FFCEC03E000781301127C123CA27EA27E7E380380023900E0046090387818209038 +0FE0001E217D9F24>I<39FFF07FF8390F000780AD90B5FCEB0007AF39FFF07FF81D1F7E +9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<EAFFF8EA0F8090C7FCB21402A41406 +1404A2140C141C147CB512FC171F7E9E1C>76 D<B46CEB07FE000715C0A2D805C0130BA2 +D804E01313A301701323A26D1343A36D1383A290380E0103A3EB0702A3EB0384A2EB01C8 +A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>I<B4EB0FF8390F8003E0EC0080EA0B +C0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03C0EB01E0A2EB00F01478A2143C141E +A2140F1407A214031401123E38FF80001D1F7E9E22>I<EB1FE0EB70383801C00E48487E +39070003804814C0001EEB01E048EB00F0A2007C14F8A20078147800F8147CA900781478 +007C14F8A2003C14F0003E1301001E14E06CEB03C06C148039038007003801E01E380070 +38EB1FE01E217E9F23>I<B512E0380F007C141E80EC0780A215C0A41580A2EC0F00141E +147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<EB1FE0EB70383801C00E48487E39070003 +804814C0001EEB01E0003E14F0003C1300007C14F8A20078147800F8147CA90078147800 +7C14F8A2003C14F0383E0781391E0841E0390F1023C00007148039039017003801D01E39 +00783804EB1FF8EB001CEC0C0CEC0E1CEC0FF8A2140715F0EC01E01E297E9F23>I<B512 +E0380F80780007131E80EC0780A215C0A41580A2EC0F00141E1478EBFFE0EB8060143814 +3C141C141EA3141FA315011581140F390FC0078239FFFC03C4C812F820207F9E22>I<38 +03F040380C0CC0EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF86CB4 +FC00071380C613C0EB1FE013031301EB00F014707EA46C136014E06C13C038F8018038C6 +0300EA81FC14217E9F19>I<007FB512E038780F010060EB006000401420A200C0143000 +801410A400001400B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC0080B3 +A46CEB01001380120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003FE39 +1F8000F86CC7126015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213F8EB +7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF07FF8 +1FF03B1F000FC007C06C903907800180170015C001805C00071502EC09E013C000035DEC +19F01410D801E05CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C144090 +383D000F133F6D5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<12FFA2 +12C0B3B3A512FFA2082D7CA10D>91 D<EA0804EA1008EA2010A2EA4020A2EA8040A3EAB8 +5CEAFC7EA2EA7C3EEA381C0F0E7A9F17>I<12FFA21203B3B3A512FFA2082D80A10D>I<12 +0812101220A21240A21280A312B812FCA2127C1238060E7D9F0D>96 +D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA0F8EEA1E0E1238127800F01310A313 +1E127838386720380F83C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00 +C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C15207E9F +19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0A61270127800381380A2381C +0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112 +381278127012F0A61270A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA +0E1C487E487EA238700380A212F0B5FC00F0C7FCA41270A26C1380A2381C0100EA0706EA +01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE010 +20809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33 +E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C13 +C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A212 +1CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F +9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA61 +80EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0 +EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12FC +121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D019018001EEBE01CA200 +1C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF +8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A60070 +13E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA1C7CEAFD87381E0180 +14C0381C00E014F014701478A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7FC +A8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03EA38011278127012F0A61270 +12781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18 +EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE000 +127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F147F +9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F +9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83F8 +383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3 +132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807 +04138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB40081E147F +9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F0137013 +7813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC16147F9318>I< +38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8 +A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E1260 +EA401C133813781370EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA7006 +130EEAFFFE10147F9314>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fq cmbx12 20.736 13 +/Fq 13 122 df<DB1FFC14C00203B5EAC001021FECF003027FECFC07903B01FFFC00FE0F +010701C0EB1F9F4948C7EA07FFD93FF880494814004948157F485B4A153F4890C9121F48 +5A000F170F5B001F1707A2485A1803A2127FA24993C8FCA212FFAA041FB61280127FA27F +DC0001EBC000123FA36C7EA26C7EA26C7E7E6C7F806C7F6D6C5CEB3FFCD90FFF5C6D01C0 +EB1FBF010101FCEBFF1F6D6CB5EAFE0F021FECF8030203ECE0009126001FFEC9FC413D7B +BB4C>71 D<B6D8F803B612E0A426007FF0C70001EBC000B3A491B8FCA402F0C71201B3A7 +B6D8F803B612E0A4433B7CBA4C>I<B612FEA426007FF0C9FCB3ADEF03C0A517071880A3 +170FA3171FA2173F177F17FF5E04071300163FB9FCA4323B7DBA3A>76 +D<B500F00207B512E0808080D8007F92390007E0006E6F5A81017B7F81137901787F6E7E +6E7E81141F6E7E6E7F6E7F82806E7F6F7E6F7E826F7E816F13806F13C017E06F13F081EE +7FF8EE3FFC17FEEE1FFF827013837013C318E37013F382EF7FFBEF3FFFA283838383A283 +83187F183FA201FC161FB500FC150F18071803A2433B7CBA4C>78 +D<B600F80107B512E0A426007FF0C83807E000725AB3B3A3013F4C5AA280011F4CC7FCA2 +6D6C151E0107163E6E5D6D6C5D6D6D13019026007FE0EB0FE0DA3FFCEB7FC0020FB65A02 +034AC8FCDA007F13F003071380433C7DBA4A>85 D<EB3FFE48B512E0000714F8390FE007 +FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F38 +03FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F +0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4 +FC021F13F0027F13FC9138FC03FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF0 +17F8A2EE07FCA317FEA917FCA3160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EB +FF009039F0FC07FE91387FFFF8D9E01F13E09026C003FEC7FC2F3C7DBB36>I<EA01E0EA +07F8487EA2487EA46C5AA26C5AEA01E0C8FCAB13FE127FA412071203B3AAB512F0A4143D +7DBC1A>105 D<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE0D807F8EB0FF0 +48486D7EA248486D7E003F81A248486D7EA400FF1680A9007F1600A36C6C495AA2001F5D +6D1307000F5D6C6C495AD803FEEB3FE03A00FF80FF806DB5C7FC010F13F8010113C02926 +7DA530>111 D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F00079038E0FFC000 +035BEBFD80A201FFEB7F809138003F00151E92C7FC5BB3A3B512FCA422267DA528>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 659 a Fq(GNU)33 b(History)f(Library)p 75 709 +1800 17 v 960 757 a Fp(Edition)16 b(4.2,)e(for)h Fo(History)f(Library)g +Fp(V)l(ersion)i(4.2.)1692 811 y(Apr)f(2001)75 2467 y +Fn(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 217 a Fp(This)21 b(do)q(cumen)o(t)g(describ)q(es)h(the)f +(GNU)f(History)g(library)l(,)j(a)d(programming)g(to)q(ol)g(that)g(pro)o +(vides)h(a)75 271 y(consisten)o(t)15 b(user)h(in)o(terface)f(for)g +(recalling)i(lines)f(of)f(previously)i(t)o(yp)q(ed)e(input.)75 +339 y(Published)i(b)o(y)f(the)f(F)l(ree)g(Soft)o(w)o(are)f(F)l +(oundation)75 394 y(59)h(T)l(emple)h(Place,)f(Suite)i(330,)75 +448 y(Boston,)d(MA)h(02111)f(USA)75 516 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 570 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 638 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 692 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 747 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 +814 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 869 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 924 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 Fm(\015)h Fp(1988-2001)f(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 Fp(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o +(ely)1007 b(1)75 149 y Fl(1)41 b(Using)26 b(History)h(In)n(teractiv)n +(ely)137 289 y Fp(This)17 b(c)o(hapter)g(describ)q(es)h(ho)o(w)e(to)g +(use)h(the)g Fk(gnu)f Fp(History)g(Library)h(in)o(teractiv)o(ely)l(,)h +(from)e(a)g(user's)75 344 y(standp)q(oin)o(t.)38 b(It)21 +b(should)h(b)q(e)g(considered)g(a)f(user's)g(guide.)38 +b(F)l(or)21 b(information)g(on)g(using)h(the)f Fk(gnu)75 +398 y Fp(History)c(Library)h(in)h(y)o(our)e(o)o(wn)g(programs,)f(see)i +(Chapter)f(2)h([Programming)e(with)i(GNU)f(History],)75 +453 y(page)e(5.)75 600 y Fn(1.1)33 b(History)22 b(Expansion)137 +704 y Fp(The)c(History)g(library)h(pro)o(vides)f(a)f(history)h +(expansion)h(feature)e(that)h(is)g(similar)h(to)e(the)h(history)75 +759 y(expansion)12 b(pro)o(vided)g(b)o(y)f Fo(csh)p Fp(.)18 +b(This)11 b(section)h(describ)q(es)g(the)g(syn)o(tax)e(used)h(to)g +(manipulate)h(the)f(history)75 814 y(information.)137 +888 y(History)k(expansions)h(in)o(tro)q(duce)h(w)o(ords)d(from)g(the)i +(history)f(list)h(in)o(to)f(the)h(input)g(stream,)e(making)75 +943 y(it)h(easy)g(to)g(rep)q(eat)g(commands,)g(insert)h(the)f(argumen)o +(ts)f(to)h(a)g(previous)h(command)f(in)o(to)g(the)g(curren)o(t)75 +998 y(input)h(line,)h(or)d(\014x)i(errors)e(in)i(previous)g(commands)f +(quic)o(kly)l(.)137 1072 y(History)j(expansion)i(tak)o(es)d(place)i(in) +h(t)o(w)o(o)d(parts.)28 b(The)19 b(\014rst)f(is)g(to)g(determine)i +(whic)o(h)f(line)h(from)75 1127 y(the)h(history)f(list)i(should)g(b)q +(e)f(used)g(during)h(substitution.)37 b(The)21 b(second)g(is)g(to)f +(select)i(p)q(ortions)e(of)75 1182 y(that)15 b(line)i(for)d(inclusion)k +(in)o(to)d(the)h(curren)o(t)f(one.)20 b(The)c(line)g(selected)h(from)e +(the)g(history)g(is)h(called)h(the)75 1237 y Fj(ev)o(en)o(t)p +Fp(,)c(and)h(the)g(p)q(ortions)g(of)f(that)g(line)i(that)e(are)g(acted) +h(up)q(on)g(are)f(called)j Fj(w)o(ords)p Fp(.)i(V)l(arious)c +Fj(mo)q(di\014ers)75 1292 y Fp(are)i(a)o(v)m(ailable)i(to)e(manipulate) +i(the)e(selected)i(w)o(ords.)23 b(The)17 b(line)h(is)f(brok)o(en)f(in)o +(to)h(w)o(ords)e(in)j(the)e(same)75 1346 y(fashion)c(that)e(Bash)i(do)q +(es,)g(so)f(that)g(sev)o(eral)g(w)o(ords)g(surrounded)h(b)o(y)f(quotes) +h(are)f(considered)h(one)g(w)o(ord.)75 1401 y(History)18 +b(expansions)h(are)g(in)o(tro)q(duced)g(b)o(y)f(the)h(app)q(earance)g +(of)f(the)g(history)h(expansion)g(c)o(haracter,)75 1456 +y(whic)o(h)d(is)g(`)p Fo(!)p Fp(')e(b)o(y)h(default.)75 +1583 y Fi(1.1.1)30 b(Ev)n(en)n(t)21 b(Designators)137 +1687 y Fp(An)16 b(ev)o(en)o(t)f(designator)g(is)g(a)g(reference)h(to)f +(a)g(command)g(line)i(en)o(try)d(in)i(the)g(history)f(list.)75 +1777 y Fo(!)216 b Fp(Start)16 b(a)g(history)h(substitution,)g(except)h +(when)f(follo)o(w)o(ed)g(b)o(y)f(a)h(space,)g(tab,)f(the)h(end)g(of)315 +1832 y(the)e(line,)i(`)p Fo(=)p Fp(')d(or)h(`)p Fo(\()p +Fp('.)75 1919 y Fo(!)p Fj(n)191 b Fp(Refer)15 b(to)f(command)h(line)i +Fj(n)p Fp(.)75 2006 y Fo(!-)p Fj(n)167 b Fp(Refer)15 +b(to)f(the)i(command)f Fj(n)g Fp(lines)i(bac)o(k.)75 +2094 y Fo(!!)192 b Fp(Refer)15 b(to)f(the)i(previous)f(command.)20 +b(This)c(is)g(a)f(synon)o(ym)g(for)f(`)p Fo(!-1)p Fp('.)75 +2181 y Fo(!)p Fj(string)102 b Fp(Refer)15 b(to)f(the)i(most)e(recen)o +(t)h(command)g(starting)g(with)g Fj(string)p Fp(.)75 +2268 y Fo(!?)p Fj(string)t Fo([?])315 2323 y Fp(Refer)h(to)g(the)h +(most)f(recen)o(t)h(command)g(con)o(taining)g Fj(string)p +Fp(.)25 b(The)17 b(trailing)g(`)p Fo(?)p Fp(')f(ma)o(y)g(b)q(e)315 +2377 y(omitted)f(if)h(the)f Fj(string)k Fp(is)d(follo)o(w)o(ed)f +(immediately)i(b)o(y)e(a)g(newline.)75 2464 y Fo(^)p +Fj(string1)t Fo(^)p Fj(string2)t Fo(^)315 2519 y Fp(Quic)o(k)i +(Substitution.)23 b(Rep)q(eat)16 b(the)g(last)f(command,)h(replacing)h +Fj(string1)i Fp(with)e Fj(string2)p Fp(.)315 2574 y(Equiv)m(alen)o(t)g +(to)d Fo(!!:s/)p Fj(string1)t Fo(/)p Fj(string2)t Fo(/)p +Fp(.)75 2661 y Fo(!#)192 b Fp(The)15 b(en)o(tire)h(command)f(line)i(t)o +(yp)q(ed)f(so)e(far.)p eop +%%Page: 2 4 +2 3 bop 75 -58 a Fp(2)1347 b(GNU)15 b(History)g(Library)75 +149 y Fi(1.1.2)30 b(W)-5 b(ord)20 b(Designators)137 247 +y Fp(W)l(ord)d(designators)g(are)g(used)h(to)f(select)h(desired)h(w)o +(ords)d(from)h(the)g(ev)o(en)o(t.)26 b(A)18 b(`)p Fo(:)p +Fp(')e(separates)h(the)75 302 y(ev)o(en)o(t)j(sp)q(eci\014cation)h +(from)e(the)h(w)o(ord)f(designator.)34 b(It)20 b(ma)o(y)f(b)q(e)h +(omitted)g(if)g(the)g(w)o(ord)f(designator)75 357 y(b)q(egins)f(with)g +(a)e(`)p Fo(^)p Fp(',)h(`)p Fo($)p Fp(',)f(`)p Fo(*)p +Fp(',)g(`)p Fo(-)p Fp(',)g(or)h(`)p Fo(\045)p Fp('.)24 +b(W)l(ords)17 b(are)g(n)o(um)o(b)q(ered)g(from)g(the)g(b)q(eginning)i +(of)e(the)g(line,)75 411 y(with)j(the)g(\014rst)f(w)o(ord)h(b)q(eing)h +(denoted)f(b)o(y)g(0)f(\(zero\).)33 b(W)l(ords)20 b(are)f(inserted)i +(in)o(to)f(the)g(curren)o(t)f(line)75 466 y(separated)c(b)o(y)g(single) +i(spaces.)137 535 y(F)l(or)e(example,)75 616 y Fo(!!)192 +b Fp(designates)18 b(the)g(preceding)i(command.)28 b(When)18 +b(y)o(ou)g(t)o(yp)q(e)g(this,)h(the)f(preceding)h(com-)315 +671 y(mand)c(is)h(rep)q(eated)g(in)g(toto.)75 752 y Fo(!!:$)144 +b Fp(designates)12 b(the)f(last)g(argumen)o(t)f(of)h(the)g(preceding)i +(command.)19 b(This)11 b(ma)o(y)g(b)q(e)h(shortened)315 +807 y(to)j Fo(!$)p Fp(.)75 887 y Fo(!fi:2)120 b Fp(designates)15 +b(the)g(second)g(argumen)o(t)f(of)g(the)h(most)f(recen)o(t)g(command)h +(starting)f(with)h(the)315 942 y(letters)g Fo(fi)p Fp(.)137 +1024 y(Here)h(are)f(the)g(w)o(ord)f(designators:)75 1105 +y Fo(0)h(\(zero\))57 b Fp(The)15 b Fo(0)p Fp(th)g(w)o(ord.)20 +b(F)l(or)14 b(man)o(y)h(applications,)h(this)g(is)g(the)f(command)g(w)o +(ord.)75 1186 y Fj(n)215 b Fp(The)15 b Fj(n)p Fp(th)h(w)o(ord.)75 +1267 y Fo(^)216 b Fp(The)15 b(\014rst)g(argumen)o(t;)f(that)h(is,)g(w)o +(ord)g(1.)75 1348 y Fo($)216 b Fp(The)15 b(last)h(argumen)o(t.)75 +1429 y Fo(\045)216 b Fp(The)15 b(w)o(ord)g(matc)o(hed)g(b)o(y)g(the)g +(most)g(recen)o(t)g(`)p Fo(?)p Fj(string)t Fo(?)p Fp(')f(searc)o(h.)75 +1510 y Fj(x)p Fo(-)p Fj(y)168 b Fp(A)15 b(range)g(of)g(w)o(ords;)f(`)p +Fo(-)p Fj(y)t Fp(')g(abbreviates)i(`)p Fo(0-)p Fj(y)t +Fp('.)75 1591 y Fo(*)216 b Fp(All)15 b(of)f(the)f(w)o(ords,)g(except)i +(the)f Fo(0)p Fp(th.)19 b(This)14 b(is)h(a)e(synon)o(ym)h(for)f(`)p +Fo(1-$)p Fp('.)18 b(It)c(is)g(not)g(an)g(error)315 1645 +y(to)g(use)h(`)p Fo(*)p Fp(')f(if)i(there)e(is)i(just)e(one)h(w)o(ord)f +(in)i(the)f(ev)o(en)o(t;)f(the)h(empt)o(y)g(string)g(is)g(returned)g +(in)315 1700 y(that)f(case.)75 1781 y Fj(x)s Fo(*)189 +b Fp(Abbreviates)16 b(`)p Fj(x)p Fo(-$)p Fp(')75 1862 +y Fj(x)p Fo(-)192 b Fp(Abbreviates)16 b(`)p Fj(x)p Fo(-$)p +Fp(')e(lik)o(e)i(`)p Fj(x)s Fo(*)p Fp(',)e(but)i(omits)f(the)g(last)g +(w)o(ord.)137 1943 y(If)i(a)g(w)o(ord)f(designator)h(is)h(supplied)h +(without)e(an)g(ev)o(en)o(t)f(sp)q(eci\014cation,)j(the)e(previous)h +(command)75 1998 y(is)e(used)f(as)g(the)h(ev)o(en)o(t.)75 +2113 y Fi(1.1.3)30 b(Mo)r(di\014ers)137 2210 y Fp(After)10 +b(the)h(optional)g(w)o(ord)e(designator,)i(y)o(ou)f(can)h(add)f(a)g +(sequence)i(of)e(one)g(or)g(more)g(of)g(the)g(follo)o(wing)75 +2265 y(mo)q(di\014ers,)16 b(eac)o(h)f(preceded)i(b)o(y)e(a)g(`)p +Fo(:)p Fp('.)75 2346 y Fo(h)216 b Fp(Remo)o(v)o(e)14 +b(a)h(trailing)h(pathname)f(comp)q(onen)o(t,)g(lea)o(ving)h(only)g(the) +f(head.)75 2427 y Fo(t)216 b Fp(Remo)o(v)o(e)14 b(all)i(leading)h +(pathname)e(comp)q(onen)o(ts,)g(lea)o(ving)h(the)f(tail.)75 +2508 y Fo(r)216 b Fp(Remo)o(v)o(e)14 b(a)h(trailing)h(su\016x)f(of)g +(the)g(form)g(`)p Fo(.)p Fj(su\016x)s Fp(',)f(lea)o(ving)i(the)f +(basename.)75 2589 y Fo(e)216 b Fp(Remo)o(v)o(e)14 b(all)i(but)g(the)f +(trailing)h(su\016x.)75 2670 y Fo(p)216 b Fp(Prin)o(t)15 +b(the)g(new)h(command)f(but)g(do)g(not)g(execute)h(it.)p +eop +%%Page: 3 5 +3 4 bop 75 -58 a Fp(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o +(ely)1007 b(3)75 149 y Fo(s/)p Fj(old)r Fo(/)p Fj(new)t +Fo(/)315 204 y Fp(Substitute)17 b Fj(new)j Fp(for)c(the)h(\014rst)e(o)q +(ccurrence)j(of)e Fj(old)i Fp(in)f(the)g(ev)o(en)o(t)f(line.)25 +b(An)o(y)16 b(delimiter)315 259 y(ma)o(y)c(b)q(e)h(used)g(in)g(place)g +(of)f(`)p Fo(/)p Fp('.)18 b(The)13 b(delimiter)h(ma)o(y)e(b)q(e)h +(quoted)f(in)i Fj(old)g Fp(and)f Fj(new)k Fp(with)12 +b(a)315 314 y(single)j(bac)o(kslash.)20 b(If)15 b(`)p +Fo(&)p Fp(')e(app)q(ears)h(in)h Fj(new)p Fp(,)f(it)g(is)h(replaced)g(b) +o(y)f Fj(old)p Fp(.)20 b(A)14 b(single)i(bac)o(kslash)315 +369 y(will)j(quote)e(the)h(`)p Fo(&)p Fp('.)25 b(The)17 +b(\014nal)i(delimiter)g(is)f(optional)g(if)f(it)h(is)g(the)f(last)g(c)o +(haracter)g(on)315 423 y(the)e(input)h(line.)75 503 y +Fo(&)216 b Fp(Rep)q(eat)15 b(the)g(previous)h(substitution.)75 +583 y Fo(g)216 b Fp(Cause)19 b(c)o(hanges)h(to)e(b)q(e)i(applied)h(o)o +(v)o(er)e(the)g(en)o(tire)h(ev)o(en)o(t)f(line.)34 b(Used)20 +b(in)g(conjunction)315 638 y(with)c(`)p Fo(s)p Fp(',)d(as)i(in)h +Fo(gs/)p Fj(old)r Fo(/)p Fj(new)t Fo(/)p Fp(,)f(or)g(with)g(`)p +Fo(&)p Fp('.)p eop +%%Page: 4 6 +4 5 bop 75 -58 a Fp(4)1347 b(GNU)15 b(History)g(Library)p +eop +%%Page: 5 7 +5 6 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(History)889 b(5)75 149 y Fl(2)41 b(Programming)28 b(with)e(GNU)i +(History)137 269 y Fp(This)17 b(c)o(hapter)f(describ)q(es)i(ho)o(w)e +(to)f(in)o(terface)i(programs)e(that)g(y)o(ou)h(write)g(with)h(the)f +Fk(gnu)g Fp(History)75 324 y(Library)l(.)24 b(It)17 b(should)g(b)q(e)g +(considered)h(a)e(tec)o(hnical)i(guide.)25 b(F)l(or)15 +b(information)i(on)f(the)h(in)o(teractiv)o(e)g(use)75 +379 y(of)e Fk(gnu)g Fp(History)l(,)g(see)g(Chapter)g(1)g([Using)g +(History)g(In)o(teractiv)o(ely],)h(page)f(1.)75 509 y +Fn(2.1)33 b(In)n(tro)r(duction)24 b(to)e(History)137 +607 y Fp(Man)o(y)11 b(programs)f(read)h(input)i(from)d(the)i(user)f(a)g +(line)i(at)e(a)g(time.)19 b(The)12 b Fk(gnu)f Fp(History)g(library)h +(is)g(able)75 661 y(to)i(k)o(eep)g(trac)o(k)g(of)g(those)g(lines,)i +(asso)q(ciate)e(arbitrary)g(data)g(with)g(eac)o(h)h(line,)h(and)e +(utilize)j(information)75 716 y(from)d(previous)i(lines)h(in)f(comp)q +(osing)g(new)f(ones.)137 784 y(The)f(programmer)f(using)h(the)g +(History)g(library)g(has)g(a)o(v)m(ailable)h(functions)g(for)e(remem)o +(b)q(ering)h(lines)75 839 y(on)c(a)g(history)h(list,)g(asso)q(ciating)g +(arbitrary)f(data)f(with)i(a)f(line,)j(remo)o(ving)d(lines)i(from)d +(the)i(list,)h(searc)o(hing)75 894 y(through)17 b(the)h(list)g(for)f(a) +h(line)h(con)o(taining)f(an)g(arbitrary)f(text)g(string,)h(and)g +(referencing)h(an)o(y)e(line)i(in)75 949 y(the)c(list)i(directly)l(.)22 +b(In)16 b(addition,)g(a)f(history)g Fj(expansion)h Fp(function)h(is)e +(a)o(v)m(ailable)i(whic)o(h)g(pro)o(vides)f(for)e(a)75 +1003 y(consisten)o(t)h(user)h(in)o(terface)f(across)g(di\013eren)o(t)g +(programs.)137 1072 y(The)f(user)h(using)f(programs)f(written)h(with)g +(the)g(History)g(library)h(has)f(the)g(b)q(ene\014t)h(of)e(a)h +(consisten)o(t)75 1126 y(user)20 b(in)o(terface)f(with)h(a)f(set)h(of)f +(w)o(ell-kno)o(wn)h(commands)g(for)e(manipulating)k(the)d(text)g(of)g +(previous)75 1181 y(lines)c(and)f(using)h(that)e(text)g(in)i(new)f +(commands.)19 b(The)14 b(basic)h(history)e(manipulation)j(commands)d +(are)75 1236 y(similar)j(to)f(the)g(history)g(substitution)h(pro)o +(vided)g(b)o(y)g Fo(csh)p Fp(.)137 1304 y(If)f(the)g(programmer)f +(desires,)h(he)g(can)g(use)g(the)g(Readline)h(library)l(,)g(whic)o(h)f +(includes)j(some)c(history)75 1359 y(manipulation)j(b)o(y)e(default,)g +(and)h(has)f(the)g(added)h(adv)m(an)o(tage)f(of)f(command)h(line)i +(editing.)137 1427 y(Before)i(declaring)i(an)o(y)d(functions)i(using)g +(an)o(y)f(functionalit)o(y)h(the)f(History)g(library)h(pro)o(vides)f +(in)75 1482 y(other)14 b(co)q(de,)h(an)f(application)i(writer)e(should) +i(include)g(the)f(\014le)g Fo(<readline/history.h>)d +Fp(in)j(an)o(y)f(\014le)75 1537 y(that)d(uses)h(the)h(History)e +(library's)i(features.)18 b(It)12 b(supplies)i(extern)e(declarations)h +(for)e(all)i(of)f(the)g(library's)75 1591 y(public)17 +b(functions)f(and)g(v)m(ariables,)g(and)f(declares)h(all)g(of)f(the)h +(public)h(data)d(structures.)75 1722 y Fn(2.2)33 b(History)22 +b(Storage)137 1819 y Fp(The)16 b(history)f(list)h(is)g(an)f(arra)o(y)f +(of)g(history)i(en)o(tries.)k(A)15 b(history)g(en)o(try)g(is)h +(declared)g(as)f(follo)o(ws:)195 1885 y Fo(typedef)23 +b(void)g(*histdata_t;)195 1988 y(typedef)g(struct)g(_hist_entry)f({)243 +2040 y(char)h(*line;)243 2092 y(histdata_t)f(data;)195 +2144 y(})i(HIST_ENTRY;)137 2212 y Fp(The)16 b(history)f(list)h(itself)g +(migh)o(t)f(therefore)g(b)q(e)h(declared)g(as)195 2277 +y Fo(HIST_ENTRY)22 b(**the_history_list;)137 2345 y Fp(The)16 +b(state)e(of)h(the)g(History)g(library)h(is)g(encapsulated)g(in)o(to)f +(a)g(single)i(structure:)195 2411 y Fo(/*)219 2462 y(*)24 +b(A)f(structure)g(used)g(to)h(pass)f(around)g(the)h(current)f(state)g +(of)g(the)h(history.)219 2514 y(*/)195 2566 y(typedef)f(struct)g +(_hist_state)f({)243 2618 y(HIST_ENTRY)g(**entries;)h(/*)g(Pointer)g +(to)h(the)f(entries)g(themselves.)g(*/)243 2670 y(int)g(offset;)262 +b(/*)23 b(The)h(location)f(pointer)f(within)h(this)h(array.)f(*/)p +eop +%%Page: 6 8 +6 7 bop 75 -58 a Fp(6)1347 b(GNU)15 b(History)g(Library)243 +149 y Fo(int)23 b(length;)262 b(/*)23 b(Number)g(of)h(elements)f +(within)g(this)g(array.)g(*/)243 201 y(int)g(size;)310 +b(/*)23 b(Number)g(of)h(slots)f(allocated)g(to)g(this)h(array.)f(*/)243 +253 y(int)g(flags;)195 305 y(})h(HISTORY_STATE;)137 372 +y Fp(If)16 b(the)f(\015ags)g(mem)o(b)q(er)g(includes)j +Fo(HS_STIFLED)p Fp(,)13 b(the)i(history)h(has)f(b)q(een)h(sti\015ed.)75 +498 y Fn(2.3)33 b(History)22 b(F)-6 b(unctions)137 593 +y Fp(This)13 b(section)g(describ)q(es)h(the)e(calling)i(sequence)g(for) +e(the)g(v)m(arious)h(functions)g(exp)q(orted)f(b)o(y)h(the)f +Fk(gnu)75 648 y Fp(History)j(library)l(.)75 758 y Fi(2.3.1)30 +b(Initializing)20 b(History)h(and)f(State)g(Managemen)n(t)137 +853 y Fp(This)e(section)g(describ)q(es)h(functions)f(used)g(to)e +(initialize)21 b(and)c(manage)g(the)g(state)g(of)g(the)g(History)75 +908 y(library)f(when)g(y)o(ou)f(w)o(an)o(t)f(to)g(use)i(the)f(history)g +(functions)h(in)g(y)o(our)f(program.)1762 1021 y(F)l(unction)-1861 +b Fh(void)20 b Fg(using)p 333 1021 18 3 v 20 w(history)j +Ff(\()p Fo(void)p Ff(\))195 1075 y Fp(Begin)e(a)f(session)g(in)h(whic)o +(h)g(the)f(history)g(functions)g(migh)o(t)g(b)q(e)h(used.)34 +b(This)21 b(initializes)i(the)195 1130 y(in)o(teractiv)o(e)16 +b(v)m(ariables.)1762 1243 y(F)l(unction)-1861 b Fh(HISTORY_STATE)21 +b(*)e Fg(history)p 657 1243 V 21 w(get)p 755 1243 V 21 +w(history)p 951 1243 V 21 w(state)j Ff(\()p Fo(void)p +Ff(\))195 1298 y Fp(Return)15 b(a)g(structure)g(describing)i(the)e +(curren)o(t)g(state)f(of)h(the)g(input)i(history)l(.)1762 +1411 y(F)l(unction)-1861 b Fh(void)20 b Fg(history)p +377 1411 V 20 w(set)p 468 1411 V 21 w(history)p 664 1411 +V 21 w(state)j Ff(\()p Fo(HISTORY_STATE)13 b(*state)p +Ff(\))195 1466 y Fp(Set)i(the)h(state)e(of)h(the)g(history)g(list)h +(according)g(to)e Fj(state)p Fp(.)75 1575 y Fi(2.3.2)30 +b(History)20 b(List)h(Managemen)n(t)137 1671 y Fp(These)11 +b(functions)h(manage)e(individual)k(en)o(tries)d(on)g(the)g(history)f +(list,)i(or)f(set)f(parameters)g(managing)75 1725 y(the)15 +b(list)h(itself.)1762 1838 y(F)l(unction)-1861 b Fh(void)20 +b Fg(add)p 294 1838 V 20 w(history)j Ff(\()p Fo(const)14 +b(char)g(*string)p Ff(\))195 1893 y Fp(Place)i Fj(string)i +Fp(at)d(the)g(end)h(of)e(the)h(history)g(list.)21 b(The)15 +b(asso)q(ciated)g(data)g(\014eld)h(\(if)f(an)o(y\))f(is)i(set)f(to)195 +1948 y Fo(NULL)p Fp(.)1762 2061 y(F)l(unction)-1861 b +Fh(HIST_ENTRY)21 b(*)e Fg(remo)n(v)n(e)p 584 2061 V 20 +w(history)k Ff(\()p Fo(int)14 b(which)p Ff(\))195 2115 +y Fp(Remo)o(v)o(e)22 b(history)g(en)o(try)h(at)f(o\013set)g +Fj(whic)o(h)h Fp(from)f(the)h(history)l(.)43 b(The)23 +b(remo)o(v)o(ed)f(elemen)o(t)h(is)195 2170 y(returned)16 +b(so)e(y)o(ou)h(can)h(free)f(the)g(line,)i(data,)d(and)h(con)o(taining) +h(structure.)1762 2283 y(F)l(unction)-1861 b Fh(HIST_ENTRY)21 +b(*)e Fg(replace)p 580 2283 V 22 w(history)p 777 2283 +V 20 w(en)n(try)24 b Ff(\()p Fo(int)14 b(which,)g(const)h(char)283 +2338 y(*line,)f(histdata_t)g(data)p Ff(\))195 2393 y +Fp(Mak)o(e)f(the)h(history)g(en)o(try)f(at)g(o\013set)g +Fj(whic)o(h)i Fp(ha)o(v)o(e)e Fj(line)18 b Fp(and)c Fj(data)p +Fp(.)19 b(This)14 b(returns)g(the)g(old)g(en)o(try)195 +2448 y(so)19 b(y)o(ou)f(can)i(disp)q(ose)g(of)e(the)i(data.)30 +b(In)20 b(the)f(case)g(of)g(an)g(in)o(v)m(alid)i Fj(whic)o(h)p +Fp(,)g(a)d Fo(NULL)h Fp(p)q(oin)o(ter)g(is)195 2502 y(returned.)1762 +2615 y(F)l(unction)-1861 b Fh(void)20 b Fg(clear)p 320 +2615 V 21 w(history)j Ff(\()p Fo(void)p Ff(\))195 2670 +y Fp(Clear)15 b(the)h(history)f(list)h(b)o(y)f(deleting)i(all)f(the)f +(en)o(tries.)p eop +%%Page: 7 9 +7 8 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(History)889 b(7)1762 149 y(F)l(unction)-1861 b Fh(void)20 +b Fg(sti\015e)p 320 149 18 3 v 21 w(history)j Ff(\()p +Fo(int)14 b(max)p Ff(\))195 204 y Fp(Sti\015e)i(the)f(history)h(list,)f +(remem)o(b)q(ering)h(only)g(the)f(last)g Fj(max)j Fp(en)o(tries.)1762 +307 y(F)l(unction)-1861 b Fh(int)20 b Fg(unsti\015e)p +358 307 V 21 w(history)i Ff(\()p Fo(void)p Ff(\))195 +361 y Fp(Stop)c(sti\015ing)i(the)e(history)l(.)29 b(This)19 +b(returns)f(the)h(previous)g(amoun)o(t)e(the)i(history)f(w)o(as)f +(sti\015ed.)195 416 y(The)e(v)m(alue)i(is)f(p)q(ositiv)o(e)g(if)f(the)h +(history)f(w)o(as)f(sti\015ed,)i(negativ)o(e)f(if)h(it)f(w)o(asn't.) +1762 518 y(F)l(unction)-1861 b Fh(int)20 b Fg(history)p +351 518 V 20 w(is)p 409 518 V 21 w(sti\015ed)k Ff(\()p +Fo(void)p Ff(\))195 573 y Fp(Returns)15 b(non-zero)g(if)h(the)f +(history)g(is)h(sti\015ed,)g(zero)f(if)g(it)h(is)g(not.)75 +676 y Fi(2.3.3)30 b(Information)19 b(Ab)r(out)i(the)f(History)h(List) +137 770 y Fp(These)13 b(functions)h(return)f(information)g(ab)q(out)f +(the)h(en)o(tire)h(history)e(list)i(or)e(individual)k(list)e(en)o +(tries.)1762 872 y(F)l(unction)-1861 b Fh(HIST_ENTRY)21 +b(**)e Fg(history)p 605 872 V 21 w(list)24 b Ff(\()p +Fo(void)p Ff(\))195 927 y Fp(Return)15 b(a)g Fo(NULL)f +Fp(terminated)i(arra)o(y)e(of)h Fo(HIST_ENTRY)f(*)h Fp(whic)o(h)h(is)f +(the)h(curren)o(t)f(input)h(history)l(.)195 982 y(Elemen)o(t)g(0)f(of)f +(this)i(list)g(is)g(the)f(b)q(eginning)i(of)e(time.)20 +b(If)c(there)f(is)h(no)f(history)l(,)g(return)g Fo(NULL)p +Fp(.)1762 1084 y(F)l(unction)-1861 b Fh(int)20 b Fg(where)p +325 1084 V 20 w(history)j Ff(\()p Fo(void)p Ff(\))195 +1139 y Fp(Returns)15 b(the)g(o\013set)f(of)h(the)g(curren)o(t)g +(history)g(elemen)o(t.)1762 1241 y(F)l(unction)-1861 +b Fh(HIST_ENTRY)21 b(*)e Fg(curren)n(t)p 587 1241 V 21 +w(history)k Ff(\()p Fo(void)p Ff(\))195 1296 y Fp(Return)12 +b(the)h(history)f(en)o(try)g(at)g(the)g(curren)o(t)h(p)q(osition,)g(as) +f(determined)i(b)o(y)e Fo(where_history\(\))p Fp(.)195 +1350 y(If)j(there)h(is)f(no)h(en)o(try)e(there,)h(return)g(a)g +Fo(NULL)g Fp(p)q(oin)o(ter.)1762 1453 y(F)l(unction)-1861 +b Fh(HIST_ENTRY)21 b(*)e Fg(history)p 579 1453 V 21 w(get)j +Ff(\()p Fo(int)15 b(offset)p Ff(\))195 1508 y Fp(Return)20 +b(the)h(history)g(en)o(try)f(at)h(p)q(osition)g Fj(o\013set)p +Fp(,)g(starting)f(from)g Fo(history_base)f Fp(\(see)i(Sec-)195 +1562 y(tion)15 b(2.4)f([History)g(V)l(ariables],)h(page)g(10\).)j(If)d +(there)g(is)g(no)g(en)o(try)f(there,)h(or)f(if)h Fj(o\013set)g +Fp(is)g(greater)195 1617 y(than)g(the)g(history)g(length,)h(return)f(a) +g Fo(NULL)g Fp(p)q(oin)o(ter.)1762 1719 y(F)l(unction)-1861 +b Fh(int)20 b Fg(history)p 351 1719 V 20 w(total)p 487 +1719 V 22 w(b)n(ytes)j Ff(\()p Fo(void)p Ff(\))195 1774 +y Fp(Return)13 b(the)h(n)o(um)o(b)q(er)g(of)g(b)o(ytes)f(that)g(the)h +(primary)g(history)g(en)o(tries)g(are)g(using.)20 b(This)14 +b(function)195 1829 y(returns)h(the)g(sum)h(of)e(the)i(lengths)f(of)g +(all)h(the)g(lines)g(in)g(the)g(history)l(.)75 1932 y +Fi(2.3.4)30 b(Mo)n(ving)21 b(Around)f(the)h(History)g(List)137 +2026 y Fp(These)16 b(functions)g(allo)o(w)f(the)g(curren)o(t)h(index)g +(in)o(to)f(the)h(history)f(list)h(to)e(b)q(e)i(set)f(or)g(c)o(hanged.) +1762 2128 y(F)l(unction)-1861 b Fh(int)20 b Fg(history)p +351 2128 V 20 w(set)p 442 2128 V 21 w(p)r(os)h Ff(\()p +Fo(int)15 b(pos)p Ff(\))195 2183 y Fp(Set)j(the)h(curren)o(t)f(history) +g(o\013set)g(to)f Fj(p)q(os)p Fp(,)i(an)f(absolute)h(index)h(in)o(to)e +(the)g(list.)30 b(Returns)18 b(1)g(on)195 2237 y(success,)d(0)g(if)h +Fj(p)q(os)h Fp(is)f(less)g(than)f(zero)g(or)g(greater)f(than)h(the)g(n) +o(um)o(b)q(er)h(of)e(history)i(en)o(tries.)1762 2340 +y(F)l(unction)-1861 b Fh(HIST_ENTRY)21 b(*)e Fg(previous)p +615 2340 V 20 w(history)k Ff(\()p Fo(void)p Ff(\))195 +2394 y Fp(Bac)o(k)14 b(up)h(the)g(curren)o(t)f(history)g(o\013set)g(to) +f(the)i(previous)g(history)f(en)o(try)l(,)g(and)h(return)f(a)g(p)q(oin) +o(ter)195 2449 y(to)h(that)f(en)o(try)l(.)20 b(If)15 +b(there)g(is)h(no)f(previous)h(en)o(try)l(,)f(return)g(a)g +Fo(NULL)g Fp(p)q(oin)o(ter.)1762 2552 y(F)l(unction)-1861 +b Fh(HIST_ENTRY)21 b(*)e Fg(next)p 514 2552 V 21 w(history)k +Ff(\()p Fo(void)p Ff(\))195 2606 y Fp(Mo)o(v)o(e)17 b(the)h(curren)o(t) +f(history)h(o\013set)f(forw)o(ard)f(to)h(the)h(next)g(history)g(en)o +(try)l(,)g(and)g(return)f(the)h(a)195 2661 y(p)q(oin)o(ter)e(to)e(that) +h(en)o(try)l(.)k(If)d(there)f(is)h(no)f(next)g(en)o(try)l(,)g(return)g +(a)g Fo(NULL)g Fp(p)q(oin)o(ter.)p eop +%%Page: 8 10 +8 9 bop 75 -58 a Fp(8)1347 b(GNU)15 b(History)g(Library)75 +149 y Fi(2.3.5)30 b(Searc)n(hing)21 b(the)f(History)h(List)137 +245 y Fp(These)14 b(functions)g(allo)o(w)g(searc)o(hing)g(of)e(the)i +(history)f(list)h(for)f(en)o(tries)h(con)o(taining)g(a)f(sp)q(eci\014c) +i(string.)75 300 y(Searc)o(hing)f(ma)o(y)g(b)q(e)g(p)q(erformed)g(b)q +(oth)g(forw)o(ard)e(and)i(bac)o(kw)o(ard)f(from)g(the)h(curren)o(t)g +(history)f(p)q(osition.)75 355 y(The)j(searc)o(h)f(ma)o(y)g(b)q(e)i +Fj(anc)o(hored)p Fp(,)e(meaning)h(that)f(the)h(string)g(m)o(ust)f(matc) +o(h)g(at)g(the)h(b)q(eginning)i(of)d(the)75 410 y(history)g(en)o(try)l +(.)1762 524 y(F)l(unction)-1861 b Fh(int)20 b Fg(history)p +351 524 18 3 v 20 w(searc)n(h)j Ff(\()p Fo(const)14 b(char)h(*string,)f +(int)h(direction)p Ff(\))195 578 y Fp(Searc)o(h)g(the)f(history)g(for)g +Fj(string)p Fp(,)g(starting)g(at)g(the)h(curren)o(t)f(history)g +(o\013set.)19 b(If)c Fj(direction)g Fp(is)g(less)195 +633 y(than)20 b(0,)g(then)h(the)f(searc)o(h)f(is)i(through)f(previous)g +(en)o(tries,)i(otherwise)e(through)f(subsequen)o(t)195 +688 y(en)o(tries.)h(If)c Fj(string)j Fp(is)d(found,)f(then)g(the)h +(curren)o(t)f(history)g(index)h(is)g(set)f(to)g(that)f(history)h(en)o +(try)l(,)195 743 y(and)i(the)g(v)m(alue)h(returned)f(is)g(the)g +(o\013set)e(in)j(the)f(line)h(of)e(the)h(en)o(try)g(where)g +Fj(string)j Fp(w)o(as)c(found.)195 798 y(Otherwise,)g(nothing)f(is)h(c) +o(hanged,)f(and)h(a)e(-1)h(is)h(returned.)1762 912 y(F)l(unction)-1861 +b Fh(int)20 b Fg(history)p 351 912 V 20 w(searc)n(h)p +527 912 V 21 w(pre\014x)i Ff(\()p Fo(const)14 b(char)h(*string,)f(int)h +(direction)p Ff(\))195 966 y Fp(Searc)o(h)20 b(the)h(history)f(for)g +Fj(string)p Fp(,)h(starting)e(at)h(the)g(curren)o(t)h(history)f +(o\013set.)34 b(The)20 b(searc)o(h)g(is)195 1021 y(anc)o(hored:)g(matc) +o(hing)14 b(lines)j(m)o(ust)d(b)q(egin)i(with)f Fj(string)p +Fp(.)20 b(If)15 b Fj(direction)h Fp(is)f(less)g(than)g(0,)f(then)h(the) +195 1076 y(searc)o(h)g(is)i(through)e(previous)h(en)o(tries,)g +(otherwise)g(through)f(subsequen)o(t)h(en)o(tries.)22 +b(If)16 b Fj(string)j Fp(is)195 1131 y(found,)e(then)g(the)f(curren)o +(t)h(history)f(index)i(is)f(set)f(to)g(that)g(en)o(try)l(,)g(and)h(the) +f(return)h(v)m(alue)h(is)f(0.)195 1186 y(Otherwise,)f(nothing)f(is)h(c) +o(hanged,)f(and)h(a)e(-1)h(is)h(returned.)1762 1300 y(F)l(unction)-1861 +b Fh(int)20 b Fg(history)p 351 1300 V 20 w(searc)n(h)p +527 1300 V 21 w(p)r(os)h Ff(\()p Fo(const)14 b(char)h(*string,)f(int)h +(direction,)f(int)283 1355 y(pos)p Ff(\))195 1409 y Fp(Searc)o(h)j(for) +g Fj(string)k Fp(in)d(the)f(history)g(list,)h(starting)e(at)h +Fj(p)q(os)p Fp(,)g(an)g(absolute)h(index)g(in)o(to)f(the)h(list.)195 +1464 y(If)g Fj(direction)i Fp(is)e(negativ)o(e,)h(the)f(searc)o(h)g +(pro)q(ceeds)g(bac)o(kw)o(ard)g(from)f Fj(p)q(os)p Fp(,)h(otherwise)h +(forw)o(ard.)195 1519 y(Returns)j(the)g(absolute)g(index)h(of)f(the)g +(history)g(elemen)o(t)h(where)f Fj(string)k Fp(w)o(as)21 +b(found,)j(or)d(-1)195 1574 y(otherwise.)75 1684 y Fi(2.3.6)30 +b(Managing)20 b(the)g(History)h(File)137 1780 y Fp(The)16 +b(History)g(library)h(can)e(read)h(the)g(history)g(from)f(and)h(write)g +(it)g(to)f(a)h(\014le.)22 b(This)17 b(section)f(do)q(cu-)75 +1835 y(men)o(ts)f(the)g(functions)h(for)f(managing)g(a)g(history)g +(\014le.)1762 1949 y(F)l(unction)-1861 b Fh(int)20 b +Fg(read)p 286 1949 V 20 w(history)i Ff(\()p Fo(const)15 +b(char)f(*filename)p Ff(\))195 2003 y Fp(Add)h(the)g(con)o(ten)o(ts)f +(of)h Fj(\014lename)j Fp(to)c(the)h(history)g(list,)g(a)g(line)h(at)f +(a)f(time.)20 b(If)15 b Fj(\014lename)k Fp(is)c Fo(NULL)p +Fp(,)195 2058 y(then)h(read)f(from)f(`)p Fo(~/.history)p +Fp('.)k(Returns)d(0)f(if)i(successful,)g(or)f Fo(errno)f +Fp(if)i(not.)1762 2172 y(F)l(unction)-1861 b Fh(int)20 +b Fg(read)p 286 2172 V 20 w(history)p 481 2172 V 20 w(range)i +Ff(\()p Fo(const)14 b(char)h(*filename,)f(int)h(from,)f(int)h(to)p +Ff(\))195 2227 y Fp(Read)f(a)f(range)h(of)f(lines)j(from)d +Fj(\014lename)p Fp(,)i(adding)g(them)f(to)f(the)h(history)g(list.)20 +b(Start)13 b(reading)i(at)195 2282 y(line)g Fj(from)d +Fp(and)h(end)h(at)f Fj(to)p Fp(.)18 b(If)c Fj(from)e +Fp(is)i(zero,)f(start)f(at)g(the)h(b)q(eginning.)22 b(If)13 +b Fj(to)i Fp(is)e(less)h(than)f Fj(from)p Fp(,)195 2337 +y(then)i(read)g(un)o(til)i(the)e(end)g(of)g(the)g(\014le.)21 +b(If)15 b Fj(\014lename)k Fp(is)d Fo(NULL)p Fp(,)e(then)h(read)g(from)f +(`)p Fo(~/.history)p Fp('.)195 2392 y(Returns)h(0)g(if)g(successful,)h +(or)f Fo(errno)g Fp(if)g(not.)1762 2506 y(F)l(unction)-1861 +b Fh(int)20 b Fg(write)p 304 2506 V 22 w(history)i Ff(\()p +Fo(const)15 b(char)f(*filename)p Ff(\))195 2560 y Fp(W)l(rite)k(the)f +(curren)o(t)g(history)h(to)f Fj(\014lename)p Fp(,)h(o)o(v)o(erwriting)f +Fj(\014lename)k Fp(if)d(necessary)l(.)27 b(If)18 b Fj(\014lename)195 +2615 y Fp(is)f Fo(NULL)p Fp(,)e(then)h(write)h(the)f(history)g(list)h +(to)e(`)p Fo(~/.history)p Fp('.)21 b(Returns)16 b(0)f(on)h(success,)h +(or)f Fo(errno)195 2670 y Fp(on)f(a)g(read)g(or)g(write)g(error.)p +eop +%%Page: 9 11 +9 10 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(History)889 b(9)1762 149 y(F)l(unction)-1861 b Fh(int)20 +b Fg(app)r(end)p 360 149 18 3 v 19 w(history)j Ff(\()p +Fo(int)14 b(nelements,)g(const)h(char)f(*filename)p Ff(\))195 +204 y Fp(App)q(end)19 b(the)e(last)g Fj(nelemen)o(ts)k +Fp(of)16 b(the)i(history)f(list)h(to)f Fj(\014lename)p +Fp(.)27 b(If)18 b Fj(\014lename)j Fp(is)d Fo(NULL)p Fp(,)f(then)195 +259 y(app)q(end)f(to)f(`)p Fo(~/.history)p Fp('.)j(Returns)c(0)h(on)g +(success,)h(or)e Fo(errno)h Fp(on)g(a)g(read)g(or)g(write)g(error.)1762 +404 y(F)l(unction)-1861 b Fh(int)20 b Fg(history)p 351 +404 V 20 w(truncate)p 582 404 V 21 w(\014le)k Ff(\()p +Fo(const)14 b(char)h(*filename,)e(int)i(nlines)p Ff(\))195 +459 y Fp(T)l(runcate)k(the)h(history)f(\014le)h Fj(\014lename)p +Fp(,)h(lea)o(ving)f(only)g(the)f(last)g Fj(nlines)k Fp(lines.)34 +b(If)20 b Fj(\014lename)i Fp(is)195 513 y Fo(NULL)p Fp(,)14 +b(then)i(`)p Fo(~/.history)p Fp(')d(is)j(truncated.)j(Returns)c(0)g(on) +g(success,)h(or)e Fo(errno)h Fp(on)g(failure.)75 644 +y Fi(2.3.7)30 b(History)20 b(Expansion)137 750 y Fp(These)c(functions)g +(implemen)o(t)g(history)f(expansion.)1762 895 y(F)l(unction)-1861 +b Fh(int)20 b Fg(history)p 351 895 V 20 w(expand)j Ff(\()p +Fo(char)14 b(*string,)g(char)h(**output)p Ff(\))195 949 +y Fp(Expand)j Fj(string)p Fp(,)f(placing)h(the)g(result)f(in)o(to)g +Fj(output)p Fp(,)h(a)e(p)q(oin)o(ter)i(to)f(a)g(string)g(\(see)g +(Section)h(1.1)195 1004 y([History)d(In)o(teraction],)f(page)h(1\).)20 +b(Returns:)195 1098 y Fo(0)216 b Fp(If)19 b(no)g(expansions)g(to)q(ok)f +(place)i(\(or,)e(if)i(the)e(only)i(c)o(hange)e(in)i(the)f(text)f(w)o +(as)g(the)435 1152 y(remo)o(v)m(al)d(of)g(escap)q(e)h(c)o(haracters)e +(preceding)i(the)f(history)g(expansion)h(c)o(haracter\);)195 +1241 y Fo(1)216 b Fp(if)16 b(expansions)g(did)g(tak)o(e)e(place;)195 +1330 y Fo(-1)192 b Fp(if)16 b(there)f(w)o(as)f(an)h(error)g(in)h +(expansion;)195 1419 y Fo(2)216 b Fp(if)14 b(the)g(returned)g(line)i +(should)f(b)q(e)f(displa)o(y)o(ed,)h(but)f(not)f(executed,)i(as)e(with) +h(the)g Fo(:p)435 1474 y Fp(mo)q(di\014er)i(\(see)f(Section)h(1.1.3)e +([Mo)q(di\014ers],)h(page)g(2\).)195 1568 y(If)g(an)h(error)e(o)q +(curred)i(in)g(expansion,)f(then)h Fj(output)g Fp(con)o(tains)f(a)g +(descriptiv)o(e)i(error)d(message.)1762 1713 y(F)l(unction)-1861 +b Fh(char)20 b(*)f Fg(get)p 324 1713 V 21 w(history)p +520 1713 V 20 w(ev)n(en)n(t)25 b Ff(\()p Fo(const)14 +b(char)h(*string,)f(int)g(*cindex,)g(int)283 1767 y(qchar)p +Ff(\))195 1822 y Fp(Returns)22 b(the)h(text)f(of)h(the)f(history)h(ev)o +(en)o(t)g(b)q(eginning)h(at)f Fj(string)j Fo(+)d Fj(*cindex)p +Fp(.)43 b Fj(*cindex)27 b Fp(is)195 1877 y(mo)q(di\014ed)16 +b(to)e(p)q(oin)o(t)h(to)f(after)g(the)h(ev)o(en)o(t)f(sp)q(eci\014er.) +22 b(A)o(t)14 b(function)h(en)o(try)l(,)g Fj(cindex)k +Fp(p)q(oin)o(ts)c(to)f(the)195 1932 y(index)19 b(in)o(to)f +Fj(string)k Fp(where)c(the)g(history)g(ev)o(en)o(t)g(sp)q +(eci\014cation)h(b)q(egins.)30 b Fj(qc)o(har)21 b Fp(is)d(a)g(c)o +(haracter)195 1987 y(that)13 b(is)h(allo)o(w)o(ed)g(to)e(end)i(the)g +(ev)o(en)o(t)f(sp)q(eci\014cation)j(in)e(addition)g(to)f(the)h +(\\normal")f(terminating)195 2041 y(c)o(haracters.)1762 +2186 y(F)l(unction)-1861 b Fh(char)20 b(**)f Fg(history)p +448 2186 V 21 w(tok)n(enize)25 b Ff(\()p Fo(const)14 +b(char)h(*string)p Ff(\))195 2241 y Fp(Return)g(an)g(arra)o(y)g(of)g +(tok)o(ens)g(parsed)g(out)g(of)g Fj(string)p Fp(,)g(m)o(uc)o(h)h(as)f +(the)g(shell)i(migh)o(t.)k(The)15 b(tok)o(ens)195 2296 +y(are)h(split)h(on)e(the)h(c)o(haracters)g(in)g(the)g +Fj(history)p 1007 2296 14 2 v 17 w(w)o(ord)p 1122 2296 +V 15 w(delimiters)k Fp(v)m(ariable,)d(and)f(shell)i(quoting)195 +2351 y(con)o(v)o(en)o(tions)d(are)g(ob)q(ey)o(ed.)1762 +2496 y(F)l(unction)-1861 b Fh(char)20 b(*)f Fg(history)p +422 2496 18 3 v 21 w(arg)p 524 2496 V 19 w(extract)24 +b Ff(\()p Fo(int)14 b(first,)h(int)g(last,)f(const)g(char)283 +2550 y(*string)p Ff(\))195 2605 y Fp(Extract)19 b(a)h(string)g(segmen)o +(t)g(consisting)h(of)f(the)g Fj(\014rst)h Fp(through)f +Fj(last)h Fp(argumen)o(ts)e(presen)o(t)h(in)195 2660 +y Fj(string)p Fp(.)g(Argumen)o(ts)15 b(are)f(split)j(using)f +Fo(history_tokenize)p Fp(.)p eop +%%Page: 10 12 +10 11 bop 75 -58 a Fp(10)1324 b(GNU)15 b(History)g(Library)75 +149 y Fn(2.4)33 b(History)22 b(V)-6 b(ariables)137 251 +y Fp(This)18 b(section)f(describ)q(es)i(the)e(externally-visible)k(v)m +(ariables)d(exp)q(orted)f(b)o(y)g(the)g Fk(gnu)g Fp(History)g(Li-)75 +306 y(brary)l(.)1773 438 y(V)l(ariable)-1861 b Fh(int)20 +b Fg(history)p 351 438 18 3 v 20 w(base)195 493 y Fp(The)15 +b(logical)i(o\013set)d(of)h(the)g(\014rst)g(en)o(try)g(in)h(the)f +(history)g(list.)1773 625 y(V)l(ariable)-1861 b Fh(int)20 +b Fg(history)p 351 625 V 20 w(length)195 680 y Fp(The)15 +b(n)o(um)o(b)q(er)h(of)f(en)o(tries)g(curren)o(tly)h(stored)f(in)h(the) +f(history)g(list.)1773 812 y(V)l(ariable)-1861 b Fh(int)20 +b Fg(history)p 351 812 V 20 w(max)p 478 812 V 20 w(en)n(tries)195 +867 y Fp(The)j(maxim)o(um)g(n)o(um)o(b)q(er)g(of)g(history)g(en)o +(tries.)43 b(This)24 b(m)o(ust)e(b)q(e)i(c)o(hanged)f(using)h +Fo(stifle_)195 922 y(history\(\))p Fp(.)1773 1054 y(V)l(ariable)-1861 +b Fh(char)20 b Fg(history)p 377 1054 V 20 w(expansion)p +644 1054 V 21 w(c)n(har)195 1109 y Fp(The)e(c)o(haracter)f(that)g(in)o +(tro)q(duces)h(a)f(history)h(ev)o(en)o(t.)27 b(The)18 +b(default)g(is)g(`)p Fo(!)p Fp('.)26 b(Setting)18 b(this)g(to)f(0)195 +1164 y(inhibits)g(history)f(expansion.)1773 1296 y(V)l(ariable)-1861 +b Fh(char)20 b Fg(history)p 377 1296 V 20 w(subst)p 529 +1296 V 20 w(c)n(har)195 1351 y Fp(The)h(c)o(haracter)e(that)h(in)o(v)o +(ok)o(es)g(w)o(ord)g(substitution)h(if)g(found)f(at)g(the)h(start)e(of) +h(a)g(line.)37 b(The)195 1406 y(default)16 b(is)f(`)p +Fo(^)p Fp('.)1773 1538 y(V)l(ariable)-1861 b Fh(char)20 +b Fg(history)p 377 1538 V 20 w(commen)n(t)p 627 1538 +V 19 w(c)n(har)195 1593 y Fp(During)f(tok)o(enization,)h(if)f(this)h(c) +o(haracter)e(is)h(seen)h(as)e(the)h(\014rst)g(c)o(haracter)f(of)g(a)h +(w)o(ord,)g(then)195 1648 y(it)j(and)g(all)g(subsequen)o(t)h(c)o +(haracters)d(up)j(to)e(a)g(newline)i(are)f(ignored,)h(suppressing)g +(history)195 1702 y(expansion)16 b(for)f(the)g(remainder)h(of)f(the)g +(line.)21 b(This)16 b(is)g(disabled)h(b)o(y)e(default.)1773 +1835 y(V)l(ariable)-1861 b Fh(char)20 b(*)f Fg(history)p +422 1835 V 21 w(w)n(ord)p 567 1835 V 20 w(delimiters)195 +1889 y Fp(The)e(c)o(haracters)g(that)f(separate)h(tok)o(ens)g(for)f +Fo(\\)p Fp(fBhistory)p 1217 1889 14 2 v 17 w(tok)o(enize\(\))p +Fo(\\)p Fp(fP)l(.)g(The)i(default)g(v)m(alue)195 1944 +y(is)e Fo(")f(\\t\\n\(\)<>;&|")p Fp(.)1773 2077 y(V)l(ariable)-1861 +b Fh(char)20 b(*)f Fg(history)p 422 2077 18 3 v 21 w(no)p +504 2077 V 20 w(expand)p 704 2077 V 20 w(c)n(hars)195 +2131 y Fp(The)c(list)h(of)e(c)o(haracters)g(whic)o(h)i(inhibit)h +(history)e(expansion)h(if)f(found)h(immediately)g(follo)o(wing)195 +2186 y Fj(history)p 336 2186 14 2 v 16 w(expansion)p +547 2186 V 18 w(c)o(har)p Fp(.)j(The)d(default)f(is)h(space,)f(tab,)g +(newline,)h(carriage)f(return,)g(and)h(`)p Fo(=)p Fp('.)1773 +2318 y(V)l(ariable)-1861 b Fh(char)20 b(*)f Fg(history)p +422 2318 18 3 v 21 w(searc)n(h)p 599 2318 V 20 w(delimiter)p +843 2318 V 23 w(c)n(hars)195 2373 y Fp(The)13 b(list)h(of)f(additional) +h(c)o(haracters)e(whic)o(h)i(can)g(delimit)g(a)f(history)g(searc)o(h)g +(string,)g(in)h(addition)195 2428 y(to)h(space,)g(T)l(AB,)g(`)p +Fo(:)p Fp(')f(and)h(`)p Fo(?)p Fp(')g(in)h(the)f(case)g(of)g(a)g +(substring)g(searc)o(h.)20 b(The)c(default)f(is)h(empt)o(y)l(.)1773 +2560 y(V)l(ariable)-1861 b Fh(int)20 b Fg(history)p 351 +2560 V 20 w(quotes)p 533 2560 V 21 w(inhibit)p 717 2560 +V 23 w(expansion)195 2615 y Fp(If)15 b(non-zero,)f(single-quoted)j(w)o +(ords)c(are)i(not)f(scanned)h(for)f(the)h(history)g(expansion)g(c)o +(haracter.)195 2670 y(The)g(default)h(v)m(alue)h(is)e(0.)p +eop +%%Page: 11 13 +11 12 bop 75 -58 a Fp(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(History)867 b(11)1773 149 y(V)l(ariable)-1861 b Fh(rl_linebuf_func_t) +22 b(*)d Fg(history)p 762 149 18 3 v 21 w(inhibit)p 946 +149 V 23 w(expansion)p 1216 149 V 20 w(function)195 204 +y Fp(This)e(should)h(b)q(e)f(set)g(to)f(the)g(address)h(of)f(a)h +(function)g(that)f(tak)o(es)g(t)o(w)o(o)f(argumen)o(ts:)22 +b(a)17 b Fo(char)d(*)195 259 y Fp(\()p Fj(string)t Fp(\))e(and)i(an)f +Fo(int)g Fp(index)i(in)o(to)e(that)f(string)i(\()p Fj(i)r +Fp(\).)19 b(It)14 b(should)g(return)f(a)g(non-zero)h(v)m(alue)g(if)g +(the)195 314 y(history)h(expansion)g(starting)f(at)g +Fj(string[i])i Fp(should)g(not)e(b)q(e)h(p)q(erformed;)g(zero)f(if)h +(the)g(expansion)195 369 y(should)i(b)q(e)g(done.)22 +b(It)16 b(is)h(in)o(tended)g(for)e(use)i(b)o(y)f(applications)h(lik)o +(e)g(Bash)f(that)g(use)g(the)g(history)195 423 y(expansion)g(c)o +(haracter)f(for)f(additional)j(purp)q(oses.)j(By)c(default,)f(this)h(v) +m(ariable)g(is)g(set)f(to)f Fo(NULL)p Fp(.)75 543 y Fn(2.5)33 +b(History)22 b(Programming)h(Example)137 637 y Fp(The)16 +b(follo)o(wing)g(program)e(demonstrates)g(simple)j(use)e(of)g(the)g +Fk(gnu)g Fp(History)g(Library)l(.)195 698 y Fo(#include)23 +b(<stdio.h>)195 750 y(#include)g(<readline/history.h>)195 +854 y(main)g(\(argc,)g(argv\))314 906 y(int)h(argc;)314 +958 y(char)g(**argv;)195 1010 y({)243 1061 y(char)f(line[1024],)f(*t;) +243 1113 y(int)h(len,)g(done)h(=)g(0;)243 1217 y(line[0])f(=)g(0;)243 +1321 y(using_history)f(\(\);)243 1373 y(while)h(\(!done\))290 +1425 y({)338 1477 y(printf)g(\("history$)g("\);)338 1528 +y(fflush)g(\(stdout\);)338 1580 y(t)h(=)g(fgets)f(\(line,)g(sizeof)g +(\(line\))g(-)h(1,)f(stdin\);)338 1632 y(if)h(\(t)f(&&)h(*t\))386 +1684 y({)434 1736 y(len)f(=)h(strlen)f(\(t\);)434 1788 +y(if)g(\(t[len)g(-)h(1])g(==)f('\\n'\))481 1840 y(t[len)h(-)f(1])h(=)g +('\\0';)386 1892 y(})338 1995 y(if)g(\(!t\))386 2047 +y(strcpy)f(\(line,)g("quit"\);)338 2151 y(if)h(\(line[0]\))386 +2203 y({)434 2255 y(char)f(*expansion;)434 2307 y(int)g(result;)434 +2411 y(result)g(=)g(history_expand)f(\(line,)h(&expansion\);)434 +2462 y(if)g(\(result\))481 2514 y(fprintf)g(\(stderr,)g("\045s\\n",)g +(expansion\);)434 2618 y(if)g(\(result)g(<)h(0)g(||)f(result)g(==)h +(2\))481 2670 y({)p eop +%%Page: 12 14 +12 13 bop 75 -58 a Fp(12)1324 b(GNU)15 b(History)g(Library)529 +149 y Fo(free)23 b(\(expansion\);)529 201 y(continue;)481 +253 y(})434 357 y(add_history)f(\(expansion\);)434 409 +y(strncpy)h(\(line,)g(expansion,)f(sizeof)h(\(line\))g(-)h(1\);)434 +461 y(free)f(\(expansion\);)386 513 y(})338 616 y(if)h(\(strcmp)f +(\(line,)g("quit"\))g(==)g(0\))386 668 y(done)g(=)h(1;)338 +720 y(else)f(if)h(\(strcmp)f(\(line,)g("save"\))g(==)h(0\))386 +772 y(write_history)e(\("history_file"\);)338 824 y(else)h(if)h +(\(strcmp)f(\(line,)g("read"\))g(==)h(0\))386 876 y(read_history)e +(\("history_file"\);)338 928 y(else)h(if)h(\(strcmp)f(\(line,)g +("list"\))g(==)h(0\))386 980 y({)434 1032 y(register)e(HIST_ENTRY)h +(**the_list;)434 1083 y(register)f(int)i(i;)434 1187 +y(the_list)e(=)i(history_list)e(\(\);)434 1239 y(if)h(\(the_list\))481 +1291 y(for)h(\(i)f(=)h(0;)g(the_list[i];)e(i++\))529 +1343 y(printf)h(\("\045d:)g(\045s\\n",)g(i)h(+)g(history_base,)e +(the_list[i]->line\);)386 1395 y(})338 1447 y(else)h(if)h(\(strncmp)f +(\(line,)g("delete",)g(6\))g(==)h(0\))386 1499 y({)434 +1550 y(int)f(which;)434 1602 y(if)g(\(\(sscanf)g(\(line)g(+)h(6,)f +("\045d",)h(&which\)\))e(==)i(1\))481 1654 y({)529 1706 +y(HIST_ENTRY)f(*entry)g(=)g(remove_history)f(\(which\);)529 +1758 y(if)i(\(!entry\))577 1810 y(fprintf)f(\(stderr,)f("No)i(such)f +(entry)g(\045d\\n",)g(which\);)529 1862 y(else)577 1914 +y({)625 1966 y(free)g(\(entry->line\);)625 2017 y(free)g(\(entry\);)577 +2069 y(})481 2121 y(})434 2173 y(else)481 2225 y({)529 +2277 y(fprintf)g(\(stderr,)g("non-numeric)f(arg)h(given)h(to)f +(`delete'\\n"\);)481 2329 y(})386 2381 y(})290 2433 y(})195 +2484 y(})p eop +%%Page: 13 15 +13 14 bop 75 -58 a Fp(App)q(endix)17 b(A:)e(Concept)g(Index)1196 +b(13)75 149 y Fl(App)r(endix)25 b(A)41 b(Concept)27 b(Index)75 +321 y Fn(A)75 383 y Fe(anc)o(hored)14 b(searc)o(h)s Fd(.)8 +b(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)16 +b Fe(8)75 507 y Fn(E)75 568 y Fe(ev)o(en)o(t)d(designators)g +Fd(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)23 b +Fe(1)1012 321 y Fn(H)1012 431 y Fe(history)15 b(ev)o(en)o(ts)d +Fd(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24 +b Fe(1)1012 500 y(history)15 b(expansion)8 b Fd(.)g(.)e(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)21 b Fe(1)1012 568 y(History)14 b(Searc)o(hing)6 +b Fd(.)j(.)d(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b +Fe(8)p eop +%%Page: 14 16 +14 15 bop 75 -58 a Fp(14)1324 b(GNU)15 b(History)g(Library)p +eop +%%Page: 15 17 +15 16 bop 75 -58 a Fp(App)q(endix)17 b(B:)e(F)l(unction)h(and)g(V)l +(ariable)g(Index)919 b(15)75 149 y Fl(App)r(endix)25 +b(B)41 b(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26 +b(Index)75 321 y Fn(A)75 382 y Fc(add_histor)o(y)8 b +Fd(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)23 +b Fe(6)75 428 y Fc(append_his)o(to)o(ry)8 b Fd(.)s(.)f(.)f(.)g(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)21 b Fe(9)75 557 y Fn(C)75 618 +y Fc(clear_hist)o(or)o(y)6 b Fd(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)22 b Fe(6)75 664 y Fc(current_hi)o(st)o(ory)7 +b Fd(.)s(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20 b +Fe(7)75 793 y Fn(G)75 854 y Fc(get_histor)o(y_)o(eve)o(nt)5 +b Fd(.)t(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19 b Fe(9)75 +984 y Fn(H)75 1044 y Fc(history_ar)o(g_)o(ext)o(ra)o(ct)5 +b Fd(.)s(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)18 b Fe(9)75 1090 y Fc(history_ba)o(se) +6 b Fd(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22 +b Fe(10)75 1136 y Fc(history_co)o(mm)o(ent)o(_c)o(har)s +Fd(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)16 b Fe(10)75 1182 y Fc(history_ex)o(pa)o(nd)8 +b Fd(.)s(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21 +b Fe(9)75 1227 y Fc(history_ex)o(pa)o(nsi)o(on)o(_ch)o(ar)8 +b Fd(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)24 b Fe(10)75 1273 y Fc(history_ge)o(t)8 +b Fd(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)23 +b Fe(7)75 1319 y Fc(history_ge)o(t_)o(his)o(to)o(ry_)o(sta)o(te)6 +b Fd(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)22 b Fe(6)75 1364 y Fc(history_in)o(hi)o(bit)o(_e)o(xpa)o(nsi)o(on) +o(_fu)o(nc)o(tio)o(n)9 b Fd(.)d(.)g(.)g(.)g(.)g(.)h(.)24 +b Fe(11)75 1410 y Fc(history_is)o(_s)o(tif)o(le)o(d)6 +b Fd(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18 b Fe(7)75 1456 +y Fc(history_le)o(ng)o(th)8 b Fd(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)21 b Fe(10)75 1501 y Fc(history_li)o(st)6 b Fd(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Fe(7)75 +1547 y Fc(history_ma)o(x_)o(ent)o(ri)o(es)t Fd(.)s(.)6 +b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)g(.)h(.)f(.)17 b Fe(10)75 1593 y Fc(history_no)o(_e)o(xpa)o(nd)o +(_ch)o(ars)7 b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)g(.)h(.)23 b Fe(10)75 1638 y Fc(history_qu)o(ot)o(es_)o +(in)o(hib)o(it_)o(ex)o(pan)o(si)o(on)t Fd(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)17 b Fe(10)75 1684 y Fc(history_se)o(ar)o(ch)8 +b Fd(.)s(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21 +b Fe(8)75 1730 y Fc(history_se)o(ar)o(ch_)o(de)o(lim)o(ite)o(r_)o(cha)o +(rs)5 b Fd(.)s(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18 +b Fe(10)75 1776 y Fc(history_se)o(ar)o(ch_)o(po)o(s)6 +b Fd(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18 b Fe(8)75 1821 +y Fc(history_se)o(ar)o(ch_)o(pr)o(efi)o(x)s Fd(.)t(.)6 +b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)16 b Fe(8)75 1867 y Fc(history_se)o(t_)o(his)o(to)o(ry_) +o(sta)o(te)6 b Fd(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)22 b Fe(6)75 1913 y Fc(history_se)o(t_)o(pos)7 +b Fd(.)s(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20 b +Fe(7)1012 321 y Fc(history_sub)o(st)o(_ch)o(ar)t Fd(.)t(.)6 +b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)g(.)19 b Fe(10)1012 368 y Fc(history_tok)o(en)o(ize) +6 b Fd(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)20 b Fe(9)1012 +414 y Fc(history_tot)o(al)o(_by)o(te)o(s)5 b Fd(.)s(.)h(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)18 b Fe(7)1012 460 y Fc(history_tru)o(nc)o(ate)o(_f)o(ile)s +Fd(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)17 b Fe(9)1012 507 y Fc(history_wor)o(d_)o(del) +o(im)o(ite)o(rs)7 b Fd(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)24 b Fe(10)1012 640 y Fn(N)1012 +702 y Fc(next_histor)o(y)7 b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)g(.)h(.)f(.)23 b Fe(7)1012 836 y Fn(P)1012 898 y +Fc(previous_hi)o(st)o(ory)6 b Fd(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)20 b Fe(7)1012 1031 y Fn(R)1012 1094 y Fc(read_histor)o(y)7 +b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)23 +b Fe(8)1012 1140 y Fc(read_histor)o(y_)o(ran)o(ge)5 b +Fd(.)s(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)19 b Fe(8)1012 1186 +y Fc(remove_hist)o(or)o(y)9 b Fd(.)s(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)22 b Fe(6)1012 1233 y Fc(replace_his)o(to)o(ry_)o(en)o(try)s +Fd(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)17 b Fe(6)1012 1366 y Fn(S)1012 +1429 y Fc(stifle_hist)o(or)o(y)9 b Fd(.)s(.)d(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)22 b Fe(7)1012 1562 y Fn(U)1012 1624 +y Fc(unstifle_hi)o(st)o(ory)6 b Fd(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)20 b Fe(7)1012 1671 y Fc(using_histo)o(ry)6 b Fd(.)g(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22 b Fe(6)1012 1804 +y Fn(W)1012 1866 y Fc(where_histo)o(ry)6 b Fd(.)g(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)22 b Fe(7)1012 1913 y Fc(write_histo)o(ry)6 +b Fd(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22 +b Fe(8)p eop +%%Page: 16 18 +16 17 bop 75 -58 a Fp(16)1324 b(GNU)15 b(History)g(Library)p +eop +%%Page: -1 19 +-1 18 bop 1862 -58 a Fp(i)75 149 y Fl(T)-7 b(able)27 +b(of)f(Con)n(ten)n(ts)75 320 y Fn(1)67 b(Using)22 b(History)h(In)n +(teractiv)n(ely)9 b Fb(.)k(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)h(.)31 b Fn(1)224 389 y Fp(1.1)45 b(History)15 +b(Expansion)5 b Fa(.)j(.)f(.)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(.)19 b Fp(1)374 444 y(1.1.1)44 +b(Ev)o(en)o(t)14 b(Designators)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(.)h(.)26 b Fp(1)374 499 y(1.1.2)44 b(W)l(ord)15 +b(Designators)5 b Fa(.)h(.)i(.)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 +(.)19 b Fp(2)374 553 y(1.1.3)44 b(Mo)q(di\014ers)t Fa(.)8 +b(.)g(.)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(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.) +f(.)h(.)f(.)19 b Fp(2)75 675 y Fn(2)67 b(Programming)23 +b(with)g(GNU)f(History)16 b Fb(.)10 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f +(.)g(.)38 b Fn(5)224 743 y Fp(2.1)45 b(In)o(tro)q(duction)16 +b(to)f(History)10 b Fa(.)d(.)g(.)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(.)h(.)f(.)h(.)24 b Fp(5)224 798 y(2.2)45 b(History)15 +b(Storage)c Fa(.)d(.)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(.)h(.) +g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)26 b Fp(5)224 853 +y(2.3)45 b(History)15 b(F)l(unctions)d Fa(.)c(.)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(.)h(.)26 +b Fp(6)374 907 y(2.3.1)44 b(Initializing)18 b(History)d(and)h(State)e +(Managemen)o(t)g Fa(.)7 b(.)h(.)g(.)f(.)h(.)f(.)29 b +Fp(6)374 962 y(2.3.2)44 b(History)15 b(List)h(Managemen)o(t)d +Fa(.)7 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)h(.)f(.)29 b Fp(6)374 1017 y(2.3.3)44 +b(Information)15 b(Ab)q(out)g(the)h(History)f(List)c +Fa(.)d(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)26 +b Fp(7)374 1072 y(2.3.4)44 b(Mo)o(ving)15 b(Around)g(the)g(History)g +(List)c Fa(.)d(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)25 b Fp(7)374 1127 y(2.3.5)44 b(Searc)o(hing)16 +b(the)f(History)g(List)7 b Fa(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22 +b Fp(8)374 1181 y(2.3.6)44 b(Managing)15 b(the)g(History)g(File)6 +b Fa(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.) +f(.)h(.)f(.)h(.)f(.)h(.)20 b Fp(8)374 1236 y(2.3.7)44 +b(History)15 b(Expansion)9 b Fa(.)f(.)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(.)24 b Fp(9)224 1291 y(2.4)45 b(History)15 b(V)l(ariables)6 +b Fa(.)i(.)g(.)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(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)21 b Fp(10)224 1346 y(2.5)45 b(History)15 +b(Programming)f(Example)7 b Fa(.)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(.)22 +b Fp(11)75 1467 y Fn(App)r(endix)i(A)67 b(Concept)22 +b(Index)17 b Fb(.)10 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)h(.)f(.)g(.)38 b Fn(13)75 1602 y(App)r(endix)24 b(B)67 +b(F)-6 b(unction)25 b(and)e(V)-6 b(ariable)24 b(Index)16 +b Fb(.)10 b(.)g(.)g(.)38 b Fn(15)p eop +%%Page: -2 20 +-2 19 bop 75 -58 a Fp(ii)1346 b(GNU)15 b(History)g(Library)p +eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/readline-4.2/doc/readline.dvi b/readline-4.2/doc/readline.dvi Binary files differnew file mode 100644 index 0000000..516c43c --- /dev/null +++ b/readline-4.2/doc/readline.dvi diff --git a/readline-4.2/doc/readline.html b/readline-4.2/doc/readline.html new file mode 100644 index 0000000..8822671 --- /dev/null +++ b/readline-4.2/doc/readline.html @@ -0,0 +1,4907 @@ +<HTML> +<HEAD> +<!-- This HTML file has been created by texi2html 1.52 + from /usr/homes/chet/src/bash/readline-src/doc/rlman.texinfo on 16 April 2001 --> + +<TITLE>GNU Readline Library</TITLE> +</HEAD> +<BODY> +<H1>GNU Readline Library</H1> +<H2>Edition 4.2, for <CODE>Readline Library</CODE> Version 4.2.</H2> +<H2>Apr 2001</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="readline.html#SEC1">Command Line Editing</A> +<UL> +<LI><A NAME="TOC2" HREF="readline.html#SEC2">Introduction to Line Editing</A> +<LI><A NAME="TOC3" HREF="readline.html#SEC3">Readline Interaction</A> +<UL> +<LI><A NAME="TOC4" HREF="readline.html#SEC4">Readline Bare Essentials</A> +<LI><A NAME="TOC5" HREF="readline.html#SEC5">Readline Movement Commands</A> +<LI><A NAME="TOC6" HREF="readline.html#SEC6">Readline Killing Commands</A> +<LI><A NAME="TOC7" HREF="readline.html#SEC7">Readline Arguments</A> +<LI><A NAME="TOC8" HREF="readline.html#SEC8">Searching for Commands in the History</A> +</UL> +<LI><A NAME="TOC9" HREF="readline.html#SEC9">Readline Init File</A> +<UL> +<LI><A NAME="TOC10" HREF="readline.html#SEC10">Readline Init File Syntax</A> +<LI><A NAME="TOC11" HREF="readline.html#SEC11">Conditional Init Constructs</A> +<LI><A NAME="TOC12" HREF="readline.html#SEC12">Sample Init File</A> +</UL> +<LI><A NAME="TOC13" HREF="readline.html#SEC13">Bindable Readline Commands</A> +<UL> +<LI><A NAME="TOC14" HREF="readline.html#SEC14">Commands For Moving</A> +<LI><A NAME="TOC15" HREF="readline.html#SEC15">Commands For Manipulating The History</A> +<LI><A NAME="TOC16" HREF="readline.html#SEC16">Commands For Changing Text</A> +<LI><A NAME="TOC17" HREF="readline.html#SEC17">Killing And Yanking</A> +<LI><A NAME="TOC18" HREF="readline.html#SEC18">Specifying Numeric Arguments</A> +<LI><A NAME="TOC19" HREF="readline.html#SEC19">Letting Readline Type For You</A> +<LI><A NAME="TOC20" HREF="readline.html#SEC20">Keyboard Macros</A> +<LI><A NAME="TOC21" HREF="readline.html#SEC21">Some Miscellaneous Commands</A> +</UL> +<LI><A NAME="TOC22" HREF="readline.html#SEC22">Readline vi Mode</A> +</UL> +<LI><A NAME="TOC23" HREF="readline.html#SEC23">Programming with GNU Readline</A> +<UL> +<LI><A NAME="TOC24" HREF="readline.html#SEC24">Basic Behavior</A> +<LI><A NAME="TOC25" HREF="readline.html#SEC25">Custom Functions</A> +<UL> +<LI><A NAME="TOC26" HREF="readline.html#SEC26">Readline Typedefs</A> +<LI><A NAME="TOC27" HREF="readline.html#SEC27">Writing a New Function</A> +</UL> +<LI><A NAME="TOC28" HREF="readline.html#SEC28">Readline Variables</A> +<LI><A NAME="TOC29" HREF="readline.html#SEC29">Readline Convenience Functions</A> +<UL> +<LI><A NAME="TOC30" HREF="readline.html#SEC30">Naming a Function</A> +<LI><A NAME="TOC31" HREF="readline.html#SEC31">Selecting a Keymap</A> +<LI><A NAME="TOC32" HREF="readline.html#SEC32">Binding Keys</A> +<LI><A NAME="TOC33" HREF="readline.html#SEC33">Associating Function Names and Bindings</A> +<LI><A NAME="TOC34" HREF="readline.html#SEC34">Allowing Undoing</A> +<LI><A NAME="TOC35" HREF="readline.html#SEC35">Redisplay</A> +<LI><A NAME="TOC36" HREF="readline.html#SEC36">Modifying Text</A> +<LI><A NAME="TOC37" HREF="readline.html#SEC37">Character Input</A> +<LI><A NAME="TOC38" HREF="readline.html#SEC38">Terminal Management</A> +<LI><A NAME="TOC39" HREF="readline.html#SEC39">Utility Functions</A> +<LI><A NAME="TOC40" HREF="readline.html#SEC40">Miscellaneous Functions</A> +<LI><A NAME="TOC41" HREF="readline.html#SEC41">Alternate Interface</A> +<LI><A NAME="TOC42" HREF="readline.html#SEC42">A Readline Example</A> +</UL> +<LI><A NAME="TOC43" HREF="readline.html#SEC43">Readline Signal Handling</A> +<LI><A NAME="TOC44" HREF="readline.html#SEC44">Custom Completers</A> +<UL> +<LI><A NAME="TOC45" HREF="readline.html#SEC45">How Completing Works</A> +<LI><A NAME="TOC46" HREF="readline.html#SEC46">Completion Functions</A> +<LI><A NAME="TOC47" HREF="readline.html#SEC47">Completion Variables</A> +<LI><A NAME="TOC48" HREF="readline.html#SEC48">A Short Completion Example</A> +</UL> +</UL> +<LI><A NAME="TOC49" HREF="readline.html#SEC49">Concept Index</A> +<LI><A NAME="TOC50" HREF="readline.html#SEC50">Function and Variable Index</A> +</UL> +<P><HR><P> + +<P> +This document describes 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-2001 Free Software Foundation, Inc. + +</P> + + + +<H1><A NAME="SEC1" HREF="readline.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="readline.html#SEC2">Introduction and Notation</A>: Notation used in this text. +<LI><A HREF="readline.html#SEC3">Readline Interaction</A>: The minimum set of commands for editing a line. +<LI><A HREF="readline.html#SEC9">Readline Init File</A>: Customizing Readline from a user's view. +<LI><A HREF="readline.html#SEC13">Bindable Readline Commands</A>: A description of most of the Readline commands + available for binding +<LI><A HREF="readline.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="readline.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> +<EM>first</EM>, 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="readline.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="readline.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>RET</KBD>. You do not have to be at the +end of the line to press <KBD>RET</KBD>; the entire line is accepted +regardless of the location of the cursor within the line. + +</P> + +<UL> +<LI><A HREF="readline.html#SEC4">Readline Bare Essentials</A>: The least you need to know about Readline. +<LI><A HREF="readline.html#SEC5">Readline Movement Commands</A>: Moving about the input line. +<LI><A HREF="readline.html#SEC6">Readline Killing Commands</A>: How to delete text, and how to get it back! +<LI><A HREF="readline.html#SEC7">Readline Arguments</A>: Giving numeric arguments to commands. +<LI><A HREF="readline.html#SEC8">Searching</A>: Searching through previous lines. +</UL> + + + +<H3><A NAME="SEC4" HREF="readline.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="readline.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="readline.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-<KBD>DEL</KBD></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-<KBD>DEL</KBD></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="readline.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>, +which will delete the next ten characters on the input line. + +</P> + + +<H3><A NAME="SEC8" HREF="readline.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: <EM>incremental</EM> and <EM>non-incremental</EM>. + +</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. +A movement command will terminate the search, make the last line found +the current line, and begin editing. + +</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="readline.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 @env{INPUTRC}. 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="readline.html#SEC10">Readline Init File Syntax</A>: Syntax for the commands in the inputrc file. + +<LI><A HREF="readline.html#SEC11">Conditional Init Constructs</A>: Conditional key bindings in the inputrc file. + +<LI><A HREF="readline.html#SEC12">Sample Init File</A>: An example inputrc file. +</UL> + + + +<H3><A NAME="SEC10" HREF="readline.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="readline.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. +The syntax is simple: + + +<PRE> +set <VAR>variable</VAR> <VAR>value</VAR> +</PRE> + +Here, for example, 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> + +Variable names and values, where appropriate, are recognized without regard +to case. + +A great deal of run-time behavior is changeable with the following +variables. + +<A NAME="IDX9"></A> +<DL COMPACT> + +<DT><CODE>bell-style</CODE> +<DD> +<A NAME="IDX10"></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="IDX11"></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="IDX12"></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. +This variable must be set to an integer value greater than or equal to 0. +The default limit is <CODE>100</CODE>. + +<DT><CODE>convert-meta</CODE> +<DD> +<A NAME="IDX13"></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="IDX14"></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="IDX15"></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="IDX16"></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="IDX17"></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="IDX18"></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="IDX19"></A> +<A NAME="IDX20"></A> +If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it +will not clear the eighth bit in 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="IDX21"></A> +The string of characters that should terminate an incremental search without +subsequently executing the character as a command (see section <A HREF="readline.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="IDX22"></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-move</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="IDX23"></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="IDX24"></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="IDX25"></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="IDX26"></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 on a line +in the init file the name of the key +you wish to bind the command to, a colon, and then the name of the +command. The name of the key +can be expressed in different ways, depending on what you find most +comfortable. + +In addition to command names, readline allows keys to be bound +to a string that is inserted when the key is pressed (a <VAR>macro</VAR>). + +<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: "> output" +</PRE> + +In the above example, <KBD>C-u</KBD> is bound to the function +<CODE>universal-argument</CODE>, +<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</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>`> output'</SAMP> into the line). + +A number of symbolic character names are recognized while +processing this key binding syntax: +<VAR>DEL</VAR>, +<VAR>ESC</VAR>, +<VAR>ESCAPE</VAR>, +<VAR>LFD</VAR>, +<VAR>NEWLINE</VAR>, +<VAR>RET</VAR>, +<VAR>RETURN</VAR>, +<VAR>RUBOUT</VAR>, +<VAR>SPACE</VAR>, +<VAR>SPC</VAR>, +and +<VAR>TAB</VAR>. + +<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 again 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 ASCII code is the octal value <VAR>nnn</VAR> +(one to three digits) +<DT><CODE>\x<VAR>nnn</VAR></CODE> +<DD> +the character whose ASCII 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>`<KBD>C-x</KBD> \'</SAMP> +insert a single <SAMP>`\'</SAMP> into the line: + +<PRE> +"\C-x\\": "\\" +</PRE> + +</DL> + + + +<H3><A NAME="SEC11" HREF="readline.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 +a particular value. +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. +For example, the following directive reads from <TT>`/etc/inputrc'</TT>: + +<PRE> +$include /etc/inputrc +</PRE> + +</DL> + + + +<H3><A NAME="SEC12" HREF="readline.html#TOC12">Sample Init File</A></H3> + +<P> +Here is an example of an <VAR>inputrc</VAR> 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="readline.html#TOC13">Bindable Readline Commands</A></H2> + + +<UL> +<LI><A HREF="readline.html#SEC14">Commands For Moving</A>: Moving about the line. +<LI><A HREF="readline.html#SEC15">Commands For History</A>: Getting at previous lines. +<LI><A HREF="readline.html#SEC16">Commands For Text</A>: Commands for changing text. +<LI><A HREF="readline.html#SEC17">Commands For Killing</A>: Commands for killing and yanking. +<LI><A HREF="readline.html#SEC18">Numeric Arguments</A>: Specifying numeric arguments, repeat counts. +<LI><A HREF="readline.html#SEC19">Commands For Completion</A>: Getting Readline to do the typing for you. +<LI><A HREF="readline.html#SEC20">Keyboard Macros</A>: Saving and re-executing typed characters +<LI><A HREF="readline.html#SEC21">Miscellaneous Commands</A>: Other miscellaneous commands. +</UL> + +<P> +This section describes Readline commands that may be bound to key +sequences. +Command names without an accompanying key sequence are unbound by default. + +</P> +<P> +In the following descriptions, <EM>point</EM> refers to the current cursor +position, and <EM>mark</EM> 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 <EM>region</EM>. + +</P> + + +<H3><A NAME="SEC14" HREF="readline.html#TOC14">Commands For Moving</A></H3> +<DL COMPACT> + +<DT><CODE>beginning-of-line (C-a)</CODE> +<DD> +<A NAME="IDX27"></A> +Move to the start of the current line. + +<DT><CODE>end-of-line (C-e)</CODE> +<DD> +<A NAME="IDX28"></A> +Move to the end of the line. + +<DT><CODE>forward-char (C-f)</CODE> +<DD> +<A NAME="IDX29"></A> +Move forward a character. + +<DT><CODE>backward-char (C-b)</CODE> +<DD> +<A NAME="IDX30"></A> +Move back a character. + +<DT><CODE>forward-word (M-f)</CODE> +<DD> +<A NAME="IDX31"></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="IDX32"></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="IDX33"></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="IDX34"></A> +Refresh the current line. By default, this is unbound. + +</DL> + + + +<H3><A NAME="SEC15" HREF="readline.html#TOC15">Commands For Manipulating The History</A></H3> + +<DL COMPACT> + +<DT><CODE>accept-line (Newline or Return)</CODE> +<DD> +<A NAME="IDX35"></A> +Accept the line regardless of where the cursor is. +If this line is +non-empty, it may be added to the history list for future recall with +<CODE>add_history()</CODE>. +If this line is a modified history line, the history line is restored +to its original state. + +<DT><CODE>previous-history (C-p)</CODE> +<DD> +<A NAME="IDX36"></A> +Move `back' through the history list, fetching the previous command. + +<DT><CODE>next-history (C-n)</CODE> +<DD> +<A NAME="IDX37"></A> +Move `forward' through the history list, fetching the next command. + +<DT><CODE>beginning-of-history (M-<)</CODE> +<DD> +<A NAME="IDX38"></A> +Move to the first line in the history. + +<DT><CODE>end-of-history (M->)</CODE> +<DD> +<A NAME="IDX39"></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="IDX40"></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="IDX41"></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="IDX42"></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="IDX43"></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="IDX44"></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="IDX45"></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="IDX46"></A> +Insert the first argument to the previous command (usually +the second word on the previous line) at point. +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-. or M-_)</CODE> +<DD> +<A NAME="IDX47"></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="readline.html#TOC16">Commands For Changing Text</A></H3> + +<DL COMPACT> + +<DT><CODE>delete-char (C-d)</CODE> +<DD> +<A NAME="IDX48"></A> +Delete the character at point. If point 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 EOF. + +<DT><CODE>backward-delete-char (Rubout)</CODE> +<DD> +<A NAME="IDX49"></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="IDX50"></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 or C-v)</CODE> +<DD> +<A NAME="IDX51"></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-<KBD>TAB</KBD>)</CODE> +<DD> +<A NAME="IDX52"></A> +Insert a tab character. + +<DT><CODE>self-insert (a, b, A, 1, !, ...)</CODE> +<DD> +<A NAME="IDX53"></A> +Insert yourself. + +<DT><CODE>transpose-chars (C-t)</CODE> +<DD> +<A NAME="IDX54"></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="IDX55"></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="IDX56"></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="IDX57"></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="IDX58"></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="readline.html#TOC17">Killing And Yanking</A></H3> + +<DL COMPACT> + +<DT><CODE>kill-line (C-k)</CODE> +<DD> +<A NAME="IDX59"></A> +Kill the text from point to the end of the line. + +<DT><CODE>backward-kill-line (C-x Rubout)</CODE> +<DD> +<A NAME="IDX60"></A> +Kill backward to the beginning of the line. + +<DT><CODE>unix-line-discard (C-u)</CODE> +<DD> +<A NAME="IDX61"></A> +Kill backward from the cursor to the beginning of the current line. + +<DT><CODE>kill-whole-line ()</CODE> +<DD> +<A NAME="IDX62"></A> +Kill all characters on the current line, no matter where point is. +By default, this is unbound. + +<DT><CODE>kill-word (M-d)</CODE> +<DD> +<A NAME="IDX63"></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-<KBD>DEL</KBD>)</CODE> +<DD> +<A NAME="IDX64"></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="IDX65"></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="IDX66"></A> +Delete all spaces and tabs around point. By default, this is unbound. + +<DT><CODE>kill-region ()</CODE> +<DD> +<A NAME="IDX67"></A> +Kill the text in the current region. +By default, this command is unbound. + +<DT><CODE>copy-region-as-kill ()</CODE> +<DD> +<A NAME="IDX68"></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="IDX69"></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="IDX70"></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="IDX71"></A> +Yank the top of the kill ring into the buffer at point. + +<DT><CODE>yank-pop (M-y)</CODE> +<DD> +<A NAME="IDX72"></A> +Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>. +</DL> + + + +<H3><A NAME="SEC18" HREF="readline.html#TOC18">Specifying Numeric Arguments</A></H3> +<DL COMPACT> + +<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, ... <KBD>M--</KBD>)</CODE> +<DD> +<A NAME="IDX73"></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="IDX74"></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="readline.html#TOC19">Letting Readline Type For You</A></H3> + +<DL COMPACT> + +<DT><CODE>complete (<KBD>TAB</KBD>)</CODE> +<DD> +<A NAME="IDX75"></A> +Attempt to perform completion on the text before point. +The actual completion performed is application-specific. +The default is filename completion. + +<DT><CODE>possible-completions (M-?)</CODE> +<DD> +<A NAME="IDX76"></A> +List the possible completions of the text before point. + +<DT><CODE>insert-completions (M-*)</CODE> +<DD> +<A NAME="IDX77"></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="IDX78"></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 +(subject to the setting of <CODE>bell-style</CODE>) +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 <KBD>TAB</KBD>, but is unbound +by default. + +<DT><CODE>delete-char-or-list ()</CODE> +<DD> +<A NAME="IDX79"></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="readline.html#TOC20">Keyboard Macros</A></H3> +<DL COMPACT> + +<DT><CODE>start-kbd-macro (C-x ()</CODE> +<DD> +<A NAME="IDX80"></A> +Begin saving the characters typed into the current keyboard macro. + +<DT><CODE>end-kbd-macro (C-x ))</CODE> +<DD> +<A NAME="IDX81"></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="IDX82"></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="readline.html#TOC21">Some Miscellaneous Commands</A></H3> +<DL COMPACT> + +<DT><CODE>re-read-init-file (C-x C-r)</CODE> +<DD> +<A NAME="IDX83"></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="IDX84"></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="IDX85"></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 (<KBD>ESC</KBD>)</CODE> +<DD> +<A NAME="IDX86"></A> +Metafy the next character typed. This is for keyboards +without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing +<KBD>M-f</KBD>. + +<DT><CODE>undo (C-_ or C-x C-u)</CODE> +<DD> +<A NAME="IDX87"></A> +Incremental undo, separately remembered for each line. + +<DT><CODE>revert-line (M-r)</CODE> +<DD> +<A NAME="IDX88"></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="IDX89"></A> +Perform tilde expansion on the current word. + +<DT><CODE>set-mark (C-@)</CODE> +<DD> +<A NAME="IDX90"></A> +Set the mark to the 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="IDX91"></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="IDX92"></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="IDX93"></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="IDX94"></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="IDX95"></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="IDX96"></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="IDX97"></A> +Print all of the Readline key sequences bound to macros and the +strings they output. 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="readline.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 <KBD>M-C-j</KBD> (bound to emacs-editing-mode +when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> 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> + + + +<H1><A NAME="SEC23" HREF="readline.html#TOC23">Programming with GNU Readline</A></H1> + +<P> +This chapter describes the interface between the GNU Readline Library and +other programs. If you are a programmer, and you wish to include the +features found in GNU Readline +such as completion, line editing, and interactive history manipulation +in your own programs, this section is for you. + +</P> + +<UL> +<LI><A HREF="readline.html#SEC24">Basic Behavior</A>: Using the default behavior of Readline. +<LI><A HREF="readline.html#SEC25">Custom Functions</A>: Adding your own functions to Readline. +<LI><A HREF="readline.html#SEC28">Readline Variables</A>: Variables accessible to custom + functions. +<LI><A HREF="readline.html#SEC29">Readline Convenience Functions</A>: Functions which Readline supplies to + aid in writing your own custom + functions. +<LI><A HREF="readline.html#SEC43">Readline Signal Handling</A>: How Readline behaves when it receives signals. +<LI><A HREF="readline.html#SEC44">Custom Completers</A>: Supplanting or supplementing Readline's + completion functions. +</UL> + + + +<H2><A NAME="SEC24" HREF="readline.html#TOC24">Basic Behavior</A></H2> + +<P> +Many programs provide a command line interface, such as <CODE>mail</CODE>, +<CODE>ftp</CODE>, and <CODE>sh</CODE>. For such programs, the default behaviour of +Readline is sufficient. This section describes how to use Readline in +the simplest way possible, perhaps to replace calls in your code to +<CODE>gets()</CODE> or <CODE>fgets()</CODE>. + +</P> +<P> +<A NAME="IDX98"></A> +<A NAME="IDX99"></A> + +</P> +<P> +The function <CODE>readline()</CODE> prints a prompt <VAR>prompt</VAR> +and then reads and returns a single line of text from the user. +If <VAR>prompt</VAR> is <CODE>NULL</CODE> or the empty string, no prompt is displayed. +The line <CODE>readline</CODE> returns is allocated with <CODE>malloc()</CODE>; +the caller should <CODE>free()</CODE> the line when it has finished with it. +The declaration for <CODE>readline</CODE> in ANSI C is + +</P> + +<PRE> +<CODE>char *readline (const char *<VAR>prompt</VAR>);</CODE> +</PRE> + +<P> +So, one might say + +<PRE> +<CODE>char *line = readline ("Enter a line: ");</CODE> +</PRE> + +<P> +in order to read a line of text from the user. +The line returned has the final newline removed, so only the +text remains. + +</P> +<P> +If <CODE>readline</CODE> encounters an <CODE>EOF</CODE> while reading the line, and the +line is empty at that point, then <CODE>(char *)NULL</CODE> is returned. +Otherwise, the line is ended just as if a newline had been typed. + +</P> +<P> +If you want the user to be able to get at the line later, (with +<KBD>C-p</KBD> for example), you must call <CODE>add_history()</CODE> to save the +line away in a <EM>history</EM> list of such lines. + +</P> + +<PRE> +<CODE>add_history (line)</CODE>; +</PRE> + +<P> +For full details on the GNU History Library, see the associated manual. + +</P> +<P> +It is preferable to avoid saving empty lines on the history list, since +users rarely have a burning need to reuse a blank line. Here is +a function which usefully replaces the standard <CODE>gets()</CODE> library +function, and has the advantage of no static buffer to overflow: + +</P> + +<PRE> +/* A static variable for holding the line. */ +static char *line_read = (char *)NULL; + +/* Read a string, and return a pointer to it. Returns NULL on EOF. */ +char * +rl_gets () +{ + /* If the buffer has already been allocated, return the memory + to the free pool. */ + if (line_read) + { + free (line_read); + line_read = (char *)NULL; + } + + /* Get a line from the user. */ + line_read = readline (""); + + /* If the line has any text in it, save it on the history. */ + if (line_read && *line_read) + add_history (line_read); + + return (line_read); +} +</PRE> + +<P> +This function gives the user the default behaviour of <KBD>TAB</KBD> +completion: completion on file names. If you do not want Readline to +complete on filenames, you can change the binding of the <KBD>TAB</KBD> key +with <CODE>rl_bind_key()</CODE>. + +</P> + +<PRE> +<CODE>int rl_bind_key (int <VAR>key</VAR>, rl_command_func_t *<VAR>function</VAR>);</CODE> +</PRE> + +<P> +<CODE>rl_bind_key()</CODE> takes two arguments: <VAR>key</VAR> is the character that +you want to bind, and <VAR>function</VAR> is the address of the function to +call when <VAR>key</VAR> is pressed. Binding <KBD>TAB</KBD> to <CODE>rl_insert()</CODE> +makes <KBD>TAB</KBD> insert itself. +<CODE>rl_bind_key()</CODE> returns non-zero if <VAR>key</VAR> is not a valid +ASCII character code (between 0 and 255). + +</P> +<P> +Thus, to disable the default <KBD>TAB</KBD> behavior, the following suffices: + +<PRE> +<CODE>rl_bind_key ('\t', rl_insert);</CODE> +</PRE> + +<P> +This code should be executed once at the start of your program; you +might write a function called <CODE>initialize_readline()</CODE> which +performs this and other desired initializations, such as installing +custom completers (see section <A HREF="readline.html#SEC44">Custom Completers</A>). + +</P> + + +<H2><A NAME="SEC25" HREF="readline.html#TOC25">Custom Functions</A></H2> + +<P> +Readline provides many functions for manipulating the text of +the line, but it isn't possible to anticipate the needs of all +programs. This section describes the various functions and variables +defined within the Readline library which allow a user program to add +customized functionality to Readline. + +</P> +<P> +Before declaring any functions that customize Readline's behavior, or +using any functionality Readline provides in other code, an +application writer should include the file <CODE><readline/readline.h></CODE> +in any file that uses Readline's features. Since some of the definitions +in <CODE>readline.h</CODE> use the <CODE>stdio</CODE> library, the file +<CODE><stdio.h></CODE> should be included before <CODE>readline.h</CODE>. + +</P> + +<UL> +<LI><A HREF="readline.html#SEC26">Readline Typedefs</A>: C declarations to make code readable. +<LI><A HREF="readline.html#SEC27">Function Writing</A>: Variables and calling conventions. +</UL> + + + +<H3><A NAME="SEC26" HREF="readline.html#TOC26">Readline Typedefs</A></H3> + +<P> +For readabilty, we declare a number of new object types, all pointers +to functions. + +</P> +<P> +The reason for declaring these new types is to make it easier to write +code describing pointers to C functions with appropriately prototyped +arguments and return values. + +</P> +<P> +For instance, say we want to declare a variable <VAR>func</VAR> as a pointer +to a function which takes two <CODE>int</CODE> arguments and returns an +<CODE>int</CODE> (this is the type of all of the Readline bindable functions). +Instead of the classic C declaration + +</P> +<P> +<CODE>int (*func)();</CODE> + +</P> +<P> +or the ANSI-C style declaration + +</P> +<P> +<CODE>int (*func)(int, int);</CODE> + +</P> +<P> +we may write + +</P> +<P> +<CODE>rl_command_func_t *func;</CODE> + +</P> +<P> +The full list of function pointer types available is + +</P> +<DL COMPACT> + +<DT><CODE>typedef int rl_command_func_t (int, int);</CODE> +<DD> +<DT><CODE>typedef char *rl_compentry_func_t (const char *, int);</CODE> +<DD> +<DT><CODE>typedef char **rl_completion_func_t (const char *, int, int);</CODE> +<DD> +<DT><CODE>typedef char *rl_quote_func_t (char *, int, char *);</CODE> +<DD> +<DT><CODE>typedef char *rl_dequote_func_t (char *, int);</CODE> +<DD> +<DT><CODE>typedef int rl_compignore_func_t (char **);</CODE> +<DD> +<DT><CODE>typedef void rl_compdisp_func_t (char **, int, int);</CODE> +<DD> +<DT><CODE>typedef int rl_hook_func_t (void);</CODE> +<DD> +<DT><CODE>typedef int rl_getc_func_t (FILE *);</CODE> +<DD> +<DT><CODE>typedef int rl_linebuf_func_t (char *, int);</CODE> +<DD> +<DT><CODE>typedef int rl_intfunc_t (int);</CODE> +<DD> +<DT><CODE>#define rl_ivoidfunc_t rl_hook_func_t</CODE> +<DD> +<DT><CODE>typedef int rl_icpfunc_t (char *);</CODE> +<DD> +<DT><CODE>typedef int rl_icppfunc_t (char **);</CODE> +<DD> +<DT><CODE>typedef void rl_voidfunc_t (void);</CODE> +<DD> +<DT><CODE>typedef void rl_vintfunc_t (int);</CODE> +<DD> +<DT><CODE>typedef void rl_vcpfunc_t (char *);</CODE> +<DD> +<DT><CODE>typedef void rl_vcppfunc_t (char **);</CODE> +<DD> +</DL> + + + +<H3><A NAME="SEC27" HREF="readline.html#TOC27">Writing a New Function</A></H3> + +<P> +In order to write new functions for Readline, you need to know the +calling conventions for keyboard-invoked functions, and the names of the +variables that describe the current state of the line read so far. + +</P> +<P> +The calling sequence for a command <CODE>foo</CODE> looks like + +</P> + +<PRE> +<CODE>foo (int count, int key)</CODE> +</PRE> + +<P> +where <VAR>count</VAR> is the numeric argument (or 1 if defaulted) and +<VAR>key</VAR> is the key that invoked this function. + +</P> +<P> +It is completely up to the function as to what should be done with the +numeric argument. Some functions use it as a repeat count, some +as a flag, and others to choose alternate behavior (refreshing the current +line as opposed to refreshing the screen, for example). Some choose to +ignore it. In general, if a +function uses the numeric argument as a repeat count, it should be able +to do something useful with both negative and positive arguments. +At the very least, it should be aware that it can be passed a +negative argument. + +</P> + + +<H2><A NAME="SEC28" HREF="readline.html#TOC28">Readline Variables</A></H2> + +<P> +These variables are available to function writers. + +</P> +<P> +<DL> +<DT><U>Variable:</U> char * <B>rl_line_buffer</B> +<DD><A NAME="IDX100"></A> +This is the line gathered so far. You are welcome to modify the +contents of the line, but see section <A HREF="readline.html#SEC34">Allowing Undoing</A>. The +function <CODE>rl_extend_line_buffer</CODE> is available to increase +the memory allocated to <CODE>rl_line_buffer</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_point</B> +<DD><A NAME="IDX101"></A> +The offset of the current cursor position in <CODE>rl_line_buffer</CODE> +(the <EM>point</EM>). +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_end</B> +<DD><A NAME="IDX102"></A> +The number of characters present in <CODE>rl_line_buffer</CODE>. When +<CODE>rl_point</CODE> is at the end of the line, <CODE>rl_point</CODE> and +<CODE>rl_end</CODE> are equal. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_mark</B> +<DD><A NAME="IDX103"></A> +The <VAR>mark</VAR> (saved position) in the current line. If set, the mark +and point define a <EM>region</EM>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_done</B> +<DD><A NAME="IDX104"></A> +Setting this to a non-zero value causes Readline to return the current +line immediately. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_num_chars_to_read</B> +<DD><A NAME="IDX105"></A> +Setting this to a positive value before calling <CODE>readline()</CODE> causes +Readline to return after accepting that many characters, rather +than reading up to a character bound to <CODE>accept-line</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_pending_input</B> +<DD><A NAME="IDX106"></A> +Setting this to a value makes it the next keystroke read. This is a +way to stuff a single character into the input stream. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_dispatching</B> +<DD><A NAME="IDX107"></A> +Set to a non-zero value if a function is being called from a key binding; +zero otherwise. Application functions can test this to discover whether +they were called directly or by Readline's dispatching mechanism. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_erase_empty_line</B> +<DD><A NAME="IDX108"></A> +Setting this to a non-zero value causes Readline to completely erase +the current line, including any prompt, any time a newline is typed as +the only character on an otherwise-empty line. The cursor is moved to +the beginning of the newly-blank line. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> char * <B>rl_prompt</B> +<DD><A NAME="IDX109"></A> +The prompt Readline uses. This is set from the argument to +<CODE>readline()</CODE>, and should not be assigned to directly. +The <CODE>rl_set_prompt()</CODE> function (see section <A HREF="readline.html#SEC35">Redisplay</A>) may +be used to modify the prompt string after calling <CODE>readline()</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_already_prompted</B> +<DD><A NAME="IDX110"></A> +If an application wishes to display the prompt itself, rather than have +Readline do it the first time <CODE>readline()</CODE> is called, it should set +this variable to a non-zero value after displaying the prompt. +The prompt must also be passed as the argument to <CODE>readline()</CODE> so +the redisplay functions can update the display properly. +The calling application is responsible for managing the value; Readline +never sets it. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> const char * <B>rl_library_version</B> +<DD><A NAME="IDX111"></A> +The version number of this revision of the library. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_gnu_readline_p</B> +<DD><A NAME="IDX112"></A> +Always set to 1, denoting that this is GNU readline rather than some +emulation. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> const char * <B>rl_terminal_name</B> +<DD><A NAME="IDX113"></A> +The terminal type, used for initialization. If not set by the application, +Readline sets this to the value of the @env{TERM} environment variable +the first time it is called. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> const char * <B>rl_readline_name</B> +<DD><A NAME="IDX114"></A> +This variable is set to a unique name by each application using Readline. +The value allows conditional parsing of the inputrc file +(see section <A HREF="readline.html#SEC11">Conditional Init Constructs</A>). +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> FILE * <B>rl_instream</B> +<DD><A NAME="IDX115"></A> +The stdio stream from which Readline reads input. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> FILE * <B>rl_outstream</B> +<DD><A NAME="IDX116"></A> +The stdio stream to which Readline performs output. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_command_func_t * <B>rl_last_func</B> +<DD><A NAME="IDX117"></A> +The address of the last command function Readline executed. May be used to +test whether or not a function is being executed twice in succession, for +example. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_hook_func_t * <B>rl_startup_hook</B> +<DD><A NAME="IDX118"></A> +If non-zero, this is the address of a function to call just +before <CODE>readline</CODE> prints the first prompt. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_hook_func_t * <B>rl_pre_input_hook</B> +<DD><A NAME="IDX119"></A> +If non-zero, this is the address of a function to call after +the first prompt has been printed and just before <CODE>readline</CODE> +starts reading input characters. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_hook_func_t * <B>rl_event_hook</B> +<DD><A NAME="IDX120"></A> +If non-zero, this is the address of a function to call periodically +when Readline is waiting for terminal input. +By default, this will be called at most ten times a second if there +is no keyboard input. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_getc_func_t * <B>rl_getc_function</B> +<DD><A NAME="IDX121"></A> +If non-zero, Readline will call indirectly through this pointer +to get a character from the input stream. By default, it is set to +<CODE>rl_getc</CODE>, the default Readline character input function +(see section <A HREF="readline.html#SEC37">Character Input</A>). +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_redisplay_function</B> +<DD><A NAME="IDX122"></A> +If non-zero, Readline will call indirectly through this pointer +to update the display with the current contents of the editing buffer. +By default, it is set to <CODE>rl_redisplay</CODE>, the default Readline +redisplay function (see section <A HREF="readline.html#SEC35">Redisplay</A>). +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_vintfunc_t * <B>rl_prep_term_function</B> +<DD><A NAME="IDX123"></A> +If non-zero, Readline will call indirectly through this pointer +to initialize the terminal. The function takes a single argument, an +<CODE>int</CODE> flag that says whether or not to use eight-bit characters. +By default, this is set to <CODE>rl_prep_terminal</CODE> +(see section <A HREF="readline.html#SEC38">Terminal Management</A>). +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_deprep_term_function</B> +<DD><A NAME="IDX124"></A> +If non-zero, Readline will call indirectly through this pointer +to reset the terminal. This function should undo the effects of +<CODE>rl_prep_term_function</CODE>. +By default, this is set to <CODE>rl_deprep_terminal</CODE> +(see section <A HREF="readline.html#SEC38">Terminal Management</A>). +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B> +<DD><A NAME="IDX125"></A> +This variable is set to the keymap (see section <A HREF="readline.html#SEC31">Selecting a Keymap</A>) in which the +currently executing readline function was found. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B> +<DD><A NAME="IDX126"></A> +This variable is set to the keymap (see section <A HREF="readline.html#SEC31">Selecting a Keymap</A>) in which the +last key binding occurred. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> char * <B>rl_executing_macro</B> +<DD><A NAME="IDX127"></A> +This variable is set to the text of any currently-executing macro. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_readline_state</B> +<DD><A NAME="IDX128"></A> +A variable with bit values that encapsulate the current Readline state. +A bit is set with the <CODE>RL_SETSTATE</CODE> macro, and unset with the +<CODE>RL_UNSETSTATE</CODE> macro. Use the <CODE>RL_ISSTATE</CODE> macro to test +whether a particular state bit is set. Current state bits include: + +</P> +<DL COMPACT> + +<DT><CODE>RL_STATE_NONE</CODE> +<DD> +Readline has not yet been called, nor has it begun to intialize. +<DT><CODE>RL_STATE_INITIALIZING</CODE> +<DD> +Readline is initializing its internal data structures. +<DT><CODE>RL_STATE_INITIALIZED</CODE> +<DD> +Readline has completed its initialization. +<DT><CODE>RL_STATE_TERMPREPPED</CODE> +<DD> +Readline has modified the terminal modes to do its own input and redisplay. +<DT><CODE>RL_STATE_READCMD</CODE> +<DD> +Readline is reading a command from the keyboard. +<DT><CODE>RL_STATE_METANEXT</CODE> +<DD> +Readline is reading more input after reading the meta-prefix character. +<DT><CODE>RL_STATE_DISPATCHING</CODE> +<DD> +Readline is dispatching to a command. +<DT><CODE>RL_STATE_MOREINPUT</CODE> +<DD> +Readline is reading more input while executing an editing command. +<DT><CODE>RL_STATE_ISEARCH</CODE> +<DD> +Readline is performing an incremental history search. +<DT><CODE>RL_STATE_NSEARCH</CODE> +<DD> +Readline is performing a non-incremental history search. +<DT><CODE>RL_STATE_SEARCH</CODE> +<DD> +Readline is searching backward or forward through the history for a string. +<DT><CODE>RL_STATE_NUMERICARG</CODE> +<DD> +Readline is reading a numeric argument. +<DT><CODE>RL_STATE_MACROINPUT</CODE> +<DD> +Readline is currently getting its input from a previously-defined keyboard +macro. +<DT><CODE>RL_STATE_MACRODEF</CODE> +<DD> +Readline is currently reading characters defining a keyboard macro. +<DT><CODE>RL_STATE_OVERWRITE</CODE> +<DD> +Readline is in overwrite mode. +<DT><CODE>RL_STATE_COMPLETING</CODE> +<DD> +Readline is performing word completion. +<DT><CODE>RL_STATE_SIGHANDLER</CODE> +<DD> +Readline is currently executing the readline signal handler. +<DT><CODE>RL_STATE_UNDOING</CODE> +<DD> +Readline is performing an undo. +<DT><CODE>RL_STATE_DONE</CODE> +<DD> +Readline has read a key sequence bound to <CODE>accept-line</CODE> +and is about to return the line to the caller. +</DL> + +</DL> + +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_explicit_arg</B> +<DD><A NAME="IDX129"></A> +Set to a non-zero value if an explicit numeric argument was specified by +the user. Only valid in a bindable command function. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_numeric_arg</B> +<DD><A NAME="IDX130"></A> +Set to the value of any numeric argument explicitly specified by the user +before executing the current Readline function. Only valid in a bindable +command function. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_editing_mode</B> +<DD><A NAME="IDX131"></A> +Set to a value denoting Readline's current editing mode. A value of +<VAR>1</VAR> means Readline is currently in emacs mode; <VAR>0</VAR> +means that vi mode is active. +</DL> + +</P> + + + +<H2><A NAME="SEC29" HREF="readline.html#TOC29">Readline Convenience Functions</A></H2> + + +<UL> +<LI><A HREF="readline.html#SEC30">Function Naming</A>: How to give a function you write a name. +<LI><A HREF="readline.html#SEC31">Keymaps</A>: Making keymaps. +<LI><A HREF="readline.html#SEC32">Binding Keys</A>: Changing Keymaps. +<LI><A HREF="readline.html#SEC33">Associating Function Names and Bindings</A>: Translate function names to + key sequences. +<LI><A HREF="readline.html#SEC34">Allowing Undoing</A>: How to make your functions undoable. +<LI><A HREF="readline.html#SEC35">Redisplay</A>: Functions to control line display. +<LI><A HREF="readline.html#SEC36">Modifying Text</A>: Functions to modify <CODE>rl_line_buffer</CODE>. +<LI><A HREF="readline.html#SEC37">Character Input</A>: Functions to read keyboard input. +<LI><A HREF="readline.html#SEC38">Terminal Management</A>: Functions to manage terminal settings. +<LI><A HREF="readline.html#SEC39">Utility Functions</A>: Generally useful functions and hooks. +<LI><A HREF="readline.html#SEC40">Miscellaneous Functions</A>: Functions that don't fall into any category. +<LI><A HREF="readline.html#SEC41">Alternate Interface</A>: Using Readline in a `callback' fashion. +<LI><A HREF="readline.html#SEC42">A Readline Example</A>: An example Readline function. +</UL> + + + +<H3><A NAME="SEC30" HREF="readline.html#TOC30">Naming a Function</A></H3> + +<P> +The user can dynamically change the bindings of keys while using +Readline. This is done by representing the function with a descriptive +name. The user is able to type the descriptive name when referring to +the function. Thus, in an init file, one might find + +</P> + +<PRE> +Meta-Rubout: backward-kill-word +</PRE> + +<P> +This binds the keystroke <KBD>Meta-Rubout</KBD> to the function +<EM>descriptively</EM> named <CODE>backward-kill-word</CODE>. You, as the +programmer, should bind the functions you write to descriptive names as +well. Readline provides a function for doing that: + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_add_defun</B> <I>(const char *name, rl_command_func_t *function, int key)</I> +<DD><A NAME="IDX132"></A> +Add <VAR>name</VAR> to the list of named functions. Make <VAR>function</VAR> be +the function that gets called. If <VAR>key</VAR> is not -1, then bind it to +<VAR>function</VAR> using <CODE>rl_bind_key()</CODE>. +</DL> + +</P> +<P> +Using this function alone is sufficient for most applications. It is +the recommended way to add a few functions to the default functions that +Readline has built in. If you need to do something other +than adding a function to Readline, you may need to use the +underlying functions described below. + +</P> + + +<H3><A NAME="SEC31" HREF="readline.html#TOC31">Selecting a Keymap</A></H3> + +<P> +Key bindings take place on a <EM>keymap</EM>. The keymap is the +association between the keys that the user types and the functions that +get run. You can make your own keymaps, copy existing keymaps, and tell +Readline which keymap to use. + +</P> +<P> +<DL> +<DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>(void)</I> +<DD><A NAME="IDX133"></A> +Returns a new, empty keymap. The space for the keymap is allocated with +<CODE>malloc()</CODE>; the caller should free it by calling +<CODE>rl_discard_keymap()</CODE> when done. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I> +<DD><A NAME="IDX134"></A> +Return a new keymap which is a copy of <VAR>map</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>(void)</I> +<DD><A NAME="IDX135"></A> +Return a new keymap with the printing characters bound to rl_insert, +the lowercase Meta characters bound to run their equivalents, and +the Meta digits bound to produce numeric arguments. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I> +<DD><A NAME="IDX136"></A> +Free the storage associated with <VAR>keymap</VAR>. +</DL> + +</P> +<P> +Readline has several internal keymaps. These functions allow you to +change which keymap is active. + +</P> +<P> +<DL> +<DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>(void)</I> +<DD><A NAME="IDX137"></A> +Returns the currently active keymap. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I> +<DD><A NAME="IDX138"></A> +Makes <VAR>keymap</VAR> the currently active keymap. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(const char *name)</I> +<DD><A NAME="IDX139"></A> +Return the keymap matching <VAR>name</VAR>. <VAR>name</VAR> is one which would +be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">Readline Init File</A>). +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I> +<DD><A NAME="IDX140"></A> +Return the name matching <VAR>keymap</VAR>. <VAR>name</VAR> is one which would +be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="readline.html#SEC9">Readline Init File</A>). +</DL> + +</P> + + +<H3><A NAME="SEC32" HREF="readline.html#TOC32">Binding Keys</A></H3> + +<P> +Key sequences are associate with functions through the keymap. +Readline has several internal keymaps: <CODE>emacs_standard_keymap</CODE>, +<CODE>emacs_meta_keymap</CODE>, <CODE>emacs_ctlx_keymap</CODE>, +<CODE>vi_movement_keymap</CODE>, and <CODE>vi_insertion_keymap</CODE>. +<CODE>emacs_standard_keymap</CODE> is the default, and the examples in +this manual assume that. + +</P> +<P> +Since <CODE>readline()</CODE> installs a set of default key bindings the first +time it is called, there is always the danger that a custom binding +installed before the first call to <CODE>readline()</CODE> will be overridden. +An alternate mechanism is to install custom key bindings in an +initialization function assigned to the <CODE>rl_startup_hook</CODE> variable +(see section <A HREF="readline.html#SEC28">Readline Variables</A>). + +</P> +<P> +These functions manage key bindings. + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, rl_command_func_t *function)</I> +<DD><A NAME="IDX141"></A> +Binds <VAR>key</VAR> to <VAR>function</VAR> in the currently active keymap. +Returns non-zero in the case of an invalid <VAR>key</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_bind_key_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I> +<DD><A NAME="IDX142"></A> +Bind <VAR>key</VAR> to <VAR>function</VAR> in <VAR>map</VAR>. Returns non-zero in the case +of an invalid <VAR>key</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I> +<DD><A NAME="IDX143"></A> +Bind <VAR>key</VAR> to the null function in the currently active keymap. +Returns non-zero in case of error. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I> +<DD><A NAME="IDX144"></A> +Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>. +Returns non-zero in case of error. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_unbind_function_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I> +<DD><A NAME="IDX145"></A> +Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_unbind_command_in_map</B> <I>(const char *command, Keymap map)</I> +<DD><A NAME="IDX146"></A> +Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_set_key</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I> +<DD><A NAME="IDX147"></A> +Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function +<VAR>function</VAR>. This makes new keymaps as +necessary. The initial keymap in which to do bindings is <VAR>map</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, const char *keyseq, char *data, Keymap map)</I> +<DD><A NAME="IDX148"></A> +Bind the key sequence represented by the string <VAR>keyseq</VAR> to the arbitrary +pointer <VAR>data</VAR>. <VAR>type</VAR> says what kind of data is pointed to by +<VAR>data</VAR>; this can be a function (<CODE>ISFUNC</CODE>), a macro +(<CODE>ISMACR</CODE>), or a keymap (<CODE>ISKMAP</CODE>). This makes new keymaps as +necessary. The initial keymap in which to do bindings is <VAR>map</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I> +<DD><A NAME="IDX149"></A> +Parse <VAR>line</VAR> as if it had been read from the <CODE>inputrc</CODE> file and +perform any key bindings and variable assignments found +(see section <A HREF="readline.html#SEC9">Readline Init File</A>). +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(const char *filename)</I> +<DD><A NAME="IDX150"></A> +Read keybindings and variable assignments from <VAR>filename</VAR> +(see section <A HREF="readline.html#SEC9">Readline Init File</A>). +</DL> + +</P> + + +<H3><A NAME="SEC33" HREF="readline.html#TOC33">Associating Function Names and Bindings</A></H3> + +<P> +These functions allow you to find out what keys invoke named functions +and the functions invoked by a particular key sequence. You may also +associate a new function name with an arbitrary function. + +</P> +<P> +<DL> +<DT><U>Function:</U> rl_command_func_t * <B>rl_named_function</B> <I>(const char *name)</I> +<DD><A NAME="IDX151"></A> +Return the function with name <VAR>name</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> rl_command_func_t * <B>rl_function_of_keyseq</B> <I>(const char *keyseq, Keymap map, int *type)</I> +<DD><A NAME="IDX152"></A> +Return the function invoked by <VAR>keyseq</VAR> in keymap <VAR>map</VAR>. +If <VAR>map</VAR> is <CODE>NULL</CODE>, the current keymap is used. If <VAR>type</VAR> is +not <CODE>NULL</CODE>, the type of the object is returned in the <CODE>int</CODE> variable +it points to (one of <CODE>ISFUNC</CODE>, <CODE>ISKMAP</CODE>, or <CODE>ISMACR</CODE>). +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(rl_command_func_t *function)</I> +<DD><A NAME="IDX153"></A> +Return an array of strings representing the key sequences used to +invoke <VAR>function</VAR> in the current keymap. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I> +<DD><A NAME="IDX154"></A> +Return an array of strings representing the key sequences used to +invoke <VAR>function</VAR> in the keymap <VAR>map</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I> +<DD><A NAME="IDX155"></A> +Print the readline function names and the key sequences currently +bound to them to <CODE>rl_outstream</CODE>. If <VAR>readable</VAR> is non-zero, +the list is formatted in such a way that it can be made part of an +<CODE>inputrc</CODE> file and re-read. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>(void)</I> +<DD><A NAME="IDX156"></A> +Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> const char ** <B>rl_funmap_names</B> <I>(void)</I> +<DD><A NAME="IDX157"></A> +Return a NULL terminated array of known function names. The array is +sorted. The array itself is allocated, but not the strings inside. You +should <CODE>free()</CODE> the array when you are done, but not the pointers. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_add_funmap_entry</B> <I>(const char *name, rl_command_func_t *function)</I> +<DD><A NAME="IDX158"></A> +Add <VAR>name</VAR> to the list of bindable Readline command names, and make +<VAR>function</VAR> the function to be called when <VAR>name</VAR> is invoked. +</DL> + +</P> + + +<H3><A NAME="SEC34" HREF="readline.html#TOC34">Allowing Undoing</A></H3> + +<P> +Supporting the undo command is a painless thing, and makes your +functions much more useful. It is certainly easy to try +something if you know you can undo it. + +</P> +<P> +If your function simply inserts text once, or deletes text once, and +uses <CODE>rl_insert_text()</CODE> or <CODE>rl_delete_text()</CODE> to do it, then +undoing is already done for you automatically. + +</P> +<P> +If you do multiple insertions or multiple deletions, or any combination +of these operations, you should group them together into one operation. +This is done with <CODE>rl_begin_undo_group()</CODE> and +<CODE>rl_end_undo_group()</CODE>. + +</P> +<P> +The types of events that can be undone are: + +</P> + +<PRE> +enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; +</PRE> + +<P> +Notice that <CODE>UNDO_DELETE</CODE> means to insert some text, and +<CODE>UNDO_INSERT</CODE> means to delete some text. That is, the undo code +tells what to undo, not how to undo it. <CODE>UNDO_BEGIN</CODE> and +<CODE>UNDO_END</CODE> are tags added by <CODE>rl_begin_undo_group()</CODE> and +<CODE>rl_end_undo_group()</CODE>. + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>(void)</I> +<DD><A NAME="IDX159"></A> +Begins saving undo information in a group construct. The undo +information usually comes from calls to <CODE>rl_insert_text()</CODE> and +<CODE>rl_delete_text()</CODE>, but could be the result of calls to +<CODE>rl_add_undo()</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>(void)</I> +<DD><A NAME="IDX160"></A> +Closes the current undo group started with <CODE>rl_begin_undo_group +()</CODE>. There should be one call to <CODE>rl_end_undo_group()</CODE> +for each call to <CODE>rl_begin_undo_group()</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_add_undo</B> <I>(enum undo_code what, int start, int end, char *text)</I> +<DD><A NAME="IDX161"></A> +Remember how to undo an event (according to <VAR>what</VAR>). The affected +text runs from <VAR>start</VAR> to <VAR>end</VAR>, and encompasses <VAR>text</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_free_undo_list</B> <I>(void)</I> +<DD><A NAME="IDX162"></A> +Free the existing undo list. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_do_undo</B> <I>(void)</I> +<DD><A NAME="IDX163"></A> +Undo the first thing on the undo list. Returns <CODE>0</CODE> if there was +nothing to undo, non-zero if something was undone. +</DL> + +</P> +<P> +Finally, if you neither insert nor delete text, but directly modify the +existing text (e.g., change its case), call <CODE>rl_modifying()</CODE> +once, just before you modify the text. You must supply the indices of +the text range that you are going to modify. + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I> +<DD><A NAME="IDX164"></A> +Tell Readline to save the text between <VAR>start</VAR> and <VAR>end</VAR> as a +single undo unit. It is assumed that you will subsequently modify +that text. +</DL> + +</P> + + +<H3><A NAME="SEC35" HREF="readline.html#TOC35">Redisplay</A></H3> + +<P> +<DL> +<DT><U>Function:</U> void <B>rl_redisplay</B> <I>(void)</I> +<DD><A NAME="IDX165"></A> +Change what's displayed on the screen to reflect the current contents +of <CODE>rl_line_buffer</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>(void)</I> +<DD><A NAME="IDX166"></A> +Force the line to be updated and redisplayed, whether or not +Readline thinks the screen display is correct. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_on_new_line</B> <I>(void)</I> +<DD><A NAME="IDX167"></A> +Tell the update functions that we have moved onto a new (empty) line, +usually after ouputting a newline. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_on_new_line_with_prompt</B> <I>(void)</I> +<DD><A NAME="IDX168"></A> +Tell the update functions that we have moved onto a new line, with +<VAR>rl_prompt</VAR> already displayed. +This could be used by applications that want to output the prompt string +themselves, but still need Readline to know the prompt string length for +redisplay. +It should be used after setting <VAR>rl_already_prompted</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>(void)</I> +<DD><A NAME="IDX169"></A> +Reset the display state to a clean state and redisplay the current line +starting on a new line. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_crlf</B> <I>(void)</I> +<DD><A NAME="IDX170"></A> +Move the cursor to the start of the next screen line. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_show_char</B> <I>(int c)</I> +<DD><A NAME="IDX171"></A> +Display character <VAR>c</VAR> on <CODE>rl_outstream</CODE>. +If Readline has not been set to display meta characters directly, this +will convert meta characters to a meta-prefixed key sequence. +This is intended for use by applications which wish to do their own +redisplay. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_message</B> <I>(const char *, ...)</I> +<DD><A NAME="IDX172"></A> +The arguments are a format string as would be supplied to <CODE>printf</CODE>, +possibly containing conversion specifications such as <SAMP>`%d'</SAMP>, and +any additional arguments necessary to satisfy the conversion specifications. +The resulting string is displayed in the <EM>echo area</EM>. The echo area +is also used to display numeric arguments and search strings. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_clear_message</B> <I>(void)</I> +<DD><A NAME="IDX173"></A> +Clear the message in the echo area. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_save_prompt</B> <I>(void)</I> +<DD><A NAME="IDX174"></A> +Save the local Readline prompt display state in preparation for +displaying a new message in the message area with <CODE>rl_message()</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_restore_prompt</B> <I>(void)</I> +<DD><A NAME="IDX175"></A> +Restore the local Readline prompt display state saved by the most +recent call to <CODE>rl_save_prompt</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_expand_prompt</B> <I>(char *prompt)</I> +<DD><A NAME="IDX176"></A> +Expand any special character sequences in <VAR>prompt</VAR> and set up the +local Readline prompt redisplay variables. +This function is called by <CODE>readline()</CODE>. It may also be called to +expand the primary prompt if the <CODE>rl_on_new_line_with_prompt()</CODE> +function or <CODE>rl_already_prompted</CODE> variable is used. +It returns the number of visible characters on the last line of the +(possibly multi-line) prompt. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_set_prompt</B> <I>(const char *prompt)</I> +<DD><A NAME="IDX177"></A> +Make Readline use <VAR>prompt</VAR> for subsequent redisplay. This calls +<CODE>rl_expand_prompt()</CODE> to expand the prompt and sets <CODE>rl_prompt</CODE> +to the result. +</DL> + +</P> + + +<H3><A NAME="SEC36" HREF="readline.html#TOC36">Modifying Text</A></H3> + +<P> +<DL> +<DT><U>Function:</U> int <B>rl_insert_text</B> <I>(const char *text)</I> +<DD><A NAME="IDX178"></A> +Insert <VAR>text</VAR> into the line at the current cursor position. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I> +<DD><A NAME="IDX179"></A> +Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I> +<DD><A NAME="IDX180"></A> +Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in +the current line. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I> +<DD><A NAME="IDX181"></A> +Copy the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line +to the kill ring, appending or prepending to the last kill if the +last command was a kill command. The text is deleted. +If <VAR>start</VAR> is less than <VAR>end</VAR>, +the text is appended, otherwise prepended. If the last command was +not a kill, a new kill ring slot is used. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_push_macro_input</B> <I>(char *macro)</I> +<DD><A NAME="IDX182"></A> +Cause <VAR>macro</VAR> to be inserted into the line, as if it had been invoked +by a key bound to a macro. Not especially useful; use +<CODE>rl_insert_text()</CODE> instead. +</DL> + +</P> + + +<H3><A NAME="SEC37" HREF="readline.html#TOC37">Character Input</A></H3> + +<P> +<DL> +<DT><U>Function:</U> int <B>rl_read_key</B> <I>(void)</I> +<DD><A NAME="IDX183"></A> +Return the next character available from Readline's current input stream. +This handles input inserted into +the input stream via <VAR>rl_pending_input</VAR> (see section <A HREF="readline.html#SEC28">Readline Variables</A>) +and <CODE>rl_stuff_char()</CODE>, macros, and characters read from the keyboard. +While waiting for input, this function will call any function assigned to +the <CODE>rl_event_hook</CODE> variable. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *stream)</I> +<DD><A NAME="IDX184"></A> +Return the next character available from <VAR>stream</VAR>, which is assumed to +be the keyboard. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I> +<DD><A NAME="IDX185"></A> +Insert <VAR>c</VAR> into the Readline input stream. It will be "read" +before Readline attempts to read characters from the terminal with +<CODE>rl_read_key()</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_execute_next</B> <I>(int c)</I> +<DD><A NAME="IDX186"></A> +Make <VAR>c</VAR> be the next command to be executed when <CODE>rl_read_key()</CODE> +is called. This sets <VAR>rl_pending_input</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_clear_pending_input</B> <I>(void)</I> +<DD><A NAME="IDX187"></A> +Unset <VAR>rl_pending_input</VAR>, effectively negating the effect of any +previous call to <CODE>rl_execute_next()</CODE>. This works only if the +pending input has not already been read with <CODE>rl_read_key()</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_set_keyboard_input_timeout</B> <I>(int u)</I> +<DD><A NAME="IDX188"></A> +While waiting for keyboard input in <CODE>rl_read_key()</CODE>, Readline will +wait for <VAR>u</VAR> microseconds for input before calling any function +assigned to <CODE>rl_event_hook</CODE>. The default waiting period is +one-tenth of a second. Returns the old timeout value. +</DL> + +</P> + + +<H3><A NAME="SEC38" HREF="readline.html#TOC38">Terminal Management</A></H3> + +<P> +<DL> +<DT><U>Function:</U> void <B>rl_prep_terminal</B> <I>(int meta_flag)</I> +<DD><A NAME="IDX189"></A> +Modify the terminal settings for Readline's use, so <CODE>readline()</CODE> +can read a single character at a time from the keyboard. +The <VAR>meta_flag</VAR> argument should be non-zero if Readline should +read eight-bit input. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_deprep_terminal</B> <I>(void)</I> +<DD><A NAME="IDX190"></A> +Undo the effects of <CODE>rl_prep_terminal()</CODE>, leaving the terminal in +the state in which it was before the most recent call to +<CODE>rl_prep_terminal()</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_tty_set_default_bindings</B> <I>(Keymap kmap)</I> +<DD><A NAME="IDX191"></A> +Read the operating system's terminal editing characters (as would be displayed +by <CODE>stty</CODE>) to their Readline equivalents. The bindings are performed +in <VAR>kmap</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(const char *terminal_name)</I> +<DD><A NAME="IDX192"></A> +Reinitialize Readline's idea of the terminal settings using +<VAR>terminal_name</VAR> as the terminal type (e.g., <CODE>vt100</CODE>). +If <VAR>terminal_name</VAR> is <CODE>NULL</CODE>, the value of the <CODE>TERM</CODE> +environment variable is used. +</DL> + +</P> + + +<H3><A NAME="SEC39" HREF="readline.html#TOC39">Utility Functions</A></H3> + +<P> +<DL> +<DT><U>Function:</U> int <B>rl_extend_line_buffer</B> <I>(int len)</I> +<DD><A NAME="IDX193"></A> +Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR> +characters, possibly reallocating it if necessary. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_initialize</B> <I>(void)</I> +<DD><A NAME="IDX194"></A> +Initialize or re-initialize Readline's internal state. +It's not strictly necessary to call this; <CODE>readline()</CODE> calls it before +reading any input. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_ding</B> <I>(void)</I> +<DD><A NAME="IDX195"></A> +Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_alphabetic</B> <I>(int c)</I> +<DD><A NAME="IDX196"></A> +Return 1 if <VAR>c</VAR> is an alphabetic character. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_display_match_list</B> <I>(char **matches, int len, int max)</I> +<DD><A NAME="IDX197"></A> +A convenience function for displaying a list of strings in +columnar format on Readline's output stream. <CODE>matches</CODE> is the list +of strings, in argv format, such as a list of completion matches. +<CODE>len</CODE> is the number of strings in <CODE>matches</CODE>, and <CODE>max</CODE> +is the length of the longest string in <CODE>matches</CODE>. This function uses +the setting of <CODE>print-completions-horizontally</CODE> to select how the +matches are displayed (see section <A HREF="readline.html#SEC10">Readline Init File Syntax</A>). +</DL> + +</P> +<P> +The following are implemented as macros, defined in <CODE>chardefs.h</CODE>. +Applications should refrain from using them. + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>_rl_uppercase_p</B> <I>(int c)</I> +<DD><A NAME="IDX198"></A> +Return 1 if <VAR>c</VAR> is an uppercase alphabetic character. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>_rl_lowercase_p</B> <I>(int c)</I> +<DD><A NAME="IDX199"></A> +Return 1 if <VAR>c</VAR> is a lowercase alphabetic character. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>_rl_digit_p</B> <I>(int c)</I> +<DD><A NAME="IDX200"></A> +Return 1 if <VAR>c</VAR> is a numeric character. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>_rl_to_upper</B> <I>(int c)</I> +<DD><A NAME="IDX201"></A> +If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding +uppercase character. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>_rl_to_lower</B> <I>(int c)</I> +<DD><A NAME="IDX202"></A> +If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding +lowercase character. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>_rl_digit_value</B> <I>(int c)</I> +<DD><A NAME="IDX203"></A> +If <VAR>c</VAR> is a number, return the value it represents. +</DL> + +</P> + + +<H3><A NAME="SEC40" HREF="readline.html#TOC40">Miscellaneous Functions</A></H3> + +<P> +<DL> +<DT><U>Function:</U> int <B>rl_macro_bind</B> <I>(const char *keyseq, const char *macro, Keymap map)</I> +<DD><A NAME="IDX204"></A> +Bind the key sequence <VAR>keyseq</VAR> to invoke the macro <VAR>macro</VAR>. +The binding is performed in <VAR>map</VAR>. When <VAR>keyseq</VAR> is invoked, the +<VAR>macro</VAR> will be inserted into the line. This function is deprecated; +use <CODE>rl_generic_bind()</CODE> instead. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_macro_dumper</B> <I>(int readable)</I> +<DD><A NAME="IDX205"></A> +Print the key sequences bound to macros and their values, using +the current keymap, to <CODE>rl_outstream</CODE>. +If <VAR>readable</VAR> is non-zero, the list is formatted in such a way +that it can be made part of an <CODE>inputrc</CODE> file and re-read. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_variable_bind</B> <I>(const char *variable, const char *value)</I> +<DD><A NAME="IDX206"></A> +Make the Readline variable <VAR>variable</VAR> have <VAR>value</VAR>. +This behaves as if the readline command +<SAMP>`set <VAR>variable</VAR> <VAR>value</VAR>'</SAMP> had been executed in an <CODE>inputrc</CODE> +file (see section <A HREF="readline.html#SEC10">Readline Init File Syntax</A>). +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_variable_dumper</B> <I>(int readable)</I> +<DD><A NAME="IDX207"></A> +Print the readline variable names and their current values +to <CODE>rl_outstream</CODE>. +If <VAR>readable</VAR> is non-zero, the list is formatted in such a way +that it can be made part of an <CODE>inputrc</CODE> file and re-read. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_set_paren_blink_timeout</B> <I>(int u)</I> +<DD><A NAME="IDX208"></A> +Set the time interval (in microseconds) that Readline waits when showing +a balancing character when <CODE>blink-matching-paren</CODE> has been enabled. +</DL> + +</P> + + +<H3><A NAME="SEC41" HREF="readline.html#TOC41">Alternate Interface</A></H3> + +<P> +An alternate interface is available to plain <CODE>readline()</CODE>. Some +applications need to interleave keyboard I/O with file, device, or +window system I/O, typically by using a main loop to <CODE>select()</CODE> +on various file descriptors. To accomodate this need, readline can +also be invoked as a `callback' function from an event loop. There +are functions available to make this easy. + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(const char *prompt, rl_vcpfunc_t *lhandler)</I> +<DD><A NAME="IDX209"></A> +Set up the terminal for readline I/O and display the initial +expanded value of <VAR>prompt</VAR>. Save the value of <VAR>lhandler</VAR> to +use as a function to call when a complete line of input has been entered. +The function takes the text of the line as an argument. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>(void)</I> +<DD><A NAME="IDX210"></A> +Whenever an application determines that keyboard input is available, it +should call <CODE>rl_callback_read_char()</CODE>, which will read the next +character from the current input source. If that character completes the +line, <CODE>rl_callback_read_char</CODE> will invoke the <VAR>lhandler</VAR> +function saved by <CODE>rl_callback_handler_install</CODE> to process the +line. <CODE>EOF</CODE> is indicated by calling <VAR>lhandler</VAR> with a +<CODE>NULL</CODE> line. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>(void)</I> +<DD><A NAME="IDX211"></A> +Restore the terminal to its initial state and remove the line handler. +This may be called from within a callback as well as independently. +</DL> + +</P> + + +<H3><A NAME="SEC42" HREF="readline.html#TOC42">A Readline Example</A></H3> + +<P> +Here is a function which changes lowercase characters to their uppercase +equivalents, and uppercase characters to lowercase. If +this function was bound to <SAMP>`M-c'</SAMP>, then typing <SAMP>`M-c'</SAMP> would +change the case of the character under point. Typing <SAMP>`M-1 0 M-c'</SAMP> +would change the case of the following 10 characters, leaving the cursor on +the last character changed. + +</P> + +<PRE> +/* Invert the case of the COUNT following characters. */ +int +invert_case_line (count, key) + int count, key; +{ + register int start, end, i; + + start = rl_point; + + if (rl_point >= rl_end) + return (0); + + if (count < 0) + { + direction = -1; + count = -count; + } + else + direction = 1; + + /* Find the end of the range to modify. */ + end = start + (count * direction); + + /* Force it to be within range. */ + if (end > rl_end) + end = rl_end; + else if (end < 0) + end = 0; + + if (start == end) + return (0); + + if (start > end) + { + int temp = start; + start = end; + end = temp; + } + + /* Tell readline that we are modifying the line, so it will save + the undo information. */ + rl_modifying (start, end); + + for (i = start; i != end; i++) + { + if (_rl_uppercase_p (rl_line_buffer[i])) + rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]); + else if (_rl_lowercase_p (rl_line_buffer[i])) + rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]); + } + /* Move point to on top of the last character changed. */ + rl_point = (direction == 1) ? end - 1 : start; + return (0); +} +</PRE> + + + +<H2><A NAME="SEC43" HREF="readline.html#TOC43">Readline Signal Handling</A></H2> + +<P> +Signals are asynchronous events sent to a process by the Unix kernel, +sometimes on behalf of another process. They are intended to indicate +exceptional events, like a user pressing the interrupt key on his terminal, +or a network connection being broken. There is a class of signals that can +be sent to the process currently reading input from the keyboard. Since +Readline changes the terminal attributes when it is called, it needs to +perform special processing when such a signal is received in order to +restore the terminal to a sane state, or provide application writers with +functions to do so manually. + +</P> +<P> +Readline contains an internal signal handler that is installed for a +number of signals (<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>, +<CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>). +When one of these signals is received, the signal handler +will reset the terminal attributes to those that were in effect before +<CODE>readline()</CODE> was called, reset the signal handling to what it was +before <CODE>readline()</CODE> was called, and resend the signal to the calling +application. +If and when the calling application's signal handler returns, Readline +will reinitialize the terminal and continue to accept input. +When a <CODE>SIGINT</CODE> is received, the Readline signal handler performs +some additional work, which will cause any partially-entered line to be +aborted (see the description of <CODE>rl_free_line_state()</CODE> below). + +</P> +<P> +There is an additional Readline signal handler, for <CODE>SIGWINCH</CODE>, which +the kernel sends to a process whenever the terminal's size changes (for +example, if a user resizes an <CODE>xterm</CODE>). The Readline <CODE>SIGWINCH</CODE> +handler updates Readline's internal screen size information, and then calls +any <CODE>SIGWINCH</CODE> signal handler the calling application has installed. +Readline calls the application's <CODE>SIGWINCH</CODE> signal handler without +resetting the terminal to its original state. If the application's signal +handler does more than update its idea of the terminal size and return (for +example, a <CODE>longjmp</CODE> back to a main processing loop), it <EM>must</EM> +call <CODE>rl_cleanup_after_signal()</CODE> (described below), to restore the +terminal state. + +</P> +<P> +Readline provides two variables that allow application writers to +control whether or not it will catch certain signals and act on them +when they are received. It is important that applications change the +values of these variables only when calling <CODE>readline()</CODE>, not in +a signal handler, so Readline's internal signal state is not corrupted. + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_catch_signals</B> +<DD><A NAME="IDX212"></A> +If this variable is non-zero, Readline will install signal handlers for +<CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, <CODE>SIGTERM</CODE>, <CODE>SIGALRM</CODE>, +<CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, and <CODE>SIGTTOU</CODE>. + +</P> +<P> +The default value of <CODE>rl_catch_signals</CODE> is 1. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_catch_sigwinch</B> +<DD><A NAME="IDX213"></A> +If this variable is non-zero, Readline will install a signal handler for +<CODE>SIGWINCH</CODE>. + +</P> +<P> +The default value of <CODE>rl_catch_sigwinch</CODE> is 1. +</DL> + +</P> +<P> +If an application does not wish to have Readline catch any signals, or +to handle signals other than those Readline catches (<CODE>SIGHUP</CODE>, +for example), +Readline provides convenience functions to do the necessary terminal +and internal state cleanup upon receipt of a signal. + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_cleanup_after_signal</B> <I>(void)</I> +<DD><A NAME="IDX214"></A> +This function will reset the state of the terminal to what it was before +<CODE>readline()</CODE> was called, and remove the Readline signal handlers for +all signals, depending on the values of <CODE>rl_catch_signals</CODE> and +<CODE>rl_catch_sigwinch</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_free_line_state</B> <I>(void)</I> +<DD><A NAME="IDX215"></A> +This will free any partial state associated with the current input line +(undo information, any partial history entry, any partially-entered +keyboard macro, and any partially-entered numeric argument). This +should be called before <CODE>rl_cleanup_after_signal()</CODE>. The +Readline signal handler for <CODE>SIGINT</CODE> calls this to abort the +current input line. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_reset_after_signal</B> <I>(void)</I> +<DD><A NAME="IDX216"></A> +This will reinitialize the terminal and reinstall any Readline signal +handlers, depending on the values of <CODE>rl_catch_signals</CODE> and +<CODE>rl_catch_sigwinch</CODE>. +</DL> + +</P> +<P> +If an application does not wish Readline to catch <CODE>SIGWINCH</CODE>, it may +call <CODE>rl_resize_terminal()</CODE> or <CODE>rl_set_screen_size()</CODE> to force +Readline to update its idea of the terminal size when a <CODE>SIGWINCH</CODE> +is received. + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_resize_terminal</B> <I>(void)</I> +<DD><A NAME="IDX217"></A> +Update Readline's internal screen size by reading values from the kernel. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_set_screen_size</B> <I>(int rows, int cols)</I> +<DD><A NAME="IDX218"></A> +Set Readline's idea of the terminal size to <VAR>rows</VAR> rows and +<VAR>cols</VAR> columns. +</DL> + +</P> +<P> +If an application does not want to install a <CODE>SIGWINCH</CODE> handler, but +is still interested in the screen dimensions, Readline's idea of the screen +size may be queried. + +</P> +<P> +<DL> +<DT><U>Function:</U> void <B>rl_get_screen_size</B> <I>(int *rows, int *cols)</I> +<DD><A NAME="IDX219"></A> +Return Readline's idea of the terminal's size in the +variables pointed to by the arguments. +</DL> + +</P> +<P> +The following functions install and remove Readline's signal handlers. + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_set_signals</B> <I>(void)</I> +<DD><A NAME="IDX220"></A> +Install Readline's signal handler for <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, +<CODE>SIGTERM</CODE>, <CODE>SIGALRM</CODE>, <CODE>SIGTSTP</CODE>, <CODE>SIGTTIN</CODE>, +<CODE>SIGTTOU</CODE>, and <CODE>SIGWINCH</CODE>, depending on the values of +<CODE>rl_catch_signals</CODE> and <CODE>rl_catch_sigwinch</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_clear_signals</B> <I>(void)</I> +<DD><A NAME="IDX221"></A> +Remove all of the Readline signal handlers installed by +<CODE>rl_set_signals()</CODE>. +</DL> + +</P> + + +<H2><A NAME="SEC44" HREF="readline.html#TOC44">Custom Completers</A></H2> + +<P> +Typically, a program that reads commands from the user has a way of +disambiguating commands and data. If your program is one of these, then +it can provide completion for commands, data, or both. +The following sections describe how your program and Readline +cooperate to provide this service. + +</P> + +<UL> +<LI><A HREF="readline.html#SEC45">How Completing Works</A>: The logic used to do completion. +<LI><A HREF="readline.html#SEC46">Completion Functions</A>: Functions provided by Readline. +<LI><A HREF="readline.html#SEC47">Completion Variables</A>: Variables which control completion. +<LI><A HREF="readline.html#SEC48">A Short Completion Example</A>: An example of writing completer subroutines. +</UL> + + + +<H3><A NAME="SEC45" HREF="readline.html#TOC45">How Completing Works</A></H3> + +<P> +In order to complete some text, the full list of possible completions +must be available. That is, it is not possible to accurately +expand a partial word without knowing all of the possible words +which make sense in that context. The Readline library provides +the user interface to completion, and two of the most common +completion functions: filename and username. For completing other types +of text, you must write your own completion function. This section +describes exactly what such functions must do, and provides an example. + +</P> +<P> +There are three major functions used to perform completion: + +</P> + +<OL> +<LI> + +The user-interface function <CODE>rl_complete()</CODE>. This function is +called with the same arguments as other bindable Readline functions: +<VAR>count</VAR> and <VAR>invoking_key</VAR>. +It isolates the word to be completed and calls +<CODE>rl_completion_matches()</CODE> to generate a list of possible completions. +It then either lists the possible completions, inserts the possible +completions, or actually performs the +completion, depending on which behavior is desired. + +<LI> + +The internal function <CODE>rl_completion_matches()</CODE> uses an +application-supplied <EM>generator</EM> function to generate the list of +possible matches, and then returns the array of these matches. +The caller should place the address of its generator function in +<CODE>rl_completion_entry_function</CODE>. + +<LI> + +The generator function is called repeatedly from +<CODE>rl_completion_matches()</CODE>, returning a string each time. The +arguments to the generator function are <VAR>text</VAR> and <VAR>state</VAR>. +<VAR>text</VAR> is the partial word to be completed. <VAR>state</VAR> is zero the +first time the function is called, allowing the generator to perform +any necessary initialization, and a positive non-zero integer for +each subsequent call. The generator function returns +<CODE>(char *)NULL</CODE> to inform <CODE>rl_completion_matches()</CODE> that there are +no more possibilities left. Usually the generator function computes the +list of possible completions when <VAR>state</VAR> is zero, and returns them +one at a time on subsequent calls. Each string the generator function +returns as a match must be allocated with <CODE>malloc()</CODE>; Readline +frees the strings when it has finished with them. + +</OL> + +<P> +<DL> +<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I> +<DD><A NAME="IDX222"></A> +Complete the word at or before point. You have supplied the function +that does the initial simple matching selection algorithm (see +<CODE>rl_completion_matches()</CODE>). The default is to do filename completion. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B> +<DD><A NAME="IDX223"></A> +This is a pointer to the generator function for +<CODE>rl_completion_matches()</CODE>. +If the value of <CODE>rl_completion_entry_function</CODE> is +<CODE>NULL</CODE> then the default filename generator +function, <CODE>rl_filename_completion_function()</CODE>, is used. +</DL> + +</P> + + +<H3><A NAME="SEC46" HREF="readline.html#TOC46">Completion Functions</A></H3> + +<P> +Here is the complete list of callable completion functions present in +Readline. + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I> +<DD><A NAME="IDX224"></A> +Complete the word at or before point. <VAR>what_to_do</VAR> says what to do +with the completion. A value of <SAMP>`?'</SAMP> means list the possible +completions. <SAMP>`TAB'</SAMP> means do standard completion. <SAMP>`*'</SAMP> means +insert all of the possible completions. <SAMP>`!'</SAMP> means to display +all of the possible completions, if there is more than one, as well as +performing partial completion. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I> +<DD><A NAME="IDX225"></A> +Complete the word at or before point. You have supplied the function +that does the initial simple matching selection algorithm (see +<CODE>rl_completion_matches()</CODE> and <CODE>rl_completion_entry_function</CODE>). +The default is to do filename +completion. This calls <CODE>rl_complete_internal()</CODE> with an +argument depending on <VAR>invoking_key</VAR>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key)</I> +<DD><A NAME="IDX226"></A> +List the possible completions. See description of <CODE>rl_complete +()</CODE>. This calls <CODE>rl_complete_internal()</CODE> with an argument of +<SAMP>`?'</SAMP>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key)</I> +<DD><A NAME="IDX227"></A> +Insert the list of possible completions into the line, deleting the +partially-completed word. See description of <CODE>rl_complete()</CODE>. +This calls <CODE>rl_complete_internal()</CODE> with an argument of <SAMP>`*'</SAMP>. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> char ** <B>rl_completion_matches</B> <I>(const char *text, rl_compentry_func_t *entry_func)</I> +<DD><A NAME="IDX228"></A> +Returns an array of strings which is a list of completions for +<VAR>text</VAR>. If there are no completions, returns <CODE>NULL</CODE>. +The first entry in the returned array is the substitution for <VAR>text</VAR>. +The remaining entries are the possible completions. The array is +terminated with a <CODE>NULL</CODE> pointer. + +</P> +<P> +<VAR>entry_func</VAR> is a function of two args, and returns a +<CODE>char *</CODE>. The first argument is <VAR>text</VAR>. The second is a +state argument; it is zero on the first call, and non-zero on subsequent +calls. <VAR>entry_func</VAR> returns a <CODE>NULL</CODE> pointer to the caller +when there are no more matches. +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> char * <B>rl_filename_completion_function</B> <I>(const char *text, int state)</I> +<DD><A NAME="IDX229"></A> +A generator function for filename completion in the general case. +<VAR>text</VAR> is a partial filename. +The Bash source is a useful reference for writing custom +completion functions (the Bash completion functions call this and other +Readline functions). +</DL> + +</P> +<P> +<DL> +<DT><U>Function:</U> char * <B>rl_username_completion_function</B> <I>(const char *text, int state)</I> +<DD><A NAME="IDX230"></A> +A completion generator for usernames. <VAR>text</VAR> contains a partial +username preceded by a random character (usually <SAMP>`~'</SAMP>). As with all +completion generators, <VAR>state</VAR> is zero on the first call and non-zero +for subsequent calls. +</DL> + +</P> + + +<H3><A NAME="SEC47" HREF="readline.html#TOC47">Completion Variables</A></H3> + +<P> +<DL> +<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B> +<DD><A NAME="IDX231"></A> +A pointer to the generator function for <CODE>rl_completion_matches()</CODE>. +<CODE>NULL</CODE> means to use <CODE>rl_filename_completion_function()</CODE>, the default +filename completer. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_completion_func_t * <B>rl_attempted_completion_function</B> +<DD><A NAME="IDX232"></A> +A pointer to an alternative function to create matches. +The function is called with <VAR>text</VAR>, <VAR>start</VAR>, and <VAR>end</VAR>. +<VAR>start</VAR> and <VAR>end</VAR> are indices in <CODE>rl_line_buffer</CODE> defining +the boundaries of <VAR>text</VAR>, which is a character string. +If this function exists and returns <CODE>NULL</CODE>, or if this variable is +set to <CODE>NULL</CODE>, then <CODE>rl_complete()</CODE> will call the value of +<CODE>rl_completion_entry_function</CODE> to generate matches, otherwise the +array of strings returned will be used. +If this function sets the <CODE>rl_attempted_completion_over</CODE> +variable to a non-zero value, Readline will not perform its default +completion even if this function returns no matches. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_quote_func_t * <B>rl_filename_quoting_function</B> +<DD><A NAME="IDX233"></A> +A pointer to a function that will quote a filename in an +application-specific fashion. This is called if filename completion is being +attempted and one of the characters in <CODE>rl_filename_quote_characters</CODE> +appears in a completed filename. The function is called with +<VAR>text</VAR>, <VAR>match_type</VAR>, and <VAR>quote_pointer</VAR>. The <VAR>text</VAR> +is the filename to be quoted. The <VAR>match_type</VAR> is either +<CODE>SINGLE_MATCH</CODE>, if there is only one completion match, or +<CODE>MULT_MATCH</CODE>. Some functions use this to decide whether or not to +insert a closing quote character. The <VAR>quote_pointer</VAR> is a pointer +to any opening quote character the user typed. Some functions choose +to reset this character. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_dequoting_function</B> +<DD><A NAME="IDX234"></A> +A pointer to a function that will remove application-specific quoting +characters from a filename before completion is attempted, so those +characters do not interfere with matching the text against names in +the filesystem. It is called with <VAR>text</VAR>, the text of the word +to be dequoted, and <VAR>quote_char</VAR>, which is the quoting character +that delimits the filename (usually <SAMP>`''</SAMP> or <SAMP>`"'</SAMP>). If +<VAR>quote_char</VAR> is zero, the filename was not in an embedded string. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_linebuf_func_t * <B>rl_char_is_quoted_p</B> +<DD><A NAME="IDX235"></A> +A pointer to a function to call that determines whether or not a specific +character in the line buffer is quoted, according to whatever quoting +mechanism the program calling Readline uses. The function is called with +two arguments: <VAR>text</VAR>, the text of the line, and <VAR>index</VAR>, the +index of the character in the line. It is used to decide whether a +character found in <CODE>rl_completer_word_break_characters</CODE> should be +used to break words for the completer. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_completion_query_items</B> +<DD><A NAME="IDX236"></A> +Up to this many items will be displayed in response to a +possible-completions call. After that, we ask the user if she is sure +she wants to see them all. The default value is 100. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> const char * <B>rl_basic_word_break_characters</B> +<DD><A NAME="IDX237"></A> +The basic list of characters that signal a break between words for the +completer routine. The default value of this variable is the characters +which break words for completion in Bash: +<CODE>" \t\n\"\\'`@$><=;|&{("</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> const char * <B>rl_basic_quote_characters</B> +<DD><A NAME="IDX238"></A> +A list of quote characters which can cause a word break. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> const char * <B>rl_completer_word_break_characters</B> +<DD><A NAME="IDX239"></A> +The list of characters that signal a break between words for +<CODE>rl_complete_internal()</CODE>. The default list is the value of +<CODE>rl_basic_word_break_characters</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> const char * <B>rl_completer_quote_characters</B> +<DD><A NAME="IDX240"></A> +A list of characters which can be used to quote a substring of the line. +Completion occurs on the entire substring, and within the substring +<CODE>rl_completer_word_break_characters</CODE> are treated as any other character, +unless they also appear within this list. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> const char * <B>rl_filename_quote_characters</B> +<DD><A NAME="IDX241"></A> +A list of characters that cause a filename to be quoted by the completer +when they appear in a completed filename. The default is the null string. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> const char * <B>rl_special_prefixes</B> +<DD><A NAME="IDX242"></A> +The list of characters that are word break characters, but should be +left in <VAR>text</VAR> when it is passed to the completion function. +Programs can use this to help determine what kind of completing to do. +For instance, Bash sets this variable to "$@" so that it can complete +shell variables and hostnames. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_completion_append_character</B> +<DD><A NAME="IDX243"></A> +When a single completion alternative matches at the end of the command +line, this character is appended to the inserted completion text. The +default is a space character (<SAMP>` '</SAMP>). Setting this to the null +character (<SAMP>`\0'</SAMP>) prevents anything being appended automatically. +This can be changed in custom completion functions to +provide the "most sensible word separator character" according to +an application-specific command line syntax specification. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B> +<DD><A NAME="IDX244"></A> +If non-zero, then duplicates in the matches are removed. +The default is 1. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_filename_completion_desired</B> +<DD><A NAME="IDX245"></A> +Non-zero means that the results of the matches are to be treated as +filenames. This is <EM>always</EM> zero on entry, and can only be changed +within a completion entry generator function. If it is set to a non-zero +value, directory names have a slash appended and Readline attempts to +quote completed filenames if they contain any characters in +<CODE>rl_filename_quote_characters</CODE> and <CODE>rl_filename_quoting_desired</CODE> +is set to a non-zero value. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B> +<DD><A NAME="IDX246"></A> +Non-zero means that the results of the matches are to be quoted using +double quotes (or an application-specific quoting mechanism) if the +completed filename contains any characters in +<CODE>rl_filename_quote_chars</CODE>. This is <EM>always</EM> non-zero +on entry, and can only be changed within a completion entry generator +function. The quoting is effected via a call to the function pointed to +by <CODE>rl_filename_quoting_function</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_attempted_completion_over</B> +<DD><A NAME="IDX247"></A> +If an application-specific completion function assigned to +<CODE>rl_attempted_completion_function</CODE> sets this variable to a non-zero +value, Readline will not perform its default filename completion even +if the application's completion function returns no matches. +It should be set only by an application's completion function. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_completion_type</B> +<DD><A NAME="IDX248"></A> +Set to a character describing the type of completion Readline is currently +attempting; see the description of <CODE>rl_complete_internal()</CODE> +(see section <A HREF="readline.html#SEC46">Completion Functions</A>) for the list of characters. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> int <B>rl_inhibit_completion</B> +<DD><A NAME="IDX249"></A> +If this variable is non-zero, completion is inhibited. The completion +character will be inserted as any other bound to <CODE>self-insert</CODE>. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_compignore_func_t * <B>rl_ignore_some_completions_function</B> +<DD><A NAME="IDX250"></A> +This function, if defined, is called by the completer when real filename +completion is done, after all the matching names have been generated. +It is passed a <CODE>NULL</CODE> terminated array of matches. +The first element (<CODE>matches[0]</CODE>) is the +maximal substring common to all matches. This function can +re-arrange the list of matches as required, but each element deleted +from the array must be freed. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_completion_hook</B> +<DD><A NAME="IDX251"></A> +This function, if defined, is allowed to modify the directory portion +of filenames Readline completes. It is called with the address of a +string (the current directory name) as an argument, and may modify that string. +If the string is replaced with a new string, the old value should be freed. +Any modified directory name should have a trailing slash. +The modified value will be displayed as part of the completion, replacing +the directory portion of the pathname the user typed. +It returns an integer that should be non-zero if the function modifies +its directory argument. +It could be used to expand symbolic links or shell variables in pathnames. +</DL> + +</P> +<P> +<DL> +<DT><U>Variable:</U> rl_compdisp_func_t * <B>rl_completion_display_matches_hook</B> +<DD><A NAME="IDX252"></A> +If non-zero, then this is the address of a function to call when +completing a word would normally display the list of possible matches. +This function is called in lieu of Readline displaying the list. +It takes three arguments: +(<CODE>char **</CODE><VAR>matches</VAR>, <CODE>int</CODE> <VAR>num_matches</VAR>, <CODE>int</CODE> <VAR>max_length</VAR>) +where <VAR>matches</VAR> is the array of matching strings, +<VAR>num_matches</VAR> is the number of strings in that array, and +<VAR>max_length</VAR> is the length of the longest string in that array. +Readline provides a convenience function, <CODE>rl_display_match_list</CODE>, +that takes care of doing the display to Readline's output stream. That +function may be called from this hook. +</DL> + +</P> + + +<H3><A NAME="SEC48" HREF="readline.html#TOC48">A Short Completion Example</A></H3> + +<P> +Here is a small application demonstrating the use of the GNU Readline +library. It is called <CODE>fileman</CODE>, and the source code resides in +<TT>`examples/fileman.c'</TT>. This sample application provides +completion of command names, line editing features, and access to the +history list. + +</P> + +<PRE> +/* fileman.c -- A tiny application which demonstrates how to use the + GNU Readline library. This application interactively allows users + to manipulate files and their modes. */ + +#include <stdio.h> +#include <sys/types.h> +#include <sys/file.h> +#include <sys/stat.h> +#include <sys/errno.h> + +#include <readline/readline.h> +#include <readline/history.h> + +extern char *xmalloc (); + +/* The names of functions that actually do the manipulation. */ +int com_list __P((char *)); +int com_view __P((char *)); +int com_rename __P((char *)); +int com_stat __P((char *)); +int com_pwd __P((char *)); +int com_delete __P((char *)); +int com_help __P((char *)); +int com_cd __P((char *)); +int com_quit __P((char *)); + +/* A structure which contains information on the commands this program + can understand. */ + +typedef struct { + char *name; /* User printable name of the function. */ + rl_icpfunc_t *func; /* Function to call to do the job. */ + char *doc; /* Documentation for this function. */ +} COMMAND; + +COMMAND commands[] = { + { "cd", com_cd, "Change to directory DIR" }, + { "delete", com_delete, "Delete FILE" }, + { "help", com_help, "Display this text" }, + { "?", com_help, "Synonym for `help'" }, + { "list", com_list, "List files in DIR" }, + { "ls", com_list, "Synonym for `list'" }, + { "pwd", com_pwd, "Print the current working directory" }, + { "quit", com_quit, "Quit using Fileman" }, + { "rename", com_rename, "Rename FILE to NEWNAME" }, + { "stat", com_stat, "Print out statistics on FILE" }, + { "view", com_view, "View the contents of FILE" }, + { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL } +}; + +/* Forward declarations. */ +char *stripwhite (); +COMMAND *find_command (); + +/* The name of this program, as taken from argv[0]. */ +char *progname; + +/* When non-zero, this means the user is done using this program. */ +int done; + +char * +dupstr (s) + int s; +{ + char *r; + + r = xmalloc (strlen (s) + 1); + strcpy (r, s); + return (r); +} + +main (argc, argv) + int argc; + char **argv; +{ + char *line, *s; + + progname = argv[0]; + + initialize_readline (); /* Bind our completer. */ + + /* Loop reading and executing lines until the user quits. */ + for ( ; done == 0; ) + { + line = readline ("FileMan: "); + + if (!line) + break; + + /* Remove leading and trailing whitespace from the line. + Then, if there is anything left, add it to the history list + and execute it. */ + s = stripwhite (line); + + if (*s) + { + add_history (s); + execute_line (s); + } + + free (line); + } + exit (0); +} + +/* Execute a command line. */ +int +execute_line (line) + char *line; +{ + register int i; + COMMAND *command; + char *word; + + /* Isolate the command word. */ + i = 0; + while (line[i] && whitespace (line[i])) + i++; + word = line + i; + + while (line[i] && !whitespace (line[i])) + i++; + + if (line[i]) + line[i++] = '\0'; + + command = find_command (word); + + if (!command) + { + fprintf (stderr, "%s: No such command for FileMan.\n", word); + return (-1); + } + + /* Get argument to command, if any. */ + while (whitespace (line[i])) + i++; + + word = line + i; + + /* Call the function. */ + return ((*(command->func)) (word)); +} + +/* Look up NAME as the name of a command, and return a pointer to that + command. Return a NULL pointer if NAME isn't a command name. */ +COMMAND * +find_command (name) + char *name; +{ + register int i; + + for (i = 0; commands[i].name; i++) + if (strcmp (name, commands[i].name) == 0) + return (&commands[i]); + + return ((COMMAND *)NULL); +} + +/* Strip whitespace from the start and end of STRING. Return a pointer + into STRING. */ +char * +stripwhite (string) + char *string; +{ + register char *s, *t; + + for (s = string; whitespace (*s); s++) + ; + + if (*s == 0) + return (s); + + t = s + strlen (s) - 1; + while (t > s && whitespace (*t)) + t--; + *++t = '\0'; + + return s; +} + +/* **************************************************************** */ +/* */ +/* Interface to Readline Completion */ +/* */ +/* **************************************************************** */ + +char *command_generator __P((const char *, int)); +char **fileman_completion __P((const char *, int, int)); + +/* Tell the GNU Readline library how to complete. We want to try to + complete on command names if this is the first word in the line, or + on filenames if not. */ +initialize_readline () +{ + /* Allow conditional parsing of the ~/.inputrc file. */ + rl_readline_name = "FileMan"; + + /* Tell the completer that we want a crack first. */ + rl_attempted_completion_function = fileman_completion; +} + +/* Attempt to complete on the contents of TEXT. START and END + bound the region of rl_line_buffer that contains the word to + complete. TEXT is the word to complete. We can use the entire + contents of rl_line_buffer in case we want to do some simple + parsing. Returnthe array of matches, or NULL if there aren't any. */ +char ** +fileman_completion (text, start, end) + const char *text; + int start, end; +{ + char **matches; + + matches = (char **)NULL; + + /* If this word is at the start of the line, then it is a command + to complete. Otherwise it is the name of a file in the current + directory. */ + if (start == 0) + matches = rl_completion_matches (text, command_generator); + + return (matches); +} + +/* Generator function for command completion. STATE lets us + know whether to start from scratch; without any state + (i.e. STATE == 0), then we start at the top of the list. */ +char * +command_generator (text, state) + const char *text; + int state; +{ + static int list_index, len; + char *name; + + /* If this is a new word to complete, initialize now. This + includes saving the length of TEXT for efficiency, and + initializing the index variable to 0. */ + if (!state) + { + list_index = 0; + len = strlen (text); + } + + /* Return the next name which partially matches from the + command list. */ + while (name = commands[list_index].name) + { + list_index++; + + if (strncmp (name, text, len) == 0) + return (dupstr(name)); + } + + /* If no names matched, then return NULL. */ + return ((char *)NULL); +} + +/* **************************************************************** */ +/* */ +/* FileMan Commands */ +/* */ +/* **************************************************************** */ + +/* String to pass to system (). This is for the LIST, VIEW and RENAME + commands. */ +static char syscom[1024]; + +/* List the file(s) named in arg. */ +com_list (arg) + char *arg; +{ + if (!arg) + arg = ""; + + sprintf (syscom, "ls -FClg %s", arg); + return (system (syscom)); +} + +com_view (arg) + char *arg; +{ + if (!valid_argument ("view", arg)) + return 1; + + sprintf (syscom, "more %s", arg); + return (system (syscom)); +} + +com_rename (arg) + char *arg; +{ + too_dangerous ("rename"); + return (1); +} + +com_stat (arg) + char *arg; +{ + struct stat finfo; + + if (!valid_argument ("stat", arg)) + return (1); + + if (stat (arg, &finfo) == -1) + { + perror (arg); + return (1); + } + + printf ("Statistics for `%s':\n", arg); + + printf ("%s has %d link%s, and is %d byte%s in length.\n", arg, + finfo.st_nlink, + (finfo.st_nlink == 1) ? "" : "s", + finfo.st_size, + (finfo.st_size == 1) ? "" : "s"); + printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime)); + printf (" Last access at: %s", ctime (&finfo.st_atime)); + printf (" Last modified at: %s", ctime (&finfo.st_mtime)); + return (0); +} + +com_delete (arg) + char *arg; +{ + too_dangerous ("delete"); + return (1); +} + +/* Print out help for ARG, or for all of the commands if ARG is + not present. */ +com_help (arg) + char *arg; +{ + register int i; + int printed = 0; + + for (i = 0; commands[i].name; i++) + { + if (!*arg || (strcmp (arg, commands[i].name) == 0)) + { + printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc); + printed++; + } + } + + if (!printed) + { + printf ("No commands match `%s'. Possibilties are:\n", arg); + + for (i = 0; commands[i].name; i++) + { + /* Print in six columns. */ + if (printed == 6) + { + printed = 0; + printf ("\n"); + } + + printf ("%s\t", commands[i].name); + printed++; + } + + if (printed) + printf ("\n"); + } + return (0); +} + +/* Change to the directory ARG. */ +com_cd (arg) + char *arg; +{ + if (chdir (arg) == -1) + { + perror (arg); + return 1; + } + + com_pwd (""); + return (0); +} + +/* Print out the current working directory. */ +com_pwd (ignore) + char *ignore; +{ + char dir[1024], *s; + + s = getcwd (dir, sizeof(dir) - 1); + if (s == 0) + { + printf ("Error getting pwd: %s\n", dir); + return 1; + } + + printf ("Current directory is %s\n", dir); + return 0; +} + +/* The user wishes to quit using this program. Just set DONE + non-zero. */ +com_quit (arg) + char *arg; +{ + done = 1; + return (0); +} + +/* Function which tells you that you can't do this. */ +too_dangerous (caller) + char *caller; +{ + fprintf (stderr, + "%s: Too dangerous for me to distribute. Write it yourself.\n", + caller); +} + +/* Return non-zero if ARG is a valid argument for CALLER, else print + an error message and return zero. */ +int +valid_argument (caller, arg) + char *caller, *arg; +{ + if (!arg || !*arg) + { + fprintf (stderr, "%s: Argument required.\n", caller); + return (0); + } + + return (1); +} +</PRE> + + + +<H1><A NAME="SEC49" HREF="readline.html#TOC49">Concept Index</A></H1> +<P> +Jump to: +<A HREF="#cindex_c">c</A> +- +<A HREF="#cindex_e">e</A> +- +<A HREF="#cindex_i">i</A> +- +<A HREF="#cindex_k">k</A> +- +<A HREF="#cindex_n">n</A> +- +<A HREF="#cindex_r">r</A> +- +<A HREF="#cindex_v">v</A> +- +<A HREF="#cindex_y">y</A> +<P> +<H2><A NAME="cindex_c">c</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX3">command editing</A> +</DIR> +<H2><A NAME="cindex_e">e</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX4">editing command lines</A> +</DIR> +<H2><A NAME="cindex_i">i</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX8">initialization file, readline</A> +<LI><A HREF="readline.html#IDX1">interaction, readline</A> +</DIR> +<H2><A NAME="cindex_k">k</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX7">kill ring</A> +<LI><A HREF="readline.html#IDX5">killing text</A> +</DIR> +<H2><A NAME="cindex_n">n</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX2">notation, readline</A> +</DIR> +<H2><A NAME="cindex_r">r</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX99">readline, function</A> +</DIR> +<H2><A NAME="cindex_v">v</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX9">variables, readline</A> +</DIR> +<H2><A NAME="cindex_y">y</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX6">yanking text</A> +</DIR> + +</P> + + +<H1><A NAME="SEC50" HREF="readline.html#TOC50">Function and Variable Index</A></H1> +<P> +Jump to: +<A HREF="#findex__">_</A> +- +<A HREF="#findex_a">a</A> +- +<A HREF="#findex_b">b</A> +- +<A HREF="#findex_c">c</A> +- +<A HREF="#findex_d">d</A> +- +<A HREF="#findex_e">e</A> +- +<A HREF="#findex_f">f</A> +- +<A HREF="#findex_h">h</A> +- +<A HREF="#findex_i">i</A> +- +<A HREF="#findex_k">k</A> +- +<A HREF="#findex_m">m</A> +- +<A HREF="#findex_n">n</A> +- +<A HREF="#findex_o">o</A> +- +<A HREF="#findex_p">p</A> +- +<A HREF="#findex_q">q</A> +- +<A HREF="#findex_r">r</A> +- +<A HREF="#findex_s">s</A> +- +<A HREF="#findex_t">t</A> +- +<A HREF="#findex_u">u</A> +- +<A HREF="#findex_v">v</A> +- +<A HREF="#findex_y">y</A> +<P> +<H2><A NAME="findex__">_</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX200">_rl_digit_p</A> +<LI><A HREF="readline.html#IDX203">_rl_digit_value</A> +<LI><A HREF="readline.html#IDX199">_rl_lowercase_p</A> +<LI><A HREF="readline.html#IDX202">_rl_to_lower</A> +<LI><A HREF="readline.html#IDX201">_rl_to_upper</A> +<LI><A HREF="readline.html#IDX198">_rl_uppercase_p</A> +</DIR> +<H2><A NAME="findex_a">a</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX84">abort (C-g)</A> +<LI><A HREF="readline.html#IDX35">accept-line (Newline or Return)</A> +</DIR> +<H2><A NAME="findex_b">b</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX30">backward-char (C-b)</A> +<LI><A HREF="readline.html#IDX49">backward-delete-char (Rubout)</A> +<LI><A HREF="readline.html#IDX60">backward-kill-line (C-x Rubout)</A> +<LI><A HREF="readline.html#IDX64">backward-kill-word (M-<KBD>DEL</KBD>)</A> +<LI><A HREF="readline.html#IDX32">backward-word (M-b)</A> +<LI><A HREF="readline.html#IDX38">beginning-of-history (M-&#60;)</A> +<LI><A HREF="readline.html#IDX27">beginning-of-line (C-a)</A> +<LI><A HREF="readline.html#IDX10">bell-style</A> +</DIR> +<H2><A NAME="findex_c">c</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX82">call-last-kbd-macro (C-x e)</A> +<LI><A HREF="readline.html#IDX58">capitalize-word (M-c)</A> +<LI><A HREF="readline.html#IDX92">character-search (C-])</A> +<LI><A HREF="readline.html#IDX93">character-search-backward (M-C-])</A> +<LI><A HREF="readline.html#IDX33">clear-screen (C-l)</A> +<LI><A HREF="readline.html#IDX11">comment-begin</A> +<LI><A HREF="readline.html#IDX75">complete (<KBD>TAB</KBD>)</A> +<LI><A HREF="readline.html#IDX12">completion-query-items</A> +<LI><A HREF="readline.html#IDX13">convert-meta</A> +<LI><A HREF="readline.html#IDX69">copy-backward-word ()</A> +<LI><A HREF="readline.html#IDX70">copy-forward-word ()</A> +<LI><A HREF="readline.html#IDX68">copy-region-as-kill ()</A> +</DIR> +<H2><A NAME="findex_d">d</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX48">delete-char (C-d)</A> +<LI><A HREF="readline.html#IDX79">delete-char-or-list ()</A> +<LI><A HREF="readline.html#IDX66">delete-horizontal-space ()</A> +<LI><A HREF="readline.html#IDX73">digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, ... <KBD>M--</KBD>)</A> +<LI><A HREF="readline.html#IDX14">disable-completion</A> +<LI><A HREF="readline.html#IDX85">do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, ...)</A> +<LI><A HREF="readline.html#IDX57">downcase-word (M-l)</A> +<LI><A HREF="readline.html#IDX95">dump-functions ()</A> +<LI><A HREF="readline.html#IDX97">dump-macros ()</A> +<LI><A HREF="readline.html#IDX96">dump-variables ()</A> +</DIR> +<H2><A NAME="findex_e">e</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX15">editing-mode</A> +<LI><A HREF="readline.html#IDX16">enable-keypad</A> +<LI><A HREF="readline.html#IDX81">end-kbd-macro (C-x ))</A> +<LI><A HREF="readline.html#IDX39">end-of-history (M-&#62;)</A> +<LI><A HREF="readline.html#IDX28">end-of-line (C-e)</A> +<LI><A HREF="readline.html#IDX91">exchange-point-and-mark (C-x C-x)</A> +<LI><A HREF="readline.html#IDX17">expand-tilde</A> +</DIR> +<H2><A NAME="findex_f">f</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX50">forward-backward-delete-char ()</A> +<LI><A HREF="readline.html#IDX29">forward-char (C-f)</A> +<LI><A HREF="readline.html#IDX41">forward-search-history (C-s)</A> +<LI><A HREF="readline.html#IDX31">forward-word (M-f)</A> +</DIR> +<H2><A NAME="findex_h">h</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX45">history-search-backward ()</A> +<LI><A HREF="readline.html#IDX44">history-search-forward ()</A> +<LI><A HREF="readline.html#IDX18">horizontal-scroll-mode</A> +</DIR> +<H2><A NAME="findex_i">i</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX19">input-meta</A> +<LI><A HREF="readline.html#IDX94">insert-comment (M-#)</A> +<LI><A HREF="readline.html#IDX77">insert-completions (M-*)</A> +<LI><A HREF="readline.html#IDX21">isearch-terminators</A> +</DIR> +<H2><A NAME="findex_k">k</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX22">keymap</A> +<LI><A HREF="readline.html#IDX59">kill-line (C-k)</A> +<LI><A HREF="readline.html#IDX67">kill-region ()</A> +<LI><A HREF="readline.html#IDX62">kill-whole-line ()</A> +<LI><A HREF="readline.html#IDX63">kill-word (M-d)</A> +</DIR> +<H2><A NAME="findex_m">m</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX23">mark-modified-lines</A> +<LI><A HREF="readline.html#IDX78">menu-complete ()</A> +<LI><A HREF="readline.html#IDX20">meta-flag</A> +</DIR> +<H2><A NAME="findex_n">n</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX37">next-history (C-n)</A> +<LI><A HREF="readline.html#IDX43">non-incremental-forward-search-history (M-n)</A> +<LI><A HREF="readline.html#IDX42">non-incremental-reverse-search-history (M-p)</A> +</DIR> +<H2><A NAME="findex_o">o</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX24">output-meta</A> +</DIR> +<H2><A NAME="findex_p">p</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX76">possible-completions (M-?)</A> +<LI><A HREF="readline.html#IDX86">prefix-meta (<KBD>ESC</KBD>)</A> +<LI><A HREF="readline.html#IDX36">previous-history (C-p)</A> +</DIR> +<H2><A NAME="findex_q">q</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX51">quoted-insert (C-q or C-v)</A> +</DIR> +<H2><A NAME="findex_r">r</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX83">re-read-init-file (C-x C-r)</A> +<LI><A HREF="readline.html#IDX98">readline</A> +<LI><A HREF="readline.html#IDX34">redraw-current-line ()</A> +<LI><A HREF="readline.html#IDX40">reverse-search-history (C-r)</A> +<LI><A HREF="readline.html#IDX88">revert-line (M-r)</A> +<LI><A HREF="readline.html#IDX132">rl_add_defun</A> +<LI><A HREF="readline.html#IDX158">rl_add_funmap_entry</A> +<LI><A HREF="readline.html#IDX161">rl_add_undo</A> +<LI><A HREF="readline.html#IDX196">rl_alphabetic</A> +<LI><A HREF="readline.html#IDX110">rl_already_prompted</A> +<LI><A HREF="readline.html#IDX232">rl_attempted_completion_function</A> +<LI><A HREF="readline.html#IDX247">rl_attempted_completion_over</A> +<LI><A HREF="readline.html#IDX238">rl_basic_quote_characters</A> +<LI><A HREF="readline.html#IDX237">rl_basic_word_break_characters</A> +<LI><A HREF="readline.html#IDX159">rl_begin_undo_group</A> +<LI><A HREF="readline.html#IDX141">rl_bind_key</A> +<LI><A HREF="readline.html#IDX142">rl_bind_key_in_map</A> +<LI><A HREF="readline.html#IDX126">rl_binding_keymap</A> +<LI><A HREF="readline.html#IDX209">rl_callback_handler_install</A> +<LI><A HREF="readline.html#IDX211">rl_callback_handler_remove</A> +<LI><A HREF="readline.html#IDX210">rl_callback_read_char</A> +<LI><A HREF="readline.html#IDX212">rl_catch_signals</A> +<LI><A HREF="readline.html#IDX213">rl_catch_sigwinch</A> +<LI><A HREF="readline.html#IDX235">rl_char_is_quoted_p</A> +<LI><A HREF="readline.html#IDX214">rl_cleanup_after_signal</A> +<LI><A HREF="readline.html#IDX173">rl_clear_message</A> +<LI><A HREF="readline.html#IDX187">rl_clear_pending_input</A> +<LI><A HREF="readline.html#IDX221">rl_clear_signals</A> +<LI><A HREF="readline.html#IDX222">rl_complete</A>, <A HREF="readline.html#IDX225">rl_complete</A> +<LI><A HREF="readline.html#IDX224">rl_complete_internal</A> +<LI><A HREF="readline.html#IDX240">rl_completer_quote_characters</A> +<LI><A HREF="readline.html#IDX239">rl_completer_word_break_characters</A> +<LI><A HREF="readline.html#IDX243">rl_completion_append_character</A> +<LI><A HREF="readline.html#IDX252">rl_completion_display_matches_hook</A> +<LI><A HREF="readline.html#IDX223">rl_completion_entry_function</A>, <A HREF="readline.html#IDX231">rl_completion_entry_function</A> +<LI><A HREF="readline.html#IDX228">rl_completion_matches</A> +<LI><A HREF="readline.html#IDX236">rl_completion_query_items</A> +<LI><A HREF="readline.html#IDX248">rl_completion_type</A> +<LI><A HREF="readline.html#IDX134">rl_copy_keymap</A> +<LI><A HREF="readline.html#IDX180">rl_copy_text</A> +<LI><A HREF="readline.html#IDX170">rl_crlf</A> +<LI><A HREF="readline.html#IDX179">rl_delete_text</A> +<LI><A HREF="readline.html#IDX124">rl_deprep_term_function</A> +<LI><A HREF="readline.html#IDX190">rl_deprep_terminal</A> +<LI><A HREF="readline.html#IDX195">rl_ding</A> +<LI><A HREF="readline.html#IDX251">rl_directory_completion_hook</A> +<LI><A HREF="readline.html#IDX136">rl_discard_keymap</A> +<LI><A HREF="readline.html#IDX107">rl_dispatching</A> +<LI><A HREF="readline.html#IDX197">rl_display_match_list</A> +<LI><A HREF="readline.html#IDX163">rl_do_undo</A> +<LI><A HREF="readline.html#IDX104">rl_done</A> +<LI><A HREF="readline.html#IDX131">rl_editing_mode</A> +<LI><A HREF="readline.html#IDX102">rl_end</A> +<LI><A HREF="readline.html#IDX160">rl_end_undo_group</A> +<LI><A HREF="readline.html#IDX108">rl_erase_empty_line</A> +<LI><A HREF="readline.html#IDX120">rl_event_hook</A> +<LI><A HREF="readline.html#IDX186">rl_execute_next</A> +<LI><A HREF="readline.html#IDX125">rl_executing_keymap</A> +<LI><A HREF="readline.html#IDX127">rl_executing_macro</A> +<LI><A HREF="readline.html#IDX176">rl_expand_prompt</A> +<LI><A HREF="readline.html#IDX129">rl_explicit_arg</A> +<LI><A HREF="readline.html#IDX193">rl_extend_line_buffer</A> +<LI><A HREF="readline.html#IDX245">rl_filename_completion_desired</A> +<LI><A HREF="readline.html#IDX229">rl_filename_completion_function</A> +<LI><A HREF="readline.html#IDX234">rl_filename_dequoting_function</A> +<LI><A HREF="readline.html#IDX241">rl_filename_quote_characters</A> +<LI><A HREF="readline.html#IDX246">rl_filename_quoting_desired</A> +<LI><A HREF="readline.html#IDX233">rl_filename_quoting_function</A> +<LI><A HREF="readline.html#IDX166">rl_forced_update_display</A> +<LI><A HREF="readline.html#IDX215">rl_free_line_state</A> +<LI><A HREF="readline.html#IDX162">rl_free_undo_list</A> +<LI><A HREF="readline.html#IDX155">rl_function_dumper</A> +<LI><A HREF="readline.html#IDX152">rl_function_of_keyseq</A> +<LI><A HREF="readline.html#IDX157">rl_funmap_names</A> +<LI><A HREF="readline.html#IDX148">rl_generic_bind</A> +<LI><A HREF="readline.html#IDX137">rl_get_keymap</A> +<LI><A HREF="readline.html#IDX139">rl_get_keymap_by_name</A> +<LI><A HREF="readline.html#IDX140">rl_get_keymap_name</A> +<LI><A HREF="readline.html#IDX219">rl_get_screen_size</A> +<LI><A HREF="readline.html#IDX184">rl_getc</A> +<LI><A HREF="readline.html#IDX121">rl_getc_function</A> +<LI><A HREF="readline.html#IDX112">rl_gnu_readline_p</A> +<LI><A HREF="readline.html#IDX244">rl_ignore_completion_duplicates</A> +<LI><A HREF="readline.html#IDX250">rl_ignore_some_completions_function</A> +<LI><A HREF="readline.html#IDX249">rl_inhibit_completion</A> +<LI><A HREF="readline.html#IDX194">rl_initialize</A> +<LI><A HREF="readline.html#IDX227">rl_insert_completions</A> +<LI><A HREF="readline.html#IDX178">rl_insert_text</A> +<LI><A HREF="readline.html#IDX115">rl_instream</A> +<LI><A HREF="readline.html#IDX153">rl_invoking_keyseqs</A> +<LI><A HREF="readline.html#IDX154">rl_invoking_keyseqs_in_map</A> +<LI><A HREF="readline.html#IDX181">rl_kill_text</A> +<LI><A HREF="readline.html#IDX117">rl_last_func</A> +<LI><A HREF="readline.html#IDX111">rl_library_version</A> +<LI><A HREF="readline.html#IDX100">rl_line_buffer</A> +<LI><A HREF="readline.html#IDX156">rl_list_funmap_names</A> +<LI><A HREF="readline.html#IDX204">rl_macro_bind</A> +<LI><A HREF="readline.html#IDX205">rl_macro_dumper</A> +<LI><A HREF="readline.html#IDX133">rl_make_bare_keymap</A> +<LI><A HREF="readline.html#IDX135">rl_make_keymap</A> +<LI><A HREF="readline.html#IDX103">rl_mark</A> +<LI><A HREF="readline.html#IDX172">rl_message</A> +<LI><A HREF="readline.html#IDX164">rl_modifying</A> +<LI><A HREF="readline.html#IDX151">rl_named_function</A> +<LI><A HREF="readline.html#IDX105">rl_num_chars_to_read</A> +<LI><A HREF="readline.html#IDX130">rl_numeric_arg</A> +<LI><A HREF="readline.html#IDX167">rl_on_new_line</A> +<LI><A HREF="readline.html#IDX168">rl_on_new_line_with_prompt</A> +<LI><A HREF="readline.html#IDX116">rl_outstream</A> +<LI><A HREF="readline.html#IDX149">rl_parse_and_bind</A> +<LI><A HREF="readline.html#IDX106">rl_pending_input</A> +<LI><A HREF="readline.html#IDX101">rl_point</A> +<LI><A HREF="readline.html#IDX226">rl_possible_completions</A> +<LI><A HREF="readline.html#IDX119">rl_pre_input_hook</A> +<LI><A HREF="readline.html#IDX123">rl_prep_term_function</A> +<LI><A HREF="readline.html#IDX189">rl_prep_terminal</A> +<LI><A HREF="readline.html#IDX109">rl_prompt</A> +<LI><A HREF="readline.html#IDX182">rl_push_macro_input</A> +<LI><A HREF="readline.html#IDX150">rl_read_init_file</A> +<LI><A HREF="readline.html#IDX183">rl_read_key</A> +<LI><A HREF="readline.html#IDX114">rl_readline_name</A> +<LI><A HREF="readline.html#IDX128">rl_readline_state</A> +<LI><A HREF="readline.html#IDX165">rl_redisplay</A> +<LI><A HREF="readline.html#IDX122">rl_redisplay_function</A> +<LI><A HREF="readline.html#IDX216">rl_reset_after_signal</A> +<LI><A HREF="readline.html#IDX169">rl_reset_line_state</A> +<LI><A HREF="readline.html#IDX192">rl_reset_terminal</A> +<LI><A HREF="readline.html#IDX217">rl_resize_terminal</A> +<LI><A HREF="readline.html#IDX175">rl_restore_prompt</A> +<LI><A HREF="readline.html#IDX174">rl_save_prompt</A> +<LI><A HREF="readline.html#IDX147">rl_set_key</A> +<LI><A HREF="readline.html#IDX188">rl_set_keyboard_input_timeout</A> +<LI><A HREF="readline.html#IDX138">rl_set_keymap</A> +<LI><A HREF="readline.html#IDX208">rl_set_paren_blink_timeout</A> +<LI><A HREF="readline.html#IDX177">rl_set_prompt</A> +<LI><A HREF="readline.html#IDX218">rl_set_screen_size</A> +<LI><A HREF="readline.html#IDX220">rl_set_signals</A> +<LI><A HREF="readline.html#IDX171">rl_show_char</A> +<LI><A HREF="readline.html#IDX242">rl_special_prefixes</A> +<LI><A HREF="readline.html#IDX118">rl_startup_hook</A> +<LI><A HREF="readline.html#IDX185">rl_stuff_char</A> +<LI><A HREF="readline.html#IDX113">rl_terminal_name</A> +<LI><A HREF="readline.html#IDX191">rl_tty_set_default_bindings</A> +<LI><A HREF="readline.html#IDX146">rl_unbind_command_in_map</A> +<LI><A HREF="readline.html#IDX145">rl_unbind_function_in_map</A> +<LI><A HREF="readline.html#IDX143">rl_unbind_key</A> +<LI><A HREF="readline.html#IDX144">rl_unbind_key_in_map</A> +<LI><A HREF="readline.html#IDX230">rl_username_completion_function</A> +<LI><A HREF="readline.html#IDX206">rl_variable_bind</A> +<LI><A HREF="readline.html#IDX207">rl_variable_dumper</A> +</DIR> +<H2><A NAME="findex_s">s</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX53">self-insert (a, b, A, 1, !, ...)</A> +<LI><A HREF="readline.html#IDX90">set-mark (C-@)</A> +<LI><A HREF="readline.html#IDX25">show-all-if-ambiguous</A> +<LI><A HREF="readline.html#IDX80">start-kbd-macro (C-x ()</A> +</DIR> +<H2><A NAME="findex_t">t</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX52">tab-insert (M-<KBD>TAB</KBD>)</A> +<LI><A HREF="readline.html#IDX89">tilde-expand (M-~)</A> +<LI><A HREF="readline.html#IDX54">transpose-chars (C-t)</A> +<LI><A HREF="readline.html#IDX55">transpose-words (M-t)</A> +</DIR> +<H2><A NAME="findex_u">u</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX87">undo (C-_ or C-x C-u)</A> +<LI><A HREF="readline.html#IDX74">universal-argument ()</A> +<LI><A HREF="readline.html#IDX61">unix-line-discard (C-u)</A> +<LI><A HREF="readline.html#IDX65">unix-word-rubout (C-w)</A> +<LI><A HREF="readline.html#IDX56">upcase-word (M-u)</A> +</DIR> +<H2><A NAME="findex_v">v</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX26">visible-stats</A> +</DIR> +<H2><A NAME="findex_y">y</A></H2> +<DIR> +<LI><A HREF="readline.html#IDX71">yank (C-y)</A> +<LI><A HREF="readline.html#IDX47">yank-last-arg (M-. or M-_)</A> +<LI><A HREF="readline.html#IDX46">yank-nth-arg (M-C-y)</A> +<LI><A HREF="readline.html#IDX72">yank-pop (M-y)</A> +</DIR> + +</P> +<P><HR><P> +This document was generated on 16 April 2001 using the +<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A> +translator version 1.52.</P> +</BODY> +</HTML> diff --git a/readline-4.2/doc/readline.info b/readline-4.2/doc/readline.info new file mode 100644 index 0000000..ad721c5 --- /dev/null +++ b/readline-4.2/doc/readline.info @@ -0,0 +1,3500 @@ +This is readline.info, produced by makeinfo version 4.0 from +/usr/homes/chet/src/bash/readline-src/doc/rlman.texinfo. + +INFO-DIR-SECTION Libraries +START-INFO-DIR-ENTRY +* Readline: (readline). The GNU readline library API +END-INFO-DIR-ENTRY + + This document describes 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-2001 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: readline.info, Node: Top, Next: Command Line Editing, Up: (dir) + +GNU Readline Library +******************** + + This document describes 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. +* Programming with GNU Readline:: GNU Readline Programmer's Manual. +* Concept Index:: Index of concepts described in this manual. +* Function and Variable Index:: Index of externally visible functions + and variables. + + +File: readline.info, Node: Command Line Editing, Next: Programming with GNU Readline, 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: readline.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: readline.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 <RET>. You do not have to be at the end of +the line to press <RET>; 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: readline.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: readline.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: readline.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: readline.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', which +will delete the next ten characters on the input line. + + +File: readline.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. A movement command will terminate the search, make the +last line found the current line, and begin editing. + + 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: readline.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: readline.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. The syntax is simple: + + set VARIABLE VALUE + + Here, for example, is how to change from the default Emacs-like + key binding to use `vi' line editing commands: + + set editing-mode vi + + Variable names and values, where appropriate, are recognized + without regard to case. + + 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. This variable must be set to an integer value + greater than or equal to 0. 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 clear the eighth bit in 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-move', + `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 on a line in + the init file the name of the key you wish to bind the command to, + a colon, and then the name of the command. The name of the key + can be expressed in different ways, depending on what you find most + comfortable. + + In addition to command names, readline allows keys to be bound to + a string that is inserted when the key is pressed (a MACRO). + + 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', `M-DEL' is bound to the function + `backward-kill-word', 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). + + A number of symbolic character names are recognized while + processing this key binding syntax: DEL, ESC, ESCAPE, LFD, + NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB. + + "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 again 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: readline.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 a particular value. 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. For example, the following + directive reads from `/etc/inputrc': + $include /etc/inputrc + + +File: readline.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: readline.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: readline.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: readline.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 or Return)' + Accept the line regardless of where the cursor is. If this line is + non-empty, it may be added to the history list for future recall + with `add_history()'. If this line is a modified history line, + the history line is restored to its original state. + +`previous-history (C-p)' + Move `back' through the history list, fetching the previous + command. + +`next-history (C-n)' + Move `forward' through the history list, fetching the next command. + +`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) at point. 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-. or 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: readline.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 at point. If point 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 or 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: readline.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 where 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 point. + +`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: readline.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: readline.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands + +Letting Readline Type For You +----------------------------- + +`complete (<TAB>)' + Attempt to perform completion on the text before point. The + actual completion performed is application-specific. The default + is filename completion. + +`possible-completions (M-?)' + List the possible completions of the text before point. + +`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 (subject to the setting of + `bell-style') 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: readline.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: readline.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>)' + Metafy the next character typed. This is for keyboards without a + meta key. Typing `<ESC> f' is equivalent to typing `M-f'. + +`undo (C-_ or 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 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 output. 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: readline.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' (bound to emacs-editing-mode when in +`vi' mode and to vi-editing-mode in `emacs' 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. + + This document describes the GNU Readline Library, a utility for +aiding in the consitency of user interface across discrete programs +that need to provide a command line interface. + + Copyright (C) 1988-2001 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 Foundation. + + +File: readline.info, Node: Programming with GNU Readline, Next: Concept Index, Prev: Command Line Editing, Up: Top + +Programming with GNU Readline +***************************** + + This chapter describes the interface between the GNU Readline +Library and other programs. If you are a programmer, and you wish to +include the features found in GNU Readline such as completion, line +editing, and interactive history manipulation in your own programs, +this section is for you. + +* Menu: + +* Basic Behavior:: Using the default behavior of Readline. +* Custom Functions:: Adding your own functions to Readline. +* Readline Variables:: Variables accessible to custom + functions. +* Readline Convenience Functions:: Functions which Readline supplies to + aid in writing your own custom + functions. +* Readline Signal Handling:: How Readline behaves when it receives signals. +* Custom Completers:: Supplanting or supplementing Readline's + completion functions. + + +File: readline.info, Node: Basic Behavior, Next: Custom Functions, Up: Programming with GNU Readline + +Basic Behavior +============== + + Many programs provide a command line interface, such as `mail', +`ftp', and `sh'. For such programs, the default behaviour of Readline +is sufficient. This section describes how to use Readline in the +simplest way possible, perhaps to replace calls in your code to +`gets()' or `fgets()'. + + The function `readline()' prints a prompt PROMPT and then reads and +returns a single line of text from the user. If PROMPT is `NULL' or +the empty string, no prompt is displayed. The line `readline' returns +is allocated with `malloc()'; the caller should `free()' the line when +it has finished with it. The declaration for `readline' in ANSI C is + + `char *readline (const char *PROMPT);' + +So, one might say + `char *line = readline ("Enter a line: ");' + +in order to read a line of text from the user. The line returned has +the final newline removed, so only the text remains. + + If `readline' encounters an `EOF' while reading the line, and the +line is empty at that point, then `(char *)NULL' is returned. +Otherwise, the line is ended just as if a newline had been typed. + + If you want the user to be able to get at the line later, (with +<C-p> for example), you must call `add_history()' to save the line away +in a "history" list of such lines. + + `add_history (line)'; + +For full details on the GNU History Library, see the associated manual. + + It is preferable to avoid saving empty lines on the history list, +since users rarely have a burning need to reuse a blank line. Here is +a function which usefully replaces the standard `gets()' library +function, and has the advantage of no static buffer to overflow: + + /* A static variable for holding the line. */ + static char *line_read = (char *)NULL; + + /* Read a string, and return a pointer to it. Returns NULL on EOF. */ + char * + rl_gets () + { + /* If the buffer has already been allocated, return the memory + to the free pool. */ + if (line_read) + { + free (line_read); + line_read = (char *)NULL; + } + + /* Get a line from the user. */ + line_read = readline (""); + + /* If the line has any text in it, save it on the history. */ + if (line_read && *line_read) + add_history (line_read); + + return (line_read); + } + + This function gives the user the default behaviour of <TAB> +completion: completion on file names. If you do not want Readline to +complete on filenames, you can change the binding of the <TAB> key with +`rl_bind_key()'. + + `int rl_bind_key (int KEY, rl_command_func_t *FUNCTION);' + + `rl_bind_key()' takes two arguments: KEY is the character that you +want to bind, and FUNCTION is the address of the function to call when +KEY is pressed. Binding <TAB> to `rl_insert()' makes <TAB> insert +itself. `rl_bind_key()' returns non-zero if KEY is not a valid ASCII +character code (between 0 and 255). + + Thus, to disable the default <TAB> behavior, the following suffices: + `rl_bind_key ('\t', rl_insert);' + + This code should be executed once at the start of your program; you +might write a function called `initialize_readline()' which performs +this and other desired initializations, such as installing custom +completers (*note Custom Completers::). + + +File: readline.info, Node: Custom Functions, Next: Readline Variables, Prev: Basic Behavior, Up: Programming with GNU Readline + +Custom Functions +================ + + Readline provides many functions for manipulating the text of the +line, but it isn't possible to anticipate the needs of all programs. +This section describes the various functions and variables defined +within the Readline library which allow a user program to add +customized functionality to Readline. + + Before declaring any functions that customize Readline's behavior, or +using any functionality Readline provides in other code, an application +writer should include the file `<readline/readline.h>' in any file that +uses Readline's features. Since some of the definitions in +`readline.h' use the `stdio' library, the file `<stdio.h>' should be +included before `readline.h'. + +* Menu: + +* Readline Typedefs:: C declarations to make code readable. +* Function Writing:: Variables and calling conventions. + + +File: readline.info, Node: Readline Typedefs, Next: Function Writing, Up: Custom Functions + +Readline Typedefs +----------------- + + For readabilty, we declare a number of new object types, all pointers +to functions. + + The reason for declaring these new types is to make it easier to +write code describing pointers to C functions with appropriately +prototyped arguments and return values. + + For instance, say we want to declare a variable FUNC as a pointer to +a function which takes two `int' arguments and returns an `int' (this +is the type of all of the Readline bindable functions). Instead of the +classic C declaration + + `int (*func)();' + +or the ANSI-C style declaration + + `int (*func)(int, int);' + +we may write + + `rl_command_func_t *func;' + + The full list of function pointer types available is + +`typedef int rl_command_func_t (int, int);' + +`typedef char *rl_compentry_func_t (const char *, int);' + +`typedef char **rl_completion_func_t (const char *, int, int);' + +`typedef char *rl_quote_func_t (char *, int, char *);' + +`typedef char *rl_dequote_func_t (char *, int);' + +`typedef int rl_compignore_func_t (char **);' + +`typedef void rl_compdisp_func_t (char **, int, int);' + +`typedef int rl_hook_func_t (void);' + +`typedef int rl_getc_func_t (FILE *);' + +`typedef int rl_linebuf_func_t (char *, int);' + +`typedef int rl_intfunc_t (int);' + +`#define rl_ivoidfunc_t rl_hook_func_t' + +`typedef int rl_icpfunc_t (char *);' + +`typedef int rl_icppfunc_t (char **);' + +`typedef void rl_voidfunc_t (void);' + +`typedef void rl_vintfunc_t (int);' + +`typedef void rl_vcpfunc_t (char *);' + +`typedef void rl_vcppfunc_t (char **);' + +File: readline.info, Node: Function Writing, Prev: Readline Typedefs, Up: Custom Functions + +Writing a New Function +---------------------- + + In order to write new functions for Readline, you need to know the +calling conventions for keyboard-invoked functions, and the names of the +variables that describe the current state of the line read so far. + + The calling sequence for a command `foo' looks like + + `foo (int count, int key)' + +where COUNT is the numeric argument (or 1 if defaulted) and KEY is the +key that invoked this function. + + It is completely up to the function as to what should be done with +the numeric argument. Some functions use it as a repeat count, some as +a flag, and others to choose alternate behavior (refreshing the current +line as opposed to refreshing the screen, for example). Some choose to +ignore it. In general, if a function uses the numeric argument as a +repeat count, it should be able to do something useful with both +negative and positive arguments. At the very least, it should be aware +that it can be passed a negative argument. + + +File: readline.info, Node: Readline Variables, Next: Readline Convenience Functions, Prev: Custom Functions, Up: Programming with GNU Readline + +Readline Variables +================== + + These variables are available to function writers. + + - Variable: char * rl_line_buffer + This is the line gathered so far. You are welcome to modify the + contents of the line, but see *Note Allowing Undoing::. The + function `rl_extend_line_buffer' is available to increase the + memory allocated to `rl_line_buffer'. + + - Variable: int rl_point + The offset of the current cursor position in `rl_line_buffer' (the + _point_). + + - Variable: int rl_end + The number of characters present in `rl_line_buffer'. When + `rl_point' is at the end of the line, `rl_point' and `rl_end' are + equal. + + - Variable: int rl_mark + The MARK (saved position) in the current line. If set, the mark + and point define a _region_. + + - Variable: int rl_done + Setting this to a non-zero value causes Readline to return the + current line immediately. + + - Variable: int rl_num_chars_to_read + Setting this to a positive value before calling `readline()' causes + Readline to return after accepting that many characters, rather + than reading up to a character bound to `accept-line'. + + - Variable: int rl_pending_input + Setting this to a value makes it the next keystroke read. This is + a way to stuff a single character into the input stream. + + - Variable: int rl_dispatching + Set to a non-zero value if a function is being called from a key + binding; zero otherwise. Application functions can test this to + discover whether they were called directly or by Readline's + dispatching mechanism. + + - Variable: int rl_erase_empty_line + Setting this to a non-zero value causes Readline to completely + erase the current line, including any prompt, any time a newline + is typed as the only character on an otherwise-empty line. The + cursor is moved to the beginning of the newly-blank line. + + - Variable: char * rl_prompt + The prompt Readline uses. This is set from the argument to + `readline()', and should not be assigned to directly. The + `rl_set_prompt()' function (*note Redisplay::) may be used to + modify the prompt string after calling `readline()'. + + - Variable: int rl_already_prompted + If an application wishes to display the prompt itself, rather than + have Readline do it the first time `readline()' is called, it + should set this variable to a non-zero value after displaying the + prompt. The prompt must also be passed as the argument to + `readline()' so the redisplay functions can update the display + properly. The calling application is responsible for managing the + value; Readline never sets it. + + - Variable: const char * rl_library_version + The version number of this revision of the library. + + - Variable: int rl_gnu_readline_p + Always set to 1, denoting that this is GNU readline rather than + some emulation. + + - Variable: const char * rl_terminal_name + The terminal type, used for initialization. If not set by the + application, Readline sets this to the value of the `TERM' + environment variable the first time it is called. + + - Variable: const char * rl_readline_name + This variable is set to a unique name by each application using + Readline. The value allows conditional parsing of the inputrc file + (*note Conditional Init Constructs::). + + - Variable: FILE * rl_instream + The stdio stream from which Readline reads input. + + - Variable: FILE * rl_outstream + The stdio stream to which Readline performs output. + + - Variable: rl_command_func_t * rl_last_func + The address of the last command function Readline executed. May + be used to test whether or not a function is being executed twice + in succession, for example. + + - Variable: rl_hook_func_t * rl_startup_hook + If non-zero, this is the address of a function to call just before + `readline' prints the first prompt. + + - Variable: rl_hook_func_t * rl_pre_input_hook + If non-zero, this is the address of a function to call after the + first prompt has been printed and just before `readline' starts + reading input characters. + + - Variable: rl_hook_func_t * rl_event_hook + If non-zero, this is the address of a function to call periodically + when Readline is waiting for terminal input. By default, this + will be called at most ten times a second if there is no keyboard + input. + + - Variable: rl_getc_func_t * rl_getc_function + If non-zero, Readline will call indirectly through this pointer to + get a character from the input stream. By default, it is set to + `rl_getc', the default Readline character input function (*note + Character Input::). + + - Variable: rl_voidfunc_t * rl_redisplay_function + If non-zero, Readline will call indirectly through this pointer to + update the display with the current contents of the editing buffer. + By default, it is set to `rl_redisplay', the default Readline + redisplay function (*note Redisplay::). + + - Variable: rl_vintfunc_t * rl_prep_term_function + If non-zero, Readline will call indirectly through this pointer to + initialize the terminal. The function takes a single argument, an + `int' flag that says whether or not to use eight-bit characters. + By default, this is set to `rl_prep_terminal' (*note Terminal + Management::). + + - Variable: rl_voidfunc_t * rl_deprep_term_function + If non-zero, Readline will call indirectly through this pointer to + reset the terminal. This function should undo the effects of + `rl_prep_term_function'. By default, this is set to + `rl_deprep_terminal' (*note Terminal Management::). + + - Variable: Keymap rl_executing_keymap + This variable is set to the keymap (*note Keymaps::) in which the + currently executing readline function was found. + + - Variable: Keymap rl_binding_keymap + This variable is set to the keymap (*note Keymaps::) in which the + last key binding occurred. + + - Variable: char * rl_executing_macro + This variable is set to the text of any currently-executing macro. + + - Variable: int rl_readline_state + A variable with bit values that encapsulate the current Readline + state. A bit is set with the `RL_SETSTATE' macro, and unset with + the `RL_UNSETSTATE' macro. Use the `RL_ISSTATE' macro to test + whether a particular state bit is set. Current state bits include: + + `RL_STATE_NONE' + Readline has not yet been called, nor has it begun to + intialize. + + `RL_STATE_INITIALIZING' + Readline is initializing its internal data structures. + + `RL_STATE_INITIALIZED' + Readline has completed its initialization. + + `RL_STATE_TERMPREPPED' + Readline has modified the terminal modes to do its own input + and redisplay. + + `RL_STATE_READCMD' + Readline is reading a command from the keyboard. + + `RL_STATE_METANEXT' + Readline is reading more input after reading the meta-prefix + character. + + `RL_STATE_DISPATCHING' + Readline is dispatching to a command. + + `RL_STATE_MOREINPUT' + Readline is reading more input while executing an editing + command. + + `RL_STATE_ISEARCH' + Readline is performing an incremental history search. + + `RL_STATE_NSEARCH' + Readline is performing a non-incremental history search. + + `RL_STATE_SEARCH' + Readline is searching backward or forward through the history + for a string. + + `RL_STATE_NUMERICARG' + Readline is reading a numeric argument. + + `RL_STATE_MACROINPUT' + Readline is currently getting its input from a + previously-defined keyboard macro. + + `RL_STATE_MACRODEF' + Readline is currently reading characters defining a keyboard + macro. + + `RL_STATE_OVERWRITE' + Readline is in overwrite mode. + + `RL_STATE_COMPLETING' + Readline is performing word completion. + + `RL_STATE_SIGHANDLER' + Readline is currently executing the readline signal handler. + + `RL_STATE_UNDOING' + Readline is performing an undo. + + `RL_STATE_DONE' + Readline has read a key sequence bound to `accept-line' and + is about to return the line to the caller. + + + - Variable: int rl_explicit_arg + Set to a non-zero value if an explicit numeric argument was + specified by the user. Only valid in a bindable command function. + + - Variable: int rl_numeric_arg + Set to the value of any numeric argument explicitly specified by + the user before executing the current Readline function. Only + valid in a bindable command function. + + - Variable: int rl_editing_mode + Set to a value denoting Readline's current editing mode. A value + of 1 means Readline is currently in emacs mode; 0 means that vi + mode is active. + + +File: readline.info, Node: Readline Convenience Functions, Next: Readline Signal Handling, Prev: Readline Variables, Up: Programming with GNU Readline + +Readline Convenience Functions +============================== + +* Menu: + +* Function Naming:: How to give a function you write a name. +* Keymaps:: Making keymaps. +* Binding Keys:: Changing Keymaps. +* Associating Function Names and Bindings:: Translate function names to + key sequences. +* Allowing Undoing:: How to make your functions undoable. +* Redisplay:: Functions to control line display. +* Modifying Text:: Functions to modify `rl_line_buffer'. +* Character Input:: Functions to read keyboard input. +* Terminal Management:: Functions to manage terminal settings. +* Utility Functions:: Generally useful functions and hooks. +* Miscellaneous Functions:: Functions that don't fall into any category. +* Alternate Interface:: Using Readline in a `callback' fashion. +* A Readline Example:: An example Readline function. + + +File: readline.info, Node: Function Naming, Next: Keymaps, Up: Readline Convenience Functions + +Naming a Function +----------------- + + The user can dynamically change the bindings of keys while using +Readline. This is done by representing the function with a descriptive +name. The user is able to type the descriptive name when referring to +the function. Thus, in an init file, one might find + + Meta-Rubout: backward-kill-word + + This binds the keystroke <Meta-Rubout> to the function +_descriptively_ named `backward-kill-word'. You, as the programmer, +should bind the functions you write to descriptive names as well. +Readline provides a function for doing that: + + - Function: int rl_add_defun (const char *name, rl_command_func_t + *function, int key) + Add NAME to the list of named functions. Make FUNCTION be the + function that gets called. If KEY is not -1, then bind it to + FUNCTION using `rl_bind_key()'. + + Using this function alone is sufficient for most applications. It is +the recommended way to add a few functions to the default functions that +Readline has built in. If you need to do something other than adding a +function to Readline, you may need to use the underlying functions +described below. + + +File: readline.info, Node: Keymaps, Next: Binding Keys, Prev: Function Naming, Up: Readline Convenience Functions + +Selecting a Keymap +------------------ + + Key bindings take place on a "keymap". The keymap is the +association between the keys that the user types and the functions that +get run. You can make your own keymaps, copy existing keymaps, and tell +Readline which keymap to use. + + - Function: Keymap rl_make_bare_keymap (void) + Returns a new, empty keymap. The space for the keymap is + allocated with `malloc()'; the caller should free it by calling + `rl_discard_keymap()' when done. + + - Function: Keymap rl_copy_keymap (Keymap map) + Return a new keymap which is a copy of MAP. + + - Function: Keymap rl_make_keymap (void) + Return a new keymap with the printing characters bound to + rl_insert, the lowercase Meta characters bound to run their + equivalents, and the Meta digits bound to produce numeric + arguments. + + - Function: void rl_discard_keymap (Keymap keymap) + Free the storage associated with KEYMAP. + + Readline has several internal keymaps. These functions allow you to +change which keymap is active. + + - Function: Keymap rl_get_keymap (void) + Returns the currently active keymap. + + - Function: void rl_set_keymap (Keymap keymap) + Makes KEYMAP the currently active keymap. + + - Function: Keymap rl_get_keymap_by_name (const char *name) + Return the keymap matching NAME. NAME is one which would be + supplied in a `set keymap' inputrc line (*note Readline Init + File::). + + - Function: char * rl_get_keymap_name (Keymap keymap) + Return the name matching KEYMAP. NAME is one which would be + supplied in a `set keymap' inputrc line (*note Readline Init + File::). + + +File: readline.info, Node: Binding Keys, Next: Associating Function Names and Bindings, Prev: Keymaps, Up: Readline Convenience Functions + +Binding Keys +------------ + + Key sequences are associate with functions through the keymap. +Readline has several internal keymaps: `emacs_standard_keymap', +`emacs_meta_keymap', `emacs_ctlx_keymap', `vi_movement_keymap', and +`vi_insertion_keymap'. `emacs_standard_keymap' is the default, and the +examples in this manual assume that. + + Since `readline()' installs a set of default key bindings the first +time it is called, there is always the danger that a custom binding +installed before the first call to `readline()' will be overridden. An +alternate mechanism is to install custom key bindings in an +initialization function assigned to the `rl_startup_hook' variable +(*note Readline Variables::). + + These functions manage key bindings. + + - Function: int rl_bind_key (int key, rl_command_func_t *function) + Binds KEY to FUNCTION in the currently active keymap. Returns + non-zero in the case of an invalid KEY. + + - Function: int rl_bind_key_in_map (int key, rl_command_func_t + *function, Keymap map) + Bind KEY to FUNCTION in MAP. Returns non-zero in the case of an + invalid KEY. + + - Function: int rl_unbind_key (int key) + Bind KEY to the null function in the currently active keymap. + Returns non-zero in case of error. + + - Function: int rl_unbind_key_in_map (int key, Keymap map) + Bind KEY to the null function in MAP. Returns non-zero in case of + error. + + - Function: int rl_unbind_function_in_map (rl_command_func_t + *function, Keymap map) + Unbind all keys that execute FUNCTION in MAP. + + - Function: int rl_unbind_command_in_map (const char *command, Keymap + map) + Unbind all keys that are bound to COMMAND in MAP. + + - Function: int rl_set_key (const char *keyseq, rl_command_func_t + *function, Keymap map) + Bind the key sequence represented by the string KEYSEQ to the + function FUNCTION. This makes new keymaps as necessary. The + initial keymap in which to do bindings is MAP. + + - Function: int rl_generic_bind (int type, const char *keyseq, char + *data, Keymap map) + Bind the key sequence represented by the string KEYSEQ to the + arbitrary pointer DATA. TYPE says what kind of data is pointed to + by DATA; this can be a function (`ISFUNC'), a macro (`ISMACR'), or + a keymap (`ISKMAP'). This makes new keymaps as necessary. The + initial keymap in which to do bindings is MAP. + + - Function: int rl_parse_and_bind (char *line) + Parse LINE as if it had been read from the `inputrc' file and + perform any key bindings and variable assignments found (*note + Readline Init File::). + + - Function: int rl_read_init_file (const char *filename) + Read keybindings and variable assignments from FILENAME (*note + Readline Init File::). + + +File: readline.info, Node: Associating Function Names and Bindings, Next: Allowing Undoing, Prev: Binding Keys, Up: Readline Convenience Functions + +Associating Function Names and Bindings +--------------------------------------- + + These functions allow you to find out what keys invoke named +functions and the functions invoked by a particular key sequence. You +may also associate a new function name with an arbitrary function. + + - Function: rl_command_func_t * rl_named_function (const char *name) + Return the function with name NAME. + + - Function: rl_command_func_t * rl_function_of_keyseq (const char + *keyseq, Keymap map, int *type) + Return the function invoked by KEYSEQ in keymap MAP. If MAP is + `NULL', the current keymap is used. If TYPE is not `NULL', the + type of the object is returned in the `int' variable it points to + (one of `ISFUNC', `ISKMAP', or `ISMACR'). + + - Function: char ** rl_invoking_keyseqs (rl_command_func_t *function) + Return an array of strings representing the key sequences used to + invoke FUNCTION in the current keymap. + + - Function: char ** rl_invoking_keyseqs_in_map (rl_command_func_t + *function, Keymap map) + Return an array of strings representing the key sequences used to + invoke FUNCTION in the keymap MAP. + + - Function: void rl_function_dumper (int readable) + Print the readline function names and the key sequences currently + bound to them to `rl_outstream'. If READABLE is non-zero, the + list is formatted in such a way that it can be made part of an + `inputrc' file and re-read. + + - Function: void rl_list_funmap_names (void) + Print the names of all bindable Readline functions to + `rl_outstream'. + + - Function: const char ** rl_funmap_names (void) + Return a NULL terminated array of known function names. The array + is sorted. The array itself is allocated, but not the strings + inside. You should `free()' the array when you are done, but not + the pointers. + + - Function: int rl_add_funmap_entry (const char *name, + rl_command_func_t *function) + Add NAME to the list of bindable Readline command names, and make + FUNCTION the function to be called when NAME is invoked. + + +File: readline.info, Node: Allowing Undoing, Next: Redisplay, Prev: Associating Function Names and Bindings, Up: Readline Convenience Functions + +Allowing Undoing +---------------- + + Supporting the undo command is a painless thing, and makes your +functions much more useful. It is certainly easy to try something if +you know you can undo it. + + If your function simply inserts text once, or deletes text once, and +uses `rl_insert_text()' or `rl_delete_text()' to do it, then undoing is +already done for you automatically. + + If you do multiple insertions or multiple deletions, or any +combination of these operations, you should group them together into +one operation. This is done with `rl_begin_undo_group()' and +`rl_end_undo_group()'. + + The types of events that can be undone are: + + enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; + + Notice that `UNDO_DELETE' means to insert some text, and +`UNDO_INSERT' means to delete some text. That is, the undo code tells +what to undo, not how to undo it. `UNDO_BEGIN' and `UNDO_END' are tags +added by `rl_begin_undo_group()' and `rl_end_undo_group()'. + + - Function: int rl_begin_undo_group (void) + Begins saving undo information in a group construct. The undo + information usually comes from calls to `rl_insert_text()' and + `rl_delete_text()', but could be the result of calls to + `rl_add_undo()'. + + - Function: int rl_end_undo_group (void) + Closes the current undo group started with `rl_begin_undo_group + ()'. There should be one call to `rl_end_undo_group()' for each + call to `rl_begin_undo_group()'. + + - Function: void rl_add_undo (enum undo_code what, int start, int end, + char *text) + Remember how to undo an event (according to WHAT). The affected + text runs from START to END, and encompasses TEXT. + + - Function: void rl_free_undo_list (void) + Free the existing undo list. + + - Function: int rl_do_undo (void) + Undo the first thing on the undo list. Returns `0' if there was + nothing to undo, non-zero if something was undone. + + Finally, if you neither insert nor delete text, but directly modify +the existing text (e.g., change its case), call `rl_modifying()' once, +just before you modify the text. You must supply the indices of the +text range that you are going to modify. + + - Function: int rl_modifying (int start, int end) + Tell Readline to save the text between START and END as a single + undo unit. It is assumed that you will subsequently modify that + text. + + +File: readline.info, Node: Redisplay, Next: Modifying Text, Prev: Allowing Undoing, Up: Readline Convenience Functions + +Redisplay +--------- + + - Function: void rl_redisplay (void) + Change what's displayed on the screen to reflect the current + contents of `rl_line_buffer'. + + - Function: int rl_forced_update_display (void) + Force the line to be updated and redisplayed, whether or not + Readline thinks the screen display is correct. + + - Function: int rl_on_new_line (void) + Tell the update functions that we have moved onto a new (empty) + line, usually after ouputting a newline. + + - Function: int rl_on_new_line_with_prompt (void) + Tell the update functions that we have moved onto a new line, with + RL_PROMPT already displayed. This could be used by applications + that want to output the prompt string themselves, but still need + Readline to know the prompt string length for redisplay. It + should be used after setting RL_ALREADY_PROMPTED. + + - Function: int rl_reset_line_state (void) + Reset the display state to a clean state and redisplay the current + line starting on a new line. + + - Function: int rl_crlf (void) + Move the cursor to the start of the next screen line. + + - Function: int rl_show_char (int c) + Display character C on `rl_outstream'. If Readline has not been + set to display meta characters directly, this will convert meta + characters to a meta-prefixed key sequence. This is intended for + use by applications which wish to do their own redisplay. + + - Function: int rl_message (const char *, ...) + The arguments are a format string as would be supplied to `printf', + possibly containing conversion specifications such as `%d', and + any additional arguments necessary to satisfy the conversion + specifications. The resulting string is displayed in the "echo + area". The echo area is also used to display numeric arguments + and search strings. + + - Function: int rl_clear_message (void) + Clear the message in the echo area. + + - Function: void rl_save_prompt (void) + Save the local Readline prompt display state in preparation for + displaying a new message in the message area with `rl_message()'. + + - Function: void rl_restore_prompt (void) + Restore the local Readline prompt display state saved by the most + recent call to `rl_save_prompt'. + + - Function: int rl_expand_prompt (char *prompt) + Expand any special character sequences in PROMPT and set up the + local Readline prompt redisplay variables. This function is + called by `readline()'. It may also be called to expand the + primary prompt if the `rl_on_new_line_with_prompt()' function or + `rl_already_prompted' variable is used. It returns the number of + visible characters on the last line of the (possibly multi-line) + prompt. + + - Function: int rl_set_prompt (const char *prompt) + Make Readline use PROMPT for subsequent redisplay. This calls + `rl_expand_prompt()' to expand the prompt and sets `rl_prompt' to + the result. + + +File: readline.info, Node: Modifying Text, Next: Character Input, Prev: Redisplay, Up: Readline Convenience Functions + +Modifying Text +-------------- + + - Function: int rl_insert_text (const char *text) + Insert TEXT into the line at the current cursor position. + + - Function: int rl_delete_text (int start, int end) + Delete the text between START and END in the current line. + + - Function: char * rl_copy_text (int start, int end) + Return a copy of the text between START and END in the current + line. + + - Function: int rl_kill_text (int start, int end) + Copy the text between START and END in the current line to the + kill ring, appending or prepending to the last kill if the last + command was a kill command. The text is deleted. If START is + less than END, the text is appended, otherwise prepended. If the + last command was not a kill, a new kill ring slot is used. + + - Function: int rl_push_macro_input (char *macro) + Cause MACRO to be inserted into the line, as if it had been invoked + by a key bound to a macro. Not especially useful; use + `rl_insert_text()' instead. + + +File: readline.info, Node: Character Input, Next: Terminal Management, Prev: Modifying Text, Up: Readline Convenience Functions + +Character Input +--------------- + + - Function: int rl_read_key (void) + Return the next character available from Readline's current input + stream. This handles input inserted into the input stream via + RL_PENDING_INPUT (*note Readline Variables::) and + `rl_stuff_char()', macros, and characters read from the keyboard. + While waiting for input, this function will call any function + assigned to the `rl_event_hook' variable. + + - Function: int rl_getc (FILE *stream) + Return the next character available from STREAM, which is assumed + to be the keyboard. + + - Function: int rl_stuff_char (int c) + Insert C into the Readline input stream. It will be "read" before + Readline attempts to read characters from the terminal with + `rl_read_key()'. + + - Function: int rl_execute_next (int c) + Make C be the next command to be executed when `rl_read_key()' is + called. This sets RL_PENDING_INPUT. + + - Function: int rl_clear_pending_input (void) + Unset RL_PENDING_INPUT, effectively negating the effect of any + previous call to `rl_execute_next()'. This works only if the + pending input has not already been read with `rl_read_key()'. + + - Function: int rl_set_keyboard_input_timeout (int u) + While waiting for keyboard input in `rl_read_key()', Readline will + wait for U microseconds for input before calling any function + assigned to `rl_event_hook'. The default waiting period is + one-tenth of a second. Returns the old timeout value. + + +File: readline.info, Node: Terminal Management, Next: Utility Functions, Prev: Character Input, Up: Readline Convenience Functions + +Terminal Management +------------------- + + - Function: void rl_prep_terminal (int meta_flag) + Modify the terminal settings for Readline's use, so `readline()' + can read a single character at a time from the keyboard. The + META_FLAG argument should be non-zero if Readline should read + eight-bit input. + + - Function: void rl_deprep_terminal (void) + Undo the effects of `rl_prep_terminal()', leaving the terminal in + the state in which it was before the most recent call to + `rl_prep_terminal()'. + + - Function: void rl_tty_set_default_bindings (Keymap kmap) + Read the operating system's terminal editing characters (as would + be displayed by `stty') to their Readline equivalents. The + bindings are performed in KMAP. + + - Function: int rl_reset_terminal (const char *terminal_name) + Reinitialize Readline's idea of the terminal settings using + TERMINAL_NAME as the terminal type (e.g., `vt100'). If + TERMINAL_NAME is `NULL', the value of the `TERM' environment + variable is used. + + +File: readline.info, Node: Utility Functions, Next: Miscellaneous Functions, Prev: Terminal Management, Up: Readline Convenience Functions + +Utility Functions +----------------- + + - Function: int rl_extend_line_buffer (int len) + Ensure that `rl_line_buffer' has enough space to hold LEN + characters, possibly reallocating it if necessary. + + - Function: int rl_initialize (void) + Initialize or re-initialize Readline's internal state. It's not + strictly necessary to call this; `readline()' calls it before + reading any input. + + - Function: int rl_ding (void) + Ring the terminal bell, obeying the setting of `bell-style'. + + - Function: int rl_alphabetic (int c) + Return 1 if C is an alphabetic character. + + - Function: void rl_display_match_list (char **matches, int len, int + max) + A convenience function for displaying a list of strings in + columnar format on Readline's output stream. `matches' is the list + of strings, in argv format, such as a list of completion matches. + `len' is the number of strings in `matches', and `max' is the + length of the longest string in `matches'. This function uses the + setting of `print-completions-horizontally' to select how the + matches are displayed (*note Readline Init File Syntax::). + + The following are implemented as macros, defined in `chardefs.h'. +Applications should refrain from using them. + + - Function: int _rl_uppercase_p (int c) + Return 1 if C is an uppercase alphabetic character. + + - Function: int _rl_lowercase_p (int c) + Return 1 if C is a lowercase alphabetic character. + + - Function: int _rl_digit_p (int c) + Return 1 if C is a numeric character. + + - Function: int _rl_to_upper (int c) + If C is a lowercase alphabetic character, return the corresponding + uppercase character. + + - Function: int _rl_to_lower (int c) + If C is an uppercase alphabetic character, return the corresponding + lowercase character. + + - Function: int _rl_digit_value (int c) + If C is a number, return the value it represents. + + +File: readline.info, Node: Miscellaneous Functions, Next: Alternate Interface, Prev: Utility Functions, Up: Readline Convenience Functions + +Miscellaneous Functions +----------------------- + + - Function: int rl_macro_bind (const char *keyseq, const char *macro, + Keymap map) + Bind the key sequence KEYSEQ to invoke the macro MACRO. The + binding is performed in MAP. When KEYSEQ is invoked, the MACRO + will be inserted into the line. This function is deprecated; use + `rl_generic_bind()' instead. + + - Function: void rl_macro_dumper (int readable) + Print the key sequences bound to macros and their values, using + the current keymap, to `rl_outstream'. If READABLE is non-zero, + the list is formatted in such a way that it can be made part of an + `inputrc' file and re-read. + + - Function: int rl_variable_bind (const char *variable, const char + *value) + Make the Readline variable VARIABLE have VALUE. This behaves as + if the readline command `set VARIABLE VALUE' had been executed in + an `inputrc' file (*note Readline Init File Syntax::). + + - Function: void rl_variable_dumper (int readable) + Print the readline variable names and their current values to + `rl_outstream'. If READABLE is non-zero, the list is formatted in + such a way that it can be made part of an `inputrc' file and + re-read. + + - Function: int rl_set_paren_blink_timeout (int u) + Set the time interval (in microseconds) that Readline waits when + showing a balancing character when `blink-matching-paren' has been + enabled. + + +File: readline.info, Node: Alternate Interface, Next: A Readline Example, Prev: Miscellaneous Functions, Up: Readline Convenience Functions + +Alternate Interface +------------------- + + An alternate interface is available to plain `readline()'. Some +applications need to interleave keyboard I/O with file, device, or +window system I/O, typically by using a main loop to `select()' on +various file descriptors. To accomodate this need, readline can also +be invoked as a `callback' function from an event loop. There are +functions available to make this easy. + + - Function: void rl_callback_handler_install (const char *prompt, + rl_vcpfunc_t *lhandler) + Set up the terminal for readline I/O and display the initial + expanded value of PROMPT. Save the value of LHANDLER to use as a + function to call when a complete line of input has been entered. + The function takes the text of the line as an argument. + + - Function: void rl_callback_read_char (void) + Whenever an application determines that keyboard input is + available, it should call `rl_callback_read_char()', which will + read the next character from the current input source. If that + character completes the line, `rl_callback_read_char' will invoke + the LHANDLER function saved by `rl_callback_handler_install' to + process the line. `EOF' is indicated by calling LHANDLER with a + `NULL' line. + + - Function: void rl_callback_handler_remove (void) + Restore the terminal to its initial state and remove the line + handler. This may be called from within a callback as well as + independently. + + +File: readline.info, Node: A Readline Example, Prev: Alternate Interface, Up: Readline Convenience Functions + +A Readline Example +------------------ + + Here is a function which changes lowercase characters to their +uppercase equivalents, and uppercase characters to lowercase. If this +function was bound to `M-c', then typing `M-c' would change the case of +the character under point. Typing `M-1 0 M-c' would change the case of +the following 10 characters, leaving the cursor on the last character +changed. + + /* Invert the case of the COUNT following characters. */ + int + invert_case_line (count, key) + int count, key; + { + register int start, end, i; + + start = rl_point; + + if (rl_point >= rl_end) + return (0); + + if (count < 0) + { + direction = -1; + count = -count; + } + else + direction = 1; + + /* Find the end of the range to modify. */ + end = start + (count * direction); + + /* Force it to be within range. */ + if (end > rl_end) + end = rl_end; + else if (end < 0) + end = 0; + + if (start == end) + return (0); + + if (start > end) + { + int temp = start; + start = end; + end = temp; + } + + /* Tell readline that we are modifying the line, so it will save + the undo information. */ + rl_modifying (start, end); + + for (i = start; i != end; i++) + { + if (_rl_uppercase_p (rl_line_buffer[i])) + rl_line_buffer[i] = _rl_to_lower (rl_line_buffer[i]); + else if (_rl_lowercase_p (rl_line_buffer[i])) + rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]); + } + /* Move point to on top of the last character changed. */ + rl_point = (direction == 1) ? end - 1 : start; + return (0); + } + + +File: readline.info, Node: Readline Signal Handling, Next: Custom Completers, Prev: Readline Convenience Functions, Up: Programming with GNU Readline + +Readline Signal Handling +======================== + + Signals are asynchronous events sent to a process by the Unix kernel, +sometimes on behalf of another process. They are intended to indicate +exceptional events, like a user pressing the interrupt key on his +terminal, or a network connection being broken. There is a class of +signals that can be sent to the process currently reading input from +the keyboard. Since Readline changes the terminal attributes when it +is called, it needs to perform special processing when such a signal is +received in order to restore the terminal to a sane state, or provide +application writers with functions to do so manually. + + Readline contains an internal signal handler that is installed for a +number of signals (`SIGINT', `SIGQUIT', `SIGTERM', `SIGALRM', +`SIGTSTP', `SIGTTIN', and `SIGTTOU'). When one of these signals is +received, the signal handler will reset the terminal attributes to +those that were in effect before `readline()' was called, reset the +signal handling to what it was before `readline()' was called, and +resend the signal to the calling application. If and when the calling +application's signal handler returns, Readline will reinitialize the +terminal and continue to accept input. When a `SIGINT' is received, +the Readline signal handler performs some additional work, which will +cause any partially-entered line to be aborted (see the description of +`rl_free_line_state()' below). + + There is an additional Readline signal handler, for `SIGWINCH', which +the kernel sends to a process whenever the terminal's size changes (for +example, if a user resizes an `xterm'). The Readline `SIGWINCH' +handler updates Readline's internal screen size information, and then +calls any `SIGWINCH' signal handler the calling application has +installed. Readline calls the application's `SIGWINCH' signal handler +without resetting the terminal to its original state. If the +application's signal handler does more than update its idea of the +terminal size and return (for example, a `longjmp' back to a main +processing loop), it _must_ call `rl_cleanup_after_signal()' (described +below), to restore the terminal state. + + Readline provides two variables that allow application writers to +control whether or not it will catch certain signals and act on them +when they are received. It is important that applications change the +values of these variables only when calling `readline()', not in a +signal handler, so Readline's internal signal state is not corrupted. + + - Variable: int rl_catch_signals + If this variable is non-zero, Readline will install signal + handlers for `SIGINT', `SIGQUIT', `SIGTERM', `SIGALRM', `SIGTSTP', + `SIGTTIN', and `SIGTTOU'. + + The default value of `rl_catch_signals' is 1. + + - Variable: int rl_catch_sigwinch + If this variable is non-zero, Readline will install a signal + handler for `SIGWINCH'. + + The default value of `rl_catch_sigwinch' is 1. + + If an application does not wish to have Readline catch any signals, +or to handle signals other than those Readline catches (`SIGHUP', for +example), Readline provides convenience functions to do the necessary +terminal and internal state cleanup upon receipt of a signal. + + - Function: void rl_cleanup_after_signal (void) + This function will reset the state of the terminal to what it was + before `readline()' was called, and remove the Readline signal + handlers for all signals, depending on the values of + `rl_catch_signals' and `rl_catch_sigwinch'. + + - Function: void rl_free_line_state (void) + This will free any partial state associated with the current input + line (undo information, any partial history entry, any + partially-entered keyboard macro, and any partially-entered + numeric argument). This should be called before + `rl_cleanup_after_signal()'. The Readline signal handler for + `SIGINT' calls this to abort the current input line. + + - Function: void rl_reset_after_signal (void) + This will reinitialize the terminal and reinstall any Readline + signal handlers, depending on the values of `rl_catch_signals' and + `rl_catch_sigwinch'. + + If an application does not wish Readline to catch `SIGWINCH', it may +call `rl_resize_terminal()' or `rl_set_screen_size()' to force Readline +to update its idea of the terminal size when a `SIGWINCH' is received. + + - Function: void rl_resize_terminal (void) + Update Readline's internal screen size by reading values from the + kernel. + + - Function: void rl_set_screen_size (int rows, int cols) + Set Readline's idea of the terminal size to ROWS rows and COLS + columns. + + If an application does not want to install a `SIGWINCH' handler, but +is still interested in the screen dimensions, Readline's idea of the +screen size may be queried. + + - Function: void rl_get_screen_size (int *rows, int *cols) + Return Readline's idea of the terminal's size in the variables + pointed to by the arguments. + + The following functions install and remove Readline's signal +handlers. + + - Function: int rl_set_signals (void) + Install Readline's signal handler for `SIGINT', `SIGQUIT', + `SIGTERM', `SIGALRM', `SIGTSTP', `SIGTTIN', `SIGTTOU', and + `SIGWINCH', depending on the values of `rl_catch_signals' and + `rl_catch_sigwinch'. + + - Function: int rl_clear_signals (void) + Remove all of the Readline signal handlers installed by + `rl_set_signals()'. + + +File: readline.info, Node: Custom Completers, Prev: Readline Signal Handling, Up: Programming with GNU Readline + +Custom Completers +================= + + Typically, a program that reads commands from the user has a way of +disambiguating commands and data. If your program is one of these, then +it can provide completion for commands, data, or both. The following +sections describe how your program and Readline cooperate to provide +this service. + +* Menu: + +* How Completing Works:: The logic used to do completion. +* Completion Functions:: Functions provided by Readline. +* Completion Variables:: Variables which control completion. +* A Short Completion Example:: An example of writing completer subroutines. + + +File: readline.info, Node: How Completing Works, Next: Completion Functions, Up: Custom Completers + +How Completing Works +-------------------- + + In order to complete some text, the full list of possible completions +must be available. That is, it is not possible to accurately expand a +partial word without knowing all of the possible words which make sense +in that context. The Readline library provides the user interface to +completion, and two of the most common completion functions: filename +and username. For completing other types of text, you must write your +own completion function. This section describes exactly what such +functions must do, and provides an example. + + There are three major functions used to perform completion: + + 1. The user-interface function `rl_complete()'. This function is + called with the same arguments as other bindable Readline + functions: COUNT and INVOKING_KEY. It isolates the word to be + completed and calls `rl_completion_matches()' to generate a list + of possible completions. It then either lists the possible + completions, inserts the possible completions, or actually + performs the completion, depending on which behavior is desired. + + 2. The internal function `rl_completion_matches()' uses an + application-supplied "generator" function to generate the list of + possible matches, and then returns the array of these matches. + The caller should place the address of its generator function in + `rl_completion_entry_function'. + + 3. The generator function is called repeatedly from + `rl_completion_matches()', returning a string each time. The + arguments to the generator function are TEXT and STATE. TEXT is + the partial word to be completed. STATE is zero the first time + the function is called, allowing the generator to perform any + necessary initialization, and a positive non-zero integer for each + subsequent call. The generator function returns `(char *)NULL' to + inform `rl_completion_matches()' that there are no more + possibilities left. Usually the generator function computes the + list of possible completions when STATE is zero, and returns them + one at a time on subsequent calls. Each string the generator + function returns as a match must be allocated with `malloc()'; + Readline frees the strings when it has finished with them. + + + - Function: int rl_complete (int ignore, int invoking_key) + Complete the word at or before point. You have supplied the + function that does the initial simple matching selection algorithm + (see `rl_completion_matches()'). The default is to do filename + completion. + + - Variable: rl_compentry_func_t * rl_completion_entry_function + This is a pointer to the generator function for + `rl_completion_matches()'. If the value of + `rl_completion_entry_function' is `NULL' then the default filename + generator function, `rl_filename_completion_function()', is used. + + +File: readline.info, Node: Completion Functions, Next: Completion Variables, Prev: How Completing Works, Up: Custom Completers + +Completion Functions +-------------------- + + Here is the complete list of callable completion functions present in +Readline. + + - Function: int rl_complete_internal (int what_to_do) + Complete the word at or before point. WHAT_TO_DO says what to do + with the completion. A value of `?' means list the possible + completions. `TAB' means do standard completion. `*' means + insert all of the possible completions. `!' means to display all + of the possible completions, if there is more than one, as well as + performing partial completion. + + - Function: int rl_complete (int ignore, int invoking_key) + Complete the word at or before point. You have supplied the + function that does the initial simple matching selection algorithm + (see `rl_completion_matches()' and `rl_completion_entry_function'). + The default is to do filename completion. This calls + `rl_complete_internal()' with an argument depending on + INVOKING_KEY. + + - Function: int rl_possible_completions (int count, int invoking_key) + List the possible completions. See description of `rl_complete + ()'. This calls `rl_complete_internal()' with an argument of `?'. + + - Function: int rl_insert_completions (int count, int invoking_key) + Insert the list of possible completions into the line, deleting the + partially-completed word. See description of `rl_complete()'. + This calls `rl_complete_internal()' with an argument of `*'. + + - Function: char ** rl_completion_matches (const char *text, + rl_compentry_func_t *entry_func) + Returns an array of strings which is a list of completions for + TEXT. If there are no completions, returns `NULL'. The first + entry in the returned array is the substitution for TEXT. The + remaining entries are the possible completions. The array is + terminated with a `NULL' pointer. + + ENTRY_FUNC is a function of two args, and returns a `char *'. The + first argument is TEXT. The second is a state argument; it is + zero on the first call, and non-zero on subsequent calls. + ENTRY_FUNC returns a `NULL' pointer to the caller when there are + no more matches. + + - Function: char * rl_filename_completion_function (const char *text, + int state) + A generator function for filename completion in the general case. + TEXT is a partial filename. The Bash source is a useful reference + for writing custom completion functions (the Bash completion + functions call this and other Readline functions). + + - Function: char * rl_username_completion_function (const char *text, + int state) + A completion generator for usernames. TEXT contains a partial + username preceded by a random character (usually `~'). As with all + completion generators, STATE is zero on the first call and non-zero + for subsequent calls. + + +File: readline.info, Node: Completion Variables, Next: A Short Completion Example, Prev: Completion Functions, Up: Custom Completers + +Completion Variables +-------------------- + + - Variable: rl_compentry_func_t * rl_completion_entry_function + A pointer to the generator function for `rl_completion_matches()'. + `NULL' means to use `rl_filename_completion_function()', the + default filename completer. + + - Variable: rl_completion_func_t * rl_attempted_completion_function + A pointer to an alternative function to create matches. The + function is called with TEXT, START, and END. START and END are + indices in `rl_line_buffer' defining the boundaries of TEXT, which + is a character string. If this function exists and returns + `NULL', or if this variable is set to `NULL', then `rl_complete()' + will call the value of `rl_completion_entry_function' to generate + matches, otherwise the array of strings returned will be used. If + this function sets the `rl_attempted_completion_over' variable to + a non-zero value, Readline will not perform its default completion + even if this function returns no matches. + + - Variable: rl_quote_func_t * rl_filename_quoting_function + A pointer to a function that will quote a filename in an + application-specific fashion. This is called if filename + completion is being attempted and one of the characters in + `rl_filename_quote_characters' appears in a completed filename. + The function is called with TEXT, MATCH_TYPE, and QUOTE_POINTER. + The TEXT is the filename to be quoted. The MATCH_TYPE is either + `SINGLE_MATCH', if there is only one completion match, or + `MULT_MATCH'. Some functions use this to decide whether or not to + insert a closing quote character. The QUOTE_POINTER is a pointer + to any opening quote character the user typed. Some functions + choose to reset this character. + + - Variable: rl_dequote_func_t * rl_filename_dequoting_function + A pointer to a function that will remove application-specific + quoting characters from a filename before completion is attempted, + so those characters do not interfere with matching the text + against names in the filesystem. It is called with TEXT, the text + of the word to be dequoted, and QUOTE_CHAR, which is the quoting + character that delimits the filename (usually `'' or `"'). If + QUOTE_CHAR is zero, the filename was not in an embedded string. + + - Variable: rl_linebuf_func_t * rl_char_is_quoted_p + A pointer to a function to call that determines whether or not a + specific character in the line buffer is quoted, according to + whatever quoting mechanism the program calling Readline uses. The + function is called with two arguments: TEXT, the text of the line, + and INDEX, the index of the character in the line. It is used to + decide whether a character found in + `rl_completer_word_break_characters' should be used to break words + for the completer. + + - Variable: int rl_completion_query_items + Up to this many items will be displayed in response to a + possible-completions call. After that, we ask the user if she is + sure she wants to see them all. The default value is 100. + + - Variable: const char * rl_basic_word_break_characters + The basic list of characters that signal a break between words for + the completer routine. The default value of this variable is the + characters which break words for completion in Bash: `" + \t\n\"\\'`@$><=;|&{("'. + + - Variable: const char * rl_basic_quote_characters + A list of quote characters which can cause a word break. + + - Variable: const char * rl_completer_word_break_characters + The list of characters that signal a break between words for + `rl_complete_internal()'. The default list is the value of + `rl_basic_word_break_characters'. + + - Variable: const char * rl_completer_quote_characters + A list of characters which can be used to quote a substring of the + line. Completion occurs on the entire substring, and within the + substring `rl_completer_word_break_characters' are treated as any + other character, unless they also appear within this list. + + - Variable: const char * rl_filename_quote_characters + A list of characters that cause a filename to be quoted by the + completer when they appear in a completed filename. The default + is the null string. + + - Variable: const char * rl_special_prefixes + The list of characters that are word break characters, but should + be left in TEXT when it is passed to the completion function. + Programs can use this to help determine what kind of completing to + do. For instance, Bash sets this variable to "$@" so that it can + complete shell variables and hostnames. + + - Variable: int rl_completion_append_character + When a single completion alternative matches at the end of the + command line, this character is appended to the inserted + completion text. The default is a space character (` '). Setting + this to the null character (`\0') prevents anything being appended + automatically. This can be changed in custom completion functions + to provide the "most sensible word separator character" according + to an application-specific command line syntax specification. + + - Variable: int rl_ignore_completion_duplicates + If non-zero, then duplicates in the matches are removed. The + default is 1. + + - Variable: int rl_filename_completion_desired + Non-zero means that the results of the matches are to be treated as + filenames. This is _always_ zero on entry, and can only be changed + within a completion entry generator function. If it is set to a + non-zero value, directory names have a slash appended and Readline + attempts to quote completed filenames if they contain any + characters in `rl_filename_quote_characters' and + `rl_filename_quoting_desired' is set to a non-zero value. + + - Variable: int rl_filename_quoting_desired + Non-zero means that the results of the matches are to be quoted + using double quotes (or an application-specific quoting mechanism) + if the completed filename contains any characters in + `rl_filename_quote_chars'. This is _always_ non-zero on entry, + and can only be changed within a completion entry generator + function. The quoting is effected via a call to the function + pointed to by `rl_filename_quoting_function'. + + - Variable: int rl_attempted_completion_over + If an application-specific completion function assigned to + `rl_attempted_completion_function' sets this variable to a non-zero + value, Readline will not perform its default filename completion + even if the application's completion function returns no matches. + It should be set only by an application's completion function. + + - Variable: int rl_completion_type + Set to a character describing the type of completion Readline is + currently attempting; see the description of + `rl_complete_internal()' (*note Completion Functions::) for the + list of characters. + + - Variable: int rl_inhibit_completion + If this variable is non-zero, completion is inhibited. The + completion character will be inserted as any other bound to + `self-insert'. + + - Variable: rl_compignore_func_t * rl_ignore_some_completions_function + This function, if defined, is called by the completer when real + filename completion is done, after all the matching names have + been generated. It is passed a `NULL' terminated array of matches. + The first element (`matches[0]') is the maximal substring common + to all matches. This function can re-arrange the list of matches + as required, but each element deleted from the array must be freed. + + - Variable: rl_icppfunc_t * rl_directory_completion_hook + This function, if defined, is allowed to modify the directory + portion of filenames Readline completes. It is called with the + address of a string (the current directory name) as an argument, + and may modify that string. If the string is replaced with a new + string, the old value should be freed. Any modified directory + name should have a trailing slash. The modified value will be + displayed as part of the completion, replacing the directory + portion of the pathname the user typed. It returns an integer + that should be non-zero if the function modifies its directory + argument. It could be used to expand symbolic links or shell + variables in pathnames. + + - Variable: rl_compdisp_func_t * rl_completion_display_matches_hook + If non-zero, then this is the address of a function to call when + completing a word would normally display the list of possible + matches. This function is called in lieu of Readline displaying + the list. It takes three arguments: (`char **'MATCHES, `int' + NUM_MATCHES, `int' MAX_LENGTH) where MATCHES is the array of + matching strings, NUM_MATCHES is the number of strings in that + array, and MAX_LENGTH is the length of the longest string in that + array. Readline provides a convenience function, + `rl_display_match_list', that takes care of doing the display to + Readline's output stream. That function may be called from this + hook. + + +File: readline.info, Node: A Short Completion Example, Prev: Completion Variables, Up: Custom Completers + +A Short Completion Example +-------------------------- + + Here is a small application demonstrating the use of the GNU Readline +library. It is called `fileman', and the source code resides in +`examples/fileman.c'. This sample application provides completion of +command names, line editing features, and access to the history list. + + /* fileman.c -- A tiny application which demonstrates how to use the + GNU Readline library. This application interactively allows users + to manipulate files and their modes. */ + + #include <stdio.h> + #include <sys/types.h> + #include <sys/file.h> + #include <sys/stat.h> + #include <sys/errno.h> + + #include <readline/readline.h> + #include <readline/history.h> + + extern char *xmalloc (); + + /* The names of functions that actually do the manipulation. */ + int com_list __P((char *)); + int com_view __P((char *)); + int com_rename __P((char *)); + int com_stat __P((char *)); + int com_pwd __P((char *)); + int com_delete __P((char *)); + int com_help __P((char *)); + int com_cd __P((char *)); + int com_quit __P((char *)); + + /* A structure which contains information on the commands this program + can understand. */ + + typedef struct { + char *name; /* User printable name of the function. */ + rl_icpfunc_t *func; /* Function to call to do the job. */ + char *doc; /* Documentation for this function. */ + } COMMAND; + + COMMAND commands[] = { + { "cd", com_cd, "Change to directory DIR" }, + { "delete", com_delete, "Delete FILE" }, + { "help", com_help, "Display this text" }, + { "?", com_help, "Synonym for `help'" }, + { "list", com_list, "List files in DIR" }, + { "ls", com_list, "Synonym for `list'" }, + { "pwd", com_pwd, "Print the current working directory" }, + { "quit", com_quit, "Quit using Fileman" }, + { "rename", com_rename, "Rename FILE to NEWNAME" }, + { "stat", com_stat, "Print out statistics on FILE" }, + { "view", com_view, "View the contents of FILE" }, + { (char *)NULL, (rl_icpfunc_t *)NULL, (char *)NULL } + }; + + /* Forward declarations. */ + char *stripwhite (); + COMMAND *find_command (); + + /* The name of this program, as taken from argv[0]. */ + char *progname; + + /* When non-zero, this means the user is done using this program. */ + int done; + + char * + dupstr (s) + int s; + { + char *r; + + r = xmalloc (strlen (s) + 1); + strcpy (r, s); + return (r); + } + + main (argc, argv) + int argc; + char **argv; + { + char *line, *s; + + progname = argv[0]; + + initialize_readline (); /* Bind our completer. */ + + /* Loop reading and executing lines until the user quits. */ + for ( ; done == 0; ) + { + line = readline ("FileMan: "); + + if (!line) + break; + + /* Remove leading and trailing whitespace from the line. + Then, if there is anything left, add it to the history list + and execute it. */ + s = stripwhite (line); + + if (*s) + { + add_history (s); + execute_line (s); + } + + free (line); + } + exit (0); + } + + /* Execute a command line. */ + int + execute_line (line) + char *line; + { + register int i; + COMMAND *command; + char *word; + + /* Isolate the command word. */ + i = 0; + while (line[i] && whitespace (line[i])) + i++; + word = line + i; + + while (line[i] && !whitespace (line[i])) + i++; + + if (line[i]) + line[i++] = '\0'; + + command = find_command (word); + + if (!command) + { + fprintf (stderr, "%s: No such command for FileMan.\n", word); + return (-1); + } + + /* Get argument to command, if any. */ + while (whitespace (line[i])) + i++; + + word = line + i; + + /* Call the function. */ + return ((*(command->func)) (word)); + } + + /* Look up NAME as the name of a command, and return a pointer to that + command. Return a NULL pointer if NAME isn't a command name. */ + COMMAND * + find_command (name) + char *name; + { + register int i; + + for (i = 0; commands[i].name; i++) + if (strcmp (name, commands[i].name) == 0) + return (&commands[i]); + + return ((COMMAND *)NULL); + } + + /* Strip whitespace from the start and end of STRING. Return a pointer + into STRING. */ + char * + stripwhite (string) + char *string; + { + register char *s, *t; + + for (s = string; whitespace (*s); s++) + ; + + if (*s == 0) + return (s); + + t = s + strlen (s) - 1; + while (t > s && whitespace (*t)) + t--; + *++t = '\0'; + + return s; + } + + /* **************************************************************** */ + /* */ + /* Interface to Readline Completion */ + /* */ + /* **************************************************************** */ + + char *command_generator __P((const char *, int)); + char **fileman_completion __P((const char *, int, int)); + + /* Tell the GNU Readline library how to complete. We want to try to + complete on command names if this is the first word in the line, or + on filenames if not. */ + initialize_readline () + { + /* Allow conditional parsing of the ~/.inputrc file. */ + rl_readline_name = "FileMan"; + + /* Tell the completer that we want a crack first. */ + rl_attempted_completion_function = fileman_completion; + } + + /* Attempt to complete on the contents of TEXT. START and END + bound the region of rl_line_buffer that contains the word to + complete. TEXT is the word to complete. We can use the entire + contents of rl_line_buffer in case we want to do some simple + parsing. Returnthe array of matches, or NULL if there aren't any. */ + char ** + fileman_completion (text, start, end) + const char *text; + int start, end; + { + char **matches; + + matches = (char **)NULL; + + /* If this word is at the start of the line, then it is a command + to complete. Otherwise it is the name of a file in the current + directory. */ + if (start == 0) + matches = rl_completion_matches (text, command_generator); + + return (matches); + } + + /* Generator function for command completion. STATE lets us + know whether to start from scratch; without any state + (i.e. STATE == 0), then we start at the top of the list. */ + char * + command_generator (text, state) + const char *text; + int state; + { + static int list_index, len; + char *name; + + /* If this is a new word to complete, initialize now. This + includes saving the length of TEXT for efficiency, and + initializing the index variable to 0. */ + if (!state) + { + list_index = 0; + len = strlen (text); + } + + /* Return the next name which partially matches from the + command list. */ + while (name = commands[list_index].name) + { + list_index++; + + if (strncmp (name, text, len) == 0) + return (dupstr(name)); + } + + /* If no names matched, then return NULL. */ + return ((char *)NULL); + } + + /* **************************************************************** */ + /* */ + /* FileMan Commands */ + /* */ + /* **************************************************************** */ + + /* String to pass to system (). This is for the LIST, VIEW and RENAME + commands. */ + static char syscom[1024]; + + /* List the file(s) named in arg. */ + com_list (arg) + char *arg; + { + if (!arg) + arg = ""; + + sprintf (syscom, "ls -FClg %s", arg); + return (system (syscom)); + } + + com_view (arg) + char *arg; + { + if (!valid_argument ("view", arg)) + return 1; + + sprintf (syscom, "more %s", arg); + return (system (syscom)); + } + + com_rename (arg) + char *arg; + { + too_dangerous ("rename"); + return (1); + } + + com_stat (arg) + char *arg; + { + struct stat finfo; + + if (!valid_argument ("stat", arg)) + return (1); + + if (stat (arg, &finfo) == -1) + { + perror (arg); + return (1); + } + + printf ("Statistics for `%s':\n", arg); + + printf ("%s has %d link%s, and is %d byte%s in length.\n", arg, + finfo.st_nlink, + (finfo.st_nlink == 1) ? "" : "s", + finfo.st_size, + (finfo.st_size == 1) ? "" : "s"); + printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime)); + printf (" Last access at: %s", ctime (&finfo.st_atime)); + printf (" Last modified at: %s", ctime (&finfo.st_mtime)); + return (0); + } + + com_delete (arg) + char *arg; + { + too_dangerous ("delete"); + return (1); + } + + /* Print out help for ARG, or for all of the commands if ARG is + not present. */ + com_help (arg) + char *arg; + { + register int i; + int printed = 0; + + for (i = 0; commands[i].name; i++) + { + if (!*arg || (strcmp (arg, commands[i].name) == 0)) + { + printf ("%s\t\t%s.\n", commands[i].name, commands[i].doc); + printed++; + } + } + + if (!printed) + { + printf ("No commands match `%s'. Possibilties are:\n", arg); + + for (i = 0; commands[i].name; i++) + { + /* Print in six columns. */ + if (printed == 6) + { + printed = 0; + printf ("\n"); + } + + printf ("%s\t", commands[i].name); + printed++; + } + + if (printed) + printf ("\n"); + } + return (0); + } + + /* Change to the directory ARG. */ + com_cd (arg) + char *arg; + { + if (chdir (arg) == -1) + { + perror (arg); + return 1; + } + + com_pwd (""); + return (0); + } + + /* Print out the current working directory. */ + com_pwd (ignore) + char *ignore; + { + char dir[1024], *s; + + s = getcwd (dir, sizeof(dir) - 1); + if (s == 0) + { + printf ("Error getting pwd: %s\n", dir); + return 1; + } + + printf ("Current directory is %s\n", dir); + return 0; + } + + /* The user wishes to quit using this program. Just set DONE + non-zero. */ + com_quit (arg) + char *arg; + { + done = 1; + return (0); + } + + /* Function which tells you that you can't do this. */ + too_dangerous (caller) + char *caller; + { + fprintf (stderr, + "%s: Too dangerous for me to distribute. Write it yourself.\n", + caller); + } + + /* Return non-zero if ARG is a valid argument for CALLER, else print + an error message and return zero. */ + int + valid_argument (caller, arg) + char *caller, *arg; + { + if (!arg || !*arg) + { + fprintf (stderr, "%s: Argument required.\n", caller); + return (0); + } + + return (1); + } + + +File: readline.info, Node: Concept Index, Next: Function and Variable Index, Prev: Programming with GNU Readline, Up: Top + +Concept Index +************* + +* Menu: + +* command editing: Readline Bare Essentials. +* editing command lines: Readline Bare Essentials. +* initialization file, readline: Readline Init File. +* interaction, readline: Readline Interaction. +* kill ring: Readline Killing Commands. +* killing text: Readline Killing Commands. +* notation, readline: Readline Bare Essentials. +* readline, function: Basic Behavior. +* variables, readline: Readline Init File Syntax. +* yanking text: Readline Killing Commands. + + +File: readline.info, Node: Function and Variable Index, Prev: Concept Index, Up: Top + +Function and Variable Index +*************************** + +* Menu: + +* _rl_digit_p: Utility Functions. +* _rl_digit_value: Utility Functions. +* _rl_lowercase_p: Utility Functions. +* _rl_to_lower: Utility Functions. +* _rl_to_upper: Utility Functions. +* _rl_uppercase_p: Utility Functions. +* abort (C-g): Miscellaneous Commands. +* accept-line (Newline or Return): Commands For History. +* backward-char (C-b): Commands For Moving. +* backward-delete-char (Rubout): Commands For Text. +* backward-kill-line (C-x Rubout): Commands For Killing. +* backward-kill-word (M-<DEL>): Commands For Killing. +* backward-word (M-b): Commands For Moving. +* beginning-of-history (M-<): Commands For History. +* beginning-of-line (C-a): Commands For Moving. +* bell-style: Readline Init File Syntax. +* call-last-kbd-macro (C-x e): Keyboard Macros. +* capitalize-word (M-c): Commands For Text. +* character-search (C-]): Miscellaneous Commands. +* character-search-backward (M-C-]): Miscellaneous Commands. +* clear-screen (C-l): Commands For Moving. +* comment-begin: Readline Init File Syntax. +* complete (<TAB>): Commands For Completion. +* completion-query-items: Readline Init File Syntax. +* convert-meta: Readline Init File Syntax. +* copy-backward-word (): Commands For Killing. +* copy-forward-word (): Commands For Killing. +* copy-region-as-kill (): Commands For Killing. +* delete-char (C-d): Commands For Text. +* delete-char-or-list (): Commands For Completion. +* delete-horizontal-space (): Commands For Killing. +* digit-argument (M-0, M-1, ... M--): Numeric Arguments. +* disable-completion: Readline Init File Syntax. +* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands. +* downcase-word (M-l): Commands For Text. +* dump-functions (): Miscellaneous Commands. +* dump-macros (): Miscellaneous Commands. +* dump-variables (): Miscellaneous Commands. +* editing-mode: Readline Init File Syntax. +* enable-keypad: Readline Init File Syntax. +* end-kbd-macro (C-x )): Keyboard Macros. +* end-of-history (M->): Commands For History. +* end-of-line (C-e): Commands For Moving. +* exchange-point-and-mark (C-x C-x): Miscellaneous Commands. +* expand-tilde: Readline Init File Syntax. +* forward-backward-delete-char (): Commands For Text. +* forward-char (C-f): Commands For Moving. +* forward-search-history (C-s): Commands For History. +* forward-word (M-f): Commands For Moving. +* history-search-backward (): Commands For History. +* history-search-forward (): Commands For History. +* horizontal-scroll-mode: Readline Init File Syntax. +* input-meta: Readline Init File Syntax. +* insert-comment (M-#): Miscellaneous Commands. +* insert-completions (M-*): Commands For Completion. +* isearch-terminators: Readline Init File Syntax. +* keymap: Readline Init File Syntax. +* kill-line (C-k): Commands For Killing. +* kill-region (): Commands For Killing. +* kill-whole-line (): Commands For Killing. +* kill-word (M-d): Commands For Killing. +* mark-modified-lines: Readline Init File Syntax. +* menu-complete (): Commands For Completion. +* meta-flag: Readline Init File Syntax. +* next-history (C-n): Commands For History. +* non-incremental-forward-search-history (M-n): Commands For History. +* non-incremental-reverse-search-history (M-p): Commands For History. +* output-meta: Readline Init File Syntax. +* possible-completions (M-?): Commands For Completion. +* prefix-meta (<ESC>): Miscellaneous Commands. +* previous-history (C-p): Commands For History. +* quoted-insert (C-q or C-v): Commands For Text. +* re-read-init-file (C-x C-r): Miscellaneous Commands. +* readline: Basic Behavior. +* redraw-current-line (): Commands For Moving. +* reverse-search-history (C-r): Commands For History. +* revert-line (M-r): Miscellaneous Commands. +* rl_add_defun: Function Naming. +* rl_add_funmap_entry: Associating Function Names and Bindings. +* rl_add_undo: Allowing Undoing. +* rl_alphabetic: Utility Functions. +* rl_already_prompted: Readline Variables. +* rl_attempted_completion_function: Completion Variables. +* rl_attempted_completion_over: Completion Variables. +* rl_basic_quote_characters: Completion Variables. +* rl_basic_word_break_characters: Completion Variables. +* rl_begin_undo_group: Allowing Undoing. +* rl_bind_key: Binding Keys. +* rl_bind_key_in_map: Binding Keys. +* rl_binding_keymap: Readline Variables. +* rl_callback_handler_install: Alternate Interface. +* rl_callback_handler_remove: Alternate Interface. +* rl_callback_read_char: Alternate Interface. +* rl_catch_signals: Readline Signal Handling. +* rl_catch_sigwinch: Readline Signal Handling. +* rl_char_is_quoted_p: Completion Variables. +* rl_cleanup_after_signal: Readline Signal Handling. +* rl_clear_message: Redisplay. +* rl_clear_pending_input: Character Input. +* rl_clear_signals: Readline Signal Handling. +* rl_complete <1>: Completion Functions. +* rl_complete: How Completing Works. +* rl_complete_internal: Completion Functions. +* rl_completer_quote_characters: Completion Variables. +* rl_completer_word_break_characters: Completion Variables. +* rl_completion_append_character: Completion Variables. +* rl_completion_display_matches_hook: Completion Variables. +* rl_completion_entry_function <1>: Completion Variables. +* rl_completion_entry_function: How Completing Works. +* rl_completion_matches: Completion Functions. +* rl_completion_query_items: Completion Variables. +* rl_completion_type: Completion Variables. +* rl_copy_keymap: Keymaps. +* rl_copy_text: Modifying Text. +* rl_crlf: Redisplay. +* rl_delete_text: Modifying Text. +* rl_deprep_term_function: Readline Variables. +* rl_deprep_terminal: Terminal Management. +* rl_ding: Utility Functions. +* rl_directory_completion_hook: Completion Variables. +* rl_discard_keymap: Keymaps. +* rl_dispatching: Readline Variables. +* rl_display_match_list: Utility Functions. +* rl_do_undo: Allowing Undoing. +* rl_done: Readline Variables. +* rl_editing_mode: Readline Variables. +* rl_end: Readline Variables. +* rl_end_undo_group: Allowing Undoing. +* rl_erase_empty_line: Readline Variables. +* rl_event_hook: Readline Variables. +* rl_execute_next: Character Input. +* rl_executing_keymap: Readline Variables. +* rl_executing_macro: Readline Variables. +* rl_expand_prompt: Redisplay. +* rl_explicit_arg: Readline Variables. +* rl_extend_line_buffer: Utility Functions. +* rl_filename_completion_desired: Completion Variables. +* rl_filename_completion_function: Completion Functions. +* rl_filename_dequoting_function: Completion Variables. +* rl_filename_quote_characters: Completion Variables. +* rl_filename_quoting_desired: Completion Variables. +* rl_filename_quoting_function: Completion Variables. +* rl_forced_update_display: Redisplay. +* rl_free_line_state: Readline Signal Handling. +* rl_free_undo_list: Allowing Undoing. +* rl_function_dumper: Associating Function Names and Bindings. +* rl_function_of_keyseq: Associating Function Names and Bindings. +* rl_funmap_names: Associating Function Names and Bindings. +* rl_generic_bind: Binding Keys. +* rl_get_keymap: Keymaps. +* rl_get_keymap_by_name: Keymaps. +* rl_get_keymap_name: Keymaps. +* rl_get_screen_size: Readline Signal Handling. +* rl_getc: Character Input. +* rl_getc_function: Readline Variables. +* rl_gnu_readline_p: Readline Variables. +* rl_ignore_completion_duplicates: Completion Variables. +* rl_ignore_some_completions_function: Completion Variables. +* rl_inhibit_completion: Completion Variables. +* rl_initialize: Utility Functions. +* rl_insert_completions: Completion Functions. +* rl_insert_text: Modifying Text. +* rl_instream: Readline Variables. +* rl_invoking_keyseqs: Associating Function Names and Bindings. +* rl_invoking_keyseqs_in_map: Associating Function Names and Bindings. +* rl_kill_text: Modifying Text. +* rl_last_func: Readline Variables. +* rl_library_version: Readline Variables. +* rl_line_buffer: Readline Variables. +* rl_list_funmap_names: Associating Function Names and Bindings. +* rl_macro_bind: Miscellaneous Functions. +* rl_macro_dumper: Miscellaneous Functions. +* rl_make_bare_keymap: Keymaps. +* rl_make_keymap: Keymaps. +* rl_mark: Readline Variables. +* rl_message: Redisplay. +* rl_modifying: Allowing Undoing. +* rl_named_function: Associating Function Names and Bindings. +* rl_num_chars_to_read: Readline Variables. +* rl_numeric_arg: Readline Variables. +* rl_on_new_line: Redisplay. +* rl_on_new_line_with_prompt: Redisplay. +* rl_outstream: Readline Variables. +* rl_parse_and_bind: Binding Keys. +* rl_pending_input: Readline Variables. +* rl_point: Readline Variables. +* rl_possible_completions: Completion Functions. +* rl_pre_input_hook: Readline Variables. +* rl_prep_term_function: Readline Variables. +* rl_prep_terminal: Terminal Management. +* rl_prompt: Readline Variables. +* rl_push_macro_input: Modifying Text. +* rl_read_init_file: Binding Keys. +* rl_read_key: Character Input. +* rl_readline_name: Readline Variables. +* rl_readline_state: Readline Variables. +* rl_redisplay: Redisplay. +* rl_redisplay_function: Readline Variables. +* rl_reset_after_signal: Readline Signal Handling. +* rl_reset_line_state: Redisplay. +* rl_reset_terminal: Terminal Management. +* rl_resize_terminal: Readline Signal Handling. +* rl_restore_prompt: Redisplay. +* rl_save_prompt: Redisplay. +* rl_set_key: Binding Keys. +* rl_set_keyboard_input_timeout: Character Input. +* rl_set_keymap: Keymaps. +* rl_set_paren_blink_timeout: Miscellaneous Functions. +* rl_set_prompt: Redisplay. +* rl_set_screen_size: Readline Signal Handling. +* rl_set_signals: Readline Signal Handling. +* rl_show_char: Redisplay. +* rl_special_prefixes: Completion Variables. +* rl_startup_hook: Readline Variables. +* rl_stuff_char: Character Input. +* rl_terminal_name: Readline Variables. +* rl_tty_set_default_bindings: Terminal Management. +* rl_unbind_command_in_map: Binding Keys. +* rl_unbind_function_in_map: Binding Keys. +* rl_unbind_key: Binding Keys. +* rl_unbind_key_in_map: Binding Keys. +* rl_username_completion_function: Completion Functions. +* rl_variable_bind: Miscellaneous Functions. +* rl_variable_dumper: Miscellaneous Functions. +* self-insert (a, b, A, 1, !, ...): Commands For Text. +* set-mark (C-@): Miscellaneous Commands. +* show-all-if-ambiguous: Readline Init File Syntax. +* start-kbd-macro (C-x (): Keyboard Macros. +* transpose-chars (C-t): Commands For Text. +* transpose-words (M-t): Commands For Text. +* undo (C-_ or C-x C-u): Miscellaneous Commands. +* universal-argument (): Numeric Arguments. +* unix-line-discard (C-u): Commands For Killing. +* unix-word-rubout (C-w): Commands For Killing. +* upcase-word (M-u): Commands For Text. +* visible-stats: Readline Init File Syntax. +* yank (C-y): Commands For Killing. +* yank-last-arg (M-. or M-_): Commands For History. +* yank-nth-arg (M-C-y): Commands For History. +* yank-pop (M-y): Commands For Killing. + + + +Tag Table: +Node: Top1164 +Node: Command Line Editing1763 +Node: Introduction and Notation2414 +Node: Readline Interaction4032 +Node: Readline Bare Essentials5219 +Node: Readline Movement Commands7000 +Node: Readline Killing Commands7957 +Node: Readline Arguments9867 +Node: Searching10903 +Node: Readline Init File12859 +Node: Readline Init File Syntax13920 +Node: Conditional Init Constructs23842 +Node: Sample Init File26367 +Node: Bindable Readline Commands29537 +Node: Commands For Moving30587 +Node: Commands For History31436 +Node: Commands For Text34294 +Node: Commands For Killing36281 +Node: Numeric Arguments38232 +Node: Commands For Completion39360 +Node: Keyboard Macros40892 +Node: Miscellaneous Commands41451 +Node: Readline vi Mode44244 +Node: Programming with GNU Readline46062 +Node: Basic Behavior47030 +Node: Custom Functions50443 +Node: Readline Typedefs51421 +Node: Function Writing53050 +Node: Readline Variables54134 +Node: Readline Convenience Functions63133 +Node: Function Naming64115 +Node: Keymaps65367 +Node: Binding Keys67123 +Node: Associating Function Names and Bindings70049 +Node: Allowing Undoing72294 +Node: Redisplay74829 +Node: Modifying Text77900 +Node: Character Input79033 +Node: Terminal Management80678 +Node: Utility Functions81853 +Node: Miscellaneous Functions83920 +Node: Alternate Interface85512 +Node: A Readline Example87135 +Node: Readline Signal Handling89072 +Node: Custom Completers94675 +Node: How Completing Works95390 +Node: Completion Functions98388 +Node: Completion Variables101392 +Node: A Short Completion Example110763 +Node: Concept Index123288 +Node: Function and Variable Index124110 + +End Tag Table diff --git a/readline-4.2/doc/readline.ps b/readline-4.2/doc/readline.ps new file mode 100644 index 0000000..9d7e875 --- /dev/null +++ b/readline-4.2/doc/readline.ps @@ -0,0 +1,4988 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software +%%Title: readline.dvi +%%Pages: 62 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -D 300 -t letter -o readline.ps readline.dvi +%DVIPSParameters: dpi=300, compressed +%DVIPSSource: TeX output 2001.04.16:1105 +%%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/IEn 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 IEn 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/IEn 256 array N 2 string 0 1 255{IEn 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 (readline.dvi) +@start +%DVIPSBitmapFont: Fa cmbxti10 14.4 1 +/Fa 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46 +D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fb cmsl9 9 1 +/Fb 1 121 df<383FC7E038078380EB0200EA038413C8EA01D8EA00F05B7F1201133812 +02487EEA081E123838FC3FC013107F8F14>120 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fc cmsltt10 9 4 +/Fc 4 78 df<EAFFFC13FE13FC0F037C8C14>45 D<EA01E0EA07F8EA0E3CEA1C1CEA180E +12381270A312E0A4131CA31338A21370EA70E01271EA3F80EA1F000F177C9614>48 +D<134013E0EA01C01203120F123D12111201EA0380A6EA0700A6120EEAFFE0A20B177B96 +14>I<381F81F813C1380FC3E0EA0EC213C6A213CE13CC381CCDC013DD13D9A213F1A238 +38E3801303A53870070038FC0FC0A215177F9614>77 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fd cmtt9 9 46 +/Fd 46 127 df<126012F0AD12601200A4126012F0A212600417789614>33 +D<EA071CA5B51280A27E380E3800A7387FFF80B5FCA2381C7000A511177F9614>35 +D<EA01801203EA06005A121C121812385AA35AA91270A37E1218121C120C7EEA03801201 +091D799914>40 D<128012C01260123012381218121C120EA31207A9120EA3121C121812 +381230126012C01280081D7C9914>I<EA0380A3EA638CEAF39EEA7FFCEA3FF8EA0FE0A2 +EA3FF8EA7FFCEAF39EEA638CEA0380A30F107E9214>I<127012F812FCA2127C120C1218 +123012E012C0060A798414>44 D<EAFFFEA30F037E8C14>I<127012F8A3127005057984 +14>I<1203A25A5A123F12F712471207AEEA7FF0A20C177C9614>49 +D<1306131E133E13F8EA01F0EA03C0EA0F80EA1F00123C12F85A7E123C121FEA0F80EA03 +C0EA01F0EA00F8133E131E13060F157E9514>60 D<12C012F07E123E7EEA0780EA03E0EA +01F0EA0078133E131E133E1378EA01F0EA03E0EA0780EA1F00123E12F85A12C00F157E95 +14>62 D<EA1FE0EA3FF8EA701CEAE00EA21240EA003C137013E0EA01C0EA0380A41300C7 +FCA41203EA0780A2EA03000F177E9614>I<EA01E0EA07F0EA0E38EA181CEA38FC1271EA +731E1277EAEE0EA7EA771CEA7318EA71F0EA38E0EA1806EA0E1EEA07F8EA01F00F177E96 +14>I<EA01C0487EA21360A2EA0770A4EA0630EA0E38A4487EEA1FFCA2EA1C1CA2487EA2 +38FE3F80A211177F9614>I<3801F180EA07FFEA0E1FEA1C071238EA7003A348C7FCA738 +700380A338380700121CEA0E0EEA07FCEA01F011177F9614>67 D<38FC1F80A2007C1300 +EA7637A4EA7777A2EA7367A313E7EA71C7A2EA7007A638F80F80A211177F9614>77 +D<38FE3F80A2383E0E00123BA4138E1239A213CEA31238A213EE136EA4133E12FEA21117 +7F9614>I<EAFFE013F8EA383C131C7FA45B133CEA3FF85BEA38387FA51480EB1DC0A238 +FE0F80EB070012177F9614>82 D<EAFFE0A21200B3A712FFA20B1D7F9914>93 +D<EAFFFEA30F037E7E14>95 D<EA1FC0EA7FF0EA7078EA2018EA001CA2EA07FC121FEA3C +1C127012E0A3EA707C383FFF80EA0F8F11107E8F14>97 D<12FCA2121CA513F8EA1DFEEA +1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1DFCEA0CF81217809614>I< +EA03F8EA0FFEEA1C0EEA3804EA7000126012E0A412601270EA380EEA1C1EEA0FFCEA03F0 +0F107E8F14>I<137EA2130EA5EA07CEEA0FFEEA1C3EEA301EEA700E12E0A61270EA301E +EA383E381FEFC0EA07CF12177F9614>I<EA07E0EA0FF0EA1C38EA301CEA700CEAE00EA2 +EAFFFEA2EAE00012601270EA380EEA1C1EEA0FFCEA03F00F107E8F14>I<13FCEA01FEEA +038EEA07041300A3EA7FFE12FFEA0700ACEAFFF8A20F177F9614>I<EA07CF381FFF80EA +383B38301800EA701CA3EA3018EA3838EA3FF0EA37C00070C7FCA2EA3FF86C7E487EEA70 +0F38E00380A438700700EA3C1EEA1FFCEA07F011197F8F14>I<12FCA2121CA51378EA1D +FEEA1F86EA1E07121CAA38FF8FE0A21317809614>I<1206120FA21206C7FCA4B4FCA212 +07ACEAFFF8A20D187C9714>I<12FCA2121CA5EBFF80A2EB1C005B5B5BEA1DC0EA1FE0A2 +EA1E70EA1C38133C131C7F38FF1F80A21117809614>107 D<EAFF80A21203B3EAFFFEA2 +0F177E9614>I<EAFB8EEAFFDF383CF380A2EA38E3AA38FEFBE013791310808F14>I<EAFC +78EAFDFEEA1F86EA1E07121CAA38FF8FE0A21310808F14>I<EA07C0EA1FF0EA3C78EA70 +1CA2EAE00EA6EA701CEA783CEA3C78EA1FF0EA07C00F107E8F14>I<EAFCF8EAFDFEEA1F +07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1DFCEA1CF890C7FCA6B47EA212 +18808F14>I<EA03E7EA0FF7EA1C1FEA300F1270487EA6EA700F1230EA1C3FEA0FF7EA07 +C7EA0007A6EB3FE0A213187F8F14>I<EAFE1FEB7F80EA0EE3380F810090C7FCA2120EA8 +EAFFF0A211107F8F14>I<EA0FD8EA3FF8EA603812C0A2EAF000EA7F80EA3FF0EA07F8EA +001CEA600612E012F0EAF81CEAFFF8EACFE00F107E8F14>I<1206120EA4EA7FFC12FFEA +0E00A8130EA3131CEA07F8EA01F00F157F9414>I<EAFC3FA2EA1C07AB131F380FFFE0EA +03E71310808F14>I<38FE3F80A2383C1E00EA1C1CA36C5AA3EA0630EA0770A36C5AA311 +107F8F14>I<38FE3F80A238700700EA380EA3EA39CEA3EA1B6C121AA3EA1E7CA2EA0E38 +11107F8F14>I<EA7E3FA2EA1E3CEA0E78EA07705B12036C5A12037FEA0770EA0E781338 +487E38FE3F80A211107F8F14>I<38FE3F80A2381C0E005BA2120E5BA212071330A2EA03 +70A25B1201A25BA3485A12730077C7FC127E123C11187F8F14>I<EA3FFF5AEA700E131C +1338EA007013E0EA01C0EA0380EA0700120EEA1C0712381270B5FCA210107F8F14>I<EA +1C10EA3F38EAE7E0EA41C00D047D9614>126 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fe cmti9 9 1 +/Fe 1 47 df<1230127812F0126005047C830C>46 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Ff cmr9 9 39 +/Ff 39 123 df<13FEEA038138060180EA0E03381C010090C7FCA5B51280EA1C03AE38FF +8FF0141A809915>12 D<EBFF80EA0383EA0603120E121CA6B5FCEA1C03AE38FF9FF0141A +809915>I<126012F0A212701210A31220A21240A2040B7D830B>44 +D<EAFFC0A20A0280880D>I<EA07E0EA1C38EA381CEA300CEA700EEA6006A2EAE007AAEA +6006A2EA700EEA300CEA381CEA1C38EA07E010187F9713>48 D<12035AB4FC1207B3A2EA +7FF80D187D9713>I<EA0F80EA1060EA2030EA4038EA803CEAC01C12E01240EA003C1338 +A21370136013C0EA018013001202EA040412081210EA3008EA3FF8127F12FF0E187E9713 +>I<EA07E0EA1838EA201CEA601EEA700EEA201E1200131CA213381370EA07E0EA003813 +1C130E130FA212E0A212C0EA400EEA601CEA1838EA07E010187F9713>I<1318A2133813 +7813F813B8EA01381202A212041208121812101220124012C0B5FCEA0038A6EA03FF1018 +7F9713>I<EA3018EA3FF013E01380EA2000A5EA2FC0EA3060EA2030EA00381318131CA2 +124012E0A2EA8018EA40381330EA30E0EA0F800E187E9713>I<EA01F8EA0704EA0C06EA +180E123013001270126012E0EAE3E0EAE418EAE80CEAF00EEAE0061307A31260A2EA7006 +EA300EEA180CEA0C38EA07E010187F9713>I<1240EA7FFF13FEA2EA4004EA80081310A2 +EA00201340A21380120113005AA25A1206A2120EA5120410197E9813>I<EA07E0EA1818 +EA300CEA20061260A21270EA780CEA3E18EA1F30EA07C0EA03E0EA0CF8EA307CEA601E13 +0FEAC0071303A3EA6002EA2004EA1818EA07E010187F9713>I<EA07E0EA1C30EA3018EA +700CEA600EEAE006A21307A31260EA700FEA3017EA1827EA07C7EA00071306130E130C12 +701318EA6030EA3060EA0F8010187F9713>I<EA1FC0EA38707FEA101C1200A2EA03FCEA +1E1C1238127012E01480A2133CEA705F381F8F0011107F8F13>97 +D<12FC121CA913FCEA1D07381E0380381C01C0130014E0A6EB01C01480381E0300EA1906 +EA10F8131A809915>I<EA07F8EA1C1C1238EA700813005AA612701304EA3808EA1C18EA +07E00E107F8F11>I<133F1307A9EA03E7EA0C17EA180F487E127012E0A6126012706C5A +EA1C373807C7E0131A7F9915>I<EA07C0EA1C30EA30181270EA600C12E0EAFFFCEAE000 +A41260EA7004EA3808EA1C18EA07E00E107F8F11>I<EA01F0EA0718EA0E38EA1C101300 +A6EAFFC0EA1C00AEEAFF800D1A80990C>I<EA0FCF3818718038303000EA7038A4EA3030 +6C5AEA2FC00060C7FCA21270EA3FF013FC6C7EEA600FEAC003A4EA6006EA381CEA07E011 +187F8F13>I<12FC121CA9137CEA1D87381E0380A2121CAB38FF9FF0141A809915>I<1218 +123CA212181200A612FC121CAE12FF081A80990A>I<12FC121CA9EB1FC0EB0F00130C5B +13205B13E0121DEA1E70EA1C7813387F131E7F148038FF9FE0131A809914>107 +D<12FC121CB3A6EAFF80091A80990A>I<38FC7C1F391D8E6380391E0781C0A2001C1301 +AB39FF9FE7F81D107F8F20>I<EAFC7CEA1D87381E0380A2121CAB38FF9FF01410808F15> +I<EA07E0EA1C38EA300CEA700EEA6006EAE007A6EA6006EA700EEA381CEA1C38EA07E010 +107F8F13>I<EAFCFCEA1D07381E0380381C01C0A2EB00E0A6EB01C01480381E0300EA1D +06EA1CF890C7FCA6B47E1317808F15>I<EA03E1EA0C13EA180BEA300FEA700712E0A612 +70A26C5AEA1C37EA07C7EA0007A6EB3FE013177F8F14>I<EAFC78EA1D9CEA1E1C1308EA +1C00ABEAFF800E10808F0F>I<EA1F20EA60E0EA402012C0A2EAF000127FEA3FC0EA1FE0 +EA00F0EA8070133012C01320EAF040EA8F800C107F8F0F>I<1208A41218A21238EAFFC0 +EA3800A81320A41218EA1C40EA07800B177F960F>I<38FC1F80EA1C03AB1307120CEA0E +0B3803F3F01410808F15>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2 +EA01C0A36C5A11107F8F14>I<39FE7F1F8039381C0700003C1306381C0C04130E380E16 +081317A238072310149013A33803C1A014E0380180C0A319107F8F1C>I<38FE3F80383C +1E00EA1C086C5AEA0F306C5A6C5A12017F1203EA0270487E1208EA181CEA381E38FC3FC0 +12107F8F14>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2EA01C0A36C +5AA248C7FCA212E112E212E4127811177F8F14>I<EAFFF8EAE07012C0EA80E0EA81C0A2 +EA0380EA0700A2EA0E04121CA2EA380812701338EAFFF80E107F8F11>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fg cmss10 10.95 2 +/Fg 2 42 df<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012F0 +AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40 +D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012 +07A213005AA2121E121C123C12385A5A0B2E7EA112>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fh cmbx10 12 27 +/Fh 27 123 df<90380FF83F90397FFDFFC03A01FC1FE3E03903F03FC7EA07E0D80FC013 +87ED83C091381F8000A6B612FCA2390FC01F80B2397FF8FFF8A223237FA221>11 +D<EB07F8EB7FFC3801FC0E3803F01F48485AEA0FC0A3141E140C91C7FCA2ECFF80B6FCA2 +380FC01FB2397FF8FFF0A21C237FA220>I<EA07FE381FFF80383F07E06D7E130180121E +1200A2133FEA03FDEA1F81EA3E01127C12F8A4EA7C02EA7E0C391FF87F803807E03F1916 +7E951C>97 D<B47EA2121FABEB87F0EBBFFCEBF03EEBC01F9038800F8015C0140715E0A7 +15C0A2140F15809038C01F00381E707E381C3FFC38180FE01B237EA220>I<EBFF800007 +13E0380F83F0EA1F03123E127E387C01E090C7FC12FCA6127C127EA2003E13186C133038 +0FC0603807FFC0C6130015167E9519>I<49B4FCA2EB003FAB13FE3807FFBF380FC1FF48 +C67E003E7F127E127CA212FCA7127C127E123E6C5B380F81FF3907FF3FE0EA01FC1B237E +A220>I<13FE3807FF80380F83C0381E01E0383E00F0127E007C13F8147812FCB512F8A2 +00FCC7FCA3127CA26C1318A26C1330380F80E03803FFC0C6130015167E951A>I<EB1F80 +EBFFE03801F1F0EA03E31207EA0FC3EBC1E0EBC000A6EAFFFEA2EA0FC0B2EA7FFCA21423 +7EA212>I<9038FE0F803903FF9FC0380F83E3381F01F3391E00F000003E7FA5001E5BEA +1F01380F83E0380BFF80D808FEC7FC0018C8FCA2121C381FFFE014FC6C13FF7E001F1480 +397C001FC00078130F00F81307A3007CEB0F806CEB1F00381F807E6CB45A000113E01A21 +7F951D>I<B47EA2121FABEB83F0EB8FFCEB987EEBA03EEBC03FA21380AE39FFF1FFE0A2 +1B237DA220>I<121E123FEA7F80A4EA3F00121EC7FCA6EAFF80A2121FB2EAFFF0A20C24 +7EA30F>I<B47EA2121FABECFF80A2EC3C00143014E0EB81C00183C7FC1386139E13BE13 +FFEBDF80EB8FC01307806D7E6D7E130080147E39FFE1FFC0A21A237EA21E>107 +D<EAFF80A2121FB3ADEAFFF0A20C237EA20F>I<3AFF03F803F890390FFE0FFE3A1F183F +183F9039201F201F014001C01380A201801380AE3BFFF0FFF0FFF0A22C167D9531>I<38 +FF03F0EB0FFC381F187EEB203EEB403FA21380AE39FFF1FFE0A21B167D9520>I<13FF00 +0713E0380F81F0381F00F8003E137C48133EA300FC133FA7007C133E007E137E003E137C +6C13F8380F81F03807FFE0C6130018167E951D>I<38FF87F0EBBFFC381FF07EEBC01F90 +38800F8015C0A2EC07E0A715C0140FA2EC1F8001C01300EBF07EEBBFFCEB8FE00180C7FC +A8EAFFF0A21B207E9520>I<EBFE033807FF07380FC1CF381F00DF48137F007E7FA2127C +12FCA7127EA2003E5B6C5BEA0FC13807FF3FEA00FC1300A8903801FFE0A21B207E951E> +I<38FF0F80EB1FE0381F33F013631343A2EBC1E0EB8000ADEAFFF8A214167E9518>I<38 +07F980EA1FFFEA3807EA7003EAF001A26CC7FCB4FC13F8EA7FFE6C7E6C1380120738003F +C0EAC007130312E0A200F0138038FC0F00EAEFFEEAC3F812167E9517>I<487EA41203A2 +1207A2120F123FB5FCA2EA1F80ABEB8180A5380F830013C3EA07FEEA01F811207F9F16> +I<38FF81FFA2381F803FAF5C5C380FC1BF3907FF3FE0EA01FC1B167D9520>I<39FFF01F +E0A2391FC00700000F1306EBE00E0007130C13F000035BA26C6C5AA26C6C5AA2EBFEE0EB +7EC0137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFF3FF83FCA23A1F807C00E0D80F +C014C08001E013010007017F1380A2D803F0EB0300ECCF8301F81387D801F913C61487D8 +00FD13ECEBFF0315FC017F5BEB7E01013E5BEB3C00A20118136026167F9529>I<39FFF0 +7FC0A2390FC01C006C6C5A6D5A00035B6C6C5A3800FD80137F91C7FC7F6D7E497EEB37E0 +EB67F013C33801C1F8380380FC48487E000E137F39FF81FFE0A21B167F951E>I<39FFF0 +1FE0A2391FC00700000F1306EBE00E0007130C13F000035BA26C6C5AA26C6C5AA2EBFEE0 +EB7EC0137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC3813305BEA69C0EA7F80001FC8 +FC1B207F951E>I<387FFFF0A2387C07E038700FC0EA601F00E0138038C03F005B137EC6 +5A1201485AEBF030EA07E0120FEBC070EA1F80003F1360EB00E0EA7E03B5FCA214167E95 +19>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fi cmtt10 12 29 +/Fi 29 122 df<13E0A538F0E1E0EAFCE7387EEFC0381FFF00EA07FCEA01F0EA07FCEA1F +FF387EEFC038FCE7E0EAF0E13800E000A513157D991A>42 D<B512F8A3381C0038A51400 +A2130EA3EA1FFEA3EA1C0EA390C7FCA3141CA5B512FCA3161E7E9D1A>69 +D<387FFFFCB5FC7E380E001CA51400A2EB0380A3EA0FFFA3EA0E03A390C7FCA8EA7FE012 +FF127F161E7F9D1A>I<B51280A33801C000B3A6B51280A3111E7C9D1A>73 +D<387F03F838FF87FC387F03F8381C01E0EB03C01480EB07005B131E131C5B13785B7F12 +1DEA1FDC139C130EEA1E0F7F001C13801303EB01C0A2EB00E0A21470007F13FC38FF81FE +387F00FC171E7F9D1A>75 D<EA7FE0487E6C5A000EC7FCB3141CA5387FFFFCB5FC7E161E +7F9D1A>I<387FFFC0B512E0A26C13C013047D7E1A>95 D<EA1FF0EA3FFC487EEA780FEA +300738000380A2137FEA07FF121FEA3F83EA7803127012E0A3EA7007EA780F383FFFFCEA +1FFDEA07F016157D941A>97 D<12FEA3120EA6133EEBFF80000F13E0EBC1F0EB8070EB00 +38120E141CA7000F13381478EB80F0EBC1E0EBFFC0000E138038063E00161E7F9D1A>I< +EBFF80000313C0000F13E0EA1F01383C00C04813001270A25AA51270A2007813707E381F +01F0380FFFE0000313C03800FE0014157D941A>I<EB1FC0A31301A6EA01F1EA07FDEA0F +FFEA1E0FEA3C07EA7803EA700112E0A7EA7003A2EA3807EA3E0F381FFFFCEA07FDEA01F1 +161E7E9D1A>I<EA01F8EA07FF481380381E07C0EA3C01387800E01270481370A2B512F0 +A300E0C7FC1270A2007813707E381F01F0380FFFE0000313803800FE0014157D941A>I< +EB07E0EB1FF0EB3FF8EB7878EBF030EBE000A4387FFFF0B5FCA23800E000AF383FFF8048 +13C06C1380151E7F9D1A>I<3801F87C3807FFFE5A381E078C381C0380383801C0A5381C +0380EA1E07381FFF005BEA39F80038C7FCA27E381FFF8014E04813F83878007C0070131C +48130EA40070131C0078133C003E13F8381FFFF0000713C00001130017217F941A>I<12 +FEA3120EA6133EEBFF80000F13C013C1EB80E01300120EAC38FFE3FE13E713E3171E7F9D +1A>I<EA01C0487EA36C5AC8FCA5EA7FE0A31200AF387FFF80B512C06C1380121F7C9E1A> +I<12FEA3120EA6EB0FFCEB1FFEEB0FFCEB03C0EB0780EB0F00131E5B5B13FC120F13DE13 +8F380E07801303EB01C014E0EB00F038FFE3FE14FF14FE181E7F9D1A>107 +D<EAFFE0A31200B3A6B512E0A3131E7D9D1A>I<387CE0E038FFFBF8EA7FFF381F1F1CEA +1E1EA2EA1C1CAC387F1F1F39FF9F9F80397F1F1F00191580941A>I<EAFE3EEBFF80B512 +C0EA0FC1EB80E01300120EAC38FFE3FE13E713E317157F941A>I<EA01F0EA07FCEA1FFF +383E0F80EA3C07387803C0EA700138E000E0A6EAF001007013C0EA7803383C0780EA3E0F +381FFF00EA07FCEA01F013157D941A>I<EAFE3EEBFF80B512E0380FC1F0EB8070EB0038 +120E141CA7000F13381478EB80F0EBC1E0EBFFC0000E1380EB3E0090C7FCA8EAFFE0A316 +207F941A>I<3801F8E0EA07FEEA0FFFEA1E07EA3C03EA78011270EAE000A613011270EA +7803123CEA1E0FEA0FFFEA07FCEA01F0C7FCA8EB0FFEA317207E941A>I<387F81F838FF +8FFC387F9FFE3803FE1EEBF80CEBE000A25B5BAAEA7FFFB5FC7E17157F941A>I<3807FB +80EA1FFF127FEA7807EAE003A30078C7FCEA7FC0EA1FFCEA07FE38003F801307386001C0 +12E0A2EAF00338FC0780B51200EAEFFEEAE3F812157C941A>I<487E1203A6387FFFE0B5 +FCA238038000AA1470A43801C1E013FF6C1380EB3F00141C7F9B1A>I<38FE0FE0A3EA0E +00AD1301EA0F033807FFFE7EEA00FC17157F941A>I<387FC7FC00FF13FE007F13FC380E +00E0A3380701C0A338038380A33801C700A3EA00EEA3137CA2133817157F941A>I<387F +C7FC00FF13FE007F13FC380E00E0A27EEB01C013811203EB8380EA01C3A2EBC700EA00E7 +A213E61366136E133CA31338A3137813701230EA78E01271EA7FC06C5A001EC7FC17207F +941A>121 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fj cmbx12 13.14 52 +/Fj 52 122 df<123C127E12FFA4127E123C08087C8711>46 D<EB7F803803FFF03807E1 +F8380F807C48487E48133F003E7F007E1480A400FE14C0AD007E1480A46CEB3F00A26C13 +3E6C6C5A3807E1F86CB45A38007F801A237EA21F>48 D<131C133C13FC12FFA21200B3AA +387FFFFCA216237CA21F>I<48B4FC000713C0381E07F0383803F8386001FC387C00FE12 +FE14FF147FA2127C003813FFC7FC14FEA2EB01FC14F8EB03F0EB07E01480EB0F00131E5B +1370EBE003EA01C038038007380700061206380FFFFE5A5A4813FCB5FCA218237DA21F> +I<48B4FC000713E0381E03F0383801F8003C13FC387E00FEA3123EEA1C01000013FCA2EB +03F8EB07F0EB0FC03801FF00A2380007E0EB01F014F8EB00FC14FE14FFA21210127C12FE +A214FEA2387C01FC007013F8383E07F0380FFFC00001130018237DA21F>I<14381478A2 +14F81301130313071306130C131C13381330136013E0EA01C01380EA03005A120E5A1218 +5A12705AB612C0A2390001F800A790387FFFC0A21A237EA21F>I<0018130C001F137CEB +FFF814F014E014C01480EBFC000018C7FCA513FF001B13E0381F03F0381C00F8000813FC +C7127EA3147FA2127812FCA3147E5A006013FC1270383801F8381E07E03807FFC03801FE +0018237DA21F>I<EB1FC0EB7FF03801F0383803E00C3807803E000F137EEA1F005AA200 +7E133C1400A338FE3FC0EB7FF0EB80F800FF13FCEB007C147E5A147FA4127EA4003E137E +123F6C137C380F80F83807C1F03803FFC038007F0018237DA21F>I<1230123C003FB512 +C0A215804814005C5C38600018A200E05B485B5CC6485AA249C7FC1306130EA25BA2133C +A25BA213F8A41201A66C5A13601A257DA41F>I<EBFF80000313E0380F01F8381C007C48 +133C141E1278A2127C127E387F803C13E0383FF878381FFDF0EBFFC07E000313E014F800 +0F13FCEA1E1F383C07FEEA7803EB00FF48133F141F140FA3140E1278141C6C1338381F80 +F03807FFE00001130018237DA21F>I<13FF000313C0380F83E0381F00F04813F8007E13 +7CA2147E12FEA3147FA4127E14FF123EEA3F01001F137FEA0FFEEA03FCC7FC147EA2123C +007E13FCA214F814F0EA7C01383003E0381C0F80380FFF00EA03F818237DA21F>I<141C +A2143EA3147FA24A7EA39038019FC0A29038031FE0140F01077FEB0607A2010C7F140301 +1C7FEB1801A2496C7EA2017FB5FCA29039E0007F8049133FA2484880151F00038190C712 +0FA2486E7ED8FFF090B51280A229257EA42E>65 D<B612E015FC3903F0007FED3F80ED1F +C0ED0FE0A216F0A21507150FA216E0151F16C0ED7F80913801FE0090B512F815FF9039F0 +003FC0ED0FE0ED07F016F8150316FCA616F81507ED0FF0ED1FE0ED7FC0B7120015F82625 +7EA42C>I<9138FF8008010FEBF01890393FC03C789039FE0006F8D801F8130348481301 +4848130048481478121F48481438A2007F151890C8FCA2481500A97E16187F123FA26C6C +1430120F6C6C14606C6C14C06C6CEB0180D800FEEB070090383FC01E90380FFFF8010013 +C025257DA42C>I<B7FCA23903F8007FED0F8015071503A21501A3ED00C01406A21600A2 +140E141EEBFFFEA2EBF81E140E1406A21660A291C7FC16C0A415011503A2ED0F80153FB7 +FCA223257EA428>69 D<B612FEA23803F800151F8181A281A3ED01801403A292C7FCA25C +5C90B5FCA2EBF80F8080A491C8FCAAB512F0A221257EA427>I<B500E0B512E0A23B03F8 +0003F800AF90B6FCA29038F80003B0B500E0B512E0A22B257EA430>72 +D<B512E0A23803F800B3AFB512E0A213257EA417>I<B539E007FF80A2D803F8C7EA7800 +16605E4B5A0307C7FC150E15185D5D5DEC03804AC8FC140E141F4A7E147FECDFC09038FB +8FE09038FF0FF0EBFC07496C7E816E7E1400157F82153F6F7E6F7E8215076F7E82B539E0 +3FFFC0A22A257EA430>75 D<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E153E +157CEC03FCB6FCA220257EA425>I<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA36D14 +06A26D6C130CA26D6C1318A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A29138 +7E0300A3EC3F06A2EC1F8CA2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A23525 +7EA43A>I<D8FFF8903807FFE07FD803FE9038003C006D14187F6D7E6D7E806D7E6D7E13 +036D7E6D7E80EC7F80EC3FC0141FEC0FE015F0EC07F8EC03FC1401EC00FE157F1698ED3F +D8ED1FF8150F15071503A2150115001678486C1438D8FFFC1418A22B257EA430>I<B67E +15F83903F801FEEC007F6F7E6F7EA282A55EA24B5A4BC7FCEC01FE90B512F815C09038F8 +03F06E7E6E7E157EA2157FA482A31760ED3FC017C0ED1FE1B539E00FFF80923801FE002B +257EA42E>82 D<01FF1380000713E3380F80F7381E001F48130F481307140312F81401A2 +7E91C7FCB4FCEA7FE013FE383FFFE014F86C13FE00077F6C1480C67E010313C0EB003FEC +0FE01407A200C01303A315C07E6C13076C14806CEB0F0038FFC03E38E3FFF838803FE01B +257DA422>I<007FB612F8A2397E00FE010078EC00780070153800601518A200E0151C16 +0C5AA4C71400B3A390B512FEA226247EA32B>I<B539E00FFFC0A2D803F8C7EA78001630 +B3A700015D7F00005D137C6D495A6D0107C7FC90380FE03E903803FFF89038007FC02A25 +7EA42F>I<B5398001FFE0A2D807F8C7EA1C0000031518A26D1438000115306D14700000 +15607F6D5C80013F495AA2ECC003011F91C7FC6E5A010F130614F001075BA26D6C5AA2EC +FC3801011330ECFE700100136014FF6E5AA26E5AA36EC8FCA2140EA22B257FA42E>I<B5 +3B81FFFE01FFF0A23D07F0001FC0000F007013066C6C010F5CA26F7E6C6C5EA26D496C13 +38000017304B7E017F01195CA291388030FE013F5E829139C0607F01011F5E03E0138190 +280FE0C03F83C7FCA29139F1801FC3010715C617E69139FB000FEE010315EC02FF14FC6D +486D5AA24A130301005DA24A130102785CA202306D5A3C257FA43F>I<B539C001FFE0A2 +D807F8C7EA1C006C6C141816386C6C14306C6C5C16E06D6C5B6D6C485A1503D91FE090C7 +FC90380FF006150E903807F80C6D6C5A15386D6C5A903800FF6015E06E5A6E5AAE90380F +FFFCA22B257FA42E>89 D<EA07FF001F13E0383E03F0383F00F880147E121EC7FCA3EB1F +FE3803FE7EEA0FC0EA1F00123E127E5AA314BEEA7E01383F073E391FFE1FE03807F00F1B +187E971E>97 D<EAFFC0A2120FACEBC1FCEBCFFF9038FC0FC09038F007E09038C003F0A2 +EC01F8A215FCA815F8A2EC03F013E09038F007E090381C1F80390E0FFF00380C03F81E26 +7FA522>I<EB7FE03803FFF83807C07C381F80FC13005A007E1378140012FEA8127E127F +6C130CEA1F80EBC0183807E0703803FFE038007F0016187E971B>I<ECFFC0A2140FAC13 +7F3803FFCF380FE0FF381F803F383F000FA2127EA212FEA8127EA27E141F381F803F380F +C0EF3903FFCFFC3800FE0F1E267EA522>I<137F3803FFC03807C1F0380F80F8EA1F0048 +137C127E147E12FEA2B512FEA248C7FCA3127EA214067E6C130C380F80183807E0703803 +FFE038007F8017187E971C>I<EB1FC0EB7FF0EA01F83803E1F8120713C1380FC0F01400 +A7B5FCA2EA0FC0B3A2EAFFFEA215267EA513>I<3901FF07C00007EBDFE0380F83F1EA1F +01393E00F800007E7FA6003E5B6C485A380F83E0EBFFC0001190C7FC0030C8FCA2123812 +3C383FFFE06C13FC806C7F481480383C003F48EB0FC000F81307A4007CEB0F806CEB1F00 +381F807E3807FFF8C613C01B247E971F>I<EAFFC0A2120FAC14FE9038C3FF809038CE0F +C013D89038D007E013E0A213C0AF39FFFC7FFEA21F267EA522>I<120FEA1F80EA3FC0A4 +EA1F80EA0F00C7FCA7EA7FC0A2120FB3A2EAFFF8A20D277EA611>I<EAFFC0A2120FACEC +1FF0A2EC0780EC0E005C14305CEBC1C0EBC38013C713DFEBFFC0EBE7E0EBC3F0138180EB +80FC147E80A2EC1F80EC0FC039FFF83FF8A21D267FA520>107 D<EAFFC0A2120FB3B0EA +FFFCA20E267EA511>I<26FF80FE137F903A83FF81FFC03B0F8E0FC707E0019813CC903A +9007E803F001A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E9733>I<38FF80FE9038 +83FF80390F8E0FC0139890389007E013A0A213C0AF39FFFC7FFEA21F187E9722>I<EB7F +803803FFF03807C0F8381F807E48487EA2007EEB1F80A200FE14C0A8007E1480A26CEB3F +00A2381F807E6C6C5A3803FFF038007F801A187E971F>I<38FFC1FCEBCFFF390FFC1FC0 +9038F007E001C013F0140315F8140115FCA8EC03F8A215F0EBE0079038F00FE09038DC1F +809038CFFF00EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38FF83E0EB8FF8380F8C7C +EB90FC13B013A01478EBE0005BAEEAFFFEA216187F9719>114 D<3807F8C0EA1FFFEA3C +07EA7001EAF000A300FC1300B47EEA7FFC7F383FFF80000F13C0120338001FE01303EAC0 +01A212E014C0EAF00338FC078038EFFF00EAC3FC13187E9718>I<13C0A41201A3120312 +07120F121FB512C0A2380FC000AC1460A63807E0C013E13801FF8038007E0013237FA218 +>I<39FFC07FE0A2000F1307B0140FA200071317EBE0673903FFC7FE38007F071F187E97 +22>I<39FFF80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13 +FC00005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D187F9720>I<3BFFF9FF +E0FF80A23B1FC03F001C00000F6D13181580D807E05CA29039F03FC07000030137136015 +E02601F8635BA29038FCE3F1000001C15B15F990267F80FBC7FCA215FF90383F007EA201 +1E133CA3010C131829187F972C>I<39FFF83FF0A2390FC00F003807E00E6C6C5A6D5A6C +6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F81361EBE0FC3801C07E3803807F39 +07003F8048131F39FFC07FF8A21D187F9720>I<39FFF80FF8A2390FC001C015803907E0 +0300A26D5A00031306EBF80E0001130C13FC00005B13FEEB7E30A26D5AA214E06D5AA26D +5AA26DC7FCA21306A25B1230EA781CEAFC185B1370EA68E0EA7FC0001FC8FC1D237F9720 +>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fk cmsl10 10.95 46 +/Fk 46 122 df<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF0380380 +70A4380700E0A6380E01C0A6381C0380001E13C038FF0FF016207E9F19>12 +D<EB03F4EB1C1CEB383C137013E01438EA01C0A538038070387FFFF038038070A4380700 +E0A6380E01C0A6381C0380001E13C038FF9FF016207E9F19>I<EAFFF0A20C027E8A0F> +45 D<137EEA01C338030180000713C0EA0E0014E05AA2EA3C0112381278A538F003C0A5 +1480130712E01400A2130E1260EA701CEA3038EA3870EA0FC0131F7C9D17>48 +D<13181338EA01F8EA0E701200A513E0A6EA01C0A6EA0380A6EA07001380EAFFFC0E1E7B +9D17>I<1408140C141C143CA2147C147E149EA2EB011EA21302801304A21308A2011013 +8014071320A2EB7FFF90384007C0EB8003A2EA0100A21202EC01E01206001F130339FF80 +1FFE1F207F9F22>65 D<0007B5FC3900F803C090387801E0EC00F04913F8A515F03801E0 +01EC03E015C0EC0F809038FFFE009038E00F803903C003C0EC01E015F0A21400A2485A14 +01A215E01403EC07C0390F000F80EC3E00B512F01D1F7E9E20>I<ECFE02903807018690 +381C004E0170133E49131E4848131C4848130C120748C7FC5A121E003E1408003C140012 +7CA45AA4127815101520A27E1540001C14806CEB01006C13023803800C3800E030EB3FC0 +1F217C9F21>I<0007B57E3900F801E0903878007081497F151E150E150FA348481480A6 +484814005DA3151E153E4848133C5DA25D4A5A4A5A260F000FC7FC143CB512F0211F7E9E +23>I<0007B512FC3900F8007C0178131C150C5B1504A414043901E00800A31438EBFFF8 +EBE0383803C010A4EC00081510485AA21520A2156015C0380F00011407B612801E1F7E9E +1F>I<0007B512F83900F800780178133815185B1508A53901E00800A314181438EBFFF8 +3803C0301410A491C7FC485AA648C8FC7FEAFFFC1D1F7E9E1E>I<3807FF803800F80013 +78A25BA6485AA6485AA6485AA648C7FC7FEAFFF0111F7E9E10>73 +D<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC1402140848485A5C1460 +14F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E81140781140381380F +00016D487E39FFF00FFE231F7E9E23>75 D<3807FFE0D800FCC7FC1378A25BA6485AA648 +5AA41580EC0100EA0780A25C14021406140E380F001E147CB512FC191F7E9E1C>I<D807 +F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83C0D801035BEB01E0 +A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A21401000C5C001E1300 +B47E221F7E9E22>78 D<EB01FCEB0E0790383801C090387000E0484813F048481378485A +153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01F0007C14E01403 +003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F801F217C9F23>I< +0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01E0EC03C0EC0F +00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807FFFE3900F80780 +90387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00EBFFF03803C038 +80141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078CC7EA01F020207E +9E22>82 D<EB1F82EB7066EBC01E3801800EEA030048130C00061304120EA3000F1300A2 +7FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA200401338A31430006013 +70146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512F0383C07800030 +1430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383FFFE01C1F7A9E21 +>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A6485BA600705BA25C +A200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFFF07FF81FF03B1F +000FC007C0001E903907800380001FED01006C1502140F5EEC17C002135B142301805C00 +0713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C415F2EBC80015F4 +EA01F015F85B5D5B15605B000014402C207A9E2F>87 D<EA07F8EA0C0CEA1E061307121C +1200A313FFEA07C7EA1E07EA3C0E127800F01310A3131EEB2E2038784F40381F87801414 +7D9317>97 D<1207123F120F7EA2120EA65A137CEA1D83381E0180001C13C0EB00E05A14 +F0A5387001E0A214C013031480EB0700EAE80EEACC38EA83E014207B9F19>I<13FEEA03 +83380E0780121C0038130090C7FC12785AA45AA37E5BEA70026C5AEA1C18EA07E011147D +9314>I<1438EB01F8EB00781438A21470A614E013FCEA0382EA0601121CEA3C00383801 +C0127812F0A438E00380A412F0EA700738380F00381C37803807C7E015207D9F19>I<13 +F8EA070EEA0E07381C038012381278127012F0B5FC00F0C7FCA25AA46C5AEA7002EA3004 +EA1C18EA07E011147D9314>I<EB07C0EB1C60EB30F01360EBE0E0EBC0001201A5485AEA +3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB3E11EBE1A33801 +C1C2380381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FCA21218121CEA0F +FF14C014E0381800F04813305A5AA3006013606C13C0381C0700EA07FC181F809417>I< +13E0120712011200A2485AA6485AEB8F80EB90E013A0EBC0601380000713E01300A5380E +01C0A6381C0380001E13C038FF8FF014207E9F19>I<EA01C0EA03E0A213C0EA0180C7FC +A6EA0380121F12071203A2EA0700A6120EA65A121EEAFF800B1F7F9E0C>I<13E0120712 +011200A2485AA6485AEB81FCEB80F014C0EB81801400EA07045B13181338137C131C120E +7FA2130F7F1480EA1C03381E07C038FF8FF016207E9F18>107 D<13E0120712011200A2 +EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B207F9F0C>I<390387C07C391F98 +61863907A072073903C03403EB80380007EB7807EB0070A5000EEBE00EA64848485A001E +EBE01E3AFFCFFCFFC022147E9326>I<38038F80381F90E0EA07A03803C0601380000713 +E01300A5380E01C0A6381C0380001E13C038FF8FF014147E9319>I<13FCEA0387380E01 +80381C00C04813E0A24813F012F0A438E001E0A214C0130300F0138038700700EA380E6C +5AEA07E014147D9317>I<EBE3E03807EC383801F01C6C487E140F48487E1580A5390380 +0F00A2140E141E141C5C38074070EB61C0011FC7FC90C8FCA3120EA4121EEAFFC0191D80 +9319>I<EBFC2038038260EA0702381E01E0123C003813C0127812F0A438E00380A212F0 +A21307127038380F00EA1C37EA07C7EA0007A3130EA4131EEBFFC0131D7D9318>I<EA03 +8E381FB380EA07C71203EB8300EA078090C7FCA5120EA65A121EEAFFC011147E9312>I< +EA01F9EA0607EA080312181301EA3802EA3C00121F13F0EA07FCEA01FEEA001FEA400713 +03A212601306EAF004EAC818EA87E010147F9312>I<1380EA0100A35A5A5A121EEAFFF8 +EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C9B12>I<381C0380EAFC1FEA3C07 +EA1C03A238380700A6EA700EA4131EA25BEA305E381F9F8011147B9319>I<38FF83F838 +1E00E0001C13C01480121E380E01005B13025B12075BA25BEA039013A013E05B5B120190 +C7FC15147C9318>I<39FF9FE1FC393C078070391C030060148015401580EA0E0790380D +81001309EB19C21311380F21C4EA0720EB40C814E8EB80F0A26C485A1460000213401E14 +7C9321>I<381FF0FF3803C0780001137014403800E0C0EBE180EB73001376133CA2131C +132E134E1387EA0107380203801204380C01C0383C03E038FE07FC18147F9318>I<390F +F83F803901E00E00EBC00C140813E000005B143014205C13705CA20171C7FC1339133A13 +3E133C133813181310A25BA25BEA70C0EAF08000F1C8FC12E61278191D809318>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fl cmti10 10.95 20 +/Fl 20 122 df<EC3FE0ECE010903801803801031378A290380700301500A3130EA390B5 +12E0EB0E0090381C01C0A4EC03801338A3EC0700A2137801701310EC0E20A313609038E0 +0640EC038091C7FC5BA21201EA3180127948C8FC1262123C1D29829F1A>12 +D<127012F8A212F012E005057B840E>46 D<EBF180380389C038070780EA0E03121C123C +383807001278A3EAF00EA31420EB1C40A2EA703C135C38308C80380F070013147C9317> +97 D<137EEA01C138030080EA0E07121E001C1300003CC7FC5AA35AA45B12701302EA30 +0CEA1830EA07C011147C9315>99 D<1478EB03F8EB0070A414E0A4EB01C0A213F1EA0389 +38070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C135C38308C +80380F070015207C9F17>I<137CEA01C2EA0701120E121C123CEA3802EA780CEA7FF0EA +78005AA4EA7001A21302EA380CEA1830EA07C010147C9315>I<EB3C60EBE2703801C1E0 +EA0380EA07005A380E01C0121EA3383C0380A4EB0700A2EA1C0F1317EA0C2EEA03CEEA00 +0EA25BA21230EA7838485AEA60E0EA3F80141D7E9315>103 D<13C0EA01E0A213C0C7FC +A7120E12131223EA4380EA4700A21287120EA35AA3EA38401380A21270EA31001232121C +0B1F7C9E0E>105 D<EA03C0121FEA0380A4EA0700A4120EA45AA45AA45AA3127112E2A4 +126412380A207C9F0C>108 D<391C0F80F0392630C318394740640C903880680EEB0070 +A2008E495A120EA34848485AA3ED70803A3803807100A215E115623970070064D8300313 +3821147C9325>I<381C0F80382630C0384740601380EB0070A2008E13E0120EA3381C01 +C0A3EB038400381388A2EB0708EB031000701330383001C016147C931A>I<137CEA01C3 +38030180000E13C0121E001C13E0123C1278A338F003C0A3EB07801400EA700F130EEA30 +18EA1870EA07C013147C9317>I<3801C1E0380262183804741C1378EB701EA2EA08E012 +00A33801C03CA3143838038078147014E0EBC1C038072380EB1E0090C7FCA2120EA45AA2 +B47E171D809317>I<EA1C1EEA266138278380EA47871307EB0300008EC7FC120EA35AA4 +5AA45A123011147C9313>114 D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0 +EA07F8EA03FCEA003E130E1270EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>I< +EA018013C0EA0380A4EA0700A2EAFFF0EA0700120EA45AA45AA31320EA7040A21380A2EA +3100121E0C1C7C9B0F>I<000E13C0001313E0382301C0EA4381EA4701A238870380120E +A3381C0700A31410EB0E201218A2381C1E40EA0C263807C38014147C9318>I<380E0380 +EA1307002313C0EA4383EA4701130000871380120EA3381C0100A31302A25BA25BEA0E30 +EA03C012147C9315>I<000EEBC1C0001313E3392301C3E0384381C1384701C015603987 +038040120EA3391C070080A3EC0100A21306EB0F02000C5B380E13083803E1F01B147C93 +1E>I<000E13C0001313E0382301C0EA4381EA4701A238870380120EA3381C0700A4130E +1218A2EA1C1EEA0C3CEA07DCEA001CA25B12F05BEAE060485AEA4380003EC7FC131D7C93 +16>121 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fm cmr8 8 29 +/Fm 29 118 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<EAFFC0001CC7FCAD1420A31460A2144014C0 +1303B5FC13177F9616>76 D<00FEEB03F8001E14C000171305A338138009A23811C011A3 +3810E021A2EB7041A3EB3881A2EB1D01A2130EA2123839FE040FF81D177F9620>I<EAFF +FE381C0380EB00C014601470A4146014C0EB0380381FFE00001CC7FCAAB47E14177F9618 +>80 D<EAFFFC381C0380EB00C014E01470A414E014C0EB0380381FFE00381C0780EB01C0 +EB00E0A514E1A2147238FF803C18177F961A>82 D<EA0FC4EA302CEA601CEA400CEAC004 +A3EAE0001270127FEA3FE0EA0FF8EA01FCEA001C130E13061280A3EAC004EAE008EAD810 +EA87E00F177E9614>I<387FFFF83860381800401308A200801304A300001300AF3803FF +8016177F9619>I<12FCA212C0B3AB12FCA206217D980A>91 D<EA3FC0EA70601330EA20 +381200EA03F8EA1E3812301270EAE039A21379EA70FFEA1F1E100E7F8D12>97 +D<12F81238A8EA39F0EA3E0CEA380613077F1480A414005B1306EA361CEA21F011177F96 +14>I<EA07F0EA18381230EA7010EA600012E0A41260EA70081230EA1830EA07C00D0E7F +8D10>I<EA0FC0EA1860EA3030EA7038EAE018EAFFF8EAE000A31260EA7008EA3010EA18 +30EA07C00D0E7F8D10>101 D<1203EA0780A2EA0300C7FCA5EA1F801203AF1243EAE300 +12E7127C091D82960B>106 D<12F81238A8133E13381330134013801239EA3FC0EA39E0 +123813F01378133CA2EAFE7F10177F9613>I<EAF8F8EA3B1CEA3C0E1238AA38FE3F8011 +0E7F8D14>110 D<EA07C0EA1830EA3018EA600CA2EAE00EA5EA701CEA3018EA1830EA07 +C00F0E7F8D12>I<EAF9F0EA3E1CEA380613077F1480A414005B130EEA3E1CEA39F00038 +C7FCA512FE11147F8D14>I<EAF9E0EA3A70123CEA38201300A9B4FC0C0E7F8D0E>114 +D<EA1F40EA60C0EAC040A2EAE000B4FCEA7F80EA1FC0EA01E0EA8060A212C0EAE0C0EA9F +000B0E7F8D0E>I<1208A31218A21238EAFFC0EA3800A71340A4EA1C80EA0F000A147F93 +0E>I<EAF83EEA380EAA131EEA1C2E3807CF80110E7F8D14>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fn cmsy9 9 2 +/Fn 2 106 df<13801201EA0300A31206A25AA35AA35AA25AA35AA21260A37EA27EA37E +A37EA27EA3EA0180120009267D9B0F>104 D<12C0A21260A37EA27EA37EA37EA27EA3EA +0180A2EA0300A31206A25AA35AA35AA25AA35AA209267E9B0F>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fo cmsltt10 10.95 29 +/Fo 29 122 df<1206120FEA1F80120FA21203EA0700A25A120E123C127C12F01260090E +769B18>39 D<387FFFC0B512E0A26C13C013047C8F18>45 D<133E13FF000313803807C3 +C0EA0F01000E13E0EA1C00123C003813F014705AA34813E0A4EB01C0A2130300F01380EA +7007EB0F00EA781E6C5AEA1FF85BEA07C0141C7C9B18>48 D<13181338A2137813F81203 +120F137012041200A413E0A6EA01C0A6EA7FFE12FF127F0F1C7B9B18>I<EB3E18EBFFB8 +4813F8EA07C1EB8078EA0E00121E001C137048133014005AA35AA614C0EA7001A2130338 +380780383C0F00EA1FFE6C5AEA03F0151C7C9B18>67 D<3807FFC014E014F03801C0F814 +78143C141CEA0380141EA2140EA33807001CA4143C1438120E147014F0EB01E0EB03C013 +07387FFF8038FFFE00EA7FF8171C7F9B18>I<0007B5FC5A7E3801C007A3140638038000 +A2EB818014C0A213FF481380A21303A2140090C7FC120E140C141CA4387FFFF8B5FC7E18 +1C7F9B18>I<EB1FF8EB3FFCEB1FF8EB01C0A4EB0380A6EB0700A6130EA2124012E06C5A +EAE03CEAFFF86C5AEA1FC0161C7C9B18>74 D<EA07FC487E6C5AEA01C0A4485AA648C7FC +A6120E14301470A4B512E0A3141C7E9B18>76 D<3907E01F80000FEB3FC0000714803903 +B02E00146EA214CE380730DC1331149CA21333141C000E5B13371336133E133C131848C6 +5AA638FE03F800FF7F00FE5B1A1C7F9B18>I<126012F0A37E1278A3127C123CA3123E12 +1EA3121F7EA313801207A313C01203A413E01201A313F0120013600C24789F18>92 +D<387FFFC0B512E0A26C13C013047E7F18>95 D<EA03FC48B4FC4813801303380601C012 +00A2137FEA07FF121FEA3F813878038012F012E0A21307EA701F387FFFF0EA3FFBEA0FE1 +14147D9318>97 D<127EA3120EA45A137CEA1DFF001F13801383381E01C0123CEB00E012 +38A4387801C0A2EB0380A2EB0F00EA7C1FEAFFFCEAEFF8EA63E0131C7C9B18>I<EB07E0 +A31300A4EB01C0EA01F1EA07FDEA0FFFEA1E0FEA3C0738780380127012E0A4EB0700A25B +5B6C5AEA787F383FFFC0381FEFE0380F87C0131C7C9B18>100 D<13F8EA07FE487E381F +0780EA3C03387801C0127012E0A2B5FCA2148000E0C7FCA213033870078038780F00EA3F +FE6C5AEA07F012147B9318>I<EB01F8EB07FC131FEB1E3CEB38181400A25B381FFFF05A +7E38007000A25BA6485AA6EA7FFE12FF127F161C7E9B18>I<EB1E1F90387FFF8090B5FC +3901E1E3003803C0E01380EA0700A3495AA238038780EA07FF49C7FCEA0E7890C8FCA26C +B47E4813E0487F383C007848133812705AA2147800705B387C03E0383FFFC0000F90C7FC +EA03FC191F809318>I<14C0EB01E013031301EB00C01400A4EBFFC0A31301A2EB0380A6 +EB0700A6130EA65BA2EA6038EAF078B45A5BEA3F8013277F9C18>106 +D<EA07E0120F12071200A4485AEBC7FEA3EBC1E0EBC3C038038780EB8F00139E13BC13FE +13EEEA07CF1387EB0780130314C01301387FC7F838FFE7FC387FC7F8171C7F9B18>I<EA +0FFCA3EA001CA45BA65BA65BA6B5128014C01480121C7D9B18>I<13FCEA03FF000F1380 +EA1F07383C03C0EA7801007013E0EAE000A4EB01C0A2EB0380EAF007EB0F00EA7C3EEA3F +FC6C5AEA07E013147C9318>111 D<EBF8C0EA03FDEA0FFFEA1F0FEA3C07387803801270 +12E0A4EB0700A25BA26C5AEA787FEA3FFEEA1FEEEA078EEA000EA35BA43801FF80A3121E +7C9318>113 D<381FE1F8EBE7FCEBEFFE3800FE1EEBFC0C3801F8005B5B5BA3485AA6EA +FFFC7F5B17147E9318>I<EBFE603807FFE05AEA1F01121C003813C0EA3C00001F1300EA +0FF8EA07FE3800FF801307383001C01270A238780380EA7C07B51200EAEFFEEA63F81314 +7D9318>I<387E07E0EAFE0FEA7E07EA0E00A2381C01C0A638380380A41307131F383FFF +E06C13F03807E3E014147D9318>117 D<38FF87F8138F1387383800E0EB01C0A3148013 +E3EA39F31233EB7700A212371376EA3666136EEA3C7CA2EA383815147C9318>119 +D<381FE3FC13E713E33803C3C000011380EBE700EA00EE13FC137C1338137813FCEA01DC +EA038E12071307120E38FF1FE0EB9FF0EB1FE016147E9318>I<380FF1FE381FF9FF380F +F1FE3803807013C0000113E0A213C114C0A23800E380A2EBE700A213E6136E136C137C13 +78A21370A25BA2485A12F3EAF780B4C7FC5A1278181E7F9318>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fp cmcsc10 10.95 12 +/Fp 12 121 df<1318A2133CA3134EA213CF1387A238010380A2000313C0EA0201A23807 +FFE0EA0400A2481370A2001813380038137838FE01FF18177F961C>97 +D<EB7E083803819838070078000C1338001C13185A00781308127000F01300A700701308 +127812386C1310120C000713603803818038007E0015177E961B>99 +D<B512C0EA1C011300144014601420A213081400A21318EA1FF8EA1C1813081410A21300 +14301420A21460EB01E0B5FC14177E9619>101 D<B512C0EA1C011300144014601420A2 +13081400A21318EA1FF8EA1C181308A390C7FCA6EAFFC013177E9618>I<EB7E08380381 +9838070078000C1338001C13185A00781308127000F01300A5EB03FEEB00381270127812 +387E120C1207380380D838007F0817177E961D>I<EAFF80EA1C00B3A3EAFF8009177E96 +0E>105 D<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2131C13 +0E1307A2EB03A0EB01E0A213001460123800FE132016177E961C>110 +D<13FE38038380380E00E0481370003C1378003813380078133C0070131C00F0131EA700 +70131C0078133C00381338003C1378001C13706C13E0380383803800FE0017177E961D> +I<EAFFFCEA1C07EB03C0130114E0A414C01303EB0700EA1FFC001CC7FCAAB47E13177E96 +19>I<EA0FC4EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FCEA +001C130E13061280A3EAC004EAE008EAD810EA87E00F177E9615>115 +D<38FF81FC381C00701420B0000C1340120E6C138038018300EA007C16177E961C>117 +D<38FF80FE381F0070000E13606C1340EB80803803C100EA01C3EA00E213F4137813387F +133E134E13C7EB8780380103C0EA0201380600E0000413F0000C1370003C137800FE13FF +18177F961C>120 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fq cmbx12 17.28 34 +/Fq 34 121 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1007FB512F0A3 +1C2E7AAD28>49 D<EB3FE03801FFFE0007EBFF80D80F8013C0391E003FE00038EB1FF000 +7CEB0FF8007EEB07FCB4FC018013FEA21403A2EA7F00003E1307C7FC15FCA2EC0FF8A215 +F0EC1FE015C0EC3F80EC7F00147E14F8495A495A495A49C7FC011E130E5B133849131E49 +131C485A48C7123C48B512FC5A5A5A4814F8B6FCA31F2E7CAD28>I<913A03FF80018002 +3FEBF00349B5EAFC0701079038003F0FD91FF8EB079FD93FC0EB01FFD9FF807F4848C812 +7F4848153F0007161F49150F485A001F1607A2485A1703127FA24992C7FCA212FFA9127F +A27FEF0380123FA26C7E1707000F17006C7E6D150E0003161E6C6C151C6C6C6C1478D93F +C05CD91FF8EB03E0D907FFEB3F800101D9FFFEC7FCD9003F13F80203138031317CB03A> +67 D<B812F0A3C6903880003FEE07F816031600A21778A21738A3171C1507A31700A25D +5D5D91B5FCA3EC803F818181A21707A392C7120EA4171EA2173CA2177C17FC1601160716 +3FB812F8A330317EB035>69 D<B812E0A3C6903880007FEE0FF016031601A21600A21770 +A31738A21507A21700A35D5D5D91B5FCA3EC803F818181A592C8FCACB612C0A32D317EB0 +33>I<DA03FF1303027FEBF00749B5EAFC0F01079038007E1FD91FF0EB0FBFD97FC0EB03 +FF49487F4848C87E485A0007824848815B001F82A2484881A2127FA24992C7FC12FFAA03 +07B512F8127F7FDB00011300123FA26C7EA2120F7F6C7E12036C7E6C6C7E6D6C5BD91FF8 +497ED907FFEB3E3F01019038FFFC1F6D6CEBF00F0203EB800335317CB03F>I<B61280A3 +C6EB8000B3B3A7B61280A319317EB01E>73 D<B67EA3000190C9FCB3A9EE0380A4160717 +00A25EA35E5E5E5E4B5A150FB7FCA329317DB030>76 D<B56C49B512C08080C66D903900 +03E0006E6E5AEBEFFC13E780EBE3FF01E17F01E07F6E7E143F816E7E6E7E6E7E14036E7E +16806E13C0ED7FE0ED3FF0151F16F8ED0FFCED07FEED03FF6F13818117C1EE7FE1EE3FF1 +EE1FF9EE0FFD160717FF828282177F173FA2171F170F486C1507B500E014031701A23A31 +7EB03F>78 D<B712E016FEEEFF80C6D9800013E0EE3FF0EE0FF8EE07FCA2EE03FEA217FF +A717FEA2EE07FC17F8160FEE3FE0EEFFC091B6120016F80280C8FCB3A2B67EA330317EB0 +37>80 D<B77E16F816FEC690398003FF809238007FE0EE1FF0707EA283160783A65F160F +5F4C5A4C5A4C5ADB03FFC8FC91B512F816E091388007F8ED01FC6F7E167F83707EA283A5 +83A4F0038017F8161F1900706C5AB6398003FE0E933801FFFC9338001FF039317EB03C> +82 D<007FB8FCA39039C00FF801D87E00EC003F007C82007882A200708200F01780A348 +1603A5C792C7FCB3AA017FB6FCA331307DAF38>84 D<B6D88003B51280A3C60180C73807 +C000715AB3AE137F4DC7FC80013F150EA26D6C5C6D6C5C6D6C5C6D6C495A903A00FF801F +C0023FB55A020F49C8FC020013E039317EB03E>I<B500FC91B5FCA3000390C8EA03C06C +17806E14076C170080017F150EA26E141E013F151C6E143C011F153880010F5D8001075D +A26E130101035D6E13036D5D15806D4AC7FCA26F5A027F130EEDE01E023F131CEDF03C02 +1F133815F8020F5BA2EDFCF002075B15FF6E5BA26E5BA26E90C8FCA3157EA2153CA23831 +7EB03D>I<EBFFF0000313FF390F803F809038C00FE0486C6C7EA26E7ED80FC07FEA0780 +C7FCA414FF131FEBFFE33803FC03EA0FF0EA1FC0123FEA7F80A2EAFF00A31407A2387F80 +0D393FC01DFE3A1FE078FFF03907FFE07FC6EB803F24207E9F27>97 +D<EA01F812FFA3120F1207ADEC3FE0ECFFFC9038FBE07F9039FF001F8049EB0FC04914E0 +49EB07F016F8A2ED03FCA316FEA816FCA3ED07F8A216F06DEB0FE06D14C001E7EB3F8090 +39C3C0FE00903880FFF89038003FC027327EB12D>I<EB0FFF017F13C03901FC01F03803 +F0033907E007F8120FEA1FC0003FEB03F0EC01E04848C7FCA312FFA8127FA36C6C131CA2 +001F14386C7E000714703903F001E03901FC07C039007FFF00EB0FF81E207D9F24>I<ED +0FC0EC07FFA3EC007F153FADEB07F8EB3FFF9038FE07BF3903F801FF3907E0007F120F48 +48133F123FA2485AA312FFA8127FA36C7EA2121F6C6C137F000714FF2603F00313E03A01 +FC0F3FFE38007FFEEB0FF027327DB12D>I<EB0FFC90387FFF803901FC0FC03903F003E0 +3907E001F0000F14F8391FC000FC003F14FEA24848137E157FA212FFA290B6FCA20180C7 +FCA4127FA36C6C1307121F150E6C7E6C6C131C6C6C13783900FE03E090383FFFC0903807 +FE0020207E9F25>I<EB01FE90380FFF8090381FC3C090387F07E09038FE0FF0120113FC +1203EC07E0EC018091C7FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C327EB119>I<90 +391FF007C09039FFFE3FE03A01F83F79F03907E00FC3000F14E19039C007E0E0001FECF0 +00A2003F80A5001F5CA2000F5CEBE00F00075C2603F83FC7FC3806FFFE380E1FF090C9FC +121EA2121F7F90B57E6C14F015FC6C806C801680000F15C0003FC7127F007EEC1FE0007C +140F00FC1407A4007EEC0FC0003E1580003F141FD80FC0EB7E003907F803FC0001B512F0 +D8001F90C7FC242F7E9F28>I<EA01F812FFA3120F1207ADEC07F8EC3FFEEC783F02C013 +809039F9801FC0EBFB0001FE14E05BA35BB3B500C3B5FCA328327DB12D>I<EA03C0487E +487E487EA46C5A6C5A6C5AC8FCA9EA01F8127FA31207B3A7B51280A311337DB217>I<EA +01F812FFA3120F1207B3B3A6B512C0A312327DB117>108 D<2703F007F8EB1FE000FFD9 +3FFEEBFFF8913A783F01E0FC02C090388300FE280FF1801FC6137F2607F30013CC01F602 +F8148001FC5CA3495CB3B500C3B5380FFFFCA33E207D9F43>I<3903F007F800FFEB3FFE +EC783F02C013803A0FF1801FC03807F30001F614E013FCA35BB3B500C3B5FCA328207D9F +2D>I<EB07FC90387FFFC03901FC07F03903F001F848486C7E4848137E001F147F003F15 +8049133F007F15C0A300FF15E0A8007F15C0A36C6CEB7F80A2001F15006C6C13FE00075C +3903F803F83901FE0FF039007FFFC0D907FCC7FC23207E9F28>I<3901F83FE000FFEBFF +FC9038FBE07F9039FF003F80D80FFEEB1FC06C48EB0FE04914F0ED07F8A216FC1503A216 +FEA816FC1507A216F8A2ED0FF06D14E06DEB1FC06DEB3F809039FBC0FE009038F8FFF8EC +3FC091C8FCABB512C0A3272E7E9F2D>I<3803F03F00FFEB7FC09038F1C3E01487390FF3 +0FF0EA07F6A29038FC07E0EC03C091C7FCA25BB2B512E0A31C207E9F21>114 +D<3801FF86000713FEEA1F00003C133E48131E140E12F8A36C90C7FCB47E13FC387FFFC0 +6C13F0806C7F00077F00017FEA003F01001380143F0060131F00E0130FA27E15007E6C13 +1E6C131C38FF807838F3FFF038C07F8019207D9F20>I<131CA5133CA3137CA213FC1201 +12031207381FFFFEB5FCA2D803FCC7FCB0EC0380A71201EC0700EA00FEEB7F0EEB3FFCEB +07F0192E7FAD1F>I<D801F8EB07E000FFEB03FFA3000FEB003F0007141FB3153FA20003 +147FA26C6CEBDFF03A00FE039FFF90387FFF1FEB0FFC28207D9F2D>I<B53A1FFFE03FF8 +A33C0FF000FE0007806D150300076EEB0700816D5D00039138FF800EA26C6C486D5A15DF +01FF153C6C9039038FE038A2D97F876D5A150702C714F0D93FCF6D5AECCE03D91FFEEBF9 +C09138FC01FD16FF010F5D4A7EA26D486DC7FCA20103147E4A133EA26D48131C35207E9F +3A>119 D<3A7FFF807FFCA33A03FC000F006C6C131E6C6C5BEC803890387FC078013F5B +90381FE1E090380FF3C0ECFF806D90C7FC6D5A13016D7E81815B903803DFE09038078FF0 +8190380F07FC90381E03FEEB3C01496C7E4914804848EB7FC00003EC3FE026FFFC01B5FC +A328207F9F2B>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fr cmsy10 10.95 1 +/Fr 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01 +800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15 +306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0 +D900FEC7FC272B7DA02E>13 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fs cmbx12 14.4 54 +/Fs 54 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<EB07F8EB3FFE90B5FC3901FC07803903F00FC03807C01FEA0F80121F130048EB0F +8091C7FC127EA3EAFE02EB1FF0EB3FFCEB603EEB801F00FF14809038000FC0A24814E0A4 +127EA4123E003F14C07EEC1F80D80F8013003807E07E6CB45A6C5B38003FC01B277DA622 +>I<EB7F803801FFF000077F380FC0FC381F803E48487E007E1480A2140F00FE14C0A315 +E0A5007E131FA26C133F6C132F380F80CF3807FF8F0001130FEA0008010013C0A3EC1F80 +123E127FEC3F00143E147E007E5B383E03F8381FFFE06C1380D801FEC7FC1B277DA622> +57 D<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F14 +80A249486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F080491303 +000181491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F8 +001FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EA +FE00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1F +F8B712E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF0 +0F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290 +C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F09039 +7FF007C0011FB512800107EBFE009038007FF028297CA831>I<B612FCEDFF8016E03A03 +FC001FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0 +A217C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0 +A33903FC001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3 +EBFC0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327 +297EA82C>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A31600 +1403A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387F +E003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F48488048488048 +4880485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E +6C7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5 +D8F00FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835 +>I<B512F0A33803FC00B3B1B512F0A314297EA819>I<B500F0EBFFFEA3D803FCC7EA0F00 +161E5E5E16E0ED03C04B5A4BC7FC151E5D15F04A5A4A5A1407140F4A7EEC7FF04A7EEBFD +E79038FFC3FCEC83FE9038FE01FF497E6F7E826F7E151F6F7E8215076F7E6F7E8281EE7F +80B539F00FFFFEA32F297EA835>75 D<B512FCA3D803FCC8FCB3A3ED01C0A415031680A2 +1507A2150FA2151F157F913801FF00B7FCA322297EA828>I<D8FFFE92383FFF80A26D5D +0003EFE000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB038FA3D987F0EB070FA2D983F8 +130EA2D981FC131CA3D980FE1338A2027F1370A291383F80E0A391381FC1C0A291380FE3 +80A2913807F700A3EC03FEA26E5AA26E5AD8FFFE0203B51280A2157039297DA840>I<D8 +FFFCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB87FCEB83FEEB81FF01801380 +147F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E1381ED7FC1ED3FE1ED1FF115 +0F16F9ED07FDED03FF8181167FA2163F161F160F1607D8FFFE14031601A230297EA835> +I<ECFFC0010F13FC90383F807F9039FE001FC0D801F8EB07E048486D7E48486D7E000F81 +48486D7EA24848147FA2007F168090C8123FA34816C0AA6C16806D147FA2003F1600A26C +6C14FEA26C6C495A6C6C495A6C6C495A6C6C495A6C6C495A90263FC0FFC7FC90380FFFFC +010013C02A297CA833>I<B612F815FF16C03A03FC003FE0ED07F0ED03F816FC150116FE +A716FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B512F0A327297EA82E>I< +ECFFC0010F13FC90383FC0FF9039FE001FC048486D7ED803F0EB03F000078148486D7E48 +486D7EA24848147FA2007F1680A290C8123FA24816C0AA6C16806D147FA2003F1600A26C +6C14FE143E3A0FE07F81FC00079038C1C1F83A03F18063F0D801F9EB67E0D800FFEB3FC0 +90263FC07FC7FC90380FFFFC01004913C0EC003C811601ED1F8316FF6F1380A21700816F +5A6F5A6F5A2A357CA833>I<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A6 +5E4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170E +A21503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>I<9038FF80600003EBF0E0 +000F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7F +FCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E0 +1303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA8 +25>I<007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A24815 +01A5C791C7FCB3A490B612C0A32A287EA72F>I<B500F0EBFFFEA3D803FCC7EA0380B3AA +0001ED07007F0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7 +FC2F297EA834>I<B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B +017F140E80013F5CA26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE03 +01015CECFF076D91C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA230 +297FA833>I<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E +13016C604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F16 +0E17F09126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703FC7003 +5BA2913AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E8002 +1E141EA242297FA845>I<B500F0EB3FFFA3D803FEC7EA03C06C6C15806C6DEB07005E6D +6C130E6E5B013F143C6D6C13386E5B010F14F06D6C5B6E485A01031303D901FF5B0387C7 +FC6D138FEC7FCE15FC143F6E5A5D140FAE0103B512C0A330297FA833>89 +D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA +0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B7E9A21 +>97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F09038F001F89038E0 +00FCA2157EA2157FA8157EA315FCA29038F001F89038F803F090389C0FE090380FFF8039 +0E01FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A248133E +007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE00E3803F83C3801FF +F838003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807F03F380FC00F381F +8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E07FFF3801FFE73800 +7F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F130048EB0F80127E15 +C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003803907C007003803 +F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC7FEA03F813F01207 +143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<9038FF80F00003EBE3 +F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E133E003F137E6C137C +380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14C06C14E06C14F012 +1F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC01F806CB512003800 +7FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E30FC001E413E0EBE80701 +F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0A3EA1F +C0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I<EAFFE0A3120FB3 +B2EAFFFEA30F2A7EA912>108 D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D8 +0FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A333 +1B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013D0A213 +E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E390FC01F80391F800FC0 +393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A2391F800FC0390FC01F +803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038EFFF809038FE0FE039 +0FF803F09038F001F801E013FC140015FEA2157FA8157E15FEA215FC140101F013F89038 +F807F09038FC0FE09038EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FF +C1F0EBC7FCEBC63E380FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>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: Ft cmtt10 10.95 91 +/Ft 91 127 df<127012F8B012701200A5127012F8A31270051C779B18>33 +D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5 +12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18> +I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C38013C7A338F1C0001279123F +6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EBC7001271EA79DEEA3FFEEA1F +F8EA07E0EA01C0A3120011247D9F18>I<EA3803387C0780A2EAEE0F1400A25B131EA213 +3EEA7C3CA2EA387CEA0078A213F85B12015BA212035BA21207EB8380EB87C0120FEB0EE0 +A2121F121EA2123E383C07C0A23818038013247E9F18>I<EA01C0EA07E0487EEA0E7048 +7EA4EB73F813F313E3380FC1C0EBC38013831303381F0700EA3F87EA7B8EEA71CEEAE1FC +12E0137CEB7870A2EA70FE387FFFE0EA3FC7380F03C0151C7F9B18>I<1238127CA2127E +123E120EA3121CA2123812F812F012C0070E789B18>I<137013F0EA01E0EA03C0EA0780 +EA0F00121E121C5AA25AA45AA81270A47EA27E121E7EEA0780EA03C0EA01F0120013700C +24799F18>I<126012F012787E7E7EEA07801203EA01C0A2EA00E0A41370A813E0A4EA01 +C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18>I<EA01C0A4EA41C138F1C780EA +FDDF387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C100EA01C0A41114 +7D9718>I<136013F0A7387FFFC0B512E0A26C13C03800F000A7136013147E9718>I<121C +123E127E127F123F121F1207120E121E127C12F81260080C788518>I<387FFFC0B512E0 +A26C13C013047E8F18>I<1230127812FCA2127812300606778518>I<1303EB0780A2130F +14005B131EA2133E133C137C1378A213F85B12015B12035BA212075B120F90C7FCA25A12 +1E123E123CA2127C127812F85AA2126011247D9F18>I<EA01F0EA07FC487EEA1F1FEA1C +0738380380007813C0EA7001A238E000E0A9EAF001007013C0A2EA780300381380381C07 +00EA1F1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203A21207120F123F12FF12FB12 +431203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA03F0EA0FFEEA3FFF387C0F80387003 +C0EAE00138F000E0A21260C7FCA2EB01C0A21303EB0780EB0F00131E5B5B5B485AEA07C0 +485A381E00E05AEA7FFFB5FC7E131C7E9B18>I<131F5B1377A213E7120113C7EA038712 +071307120E121E123C1238127812F0B512F8A338000700A6EB7FF0A3151C7F9B18>52 +D<383FFF80A30038C7FCA8EA3BF8EA3FFE7F383C0780383003C0EA0001EB00E0A2126012 +F0A238E001C0EA7003387C0F80383FFF00EA1FFCEA03F0131C7E9B18>I<137E48B4FC00 +071380380F83C0EA1E03121C3838018090C7FC5AA2EAE1F8EAE7FEB5FC38FE078038F803 +C0EAF001EB00E05AA21270A3383801C0EA3C03381E0780380FFF006C5AEA01F8131C7E9B +18>I<12E0B512E0A214C038E00380EB0700C65A131E131C5BA25B13F05BA2485AA3485A +A448C7FCA7131D7E9C18>I<EA03F8EA0FFE487E383E0F80EA3803387001C0A438380380 +EA3C07381FFF00EA07FC487EEA1F1F383C0780387001C000F013E0EAE000A4387001C0EA +7803383E0F80381FFF006C5AEA03F8131C7E9B18>I<1230127812FCA2127812301200A8 +1230127812FCA2127812300614779318>58 D<1218123C127EA2123C12181200A8121812 +3C127EA2123E121E120E121C123C127812F01260071A789318>I<14C0EB03E01307EB1F +C0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FCA2127F6C7EEA0FE06C7EEA01FC6C +7EEB3F80EB1FC0EB07E01303EB00C013187E9918>I<387FFFC0B512E0A26C13C0C8FCA4 +387FFFC0B512E0A26C13C0130C7E9318>I<126012F87E127F6C7EEA0FE06C7EEA01FC6C +7EEB3F80EB1FC0EB07E0A2EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FC5A +126013187E9918>I<EA0FF0EA3FFC48B4FCEA700F38F00380A2EA600738000F00133E5B +EA01F05B485AA55BC8FCA5EA0380487EA36C5A111C7D9B18>I<137CEA01FEEA07FF380F +8780381E03C0EA3C1DEA387F3870FFE0EA71E313C112E1EAE380A638E1C1C0127113E338 +70FF8038387F00EA3C1C381E00E0EA0F833807FFC00001138038007E00131C7E9B18>I< +137013F8A213D8A2EA01DCA3138CEA038EA4EA0707A5380FFF80A3EA0E03381C01C0A338 +7F07F000FF13F8007F13F0151C7F9B18>I<EA7FFCB5FC6C1380381C03C01301EB00E0A4 +130114C01307381FFF80140014C0EA1C03EB00E014F01470A414F014E01303387FFFC0B5 +1280387FFE00141C7F9B18>I<EBF8E0EA03FEEA07FFEA0F07EA1E03EA3C01EA38005AA2 +14005AA8127014E0A27E123C381E01C0EA0F073807FF803803FE00EA00F8131C7E9B18> +I<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114 +C01303EB0F80387FFF00485AEA7FF8141C7F9B18>I<B512F0A3381C0070A41400A2130E +A3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A3151C7F9B18>I<B512F0A3381C0070A4 +1400A2130EA3EA1FFEA3EA1C0EA390C7FCA7EAFFC0A3141C7E9B18>I<3801F1C0EA03FD +EA0FFFEA1F0FEA1C03123813011270A290C7FC5AA5EB0FF0131F130F387001C0A2130312 +38A2EA1C07EA1F0FEA0FFFEA03FDEA01F1141C7E9B18>I<387F07F038FF8FF8387F07F0 +381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F0151C7F9B18>I<EA7FFFB5 +12806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<3801FFC0A338000E00B3 +12F0A2133CEA7FFCEA3FF0EA0FC0121C7D9B18>I<387F07F038FF87F8387F07F0381C03 +C0EB07801400130E131E5B13385B13F0121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380 +A2EB01C0387F03F038FF87F8387F03F0151C7F9B18>I<EAFFC0A3001CC7FCB114E0A5B5 +FCA3131C7E9B18>I<38FC01F8EAFE03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A2 +13F81370A21300A638FE03F8A3151C7F9B18>I<387E07F038FF0FF8387F07F0381D81C0 +A313C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03 +151C7F9B18>I<EA0FFE383FFF804813C0EA7803EA700100F013E0EAE000B0EAF0010070 +13C0EA7C07EA7FFF6C1380380FFE00131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01E0 +13001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA +0FFE383FFF804813C0EA7803EA700100F013E0EAE000AE1370A2EAF079387039C0EA783F +EA7FFF6C1380380FFE00EA000FEB0780A2EB03C01301A213227E9B18>I<EA7FF8EAFFFE +6C7E381C0F80130314C01301A313031480130F381FFF005BA2EA1C0F7FEB0380A5149CA3 +387F01F8EAFF81387F00F0161C7F9B18>I<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A3 +90C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A2126012E0130100 +F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA238E07038A40000 +1300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F01380783C03803 +FF806C1300EA007C171C809B18>I<38FE03F8EAFF07EAFE03383C01E0001C13C0A3EA1E +03000E1380A438070700A4EA038EA4EA018C13DCA3EA00D813F8A21370151C7F9B18>I< +38FE03F8A338700070A36C13E0A513F8EA39FC13DCA2001913C0A3138CA2EA1D8DA31305 +000D1380EA0F07A2EA0E03151C7F9B18>I<387F0FE0139F130F380E0700120FEA070E13 +8EEA039C13DCEA01F8A212005B137013F07F487E13DCEA039E138EEA070F7F000E138013 +03001E13C0387F07F000FF13F8007F13F0151C7F9B18>I<38FE03F8EAFF07EAFE03381C +01C0EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3EA00F8A21370A9EA01FC48 +7E6C5A151C7F9B18>I<383FFFE05AA2387001C01303EB07801400C65A131E131C133C5B +137013F0485A5B1203485A90C7FC5A001E13E0121C123C5A1270B5FCA3131C7E9B18>I< +EAFFF8A3EAE000B3ACEAFFF8A30D24779F18>I<126012F0A27E1278127C123CA2123E12 +1E121F7EA27F12077F1203A27F12017F12007F1378A2137C133C133E131EA2131F7F1480 +1307A2EB030011247D9F18>I<EAFFF8A3EA0038B3ACEAFFF8A30D247F9F18>I<387FFFC0 +B512E0A26C13C013047E7F18>95 D<1206121E123E12381270A212E0A312F812FC127CA2 +1238070E789E18>I<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF1207121FEA7F +03127812E0A3EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>I<127E12FE127E12 +0EA5133EEBFF80000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFF +C0000E138038063E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838030048C7FC +A25AA61270EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I<EB1F80133F +131F1303A5EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007A2EA380FEA +3C1F381FFFF0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA3E0F383807 +80EA7003A238E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF8000071300EA +01F812147D9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0B5FCA23801 +C000AEEA7FFFA3131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00487EA5EA1C +0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F038700070481338 +A4007813F0EA7E03381FFFC06C13803801FC00151F7F9318>I<127E12FE127E120EA513 +3EEBFF80000F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC171C809B18> +I<EA0380EA07C0A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C18>I<1338 +137CA313381300A4EA0FFCA3EA001CB3A4EA6038EAF078EAFFF0EA7FE0EA3F800E277E9C +18>I<127E12FE127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA +0E0F7FEB038014C0387FC7F812FF127F151C7F9B18>I<EAFFC0A31201B3A4B51280A311 +1C7D9B18>I<38F9C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB +3E3E1714809318>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC7FC38 +FFE7FE387FC7FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A238E0 +00E0A5EAF001007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318>I< +EA7E3E38FEFF80007F13C0380FC1E01380EB0070120E1438A6000F1370A2EB80E013C1EB +FFC0000E1380EB3E0090C7FCA7EA7FC0487E6C5A151E809318>I<3801F380EA07FBEA1F +FFEA3E1FEA380FEA7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3EA00 +03A7EB1FF0EB3FF8EB1FF0151E7E9318>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0 +005BA290C7FCA9EAFFFC7F5B14147E9318>I<EA07F7EA3FFF5AEA780FEAE007A3007CC7 +FCEA7FE0EA1FFCEA03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F01114 +7D9318>I<487E1203A4387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C1380 +EB3E0013197F9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE +3801FCFC1714809318>I<387F8FF000FF13F8007F13F0381C01C0380E0380A338070700 +A3138FEA038EA3EA01DCA3EA00F8A2137015147F9318>I<38FF07F8138F1307383800E0 +A4381C01C0137113F9A213D9EA1DDD000D1380A3138DEA0F8FA23807070015147F9318> +I<387F8FF0139F138F380F0700EA078EEA039EEA01DC13F81200137013F07FEA01DCEA03 +9E138EEA0707000E1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000FF13 +F8007F13F0380E01C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013DC13 +78A31370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA23870 +01E0EB03C0EB078038000F00131E5B13F8485AEA03C0485A380F0070121E5A5AB512F0A3 +14147F9318>I<EB07E0131F137FEB780013E0AB1201EA7FC0485AA26C7EEA01E01200AB +1378EB7FE0131F130713247E9F18>I<126012F0B3B012600424769F18>I<127CB4FC13C0 +1203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0005BABEA03C012FF90C7FC127C13247E9F18 +>I<EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA60C00F067C9B18>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fu cmr10 10.95 77 +/Fu 77 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7 +B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701 +A290C7FCA6B512E0EA0700B2383FC3FC1620809F19>I<EB3FE013E0EA01C1EA0381EA07 +00A8B5FCEA0700B2383FE7FC1620809F19>I<90381F81F89038F04F043901C07C063903 +80F80FEB00F05A0270C7FCA6B7FC3907007007B23A3FE3FE3FE02320809F26>I<EA7038 +EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008A2EA2010EA40200F0E7F9F17>34 +D<1340A2EA03F0EA0C4EEA10413820408012600040134038C041C01343A238E04180EB40 +001270127CEA3FC0EA1FF86C7EEA03FEEA007FEB4F801343EB41C0A2EAF040A312801480 +EA404100201300EA3042EA0C4CEA03F0EA0040A312257EA117>36 +D<127012F812FCA212741204A31208A21210A212201240060E7C9F0D>39 +D<13401380EA01005A12061204120C5AA212381230A212701260A412E0AC1260A4127012 +30A212381218A27E120412067E7EEA008013400A2E7BA112>I<7E12407E12307E120812 +0C7EA212077EA213801201A413C0AC1380A412031300A25A1206A25A120812185A12205A +5A0A2E7EA112>I<127012F012F8A212781208A31210A31220A21240050E7C840D>44 +D<EAFFF0A20C02808A0F>I<127012F8A3127005057C840D>I<144014C0EB0180A3EB0300 +A31306A25BA35BA35BA25BA35BA3485AA348C7FCA21206A35AA35AA25AA35AA35AA2122D +7EA117>I<EA03F0EA0E1C487EEA1806EA380738700380A400F013C0AD00701380A3EA78 +0700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>I<13801203120F12F31203B3A6EA +07C0EA7FFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00401380128000F013C0EAF803 +A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7FC000613405A5A00101380EA +3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F007813801307A2EA380F1200 +1400A2131E131C1370EA07F0EA003C130E130FEB0780A214C0122012F8A300F013801240 +EB0F00EA200EEA183CEA07F0121F7E9D17>I<1306A2130EA2131E132EA2134E138EA2EA +010E1202A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17> +I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA180EEA10071480EA0003A214C0 +A3127012F0A200E013801240EB0700EA20066C5AEA0838EA07E0121F7E9D17>I<137CEA +0182EA0701380E0380EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEAF406EA +F807EB0380A200F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D17 +>I<1240387FFFE014C0A23840008038800100A21302485AA25B5BA25BA21360A213E05B +1201A41203A76C5A131F7E9D17>I<EA03F0EA0C0CEA1006EA3003382001801260A31270 +38780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F38300F80EA6007EB01C0 +12C01300A31480EA600100201300EA1002EA0C0CEA03F0121F7E9D17>I<EA03F0EA0E18 +487E487E13071270EB038012F0A214C0A5EA7007A21238EA180BEA0E13EA03E338000380 +A3EB07001230EA7806130EEA700CEA2018EA1070EA0FC0121F7E9D17>I<127012F8A312 +701200AA127012F8A3127005147C930D>I<127012F8A312701200AA127012F012F8A212 +781208A31210A31220A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB20 +78A3497EA2EBC03EEB801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E14E0 +39FF801FFE1F207F9F22>65 D<B512E0380F0078141EA2801580A515005C141E147CEBFF +F0EB007C141FEC0F80EC07C0140315E0A515C014071580EC0F00143EB512F01B1F7E9E20 +>I<90380FE0109038381C309038E002703803C00139078000F048C71270121E15305A15 +10127C127800F81400A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E003 +00EB380CEB0FF01C217E9F21>I<B512F83807801EEC0780EC03C0EC01E0EC00F0157015 +78A2153CA3153EA8153CA2157C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F7F +9E23>I<B61280380F000F14031401140015C01540A314401500A214C0130113FF130113 +001440A3EC0020A31540A315C01401EC0380140FB6FC1B1F7E9E1F>I<B6128038078007 +1401A2140015C01540A4EC2000A3146014E013FF138014601420A391C7FCA87FEAFFFE1A +1F7F9E1E>I<90380FE02090387818609038E004E03803800238070001481300001E1460 +A25A1520127C127800F81400A7EC7FFCEC03E000781301127C123CA27EA27E7E38038002 +3900E00460903878182090380FE0001E217D9F24>I<39FFF07FF8390F000780AD90B5FC +EB0007AF39FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<39FFF0 +07FC390F0003E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21E01341 +EB80F0EB0078A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>75 +D<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E1C>I<B4 +6CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D1383A29038 +0E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A> +I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03 +C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D1F7E9E22 +>I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0A2007C14 +F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E06CEB03C0 +6C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80 +EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<B512 +E0380F80780007131E80EC0780A215C0A41580A2EC0F00141E1478EBFFE0EB8060143814 +3C141C141EA3141FA315011581140F390FC0078239FFFC03C4C812F820207F9E22>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<EA0804EA1008EA2010A2EA4020A2EA80 +40A3EAB85CEAFC7EA2EA7C3EEA381C0F0E7A9F17>I<12FFA21203B3B3A512FFA2082D80 +A10D>I<120812101220A21240A21280A312B812FCA2127C1238060E7D9F0D>96 +D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA0F8EEA1E0E1238127800F01310A313 +1E127838386720380F83C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00 +C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C15207E9F +19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0A61270127800381380A2381C +0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112 +381278127012F0A61270A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA +0E1C487E487EA238700380A212F0B5FC00F0C7FCA41270A26C1380A2381C0100EA0706EA +01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE010 +20809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33 +E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C13 +C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A212 +1CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F +9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA61 +80EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0 +EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12FC +121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D019018001EEBE01CA200 +1C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF +8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A60070 +13E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA1C7CEAFD87381E0180 +14C0381C00E014F014701478A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7FC +A8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03EA38011278127012F0A61270 +12781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18 +EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE000 +127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F147F +9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F +9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83F8 +383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3 +132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807 +04138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB40081E147F +9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F0137013 +7813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC16147F9318>I< +38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8 +A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E1260 +EA401C133813781370EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA7006 +130EEAFFFE10147F9314>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fv cmbx12 20.736 14 +/Fv 14 122 df<DB1FFC14C00203B5EAC001021FECF003027FECFC07903B01FFFC00FE0F +010701C0EB1F9F4948C7EA07FFD93FF880494814004948157F485B4A153F4890C9121F48 +5A000F170F5B001F1707A2485A1803A2127FA24993C8FCA212FFAA041FB61280127FA27F +DC0001EBC000123FA36C7EA26C7EA26C7E7E6C7F806C7F6D6C5CEB3FFCD90FFF5C6D01C0 +EB1FBF010101FCEBFF1F6D6CB5EAFE0F021FECF8030203ECE0009126001FFEC9FC413D7B +BB4C>71 D<B612FEA426007FF0C9FCB3ADEF03C0A517071880A3170FA3171FA2173F177F +17FF5E04071300163FB9FCA4323B7DBA3A>76 D<B500F00207B512E0808080D8007F9239 +0007E0006E6F5A81017B7F81137901787F6E7E6E7E81141F6E7E6E7F6E7F82806E7F6F7E +6F7E826F7E816F13806F13C017E06F13F081EE7FF8EE3FFC17FEEE1FFF827013837013C3 +18E37013F382EF7FFBEF3FFFA283838383A28383187F183FA201FC161FB500FC150F1807 +1803A2433B7CBA4C>78 D<B712F8EEFFC017F817FE3B007FF0001FFF040313C004007F71 +7E717EA284171FA284A660A2173F604D5A604C485A4C5BDC1FFEC8FC91B612F817C0A291 +39F0007FF0EE1FF8707E707E707E8482A284A584A5F101E0A27013F0A2F103C0EF7FF8B6 +00F890393FFC078094381FFE0F0507B51200050113FCCBEA1FF0433C7CBA48>82 +D<B600F80107B512E0A426007FF0C83807E000725AB3B3A3013F4C5AA280011F4CC7FCA2 +6D6C151E0107163E6E5D6D6C5D6D6D13019026007FE0EB0FE0DA3FFCEB7FC0020FB65A02 +034AC8FCDA007F13F003071380433C7DBA4A>85 D<EB3FFE48B512E0000714F8390FE007 +FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F38 +03FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F +0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4 +FC021F13F0027F13FC9138FC03FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF0 +17F8A2EE07FCA317FEA917FCA3160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EB +FF009039F0FC07FE91387FFFF8D9E01F13E09026C003FEC7FC2F3C7DBB36>I<EE3F80ED +3FFFA4150181B0ECFF80010F13F0013F13FC9038FFC03F3901FE000F4848130348487F48 +487F121F485AA2127F5BA312FFA9127FA36C7EA2121F6C6C5B6C6C5B00035CD801FE011F +13C02700FF807E13FE90387FFFF8010F13E0010113002F3C7DBB36>100 +D<49B47E010F13F0017F13FC9038FF81FE3A03FE007F80D807F8133F4848EB1FC0ED0FE0 +485A003F15F01507485A16F8A212FFA290B6FCA301C0C8FCA4127FA36C7E1678121F7F00 +0F15F06C6C13016C6CEB03E06C6CEB0FC03A00FFC07F8090393FFFFE00010F13F8010013 +C025267DA52C>I<EA01E0EA07F8487EA2487EA46C5AA26C5AEA01E0C8FCAB13FE127FA4 +12071203B3AAB512F0A4143D7DBC1A>105 D<13FE12FFA412071203B3B3AEB512F8A415 +3C7DBB1A>108 D<D801FCEBFF8000FF010313F0020F7F91381E03FC91383801FE000701 +607F0003497E01FD15805C01FFC7FCA35BB3A4B5D8F83F13FEA42F267CA536>110 +D<3901FC03F000FFEB0FFC4AB4FC91383C3F80EC707F00079038E0FFC000035BEBFD80A2 +01FFEB7F809138003F00151E92C7FC5BB3A3B512FCA422267DA528>114 +D<B500F0EBFFFCA4D803FEC7EA1F806D15006C151E806C5DA26E137C017F14786E13F801 +3F5CECF001011F5CECF803010F5CA2ECFC0701075CECFE0F010391C7FC6E5A6D131E15BE +6D13BC15FC6E5AA36E5AA26E5AA26E5AA26E5AA2140F92C8FC5C141E0008133E007F133C +147C38FF807814F8EB81F0EB83E06C485A387C1F80D83FFFC9FCEA1FFCEA07F02E377EA5 +33>121 D E +%EndDVIPSBitmapFont +end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 300dpi +TeXDict begin +%%BeginPaperSize: Letter +letter +%%EndPaperSize + +%%EndSetup +%%Page: 1 1 +1 0 bop 75 659 a Fv(GNU)33 b(Readline)h(Library)p 75 +709 1800 17 v 936 757 a Fu(Edition)17 b(4.2,)c(for)i +Ft(Readline)f(Library)g Fu(V)l(ersion)i(4.2.)1692 811 +y(Apr)f(2001)75 2467 y Fs(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 217 a Fu(This)14 b(do)q(cumen)o(t)h(describ)q(es)g(the)f +(GNU)g(Readline)h(Library)l(,)f(a)g(utilit)o(y)h(whic)o(h)f(aids)g(in)h +(the)f(consistency)75 271 y(of)h(user)g(in)o(terface)h(across)e +(discrete)i(programs)e(that)h(need)h(to)e(pro)o(vide)i(a)f(command)g +(line)i(in)o(terface.)75 339 y(Published)g(b)o(y)f(the)f(F)l(ree)g +(Soft)o(w)o(are)f(F)l(oundation)75 394 y(59)h(T)l(emple)h(Place,)f +(Suite)i(330,)75 448 y(Boston,)d(MA)h(02111)f(USA)75 +516 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 570 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 +638 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 692 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 747 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 +814 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 869 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 924 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 Fr(\015)h Fu(1988-2001)f(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 Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077 +b(1)75 149 y Fq(1)41 b(Command)28 b(Line)e(Editing)137 +271 y Fu(This)16 b(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f +(of)g(the)g Fp(gnu)g Fu(command)g(line)i(editing)f(in)o(terface.)75 +403 y Fs(1.1)33 b(In)n(tro)r(duction)24 b(to)e(Line)i(Editing)137 +501 y Fu(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 +569 y(The)h(text)f Fo(C-k)h Fu(is)g(read)g(as)f(`Con)o(trol-K')g(and)h +(describ)q(es)h(the)f(c)o(haracter)f(pro)q(duced)h(when)h(the)1831 +567 y Fn(h)p 1844 541 19 2 v 1844 569 a Fm(k)p 1844 577 +V 1860 567 a Fn(i)75 624 y Fu(k)o(ey)d(is)h(pressed)g(while)g(the)f +(Con)o(trol)g(k)o(ey)g(is)h(depressed.)137 693 y(The)g(text)g +Fo(M-k)f Fu(is)i(read)f(as)f(`Meta-K')g(and)h(describ)q(es)i(the)e(c)o +(haracter)f(pro)q(duced)i(when)g(the)f(Meta)75 747 y(k)o(ey)e(\(if)g(y) +o(ou)g(ha)o(v)o(e)g(one\))g(is)h(depressed,)g(and)f(the)930 +745 y Fn(h)p 942 719 V 942 747 a Fm(k)p 942 755 V 958 +745 a Fn(i)987 747 y Fu(k)o(ey)g(is)h(pressed.)20 b(The)15 +b(Meta)e(k)o(ey)h(is)h(lab)q(eled)1779 745 y Fn(h)p 1791 +719 72 2 v 1791 747 a Fm(AL)m(T)p 1791 755 V 1860 745 +a Fn(i)75 802 y Fu(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 800 y Fn(h)p 1225 774 V 1225 802 a Fm(AL)m(T)p 1225 +810 V 1294 800 a Fn(i)1322 802 y Fu(\(usually)i(to)e(either)i(side)g +(of)f(the)75 857 y(space)j(bar\),)f(the)388 855 y Fn(h)p +400 829 V 400 857 a Fm(AL)m(T)p 400 865 V 469 855 a Fn(i)499 +857 y Fu(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 855 y Fn(h)p +1709 829 V 1709 857 a Fm(AL)m(T)p 1709 865 V 1778 855 +a Fn(i)1808 857 y Fu(k)o(ey)75 912 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 967 +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 1035 +y(If)c(y)o(ou)g(do)g(not)f(ha)o(v)o(e)h(a)f(Meta)h(or)694 +1033 y Fn(h)p 706 1007 V 706 1035 a Fm(AL)m(T)p 706 1043 +V 775 1033 a Fn(i)801 1035 y Fu(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 +1090 y(k)o(eystrok)o(e)f(can)i(b)q(e)g(generated)f(b)o(y)g(t)o(yping) +809 1088 y Fn(h)p 822 1062 70 2 v 822 1090 a Fm(ESC)p +822 1098 V 888 1088 a Fn(i)915 1090 y Fl(\014rst)p Fu(,)g(and)g(then)h +(t)o(yping)1339 1088 y Fn(h)p 1351 1062 19 2 v 1351 1090 +a Fm(k)p 1351 1098 V 1368 1088 a Fn(i)1383 1090 y Fu(.)18 +b(Either)12 b(pro)q(cess)f(is)h(kno)o(wn)75 1145 y(as)j +Fk(metafying)k Fu(the)425 1143 y Fn(h)p 437 1117 V 437 +1145 a Fm(k)p 437 1153 V 454 1143 a Fn(i)484 1145 y Fu(k)o(ey)l(.)137 +1214 y(The)i(text)e Fo(M-C-k)h Fu(is)h(read)f(as)f(`Meta-Con)o(trol-k') +g(and)h(describ)q(es)i(the)e(c)o(haracter)g(pro)q(duced)h(b)o(y)75 +1268 y Fk(metafying)e Fo(C-k)p Fu(.)137 1337 y(In)g(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 1335 y Fn(h)p 1396 1309 +73 2 v 1396 1337 a Fm(DEL)p 1396 1345 V 1467 1335 a Fn(i)1482 +1337 y Fu(,)1514 1335 y Fn(h)p 1526 1309 70 2 v 1526 +1337 a Fm(ESC)p 1526 1345 V 1593 1335 a Fn(i)1608 1337 +y Fu(,)1640 1335 y Fn(h)p 1652 1309 72 2 v 1652 1337 +a Fm(LFD)p 1652 1345 V 1722 1335 a Fn(i)1737 1337 y Fu(,)1768 +1335 y Fn(h)p 1780 1309 70 2 v 1780 1337 a Fm(SPC)p 1780 +1345 V 1847 1335 a Fn(i)1862 1337 y Fu(,)75 1390 y Fn(h)p +87 1364 76 2 v 87 1392 a Fm(RET)p 87 1399 V 160 1390 +a Fn(i)175 1392 y Fu(,)23 b(and)306 1390 y Fn(h)p 318 +1364 74 2 v 318 1392 a Fm(T)m(AB)p 318 1399 V 390 1390 +a Fn(i)427 1392 y Fu(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 +1447 y(Section)d(1.3)f([Readline)h(Init)g(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 +1445 y Fn(h)p 1456 1419 72 2 v 1456 1447 a Fm(LFD)p 1456 +1454 V 1526 1445 a Fn(i)1560 1447 y Fu(k)o(ey)l(,)h(t)o(yping)1802 +1445 y Fn(h)p 1814 1419 49 2 v 1814 1447 a Fm(C-j)p 1814 +1454 V 1860 1445 a Fn(i)75 1501 y Fu(will)c(pro)q(duce)g(the)f(desired) +h(c)o(haracter.)j(The)874 1499 y Fn(h)p 886 1473 76 2 +v 886 1501 a Fm(RET)p 886 1509 V 959 1499 a Fn(i)989 +1501 y Fu(k)o(ey)c(ma)o(y)f(b)q(e)h(lab)q(eled)1385 1499 +y Fn(h)p 1397 1473 109 2 v 1397 1501 a Fm(Return)p 1397 +1509 V 1503 1499 a Fn(i)1533 1501 y Fu(or)1588 1499 y +Fn(h)p 1600 1473 86 2 v 1600 1501 a Fm(En)o(ter)p 1600 +1509 V 1684 1499 a Fn(i)1714 1501 y Fu(on)f(some)75 1556 +y(k)o(eyb)q(oards.)75 1688 y Fs(1.2)33 b(Readline)23 +b(In)n(teraction)137 1786 y Fu(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 1841 y(\014rst)k(w)o(ord)f(on)h +(the)h(line)h(is)e(missp)q(elled.)26 b(The)16 b(Readline)i(library)f +(giv)o(es)f(y)o(ou)g(a)g(set)g(of)g(commands)g(for)75 +1896 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 1950 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 2005 +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 +2060 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 2058 y Fn(h)p 1172 2032 76 +2 v 1172 2060 a Fm(RET)p 1172 2068 V 1245 2058 a Fn(i)1260 +2060 y Fu(.)k(Y)l(ou)16 b(do)f(not)h(ha)o(v)o(e)f(to)g(b)q(e)h(at)f +(the)75 2115 y(end)k(of)e(the)h(line)i(to)d(press)563 +2113 y Fn(h)p 575 2087 V 575 2115 a Fm(RET)p 575 2122 +V 648 2113 a Fn(i)663 2115 y Fu(;)i(the)f(en)o(tire)h(line)g(is)g +(accepted)f(regardless)g(of)g(the)g(lo)q(cation)g(of)g(the)75 +2170 y(cursor)d(within)h(the)g(line.)75 2284 y Fj(1.2.1)30 +b(Readline)20 b(Bare)g(Essen)n(tials)137 2382 y Fu(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 2437 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 2492 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)g(other)f(c)o(haracters.)19 +b(In)c(that)e(case,)i(y)o(ou)f(can)g(t)o(yp)q(e)h Fo(C-b)f +Fu(to)g(mo)o(v)o(e)f(the)i(cursor)f(to)g(the)g(left,)h(and)75 +2670 y(then)h(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)g Fo(C-f)p Fu(.)p eop +%%Page: 2 4 +2 3 bop 75 -58 a Fu(2)1322 b(GNU)15 b(Readline)h(Library)137 +149 y(When)h(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 +204 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 259 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 314 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 +369 y(for)k(editing)h(the)f(text)g(of)g(an)g(input)h(line)h(follo)o +(ws.)75 449 y Fo(C-b)168 b Fu(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o +(haracter.)75 530 y Fo(C-f)168 b Fu(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h +(c)o(haracter.)75 608 y Fn(h)p 87 582 73 2 v 87 610 a +Fm(DEL)p 87 618 V 158 608 a Fn(i)188 610 y Fu(or)244 +608 y Fn(h)p 256 582 159 2 v 256 610 a Fm(Bac)o(kspace)p +256 618 V 412 608 a Fn(i)315 665 y Fu(Delete)h(the)f(c)o(haracter)g(to) +f(the)h(left)h(of)f(the)g(cursor.)75 745 y Fo(C-d)168 +b Fu(Delete)16 b(the)f(c)o(haracter)g(underneath)h(the)f(cursor.)75 +825 y(Prin)o(ting)h(c)o(haracters)315 880 y(Insert)f(the)h(c)o +(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h(cursor.)75 +961 y Fo(C-_)g Fu(or)f Fo(C-x)h(C-u)315 1015 y Fu(Undo)i(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 1070 y(line.)75 +1151 y(\(Dep)q(ending)i(on)f(y)o(our)g(con\014guration,)g(the)863 +1149 y Fn(h)p 875 1123 V 875 1151 a Fm(Bac)o(kspace)p +875 1159 V 1032 1149 a Fn(i)1063 1151 y Fu(k)o(ey)g(b)q(e)h(set)f(to)f +(delete)i(the)f(c)o(haracter)g(to)f(the)75 1206 y(left)h(of)f(the)h +(cursor)f(and)g(the)596 1204 y Fn(h)p 608 1178 73 2 v +608 1206 a Fm(DEL)p 608 1213 V 679 1204 a Fn(i)710 1206 +y Fu(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 1260 y Fo(C-d)p Fu(,)e(rather)h(than)g(the) +g(c)o(haracter)g(to)f(the)i(left)f(of)g(the)g(cursor.\))75 +1374 y Fj(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i(Commands)137 +1471 y Fu(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 1526 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 1580 y(to)h Fo(C-b)p +Fu(,)h Fo(C-f)p Fu(,)f Fo(C-d)p Fu(,)g(and)522 1578 y +Fn(h)p 534 1552 V 534 1580 a Fm(DEL)p 534 1588 V 605 +1578 a Fn(i)619 1580 y Fu(.)23 b(Here)16 b(are)g(some)f(commands)h(for) +f(mo)o(ving)h(more)g(rapidly)h(ab)q(out)f(the)75 1635 +y(line.)75 1716 y Fo(C-a)168 b Fu(Mo)o(v)o(e)14 b(to)h(the)g(start)f +(of)h(the)g(line.)75 1796 y Fo(C-e)168 b Fu(Mo)o(v)o(e)14 +b(to)h(the)g(end)h(of)f(the)g(line.)75 1876 y Fo(M-f)168 +b Fu(Mo)o(v)o(e)14 b(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 1957 +y Fo(M-b)168 b Fu(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75 +2037 y Fo(C-l)168 b Fu(Clear)15 b(the)h(screen,)f(reprin)o(ting)h(the)f +(curren)o(t)g(line)i(at)e(the)g(top.)137 2118 y(Notice)e(ho)o(w)f +Fo(C-f)g Fu(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)i +Fo(M-f)e Fu(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)18 +b(It)13 b(is)g(a)f(lo)q(ose)75 2173 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 2227 y(w)o(ords.)75 +2341 y Fj(1.2.3)30 b(Readline)20 b(Killing)h(Commands)137 +2438 y Fk(Killing)26 b Fu(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 2493 y(usually)f(b)o(y)f Fk(y)o(anking)22 +b Fu(\(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 +2547 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 Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077 +b(3)137 149 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 Fk(kill-ring)p Fu(.)21 +b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75 +204 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 259 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 +314 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 380 y(Here)h(is)f(the)h(list)g +(of)e(commands)h(for)g(killing)j(text.)75 458 y Fo(C-k)168 +b Fu(Kill)17 b(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 535 y +Fo(M-d)168 b Fu(Kill)15 b(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 590 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)f +Fo(M-f)p Fu(.)75 668 y Fo(M-)123 666 y Fn(h)p 135 640 +73 2 v 135 668 a Fm(DEL)p 135 675 V 206 666 a Fn(i)315 +668 y Fu(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 +723 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 777 y Fo(M-b)p Fu(.)75 855 y Fo(C-w)168 b +Fu(Kill)18 b(from)d(the)g(cursor)h(to)f(the)g(previous)i(whitespace.)22 +b(This)16 b(is)g(di\013eren)o(t)g(than)f Fo(M-)1777 853 +y Fn(h)p 1789 827 V 1789 855 a Fm(DEL)p 1789 863 V 1860 +853 a Fn(i)315 910 y Fu(b)q(ecause)h(the)f(w)o(ord)g(b)q(oundaries)h +(di\013er.)137 987 y(Here)21 b(is)h(ho)o(w)e(to)g Fk(y)o(ank)j +Fu(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 1042 y(recen)o(tly-killed)d +(text)d(from)f(the)i(kill)h(bu\013er.)75 1120 y Fo(C-y)168 +b Fu(Y)l(ank)15 b(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 1198 +y Fo(M-y)168 b Fu(Rotate)16 b(the)h(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 1252 y(command)d(is)h Fo(C-y)f Fu(or)f Fo(M-y)p Fu(.)75 +1361 y Fj(1.2.4)30 b(Readline)20 b(Argumen)n(ts)137 1457 +y Fu(Y)l(ou)15 b(can)g(pass)f(n)o(umeric)i(argumen)o(ts)e(to)g +(Readline)h(commands.)20 b(Sometimes)15 b(the)g(argumen)o(t)e(acts)75 +1511 y(as)20 b(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)g(it)h(is)f +(the)g Fl(sign)j Fu(of)c(the)h(argumen)o(t)g(that)f(is)i(signi\014can)o +(t.)35 b(If)20 b(y)o(ou)75 1566 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 1621 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 1676 y(the)f(line,)i(y)o(ou)e(migh)o(t)g +(t)o(yp)q(e)g(`)p Ft(M--)f(C-k)p Fu('.)137 1742 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 1797 +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 Ft(-)p Fu('\),)d(then)j(the)f(sign)h(of)f +(the)h(argumen)o(t)75 1852 y(will)21 b(b)q(e)f(negativ)o(e.)31 +b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g(t)o(yp)q(ed)g(one)g(meta)g(digit)h +(to)e(get)h(the)g(argumen)o(t)f(started,)h(y)o(ou)75 +1906 y(can)c(t)o(yp)q(e)f(the)h(remainder)g(of)f(the)g(digits,)h(and)g +(then)g(the)f(command.)20 b(F)l(or)13 b(example,)i(to)f(giv)o(e)h(the)f +Fo(C-d)75 1961 y Fu(command)19 b(an)f(argumen)o(t)g(of)g(10,)h(y)o(ou)f +(could)i(t)o(yp)q(e)f(`)p Ft(M-1)14 b(0)h(C-d)p Fu(',)k(whic)o(h)g +(will)h(delete)g(the)f(next)g(ten)75 2016 y(c)o(haracters)14 +b(on)i(the)f(input)h(line.)75 2125 y Fj(1.2.5)30 b(Searc)n(hing)21 +b(for)f(Commands)h(in)f(the)h(History)137 2220 y Fu(Readline)d(pro)o +(vides)e(commands)g(for)g(searc)o(hing)g(through)g(the)g(command)g +(history)g(for)g(lines)i(con-)75 2275 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 Fk(incremen)o(tal)e Fu(and)e Fk(non-incremen)o(tal)p +Fu(.)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)g(displa)o(ys)f(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)h Fo(C-r)p +Fu(.)k(T)o(yping)d Fo(C-s)e Fu(searc)o(hes)h(forw)o(ard)e(through)h +(the)h(history)l(.)20 b(The)15 b(c)o(haracters)f(presen)o(t)75 +2615 y(in)20 b(the)f(v)m(alue)h(of)f(the)g Ft(isearch-terminators)d +Fu(v)m(ariable)k(are)f(used)h(to)e(terminate)h(an)g(incremen)o(tal)75 +2670 y(searc)o(h.)31 b(If)19 b(that)f(v)m(ariable)i(has)f(not)f(b)q +(een)i(assigned)g(a)e(v)m(alue,)j(the)1289 2668 y Fn(h)p +1301 2642 70 2 v 1301 2670 a Fm(ESC)p 1301 2678 V 1368 +2668 a Fn(i)1402 2670 y Fu(and)e Fo(C-J)f Fu(c)o(haracters)g(will)p +eop +%%Page: 4 6 +4 5 bop 75 -58 a Fu(4)1322 b(GNU)15 b(Readline)h(Library)75 +149 y(terminate)21 b(an)g(incremen)o(tal)i(searc)o(h.)37 +b Fo(C-g)21 b Fu(will)i(ab)q(ort)e(an)g(incremen)o(tal)h(searc)o(h)f +(and)g(restore)g(the)75 204 y(original)16 b(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 259 +y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 324 y(T)l(o)g(\014nd)i +(other)e(matc)o(hing)g(en)o(tries)h(in)h(the)e(history)h(list,)g(t)o +(yp)q(e)f Fo(C-r)g Fu(or)g Fo(C-s)g Fu(as)h(appropriate.)k(This)75 +379 y(will)15 b(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 434 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) +h(command)e(will)j(terminate)e(the)75 489 y(searc)o(h)10 +b(and)h(execute)g(that)f(command.)18 b(F)l(or)10 b(instance,)i(a)1063 +487 y Fn(h)p 1076 461 76 2 v 1076 489 a Fm(RET)p 1076 +496 V 1149 487 a Fn(i)1174 489 y Fu(will)g(terminate)f(the)g(searc)o(h) +f(and)h(accept)75 543 y(the)k(line,)h(thereb)o(y)f(executing)g(the)g +(command)g(from)f(the)g(history)h(list.)20 b(A)15 b(mo)o(v)o(emen)o(t)f +(command)g(will)75 598 y(terminate)h(the)g(searc)o(h,)g(mak)o(e)g(the)g +(last)g(line)i(found)f(the)f(curren)o(t)g(line,)h(and)g(b)q(egin)g +(editing.)137 664 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 718 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 773 y(con)o(ten)o(ts)15 +b(of)f(the)i(curren)o(t)f(line.)75 896 y Fs(1.3)33 b(Readline)23 +b(Init)h(File)137 990 y Fu(Although)f(the)g(Readline)h(library)f(comes) +g(with)g(a)f(set)g(of)g(Emacs-lik)o(e)i(k)o(eybindings)g(installed)75 +1045 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 1100 y(programs)15 b(that)h(use)g(Readline) +i(b)o(y)e(putting)g(commands)g(in)i(an)e Fk(inputrc)k +Fu(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75 1155 +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 1209 y Ft(INPUTRC)p Fu(.)i(If)c(that)g(v)m(ariable)h(is)g +(unset,)f(the)g(default)h(is)g(`)p Ft(~/.inputrc)p Fu('.)137 +1275 y(When)f(a)g(program)f(whic)o(h)h(uses)g(the)g(Readline)h(library) +g(starts)d(up,)i(the)g(init)h(\014le)g(is)f(read,)g(and)g(the)75 +1329 y(k)o(ey)g(bindings)i(are)e(set.)137 1395 y(In)f(addition,)h(the)e +Ft(C-x)i(C-r)e Fu(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 1450 y(that)h(y)o(ou)h +(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75 1556 y Fj(1.3.1)30 +b(Readline)20 b(Init)g(File)h(Syn)n(tax)137 1650 y Fu(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)h(init)g(\014le.)26 b(Blank)18 b(lines)g(are)75 +1705 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d(a)h(`)p +Ft(#)p Fu(')e(are)h(commen)o(ts.)35 b(Lines)22 b(b)q(eginning)h(with)e +(a)f(`)p Ft($)p Fu(')f(indicate)75 1760 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 1814 y(denote)h(v)m(ariable)i(settings)e(and)h +(k)o(ey)f(bindings.)75 1890 y(V)l(ariable)h(Settings)315 +1945 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)j(b)o(y)e(altering)h(the)f(v)m(alues)h(of)315 +2000 y(v)m(ariables)d(in)g(Readline)g(using)f(the)g Ft(set)g +Fu(command)f(within)i(the)f(init)h(\014le.)26 b(The)17 +b(syn)o(tax)315 2055 y(is)f(simple:)435 2117 y Ft(set)23 +b Fk(v)m(ariable)28 b(v)m(alue)315 2182 y Fu(Here,)14 +b(for)f(example,)h(is)g(ho)o(w)f(to)g(c)o(hange)h(from)f(the)h(default) +g(Emacs-lik)o(e)h(k)o(ey)e(binding)j(to)315 2237 y(use)g +Ft(vi)e Fu(line)j(editing)g(commands:)435 2299 y Ft(set)23 +b(editing-mode)g(vi)315 2365 y Fu(V)l(ariable)c(names)e(and)h(v)m +(alues,)h(where)e(appropriate,)h(are)f(recognized)i(without)e(regard) +315 2419 y(to)e(case.)315 2485 y(A)g(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 2560 y Ft(bell-style)555 2615 y Fu(Con)o(trols)21 +b(what)h(happ)q(ens)h(when)f(Readline)h(w)o(an)o(ts)e(to)g(ring)i(the)f +(termi-)555 2670 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p +Ft(none)p Fu(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32 +b(If)19 b(set)g(to)p eop +%%Page: 5 7 +5 6 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077 +b(5)555 149 y(`)p Ft(visible)p Fu(',)15 b(Readline)i(uses)g(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 204 y(`)p Ft(audible)p Fu(')g(\(the)h +(default\),)i(Readline)g(attempts)e(to)g(ring)h(the)g(terminal's)555 +259 y(b)q(ell.)315 338 y Ft(comment-begin)555 393 y Fu(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 +Ft(insert-)555 448 y(comment)f Fu(command)h(is)h(executed.)21 +b(The)15 b(default)h(v)m(alue)g(is)g Ft("#")p Fu(.)315 +527 y Ft(completion-ignore-case)555 582 y Fu(If)e(set)f(to)g(`)p +Ft(on)p Fu(',)g(Readline)i(p)q(erforms)e(\014lename)i(matc)o(hing)f +(and)g(completion)555 637 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k +(The)15 b(default)h(v)m(alue)g(is)g(`)p Ft(off)p Fu('.)315 +716 y Ft(completion-query-items)555 770 y Fu(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 825 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 880 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 +935 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 990 y(they)f(are)g(simply)i(listed.)20 +b(This)13 b(v)m(ariable)g(m)o(ust)f(b)q(e)h(set)f(to)f(an)h(in)o(teger) +h(v)m(alue)555 1044 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d +(default)f(limit)i(is)f Ft(100)p Fu(.)315 1124 y Ft(convert-meta)555 +1178 y Fu(If)11 b(set)g(to)g(`)p Ft(on)p Fu(',)f(Readline)i(will)h(con) +o(v)o(ert)d(c)o(haracters)h(with)g(the)g(eigh)o(th)h(bit)f(set)555 +1233 y(to)f(an)h Fp(asci)q(i)e Fu(k)o(ey)i(sequence)g(b)o(y)g +(stripping)h(the)e(eigh)o(th)h(bit)h(and)e(pre\014xing)i(an)555 +1286 y Fn(h)p 567 1260 70 2 v 567 1288 a Fm(ESC)p 567 +1296 V 634 1286 a Fn(i)666 1288 y Fu(c)o(haracter,)k(con)o(v)o(erting)h +(them)g(to)f(a)h(meta-pre\014xed)g(k)o(ey)g(sequence.)555 +1343 y(The)e(default)h(v)m(alue)h(is)e(`)p Ft(on)p Fu('.)315 +1422 y Ft(disable-completion)555 1477 y Fu(If)k(set)f(to)f(`)p +Ft(On)p Fu(',)h(Readline)i(will)g(inhibit)g(w)o(ord)e(completion.)30 +b(Completion)555 1531 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 +1586 y(to)h Ft(self-insert)p Fu(.)j(The)d(default)h(is)g(`)p +Ft(off)p Fu('.)315 1665 y Ft(editing-mode)555 1720 y +Fu(The)f Ft(editing-mode)d Fu(v)m(ariable)k(con)o(trols)e(whic)o(h)h +(default)g(set)f(of)g(k)o(ey)g(bind-)555 1775 y(ings)f(is)g(used.)20 +b(By)12 b(default,)i(Readline)f(starts)f(up)h(in)g(Emacs)f(editing)i +(mo)q(de,)555 1830 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 +1885 y(b)q(e)g(set)f(to)f(either)i(`)p Ft(emacs)p Fu(')e(or)h(`)p +Ft(vi)p Fu('.)315 1964 y Ft(enable-keypad)555 2019 y +Fu(When)d(set)f(to)h(`)p Ft(on)p Fu(',)e(Readline)j(will)h(try)d(to)g +(enable)i(the)f(application)h(k)o(eypad)555 2073 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 2128 y(The)j(default)h(is)g(`)p +Ft(off)p Fu('.)315 2207 y Ft(expand-tilde)555 2262 y +Fu(If)e(set)g(to)f(`)p Ft(on)p Fu(',)f(tilde)k(expansion)e(is)h(p)q +(erformed)f(when)g(Readline)h(attempts)555 2317 y(w)o(ord)g +(completion.)21 b(The)15 b(default)h(is)f(`)p Ft(off)p +Fu('.)315 2396 y Ft(horizontal-scroll-mode)555 2451 y +Fu(This)k(v)m(ariable)g(can)f(b)q(e)g(set)g(to)f(either)i(`)p +Ft(on)p Fu(')e(or)g(`)p Ft(off)p Fu('.)27 b(Setting)19 +b(it)f(to)f(`)p Ft(on)p Fu(')555 2506 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 +2560 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 2615 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 2670 y(v)m(ariable)j(is)e(set)g(to)g(`)p +Ft(off)p Fu('.)p eop +%%Page: 6 8 +6 7 bop 75 -58 a Fu(6)1322 b(GNU)15 b(Readline)h(Library)315 +149 y Ft(input-meta)555 204 y Fu(If)g(set)f(to)g(`)p +Ft(on)p Fu(',)f(Readline)j(will)h(enable)e(eigh)o(t-bit)h(input)f(\(it) +g(will)h(not)e(clear)555 259 y(the)20 b(eigh)o(th)g(bit)g(in)h(the)f(c) +o(haracters)f(it)h(reads\),)g(regardless)g(of)g(what)f(the)555 +314 y(terminal)i(claims)g(it)f(can)g(supp)q(ort.)34 b(The)20 +b(default)h(v)m(alue)g(is)g(`)p Ft(off)p Fu('.)33 b(The)555 +369 y(name)15 b Ft(meta-flag)f Fu(is)i(a)f(synon)o(ym)g(for)f(this)i(v) +m(ariable.)315 448 y Ft(isearch-terminators)555 503 y +Fu(The)26 b(string)g(of)f(c)o(haracters)g(that)g(should)i(terminate)f +(an)g(incremen)o(tal)555 557 y(searc)o(h)12 b(without)h(subsequen)o +(tly)g(executing)h(the)e(c)o(haracter)g(as)g(a)g(command)555 +612 y(\(see)22 b(Section)h(1.2.5)e([Searc)o(hing],)j(page)e(3\).)40 +b(If)23 b(this)g(v)m(ariable)g(has)f(not)555 667 y(b)q(een)17 +b(giv)o(en)f(a)g(v)m(alue,)g(the)g(c)o(haracters)1247 +665 y Fn(h)p 1259 639 70 2 v 1259 667 a Fm(ESC)p 1259 +675 V 1326 665 a Fn(i)1357 667 y Fu(and)g Fo(C-J)f Fu(will)i(terminate) +f(an)555 722 y(incremen)o(tal)g(searc)o(h.)315 801 y +Ft(keymap)96 b Fu(Sets)19 b(Readline's)i(idea)f(of)f(the)g(curren)o(t)h +(k)o(eymap)f(for)f(k)o(ey)i(binding)h(com-)555 856 y(mands.)41 +b(Acceptable)23 b Ft(keymap)f Fu(names)g(are)f Ft(emacs)p +Fu(,)i Ft(emacs-standard)p Fu(,)555 910 y Ft(emacs-meta)p +Fu(,)49 b Ft(emacs-ctlx)p Fu(,)g Ft(vi)p Fu(,)h Ft(vi-move)p +Fu(,)f Ft(vi-command)p Fu(,)g(and)555 965 y Ft(vi-insert)p +Fu(.)31 b Ft(vi)20 b Fu(is)g(equiv)m(alen)o(t)h(to)e +Ft(vi-command)p Fu(;)g Ft(emacs)g Fu(is)h(equiv)m(alen)o(t)555 +1020 y(to)15 b Ft(emacs-standard)p Fu(.)20 b(The)d(default)f(v)m(alue)h +(is)g Ft(emacs)p Fu(.)k(The)16 b(v)m(alue)h(of)f(the)555 +1075 y Ft(editing-mode)e Fu(v)m(ariable)i(also)f(a\013ects)g(the)g +(default)h(k)o(eymap.)315 1154 y Ft(mark-directories)555 +1209 y Fu(If)j(set)g(to)g(`)p Ft(on)p Fu(',)f(completed)i(directory)g +(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1264 +y(The)15 b(default)h(is)g(`)p Ft(on)p Fu('.)315 1343 +y Ft(mark-modified-lines)555 1398 y Fu(This)j(v)m(ariable,)g(when)g +(set)e(to)h(`)p Ft(on)p Fu(',)f(causes)h(Readline)h(to)e(displa)o(y)i +(an)f(as-)555 1452 y(terisk)f(\(`)p Ft(*)p Fu('\))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 1507 y(This)e(v)m(ariable)g(is)g(`)p Ft(off)p +Fu(')e(b)o(y)h(default.)315 1586 y Ft(output-meta)555 +1641 y Fu(If)j(set)f(to)g(`)p Ft(on)p Fu(',)g(Readline)i(will)h(displa) +o(y)f(c)o(haracters)d(with)j(the)e(eigh)o(th)h(bit)555 +1696 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 1751 y(default)16 +b(is)f(`)p Ft(off)p Fu('.)315 1830 y Ft(print-completions-horizont)o +(ally)555 1885 y Fu(If)d(set)g(to)f(`)p Ft(on)p Fu(',)h(Readline)h +(will)g(displa)o(y)h(completions)f(with)f(matc)o(hes)f(sorted)555 +1939 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 1994 y(The)15 b(default)h(is)g(`)p +Ft(off)p Fu('.)315 2073 y Ft(show-all-if-ambiguous)555 +2128 y Fu(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 2183 y(to)e(`)p +Ft(on)p Fu(',)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 2238 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 2293 y(The)c(default)h(v)m(alue)h(is)e(`)p +Ft(off)p Fu('.)315 2372 y Ft(visible-stats)555 2426 y +Fu(If)h(set)g(to)f(`)p Ft(on)p Fu(',)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 +2481 y(\014lename)h(when)g(listing)h(p)q(ossible)g(completions.)j(The)c +(default)g(is)f(`)p Ft(off)p Fu('.)75 2560 y(Key)h(Bindings)315 +2615 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 2670 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)p eop +%%Page: 7 9 +7 8 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077 +b(7)315 149 y(sections)18 b(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 +204 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g(command)g(do)q +(es.)315 273 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g +(command,)g(simply)h(place)g(on)f(a)f(line)j(in)f(the)f(init)315 +328 y(\014le)g(the)f(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)i(to)e +(bind)i(the)f(command)g(to,)f(a)g(colon,)i(and)f(then)315 +382 y(the)f(name)g(of)g(the)g(command.)22 b(The)16 b(name)g(of)g(the)g +(k)o(ey)f(can)i(b)q(e)f(expressed)h(in)g(di\013eren)o(t)315 +437 y(w)o(a)o(ys,)d(dep)q(ending)j(on)e(what)g(y)o(ou)g(\014nd)h(most)e +(comfortable.)315 506 y(In)19 b(addition)g(to)e(command)h(names,)g +(readline)i(allo)o(ws)e(k)o(eys)g(to)f(b)q(e)i(b)q(ound)g(to)e(a)h +(string)315 561 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h +(pressed)g(\(a)e Fk(macro)r Fu(\).)315 643 y Fk(k)o(eyname)s +Fu(:)19 b Fk(function-name)g Fu(or)c Fk(macro)555 698 +y(k)o(eyname)i Fu(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 764 y Ft(Control-u:)22 +b(universal-argument)675 816 y(Meta-Rubout:)g(backward-kill-word)675 +867 y(Control-o:)g(">)i(output")555 936 y Fu(In)c(the)f(ab)q(o)o(v)o(e) +g(example,)i Fo(C-u)e Fu(is)h(b)q(ound)g(to)f(the)g(function)h +Ft(universal-)555 991 y(argument)p Fu(,)e Fo(M-DEL)h +Fu(is)g(b)q(ound)h(to)e(the)h(function)h Ft(backward-kill-word)p +Fu(,)555 1046 y(and)g Fo(C-o)f Fu(is)h(b)q(ound)g(to)f(run)h(the)f +(macro)g(expressed)h(on)g(the)f(righ)o(t)h(hand)555 1101 +y(side)c(\(that)e(is,)i(to)e(insert)i(the)f(text)g(`)p +Ft(>)f(output)p Fu(')g(in)o(to)i(the)f(line\).)555 1169 +y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)i(c)o(haracter)e(names)g +(are)g(recognized)i(while)g(pro-)555 1224 y(cessing)13 +b(this)f(k)o(ey)g(binding)h(syn)o(tax:)18 b Fk(DEL)p +Fu(,)11 b Fk(ESC)p Fu(,)h Fk(ESCAPE)p Fu(,)f Fk(LFD)p +Fu(,)g Fk(NEW-)555 1279 y(LINE)p Fu(,)16 b Fk(RET)p Fu(,)e +Fk(RETURN)p Fu(,)f Fk(R)o(UBOUT)p Fu(,)i Fk(SP)l(A)o(CE)p +Fu(,)g Fk(SPC)p Fu(,)f(and)i Fk(T)l(AB)p Fu(.)315 1361 +y Ft(")p Fk(k)o(eyseq)q Ft(")p Fu(:)k Fk(function-name)e +Fu(or)d Fk(macro)555 1416 y(k)o(eyseq)i Fu(di\013ers)e(from)g +Fk(k)o(eyname)j Fu(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g +(an)f(en-)555 1471 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 +1526 y(double)e(quotes.)j(Some)c Fp(gnu)g Fu(Emacs)f(st)o(yle)h(k)o(ey) +g(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 1580 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 1635 y(recognized.)675 1701 y Ft("\\C-u":)23 +b(universal-argument)675 1753 y("\\C-x\\C-r":)f(re-read-init-file)675 +1805 y("\\e[11~":)h("Function)f(Key)i(1")555 1873 y Fu(In)33 +b(the)f(ab)q(o)o(v)o(e)g(example,)37 b Fo(C-u)32 b Fu(is)h(again)f(b)q +(ound)h(to)f(the)g(function)555 1928 y Ft(universal-argument)19 +b Fu(\(just)j(as)f(it)h(w)o(as)f(in)i(the)f(\014rst)f(example\),)j(`)p +Fo(C-x)555 1983 y(C-r)p Fu(')c(is)h(b)q(ound)g(to)f(the)h(function)g +Ft(re-read-init-file)p Fu(,)f(and)g(`)1731 1981 y Fn(h)p +1743 1955 70 2 v 1743 1983 a Fm(ESC)p 1743 1991 V 1810 +1981 a Fn(i)15 b(h)p 1852 1955 10 2 v 1852 1983 a Fm([)p +1852 1991 V 1860 1981 a Fn(i)555 2036 y(h)p 567 2010 +18 2 v 567 2038 a Fm(1)p 567 2045 V 583 2036 a Fn(i)g(h)p +625 2010 V 625 2038 a Fm(1)p 625 2045 V 640 2036 a Fn(i)g(h)p +683 2010 24 2 v 683 2038 a Ft(~)p 683 2045 V 704 2036 +a Fn(i)719 2038 y Fu(')g(is)h(b)q(ound)g(to)e(insert)i(the)f(text)g(`)p +Ft(Function)f(Key)g(1)p Fu('.)315 2120 y(The)h(follo)o(wing)h +Fp(gnu)e Fu(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 2175 y(k)o(ey)g(sequences:)315 +2258 y Fo(\\C-)168 b Fu(con)o(trol)15 b(pre\014x)315 +2340 y Fo(\\M-)168 b Fu(meta)15 b(pre\014x)315 2423 y +Fo(\\e)192 b Fu(an)15 b(escap)q(e)h(c)o(haracter)315 +2505 y Fo(\\\\)192 b Fu(bac)o(kslash)315 2587 y Fo(\\)p +Ft(")555 2585 y Fn(h)p 567 2559 V 567 2587 a Ft(")p 567 +2595 V 589 2585 a Fn(i)604 2587 y Fu(,)15 b(a)f(double)j(quotation)e +(mark)315 2670 y Fo(\\')555 2668 y Fn(h)p 567 2642 10 +2 v 567 2670 a Fm(')p 567 2678 V 575 2668 a Fn(i)590 +2670 y Fu(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)p +eop +%%Page: 8 10 +8 9 bop 75 -58 a Fu(8)1322 b(GNU)15 b(Readline)h(Library)315 +149 y(In)e(addition)h(to)f(the)f Fp(gnu)h Fu(Emacs)g(st)o(yle)f(escap)q +(e)i(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315 +204 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 286 y Ft(\\a)192 +b Fu(alert)15 b(\(b)q(ell\))315 368 y Ft(\\b)192 b Fu(bac)o(kspace)315 +449 y Ft(\\d)g Fu(delete)315 531 y Ft(\\f)g Fu(form)14 +b(feed)315 613 y Ft(\\n)192 b Fu(newline)315 694 y Ft(\\r)g +Fu(carriage)15 b(return)315 776 y Ft(\\t)192 b Fu(horizon)o(tal)16 +b(tab)315 858 y Ft(\\v)192 b Fu(v)o(ertical)16 b(tab)315 +940 y Ft(\\)p Fk(nnn)141 b Fu(the)14 b(c)o(haracter)f(whose)h +Fp(asci)q(i)e Fu(co)q(de)j(is)f(the)g(o)q(ctal)g(v)m(alue)h +Fk(nnn)f Fu(\(one)g(to)f(three)555 994 y(digits\))315 +1076 y Ft(\\x)p Fk(nnn)117 b Fu(the)16 b(c)o(haracter)f(whose)h +Fp(asci)q(i)f Fu(co)q(de)i(is)f(the)h(hexadecimal)g(v)m(alue)g +Fk(nnn)g Fu(\(one)555 1131 y(to)e(three)g(digits\))315 +1213 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 1267 +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 1322 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 1377 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 Ft(")p Fu(')c(and)h(`)p +Ft(')p Fu('.)34 b(F)l(or)315 1432 y(example,)14 b(the)f(follo)o(wing)g +(binding)i(will)g(mak)o(e)d(`)p Fo(C-x)i Ft(\\)p Fu(')f(insert)g(a)g +(single)h(`)p Ft(\\)p Fu(')e(in)o(to)h(the)g(line:)435 +1497 y Ft("\\C-x\\\\":)23 b("\\\\")75 1613 y Fj(1.3.2)30 +b(Conditional)20 b(Init)g(Constructs)137 1712 y Fu(Readline)f(implemen) +o(ts)g(a)f(facilit)o(y)g(similar)h(in)g(spirit)f(to)f(the)h +(conditional)h(compilation)g(features)75 1766 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 1821 y(the)e(result)h +(of)f(tests.)k(There)c(are)g(four)g(parser)g(directiv)o(es)h(used.)75 +1904 y Ft($if)168 b Fu(The)16 b Ft($if)f Fu(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 1959 y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i +(using)e(Readline.)33 b(The)19 b(text)g(of)f(the)i(test)315 +2013 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 +2095 y Ft(mode)144 b Fu(The)11 b Ft(mode=)e Fu(form)h(of)g(the)h +Ft($if)f Fu(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline) +555 2150 y(is)k(in)h Ft(emacs)e Fu(or)g Ft(vi)g Fu(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 +2205 y(`)p Ft(set)f(keymap)p Fu(')f(command,)g(for)h(instance,)g(to)f +(set)h(bindings)h(in)g(the)f Ft(emacs-)555 2260 y(standard)d +Fu(and)i Ft(emacs-ctlx)e Fu(k)o(eymaps)h(only)i(if)f(Readline)g(is)g +(starting)f(out)555 2314 y(in)k Ft(emacs)f Fu(mo)q(de.)315 +2396 y Ft(term)144 b Fu(The)14 b Ft(term=)e Fu(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 +2451 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 2506 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 Ft(=)p Fu(')f(is)h(tested)g(against)555 2560 +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 2615 y(name)i(b)q(efore)g(the)g +(\014rst)f(`)p Ft(-)p Fu('.)24 b(This)17 b(allo)o(ws)g +Ft(sun)f Fu(to)g(matc)o(h)h(b)q(oth)f Ft(sun)h Fu(and)555 +2670 y Ft(sun-cmd)p Fu(,)d(for)g(instance.)p eop +%%Page: 9 11 +9 10 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077 +b(9)315 149 y Ft(application)555 204 y Fu(The)11 b Fk(application)i +Fu(construct)e(is)g(used)h(to)e(include)j(application-sp)q(eci)q(\014c) +h(set-)555 259 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e +(Readline)i(library)f(sets)f(the)g Fk(application)555 +314 y(name)p Fu(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)h +(v)m(alue.)20 b(This)12 b(could)h(b)q(e)f(used)h(to)555 +369 y(bind)18 b(k)o(ey)e(sequences)i(to)d(functions)j(useful)f(for)f(a) +g(sp)q(eci\014c)i(program.)23 b(F)l(or)555 423 y(instance,)17 +b(the)g(follo)o(wing)g(command)g(adds)f(a)g(k)o(ey)h(sequence)g(that)f +(quotes)555 478 y(the)f(curren)o(t)g(or)g(previous)h(w)o(ord)e(in)j +(Bash:)675 543 y Ft($if)23 b(Bash)675 594 y(#)h(Quote)f(the)g(current)g +(or)h(previous)f(word)675 646 y("\\C-xq":)g("\\eb\\"\\ef\\"")675 +698 y($endif)75 778 y($endif)96 b Fu(This)16 b(command,)e(as)h(seen)h +(in)g(the)f(previous)h(example,)g(terminates)f(an)g Ft($if)f +Fu(command.)75 858 y Ft($else)120 b Fu(Commands)15 b(in)h(this)f(branc) +o(h)h(of)e(the)i Ft($if)e Fu(directiv)o(e)j(are)e(executed)h(if)g(the)f +(test)g(fails.)75 937 y Ft($include)48 b Fu(This)22 b(directiv)o(e)h +(tak)o(es)e(a)h(single)h(\014lename)g(as)e(an)h(argumen)o(t)f(and)h +(reads)f(commands)315 992 y(and)e(bindings)j(from)c(that)h(\014le.)33 +b(F)l(or)19 b(example,)i(the)e(follo)o(wing)h(directiv)o(e)h(reads)e +(from)315 1047 y(`)p Ft(/etc/inputrc)p Fu(':)435 1111 +y Ft($include)k(/etc/inputrc)75 1223 y Fj(1.3.3)30 b(Sample)20 +b(Init)h(File)137 1320 y Fu(Here)16 b(is)g(an)f(example)h(of)f(an)g +Fk(inputrc)k Fu(\014le.)i(This)16 b(illustrates)g(k)o(ey)f(binding,)i +(v)m(ariable)f(assignmen)o(t,)75 1374 y(and)f(conditional)i(syn)o(tax.) +p eop +%%Page: 10 12 +10 11 bop 75 -58 a Fu(10)1299 b(GNU)15 b(Readline)h(Library)195 +201 y Ft(#)24 b(This)f(file)g(controls)g(the)h(behaviour)e(of)i(line)f +(input)g(editing)g(for)195 253 y(#)h(programs)e(that)i(use)f(the)h(Gnu) +f(Readline)g(library.)47 b(Existing)22 b(programs)195 +305 y(#)i(include)f(FTP,)g(Bash,)g(and)h(Gdb.)195 357 +y(#)195 409 y(#)g(You)f(can)h(re-read)f(the)g(inputrc)g(file)g(with)h +(C-x)f(C-r.)195 461 y(#)h(Lines)f(beginning)g(with)g('#')g(are)h +(comments.)195 513 y(#)195 565 y(#)g(First,)f(include)g(any)g +(systemwide)g(bindings)f(and)i(variable)f(assignments)f(from)195 +616 y(#)i(/etc/Inputrc)195 668 y($include)f(/etc/Inputrc)195 +772 y(#)195 824 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.) +195 928 y(set)g(editing-mode)g(emacs)195 1032 y($if)g(mode=emacs)195 +1135 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 1145 21 38 v +195 1239 a(#)195 1291 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195 +1343 y(#)195 1395 y(#"\\M-OD":)190 b(backward-char)195 +1447 y(#"\\M-OC":)g(forward-char)195 1499 y(#"\\M-OA":)g +(previous-history)195 1550 y(#"\\M-OB":)g(next-history)195 +1602 y(#)195 1654 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195 +1706 y(#)195 1758 y("\\M-[D":)190 b(backward-char)195 +1810 y("\\M-[C":)g(forward-char)195 1862 y("\\M-[A":)g +(previous-history)195 1914 y("\\M-[B":)g(next-history)195 +1966 y(#)195 2017 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode) +195 2069 y(#)195 2121 y(#"\\M-\\C-OD":)165 b(backward-char)195 +2173 y(#"\\M-\\C-OC":)g(forward-char)195 2225 y(#"\\M-\\C-OA":)g +(previous-history)195 2277 y(#"\\M-\\C-OB":)g(next-history)195 +2329 y(#)195 2381 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode) +195 2433 y(#)195 2484 y(#"\\M-\\C-[D":)165 b(backward-char)195 +2536 y(#"\\M-\\C-[C":)g(forward-char)195 2588 y(#"\\M-\\C-[A":)g +(previous-history)195 2640 y(#"\\M-\\C-[B":)g(next-history)p +eop +%%Page: 11 13 +11 12 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055 +b(11)195 201 y Ft(C-q:)23 b(quoted-insert)195 305 y($endif)195 +409 y(#)h(An)f(old-style)g(binding.)47 b(This)23 b(happens)g(to)g(be)h +(the)f(default.)195 461 y(TAB:)g(complete)195 565 y(#)h(Macros)f(that)g +(are)h(convenient)e(for)h(shell)h(interaction)195 616 +y($if)f(Bash)195 668 y(#)h(edit)f(the)g(path)195 720 +y("\\C-xp":)g("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195 +772 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 824 y(#)h(and)f(move)g(to)h(just)f +(after)h(the)f(open)g(quote)195 876 y("\\C-x\\"":)g("\\"\\"\\C-b")195 +928 y(#)h(insert)f(a)g(backslash)g(\(testing)g(backslash)g(escapes)f +(in)i(sequences)f(and)g(macros\))195 980 y("\\C-x\\\\":)g("\\\\")195 +1032 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)195 +1083 y("\\C-xq":)g("\\eb\\"\\ef\\"")195 1135 y(#)h(Add)f(a)h(binding)f +(to)g(refresh)g(the)h(line,)f(which)g(is)h(unbound)195 +1187 y("\\C-xr":)f(redraw-current-line)195 1239 y(#)h(Edit)f(variable)g +(on)g(current)g(line.)195 1291 y("\\M-\\C-v":)f +("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)o(")195 1343 y($endif)195 +1447 y(#)i(use)f(a)h(visible)f(bell)g(if)h(one)f(is)h(available)195 +1499 y(set)f(bell-style)g(visible)195 1602 y(#)h(don't)f(strip)g +(characters)g(to)g(7)h(bits)f(when)h(reading)195 1654 +y(set)f(input-meta)g(on)195 1758 y(#)h(allow)f(iso-latin1)f(characters) +h(to)g(be)h(inserted)f(rather)g(than)g(converted)g(to)195 +1810 y(#)h(prefix-meta)e(sequences)195 1862 y(set)h(convert-meta)g(off) +195 1966 y(#)h(display)f(characters)f(with)h(the)h(eighth)f(bit)g(set)h +(directly)f(rather)g(than)195 2017 y(#)h(as)f(meta-prefixed)f +(characters)195 2069 y(set)h(output-meta)g(on)195 2173 +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 2225 y(#)h(user)f(if)h(he)f(wants)g +(to)h(see)f(all)h(of)f(them)195 2277 y(set)g(completion-query-items)e +(150)195 2381 y(#)j(For)f(FTP)195 2433 y($if)g(Ftp)195 +2484 y("\\C-xg":)g("get)g(\\M-?")195 2536 y("\\C-xt":)g("put)g(\\M-?") +195 2588 y("\\M-.":)g(yank-last-arg)195 2640 y($endif)p +eop +%%Page: 12 14 +12 13 bop 75 -58 a Fu(12)1299 b(GNU)15 b(Readline)h(Library)75 +149 y Fs(1.4)33 b(Bindable)24 b(Readline)f(Commands)137 +247 y Fu(This)17 b(section)f(describ)q(es)h(Readline)g(commands)f(that) +e(ma)o(y)h(b)q(e)i(b)q(ound)f(to)f(k)o(ey)h(sequences.)22 +b(Com-)75 301 y(mand)15 b(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)f(default.)137 +369 y(In)f(the)f(follo)o(wing)h(descriptions,)h Fk(p)q(oin)o(t)f +Fu(refers)f(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)j(and)e +Fk(mark)i Fu(refers)75 424 y(to)k(a)g(cursor)g(p)q(osition)h(sa)o(v)o +(ed)f(b)o(y)h(the)f Ft(set-mark)g Fu(command.)32 b(The)20 +b(text)f(b)q(et)o(w)o(een)g(the)h(p)q(oin)o(t)g(and)75 +479 y(mark)15 b(is)g(referred)h(to)e(as)h(the)g Fk(region)p +Fu(.)75 593 y Fj(1.4.1)30 b(Commands)21 b(F)-5 b(or)19 +b(Mo)n(ving)75 716 y Ft(beginning-of-line)13 b(\(C-a\))315 +771 y Fu(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g(line.) +75 864 y Ft(end-of-line)f(\(C-e\))315 919 y Fu(Mo)o(v)o(e)g(to)h(the)g +(end)h(of)f(the)g(line.)75 1012 y Ft(forward-char)f(\(C-f\))315 +1067 y Fu(Mo)o(v)o(e)g(forw)o(ard)g(a)h(c)o(haracter.)75 +1160 y Ft(backward-char)e(\(C-b\))315 1215 y Fu(Mo)o(v)o(e)h(bac)o(k)h +(a)g(c)o(haracter.)75 1309 y Ft(forward-word)f(\(M-f\))315 +1363 y Fu(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 +1418 y(digits.)75 1512 y Ft(backward-word)e(\(M-b\))315 +1566 y Fu(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 +1621 y(of)e(letters)g(and)g(digits.)75 1715 y Ft(clear-screen)f +(\(C-l\))315 1769 y Fu(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 1824 y(of)i(the)g(screen.)75 1918 y Ft(redraw-current-line)e +(\(\))315 1972 y Fu(Refresh)i(the)g(curren)o(t)g(line.)22 +b(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75 2086 +y Fj(1.4.2)30 b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f +(History)75 2209 y Ft(accept-line)14 b(\(Newline)g(or)h(Return\))315 +2264 y Fu(Accept)j(the)g(line)h(regardless)f(of)f(where)h(the)g(cursor) +f(is.)27 b(If)18 b(this)g(line)h(is)g(non-empt)o(y)l(,)f(it)315 +2319 y(ma)o(y)d(b)q(e)i(added)f(to)g(the)g(history)g(list)g(for)g +(future)g(recall)h(with)f Ft(add_history\(\))p Fu(.)k(If)d(this)315 +2374 y(line)g(is)f(a)e(mo)q(di\014ed)j(history)e(line,)i(the)e(history) +g(line)i(is)f(restored)e(to)h(its)g(original)i(state.)75 +2467 y Ft(previous-history)c(\(C-p\))315 2522 y Fu(Mo)o(v)o(e)h(`bac)o +(k')h(through)f(the)i(history)f(list,)g(fetc)o(hing)h(the)f(previous)h +(command.)75 2615 y Ft(next-history)e(\(C-n\))315 2670 +y Fu(Mo)o(v)o(e)g(`forw)o(ard')f(through)i(the)h(history)f(list,)g +(fetc)o(hing)h(the)f(next)h(command.)p eop +%%Page: 13 15 +13 14 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055 +b(13)75 149 y Ft(beginning-of-history)12 b(\(M-<\))315 +204 y Fu(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)i(in)f(the)f(history)l +(.)75 307 y Ft(end-of-history)e(\(M->\))315 362 y Fu(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 466 y Ft +(reverse-search-history)c(\(C-r\))315 520 y Fu(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 575 y(tory)e(as)h(necessary)l(.)20 +b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 678 +y Ft(forward-search-history)c(\(C-s\))315 733 y Fu(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 788 y(history)g(as)g(necessary)l(.)20 +b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 891 +y Ft(non-incremental-reverse-se)o(arch-hi)o(story)c(\(M-p\))315 +946 y Fu(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 +1001 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 1056 +y(user.)75 1159 y Ft(non-incremental-forward-se)o(arch-hi)o(story)12 +b(\(M-n\))315 1214 y Fu(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 1268 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 +1323 y(user.)75 1427 y Ft(history-search-forward)f(\(\))315 +1481 y Fu(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 +1536 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 1591 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75 +1694 y Ft(history-search-backward)c(\(\))315 1749 y Fu(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 1804 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 +1859 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75 +1962 y Ft(yank-nth-arg)e(\(M-C-y\))315 2017 y Fu(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 2071 y(the)j(previous)h(line\))g(at)e +(p)q(oin)o(t.)21 b(With)15 b(an)g(argumen)o(t)f Fk(n)p +Fu(,)h(insert)g(the)g Fk(n)p Fu(th)g(w)o(ord)g(from)f(the)315 +2126 y(previous)g(command)g(\(the)f(w)o(ords)f(in)j(the)e(previous)i +(command)e(b)q(egin)i(with)e(w)o(ord)g(0\).)19 b(A)315 +2181 y(negativ)o(e)13 b(argumen)o(t)f(inserts)h(the)g +Fk(n)p Fu(th)g(w)o(ord)f(from)g(the)h(end)h(of)e(the)h(previous)g +(command.)75 2284 y Ft(yank-last-arg)g(\(M-.)i(or)g(M-_\))315 +2339 y Fu(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 2394 +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 Ft(yank-nth-arg)p Fu(.)j(Succes-)315 +2449 y(siv)o(e)f(calls)g(to)f Ft(yank-last-arg)e Fu(mo)o(v)o(e)i(bac)o +(k)g(through)g(the)g(history)g(list,)i(inserting)f(the)315 +2503 y(last)d(argumen)o(t)g(of)f(eac)o(h)i(line)g(in)g(turn.)75 +2630 y Fj(1.4.3)30 b(Commands)21 b(F)-5 b(or)19 b(Changing)i(T)-5 +b(ext)p eop +%%Page: 14 16 +14 15 bop 75 -58 a Fu(14)1299 b(GNU)15 b(Readline)h(Library)75 +149 y Ft(delete-char)e(\(C-d\))315 204 y Fu(Delete)20 +b(the)g(c)o(haracter)e(at)h(p)q(oin)o(t.)33 b(If)20 b(p)q(oin)o(t)g(is) +g(at)e(the)i(b)q(eginning)i(of)d(the)g(line,)j(there)315 +259 y(are)c(no)h(c)o(haracters)e(in)j(the)e(line,)j(and)e(the)f(last)h +(c)o(haracter)e(t)o(yp)q(ed)i(w)o(as)f(not)g(b)q(ound)i(to)315 +314 y Ft(delete-char)p Fu(,)13 b(then)j(return)f Fp(eof)p +Fu(.)75 406 y Ft(backward-delete-char)d(\(Rubout\))315 +460 y Fu(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 +515 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75 +607 y Ft(forward-backward-delete-ch)o(ar)12 b(\(\))315 +662 y Fu(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 +717 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 +771 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 863 +y Ft(quoted-insert)e(\(C-q)i(or)g(C-v\))315 918 y Fu(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 973 +y(sequences)f(lik)o(e)h Fo(C-q)p Fu(,)d(for)h(example.)75 +1065 y Ft(tab-insert)f(\(M-)401 1063 y Fn(h)p 412 1037 +74 2 v 412 1065 a Fm(T)m(AB)p 412 1072 V 484 1063 a Fn(i)499 +1065 y Ft(\))315 1119 y Fu(Insert)h(a)g(tab)g(c)o(haracter.)75 +1211 y Ft(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315 +1266 y Fu(Insert)g(y)o(ourself.)75 1358 y Ft(transpose-chars)e(\(C-t\)) +315 1413 y Fu(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 +1467 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 1522 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 1577 y(ha)o(v)o(e)k(no)g(e\013ect.)75 +1669 y Ft(transpose-words)e(\(M-t\))315 1724 y Fu(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 1778 +y(w)o(ord)f(as)f(w)o(ell.)75 1870 y Ft(upcase-word)g(\(M-u\))315 +1925 y Fu(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 +1980 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 2072 y Ft(downcase-word)d(\(M-l\))315 +2126 y Fu(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 2181 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 2273 y Ft(capitalize-word)e(\(M-c\))315 +2328 y Fu(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 +2383 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 2494 y Fj(1.4.4)30 b(Killing)20 b(And)h(Y)-5 +b(anking)75 2615 y Ft(kill-line)14 b(\(C-k\))315 2670 +y Fu(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.)p eop +%%Page: 15 17 +15 16 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055 +b(15)75 149 y Ft(backward-kill-line)13 b(\(C-x)h(Rubout\))315 +204 y Fu(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g +(line.)75 295 y Ft(unix-line-discard)e(\(C-u\))315 349 +y Fu(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.)75 440 y Ft(kill-whole-line)e +(\(\))315 495 y Fu(Kill)20 b(all)g(c)o(haracters)d(on)h(the)h(curren)o +(t)f(line,)i(no)e(matter)g(where)g(p)q(oin)o(t)h(is.)29 +b(By)19 b(default,)315 549 y(this)d(is)f(un)o(b)q(ound.)75 +640 y Ft(kill-word)f(\(M-d\))315 695 y Fu(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 750 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 +Ft(forward-word)p Fu(.)75 840 y Ft(backward-kill-word)e(\(M-)592 +838 y Fn(h)p 603 812 73 2 v 603 840 a Fm(DEL)p 603 848 +V 674 838 a Fn(i)689 840 y Ft(\))315 895 y Fu(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 Ft(backward-word)p Fu(.)75 985 y Ft(unix-word-rubout)f +(\(C-w\))315 1040 y Fu(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 1095 y(text)f(is)g(sa)o(v)o(ed)g(on)g(the)h +(kill-ring.)75 1185 y Ft(delete-horizontal-space)c(\(\))315 +1240 y Fu(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 1330 +y Ft(kill-region)e(\(\))315 1385 y Fu(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 1476 y Ft(copy-region-as-kill)d(\(\))315 +1530 y Fu(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 1585 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q +(ound.)75 1676 y Ft(copy-backward-word)d(\(\))315 1730 +y Fu(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 +1785 y(same)c(as)g Ft(backward-word)p Fu(.)j(By)d(default,)g(this)h +(command)f(is)h(un)o(b)q(ound.)75 1876 y Ft(copy-forward-word)d(\(\)) +315 1930 y Fu(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 1985 y(same)g(as)g Ft(forward-word)p Fu(.)j(By)d(default,)h +(this)f(command)g(is)h(un)o(b)q(ound.)75 2076 y Ft(yank)f(\(C-y\))315 +2131 y Fu(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(p)q(oin)o(t.)75 2221 y Ft(yank-pop)g(\(M-y\))315 +2276 y Fu(Rotate)i(the)h(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 +2331 y(command)d(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p +Fu(.)75 2441 y Fj(1.4.5)30 b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts) +75 2560 y Ft(digit-argument)13 b(\()p Fo(M-0)p Ft(,)i +Fo(M-1)p Ft(,)f(...)h Fo(M--)p Ft(\))315 2615 y Fu(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 2670 y Fo(M--)h Fu(starts)f(a)h(negativ)o(e)g +(argumen)o(t.)p eop +%%Page: 16 18 +16 17 bop 75 -58 a Fu(16)1299 b(GNU)15 b(Readline)h(Library)75 +149 y Ft(universal-argument)d(\(\))315 204 y Fu(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 +259 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 314 +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 Ft(universal-argument)315 369 +y Fu(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 +423 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)315 +478 y(or)d(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 +533 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 +588 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 +643 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 762 y Fj(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 892 y Ft(complete)14 b(\()305 890 y Fn(h)p 317 +864 74 2 v 317 892 a Fm(T)m(AB)p 317 900 V 389 890 a +Fn(i)404 892 y Ft(\))315 947 y Fu(A)o(ttempt)c(to)h(p)q(erform)g +(completion)i(on)e(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)19 +b(The)11 b(actual)h(completion)315 1002 y(p)q(erformed)j(is)h +(application-sp)q(eci\014)q(c.)23 b(The)15 b(default)h(is)g(\014lename) +g(completion.)75 1099 y Ft(possible-completions)c(\(M-?\))315 +1154 y Fu(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b) +q(efore)h(p)q(oin)o(t.)75 1251 y Ft(insert-completions)d(\(M-*\))315 +1306 y Fu(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 +1361 y(b)o(y)f Ft(possible-completions)p Fu(.)75 1458 +y Ft(menu-complete)e(\(\))315 1513 y Fu(Similar)g(to)f +Ft(complete)p Fu(,)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 1568 y(from)k(the)h(list) +h(of)e(p)q(ossible)j(completions.)32 b(Rep)q(eated)19 +b(execution)h(of)f Ft(menu-complete)315 1623 y Fu(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 1678 y(A)o(t)d(the)g(end)h(of)f(the)h(list)g +(of)f(completions,)i(the)e(b)q(ell)j(is)d(rung)h(\(sub)s(ject)f(to)f +(the)i(setting)315 1732 y(of)f Ft(bell-style)p Fu(\))e(and)i(the)g +(original)h(text)f(is)g(restored.)28 b(An)19 b(argumen)o(t)e(of)g +Fk(n)i Fu(mo)o(v)o(es)e Fk(n)315 1787 y Fu(p)q(ositions)h(forw)o(ard)e +(in)j(the)e(list)h(of)f(matc)o(hes;)h(a)f(negativ)o(e)g(argumen)o(t)g +(ma)o(y)g(b)q(e)h(used)g(to)315 1842 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h +(through)g(the)g(list.)32 b(This)20 b(command)f(is)h(in)o(tended)g(to)f +(b)q(e)h(b)q(ound)g(to)315 1895 y Fn(h)p 327 1869 V 327 +1897 a Fm(T)m(AB)p 327 1905 V 399 1895 a Fn(i)414 1897 +y Fu(,)15 b(but)g(is)h(un)o(b)q(ound)g(b)o(y)f(default.)75 +1994 y Ft(delete-char-or-list)e(\(\))315 2049 y Fu(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 2104 y(\(lik)o(e)i Ft(delete-char)p +Fu(\).)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 Ft(possible-)315 2159 y(completions)p +Fu(.)k(This)e(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.)75 +2278 y Fj(1.4.7)30 b(Keyb)r(oard)20 b(Macros)75 2408 +y Ft(start-kbd-macro)13 b(\(C-x)i(\(\))315 2463 y Fu(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 2560 y Ft(end-kbd-macro)e(\(C-x)i(\)\))315 +2615 y Fu(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 2670 y(de\014nition.)p eop +%%Page: 17 19 +17 18 bop 75 -58 a Fu(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055 +b(17)75 149 y Ft(call-last-kbd-macro)13 b(\(C-x)h(e\))315 +204 y Fu(Re-execute)k(the)g(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 +259 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.)75 368 y Fj(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands) +75 486 y Ft(re-read-init-file)13 b(\(C-x)h(C-r\))315 +541 y Fu(Read)d(in)g(the)g(con)o(ten)o(ts)g(of)f(the)h +Fk(inputrc)k Fu(\014le,)d(and)g(incorp)q(orate)f(an)o(y)f(bindings)j +(or)e(v)m(ariable)315 596 y(assignmen)o(ts)k(found)h(there.)75 +684 y Ft(abort)e(\(C-g\))315 739 y Fu(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 794 y(setting)i(of)g Ft(bell-style)p +Fu(\).)75 883 y Ft(do-uppercase-version)d(\(M-a,)j(M-b,)f(M-)p +Fk(x)p Ft(,)h(...\))315 938 y Fu(If)f(the)g(meta\014ed)g(c)o(haracter)f +Fk(x)k Fu(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 993 y(corresp)q(onding)j(upp)q(ercase)g(c)o +(haracter.)75 1082 y Ft(prefix-meta)e(\()377 1080 y Fn(h)p +389 1054 70 2 v 389 1082 a Fm(ESC)p 389 1089 V 456 1080 +a Fn(i)471 1082 y Ft(\))315 1136 y Fu(Metafy)k(the)h(next)g(c)o +(haracter)f(t)o(yp)q(ed.)30 b(This)20 b(is)f(for)f(k)o(eyb)q(oards)h +(without)g(a)f(meta)g(k)o(ey)l(.)315 1191 y(T)o(yping)e(`)485 +1189 y Fn(h)p 496 1163 V 496 1191 a Fm(ESC)p 496 1199 +V 563 1189 a Fn(i)593 1191 y Ft(f)p Fu(')f(is)h(equiv)m(alen)o(t)h(to)d +(t)o(yping)i Fo(M-f)p Fu(.)75 1280 y Ft(undo)f(\(C-_)f(or)h(C-x)g +(C-u\))315 1335 y Fu(Incremen)o(tal)h(undo,)f(separately)h(remem)o(b)q +(ered)g(for)e(eac)o(h)h(line.)75 1424 y Ft(revert-line)f(\(M-r\))315 +1479 y Fu(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 Ft(undo)f +Fu(command)315 1533 y(enough)g(times)f(to)g(get)f(bac)o(k)h(to)g(the)g +(b)q(eginning.)75 1622 y Ft(tilde-expand)f(\(M-~\))315 +1677 y Fu(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o +(ord.)75 1766 y Ft(set-mark)f(\(C-@\))315 1821 y Fu(Set)i(the)h(mark)f +(to)f(the)i(p)q(oin)o(t.)24 b(If)17 b(a)f(n)o(umeric)h(argumen)o(t)f +(is)g(supplied,)j(the)e(mark)e(is)i(set)315 1876 y(to)e(that)f(p)q +(osition.)75 1965 y Ft(exchange-point-and-mark)e(\(C-x)j(C-x\))315 +2020 y Fu(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 2074 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 2163 y Ft(character-search)e +(\(C-]\))315 2218 y Fu(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 2273 y(A)j(negativ)o(e)h(coun)o(t)f(searc)o(hes)g +(for)f(previous)i(o)q(ccurrences.)75 2362 y Ft +(character-search-backward)c(\(M-C-]\))315 2417 y Fu(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 2471 +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 2560 y Ft(insert-comment)d(\(M-#\)) +315 2615 y Fu(The)19 b(v)m(alue)i(of)e(the)g Ft(comment-begin)e +Fu(v)m(ariable)k(is)f(inserted)g(at)e(the)i(b)q(eginning)h(of)e(the)315 +2670 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.)p eop +%%Page: 18 20 +18 19 bop 75 -58 a Fu(18)1299 b(GNU)15 b(Readline)h(Library)75 +149 y Ft(dump-functions)d(\(\))315 204 y Fu(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)g +(output)f(stream.)315 259 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 314 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g +Fk(inputrc)k Fu(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o +(y)f(default.)75 406 y Ft(dump-variables)e(\(\))315 461 +y Fu(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)h(output)e(stream.)315 +516 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 +570 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g Fk(inputrc)k +Fu(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.) +75 663 y Ft(dump-macros)f(\(\))315 717 y Fu(Prin)o(t)j(all)h(of)e(the)h +(Readline)h(k)o(ey)f(sequences)h(b)q(ound)g(to)e(macros)g(and)h(the)g +(strings)g(they)315 772 y(output.)26 b(If)18 b(a)f(n)o(umeric)h +(argumen)o(t)f(is)h(supplied,)i(the)d(output)g(is)h(formatted)e(in)j +(suc)o(h)e(a)315 827 y(w)o(a)o(y)d(that)g(it)i(can)f(b)q(e)g(made)g +(part)g(of)f(an)h Fk(inputrc)k Fu(\014le.)i(This)15 b(command)g(is)h +(un)o(b)q(ound)g(b)o(y)315 882 y(default.)75 1010 y Fs(1.5)33 +b(Readline)23 b(vi)h(Mo)r(de)137 1107 y Fu(While)13 b(the)f(Readline)i +(library)e(do)q(es)g(not)g(ha)o(v)o(e)f(a)h(full)h(set)f(of)f +Ft(vi)g Fu(editing)j(functions,)f(it)f(do)q(es)g(con)o(tain)75 +1161 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)h Ft(vi)f Fu(mo)q(de)g(b)q(eha)o(v)o(es)g(as)g +(sp)q(eci\014ed)i(in)75 1216 y(the)c Fp(posix)g Fu(1003.2)f(standard.) +137 1284 y(In)h(order)g(to)f(switc)o(h)g(in)o(teractiv)o(ely)i(b)q(et)o +(w)o(een)f Ft(emacs)e Fu(and)i Ft(vi)f Fu(editing)i(mo)q(des,)f(use)f +(the)h(command)75 1338 y Fo(M-C-j)j Fu(\(b)q(ound)i(to)e +(emacs-editing-mo)q(de)j(when)e(in)h Ft(vi)f Fu(mo)q(de)g(and)g(to)f +(vi-editing-mo)q(de)k(in)e Ft(emacs)75 1393 y Fu(mo)q(de\).)g(The)15 +b(Readline)i(default)f(is)f Ft(emacs)g Fu(mo)q(de.)137 +1460 y(When)h(y)o(ou)e(en)o(ter)h(a)g(line)i(in)e Ft(vi)g +Fu(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 1515 y(had)e(t)o(yp)q(ed)h(an)f(`)p +Ft(i)p Fu('.)18 b(Pressing)608 1513 y Fn(h)p 620 1487 +70 2 v 620 1515 a Fm(ESC)p 620 1523 V 687 1513 a Fn(i)715 +1515 y Fu(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 1570 y(text)i(of)h(the)g(line)h +(with)g(the)f(standard)f Ft(vi)h Fu(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 1625 +y(`)p Ft(k)p Fu(')14 b(and)i(subsequen)o(t)f(lines)i(with)f(`)p +Ft(j)p Fu(',)e(and)h(so)g(forth.)p eop +%%Page: 19 21 +19 20 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(19)75 149 y Fq(2)41 b(Programming)28 +b(with)e(GNU)i(Readline)137 267 y Fu(This)18 b(c)o(hapter)f(describ)q +(es)h(the)f(in)o(terface)g(b)q(et)o(w)o(een)h(the)f Fp(gnu)g +Fu(Readline)h(Library)f(and)g(other)g(pro-)75 322 y(grams.)h(If)11 +b(y)o(ou)g(are)g(a)g(programmer,)f(and)i(y)o(ou)f(wish)g(to)g(include)j +(the)d(features)g(found)g(in)i Fp(gnu)e Fu(Readline)75 +377 y(suc)o(h)h(as)f(completion,)h(line)h(editing,)g(and)f(in)o +(teractiv)o(e)g(history)f(manipulation)i(in)f(y)o(our)f(o)o(wn)g +(programs,)75 432 y(this)16 b(section)f(is)h(for)f(y)o(ou.)75 +561 y Fs(2.1)33 b(Basic)22 b(Beha)n(vior)137 658 y Fu(Man)o(y)15 +b(programs)f(pro)o(vide)i(a)f(command)g(line)i(in)o(terface,)e(suc)o(h) +h(as)f Ft(mail)p Fu(,)f Ft(ftp)p Fu(,)h(and)g Ft(sh)p +Fu(.)20 b(F)l(or)15 b(suc)o(h)75 713 y(programs,)e(the)h(default)h(b)q +(eha)o(viour)g(of)f(Readline)i(is)e(su\016cien)o(t.)21 +b(This)14 b(section)h(describ)q(es)h(ho)o(w)e(to)g(use)75 +768 y(Readline)k(in)h(the)e(simplest)h(w)o(a)o(y)e(p)q(ossible,)j(p)q +(erhaps)f(to)f(replace)h(calls)g(in)g(y)o(our)f(co)q(de)h(to)e +Ft(gets\(\))g Fu(or)75 822 y Ft(fgets\(\))p Fu(.)137 +890 y(The)h(function)g Ft(readline\(\))e Fu(prin)o(ts)h(a)g(prompt)g +Fk(prompt)h Fu(and)f(then)h(reads)f(and)h(returns)f(a)g(single)75 +945 y(line)i(of)e(text)g(from)f(the)i(user.)23 b(If)17 +b Fk(prompt)g Fu(is)g Ft(NULL)e Fu(or)h(the)h(empt)o(y)f(string,)g(no)g +(prompt)g(is)h(displa)o(y)o(ed.)75 1000 y(The)i(line)h +Ft(readline)d Fu(returns)i(is)g(allo)q(cated)g(with)g +Ft(malloc\(\))p Fu(;)g(the)g(caller)g(should)h Ft(free\(\))e +Fu(the)g(line)75 1054 y(when)e(it)f(has)g(\014nished)i(with)f(it.)k +(The)15 b(declaration)h(for)f Ft(readline)f Fu(in)i(ANSI)g(C)f(is)195 +1119 y Ft(char)23 b(*readline)g(\(const)g(char)g(*)p +Fk(prompt)q Ft(\);)75 1187 y Fu(So,)15 b(one)g(migh)o(t)g(sa)o(y)195 +1251 y Ft(char)23 b(*line)g(=)h(readline)f(\("Enter)g(a)h(line:)f("\);) +75 1319 y Fu(in)12 b(order)f(to)g(read)h(a)f(line)i(of)e(text)g(from)f +(the)i(user.)19 b(The)11 b(line)j(returned)d(has)h(the)f(\014nal)h +(newline)i(remo)o(v)o(ed,)75 1374 y(so)h(only)h(the)f(text)g(remains.) +137 1441 y(If)21 b Ft(readline)e Fu(encoun)o(ters)h(an)g +Ft(EOF)g Fu(while)i(reading)f(the)f(line,)j(and)d(the)h(line)g(is)g +(empt)o(y)f(at)g(that)75 1496 y(p)q(oin)o(t,)15 b(then)g +Ft(\(char)f(*\)NULL)g Fu(is)h(returned.)21 b(Otherwise,)15 +b(the)g(line)h(is)f(ended)h(just)e(as)h(if)g(a)f(newline)j(had)75 +1551 y(b)q(een)f(t)o(yp)q(ed.)137 1618 y(If)d(y)o(ou)g(w)o(an)o(t)f +(the)h(user)g(to)f(b)q(e)i(able)g(to)e(get)g(at)h(the)g(line)h(later,)f +(\(with)1325 1616 y Fn(h)p 1338 1590 57 2 v 1338 1618 +a Fm(C-p)p 1338 1626 V 1392 1616 a Fn(i)1420 1618 y Fu(for)f +(example\),)i(y)o(ou)f(m)o(ust)75 1673 y(call)j Ft(add_history\(\))e +Fu(to)g(sa)o(v)o(e)h(the)g(line)i(a)o(w)o(a)o(y)d(in)i(a)e +Fk(history)19 b Fu(list)d(of)f(suc)o(h)h(lines.)195 1738 +y Ft(add_history)22 b(\(line\);)75 1805 y Fu(F)l(or)15 +b(full)h(details)g(on)f(the)h(GNU)f(History)g(Library)l(,)g(see)h(the)f +(asso)q(ciated)g(man)o(ual.)137 1873 y(It)h(is)g(preferable)h(to)e(a)o +(v)o(oid)g(sa)o(ving)h(empt)o(y)f(lines)i(on)f(the)g(history)f(list,)i +(since)f(users)g(rarely)g(ha)o(v)o(e)f(a)75 1928 y(burning)h(need)g(to) +e(reuse)h(a)g(blank)g(line.)22 b(Here)15 b(is)g(a)g(function)g(whic)o +(h)h(usefully)h(replaces)e(the)g(standard)75 1983 y Ft(gets\(\))f +Fu(library)i(function,)g(and)f(has)g(the)h(adv)m(an)o(tage)e(of)h(no)g +(static)g(bu\013er)g(to)g(o)o(v)o(er\015o)o(w:)195 2047 +y Ft(/*)24 b(A)f(static)g(variable)g(for)h(holding)e(the)i(line.)f(*/) +195 2099 y(static)g(char)g(*line_read)g(=)h(\(char)f(*\)NULL;)195 +2203 y(/*)h(Read)f(a)h(string,)f(and)g(return)g(a)h(pointer)f(to)g(it.) +48 b(Returns)22 b(NULL)i(on)f(EOF.)h(*/)195 2255 y(char)f(*)195 +2307 y(rl_gets)g(\(\))195 2359 y({)243 2411 y(/*)g(If)h(the)f(buffer)g +(has)h(already)f(been)g(allocated,)g(return)g(the)g(memory)314 +2462 y(to)h(the)f(free)h(pool.)f(*/)243 2514 y(if)g(\(line_read\))290 +2566 y({)338 2618 y(free)g(\(line_read\);)338 2670 y(line_read)g(=)h +(\(char)f(*\)NULL;)p eop +%%Page: 20 22 +20 21 bop 75 -58 a Fu(20)1299 b(GNU)15 b(Readline)h(Library)290 +149 y Ft(})243 253 y(/*)23 b(Get)h(a)f(line)h(from)f(the)h(user.)f(*/) +243 305 y(line_read)f(=)i(readline)f(\(""\);)243 409 +y(/*)g(If)h(the)f(line)h(has)f(any)h(text)f(in)g(it,)h(save)f(it)h(on)f +(the)h(history.)f(*/)243 461 y(if)g(\(line_read)g(&&)g(*line_read\))290 +513 y(add_history)g(\(line_read\);)243 616 y(return)g(\(line_read\);) +195 668 y(})137 738 y Fu(This)13 b(function)f(giv)o(es)h(the)e(user)h +(the)g(default)h(b)q(eha)o(viour)g(of)1169 736 y Fn(h)p +1181 710 74 2 v 1181 738 a Fm(T)m(AB)p 1181 746 V 1253 +736 a Fn(i)1280 738 y Fu(completion:)19 b(completion)13 +b(on)f(\014le)75 793 y(names.)20 b(If)c(y)o(ou)f(do)g(not)g(w)o(an)o(t) +f(Readline)j(to)d(complete)j(on)e(\014lenames,)h(y)o(ou)f(can)g(c)o +(hange)h(the)f(binding)75 848 y(of)g(the)205 846 y Fn(h)p +217 820 V 217 848 a Fm(T)m(AB)p 217 855 V 289 846 a Fn(i)319 +848 y Fu(k)o(ey)g(with)h Ft(rl_bind_key\(\))p Fu(.)195 +914 y Ft(int)23 b(rl_bind_key)g(\(int)g Fk(k)o(ey)p Ft(,)h +(rl_command_func_t)d(*)p Fk(function)p Ft(\);)137 984 +y(rl_bind_key\(\))15 b Fu(tak)o(es)h(t)o(w)o(o)g(argumen)o(ts:)22 +b Fk(k)o(ey)e Fu(is)e(the)e(c)o(haracter)g(that)g(y)o(ou)h(w)o(an)o(t)f +(to)g(bind,)i(and)75 1039 y Fk(function)h Fu(is)f(the)g(address)g(of)g +(the)g(function)g(to)g(call)h(when)f Fk(k)o(ey)k Fu(is)c(pressed.)29 +b(Binding)1628 1037 y Fn(h)p 1641 1011 V 1641 1039 a +Fm(T)m(AB)p 1641 1046 V 1712 1037 a Fn(i)1745 1039 y +Fu(to)17 b Ft(rl_)75 1094 y(insert\(\))f Fu(mak)o(es)422 +1092 y Fn(h)p 434 1066 V 434 1094 a Fm(T)m(AB)p 434 1101 +V 506 1092 a Fn(i)539 1094 y Fu(insert)i(itself.)28 b +Ft(rl_bind_key\(\))15 b Fu(returns)j(non-zero)g(if)g +Fk(k)o(ey)j Fu(is)d(not)f(a)g(v)m(alid)75 1148 y(ASCI)q(I)f(c)o +(haracter)f(co)q(de)h(\(b)q(et)o(w)o(een)f(0)g(and)g(255\).)137 +1218 y(Th)o(us,)g(to)g(disable)h(the)g(default)703 1216 +y Fn(h)p 716 1190 V 716 1218 a Fm(T)m(AB)p 716 1226 V +787 1216 a Fn(i)817 1218 y Fu(b)q(eha)o(vior,)g(the)f(follo)o(wing)h +(su\016ces:)195 1285 y Ft(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)137 +1354 y Fu(This)14 b(co)q(de)g(should)g(b)q(e)g(executed)g(once)g(at)e +(the)h(start)f(of)h(y)o(our)g(program;)f(y)o(ou)h(migh)o(t)g(write)g(a) +g(func-)75 1409 y(tion)k(called)h Ft(initialize_readline\(\))13 +b Fu(whic)o(h)k(p)q(erforms)f(this)h(and)g(other)f(desired)h +(initializations,)75 1464 y(suc)o(h)f(as)e(installing)k(custom)c +(completers)i(\(see)f(Section)h(2.6)f([Custom)f(Completers],)g(page)h +(38\).)75 1599 y Fs(2.2)33 b(Custom)21 b(F)-6 b(unctions)137 +1697 y Fu(Readline)14 b(pro)o(vides)f(man)o(y)e(functions)i(for)f +(manipulating)i(the)e(text)g(of)g(the)g(line,)i(but)e(it)h(isn't)f(p)q +(ossi-)75 1752 y(ble)i(to)f(an)o(ticipate)h(the)f(needs)h(of)f(all)h +(programs.)k(This)13 b(section)h(describ)q(es)h(the)e(v)m(arious)h +(functions)g(and)75 1807 y(v)m(ariables)g(de\014ned)h(within)f(the)f +(Readline)i(library)e(whic)o(h)h(allo)o(w)g(a)e(user)h(program)f(to)h +(add)g(customized)75 1862 y(functionalit)o(y)j(to)f(Readline.)137 +1931 y(Before)j(declaring)i(an)o(y)e(functions)h(that)f(customize)g +(Readline's)h(b)q(eha)o(vior,)h(or)d(using)i(an)o(y)f(func-)75 +1986 y(tionalit)o(y)23 b(Readline)h(pro)o(vides)g(in)f(other)g(co)q +(de,)h(an)f(application)i(writer)d(should)i(include)h(the)e(\014le)75 +2041 y Ft(<readline/readline.h>)14 b Fu(in)j(an)o(y)g(\014le)h(that)e +(uses)h(Readline's)g(features.)24 b(Since)19 b(some)d(of)g(the)h +(de\014-)75 2096 y(nitions)g(in)f Ft(readline.h)e Fu(use)i(the)g +Ft(stdio)f Fu(library)l(,)h(the)g(\014le)g Ft(<stdio.h>)f +Fu(should)h(b)q(e)g(included)j(b)q(efore)75 2151 y Ft(readline.h)p +Fu(.)75 2268 y Fj(2.2.1)30 b(Readline)20 b(T)n(yp)r(edefs)137 +2366 y Fu(F)l(or)15 b(readabilt)o(y)l(,)g(w)o(e)g(declare)i(a)d(n)o(um) +o(b)q(er)i(of)f(new)g(ob)s(ject)g(t)o(yp)q(es,)g(all)h(p)q(oin)o(ters)f +(to)g(functions.)137 2436 y(The)j(reason)g(for)f(declaring)i(these)f +(new)g(t)o(yp)q(es)g(is)h(to)e(mak)o(e)g(it)h(easier)h(to)e(write)h(co) +q(de)g(describing)75 2491 y(p)q(oin)o(ters)e(to)e(C)h(functions)h(with) +g(appropriately)f(protot)o(yp)q(ed)g(argumen)o(ts)g(and)g(return)g(v)m +(alues.)137 2560 y(F)l(or)j(instance,)i(sa)o(y)e(w)o(e)g(w)o(an)o(t)f +(to)h(declare)h(a)f(v)m(ariable)i Fk(func)i Fu(as)c(a)g(p)q(oin)o(ter)h +(to)f(a)g(function)h(whic)o(h)75 2615 y(tak)o(es)12 b(t)o(w)o(o)g +Ft(int)g Fu(argumen)o(ts)g(and)h(returns)g(an)g Ft(int)f +Fu(\(this)h(is)g(the)g(t)o(yp)q(e)g(of)g(all)g(of)g(the)g(Readline)h +(bindable)75 2670 y(functions\).)20 b(Instead)c(of)f(the)g(classic)h(C) +f(declaration)p eop +%%Page: 21 23 +21 22 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(21)137 149 y Ft(int)15 b(\(*func\)\(\);)75 +220 y Fu(or)g(the)g(ANSI-C)h(st)o(yle)f(declaration)137 +290 y Ft(int)g(\(*func\)\(int,)f(int\);)75 360 y Fu(w)o(e)h(ma)o(y)f +(write)137 430 y Ft(rl_command_func_t)f(*func;)137 500 +y Fu(The)j(full)g(list)g(of)f(function)h(p)q(oin)o(ter)g(t)o(yp)q(es)f +(a)o(v)m(ailable)i(is)75 584 y Ft(typedef)d(int)h(rl_command_func_t)e +(\(int,)h(int\);)75 652 y(typedef)g(char)h(*rl_compentry_func_t)d +(\(const)j(char)f(*,)h(int\);)75 721 y(typedef)f(char)h +(**rl_completion_func_t)d(\(const)i(char)h(*,)g(int,)f(int\);)75 +790 y(typedef)g(char)h(*rl_quote_func_t)e(\(char)h(*,)h(int,)g(char)f +(*\);)75 858 y(typedef)g(char)h(*rl_dequote_func_t)d(\(char)j(*,)g +(int\);)75 927 y(typedef)f(int)h(rl_compignore_func_t)d(\(char)j(**\);) +75 996 y(typedef)f(void)h(rl_compdisp_func_t)d(\(char)j(**,)g(int,)f +(int\);)75 1064 y(typedef)g(int)h(rl_hook_func_t)e(\(void\);)75 +1133 y(typedef)h(int)h(rl_getc_func_t)e(\(FILE)i(*\);)75 +1202 y(typedef)f(int)h(rl_linebuf_func_t)e(\(char)h(*,)h(int\);)75 +1270 y(typedef)f(int)h(rl_intfunc_t)e(\(int\);)75 1339 +y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)75 1408 y(typedef)h(int)h +(rl_icpfunc_t)e(\(char)i(*\);)75 1476 y(typedef)f(int)h(rl_icppfunc_t)e +(\(char)i(**\);)75 1545 y(typedef)f(void)h(rl_voidfunc_t)e(\(void\);)75 +1614 y(typedef)h(void)h(rl_vintfunc_t)e(\(int\);)75 1682 +y(typedef)h(void)h(rl_vcpfunc_t)e(\(char)i(*\);)75 1751 +y(typedef)f(void)h(rl_vcppfunc_t)e(\(char)i(**\);)75 +1855 y Fj(2.2.2)30 b(W)-5 b(riting)20 b(a)h(New)f(F)-5 +b(unction)137 1954 y Fu(In)17 b(order)f(to)f(write)h(new)h(functions)g +(for)e(Readline,)i(y)o(ou)f(need)h(to)e(kno)o(w)h(the)g(calling)i(con)o +(v)o(en)o(tions)75 2009 y(for)g(k)o(eyb)q(oard-in)o(v)o(ok)o(ed)h +(functions,)g(and)g(the)f(names)h(of)f(the)g(v)m(ariables)i(that)d +(describ)q(e)k(the)d(curren)o(t)75 2064 y(state)c(of)h(the)g(line)i +(read)e(so)g(far.)137 2134 y(The)h(calling)h(sequence)f(for)f(a)f +(command)i Ft(foo)e Fu(lo)q(oks)i(lik)o(e)195 2201 y +Ft(foo)23 b(\(int)h(count,)f(int)g(key\))75 2271 y Fu(where)18 +b Fk(coun)o(t)h Fu(is)f(the)g(n)o(umeric)h(argumen)o(t)e(\(or)h(1)f(if) +i(defaulted\))f(and)g Fk(k)o(ey)k Fu(is)d(the)f(k)o(ey)g(that)f(in)o(v) +o(ok)o(ed)75 2326 y(this)f(function.)137 2396 y(It)c(is)g(completely)h +(up)f(to)f(the)g(function)i(as)e(to)g(what)g(should)h(b)q(e)g(done)g +(with)g(the)g(n)o(umeric)g(argumen)o(t.)75 2451 y(Some)20 +b(functions)h(use)f(it)g(as)g(a)g(rep)q(eat)g(coun)o(t,)g(some)g(as)g +(a)f(\015ag,)i(and)f(others)g(to)f(c)o(ho)q(ose)h(alternate)75 +2506 y(b)q(eha)o(vior)i(\(refreshing)g(the)g(curren)o(t)f(line)j(as)d +(opp)q(osed)h(to)f(refreshing)i(the)e(screen,)j(for)d(example\).)75 +2560 y(Some)c(c)o(ho)q(ose)f(to)g(ignore)h(it.)24 b(In)18 +b(general,)f(if)g(a)f(function)h(uses)g(the)g(n)o(umeric)h(argumen)o(t) +d(as)i(a)f(rep)q(eat)75 2615 y(coun)o(t,)e(it)g(should)h(b)q(e)f(able)h +(to)e(do)h(something)h(useful)g(with)f(b)q(oth)g(negativ)o(e)g(and)g(p) +q(ositiv)o(e)h(argumen)o(ts.)75 2670 y(A)o(t)g(the)g(v)o(ery)g(least,)g +(it)g(should)h(b)q(e)g(a)o(w)o(are)e(that)h(it)g(can)g(b)q(e)h(passed)g +(a)f(negativ)o(e)g(argumen)o(t.)p eop +%%Page: 22 24 +22 23 bop 75 -58 a Fu(22)1299 b(GNU)15 b(Readline)h(Library)75 +149 y Fs(2.3)33 b(Readline)23 b(V)-6 b(ariables)137 245 +y Fu(These)16 b(v)m(ariables)g(are)f(a)o(v)m(ailable)i(to)e(function)h +(writers.)1773 356 y(V)l(ariable)-1861 b Fi(char)20 b(*)f +Fh(rl)p 286 356 18 3 v 21 w(line)p 395 356 V 23 w(bu\013er)195 +410 y Fu(This)d(is)g(the)g(line)h(gathered)f(so)f(far.)20 +b(Y)l(ou)c(are)f(w)o(elcome)h(to)f(mo)q(dify)h(the)g(con)o(ten)o(ts)f +(of)g(the)h(line,)195 465 y(but)i(see)g(Section)h(2.4.5)d([Allo)o(wing) +i(Undoing],)h(page)e(29.)27 b(The)18 b(function)h Ft(rl_extend_line_) +195 520 y(buffer)14 b Fu(is)i(a)o(v)m(ailable)h(to)d(increase)j(the)e +(memory)f(allo)q(cated)j(to)d Ft(rl_line_buffer)p Fu(.)1773 +631 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 631 +V 21 w(p)r(oin)n(t)195 686 y Fu(The)15 b(o\013set)g(of)f(the)i(curren)o +(t)f(cursor)g(p)q(osition)h(in)g Ft(rl_line_buffer)d +Fu(\(the)i Fl(p)n(oint)t Fu(\).)1773 797 y(V)l(ariable)-1861 +b Fi(int)20 b Fh(rl)p 215 797 V 21 w(end)195 852 y Fu(The)14 +b(n)o(um)o(b)q(er)g(of)g(c)o(haracters)f(presen)o(t)h(in)h +Ft(rl_line_buffer)p Fu(.)i(When)e Ft(rl_point)e Fu(is)h(at)f(the)h(end) +195 906 y(of)h(the)g(line,)i Ft(rl_point)d Fu(and)h Ft(rl_end)f +Fu(are)h(equal.)1773 1017 y(V)l(ariable)-1861 b Fi(int)20 +b Fh(rl)p 215 1017 V 21 w(mark)195 1072 y Fu(The)f Fk(mark)h +Fu(\(sa)o(v)o(ed)e(p)q(osition\))h(in)g(the)g(curren)o(t)f(line.)31 +b(If)19 b(set,)g(the)f(mark)g(and)h(p)q(oin)o(t)g(de\014ne)g(a)195 +1127 y Fl(r)n(e)n(gion)p Fu(.)1773 1238 y(V)l(ariable)-1861 +b Fi(int)20 b Fh(rl)p 215 1238 V 21 w(done)195 1293 y +Fu(Setting)11 b(this)g(to)g(a)f(non-zero)h(v)m(alue)h(causes)f +(Readline)h(to)f(return)f(the)h(curren)o(t)g(line)h(immediately)l(.) +1773 1404 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 +1404 V 21 w(n)n(um)p 347 1404 V 19 w(c)n(hars)p 496 1404 +V 20 w(to)p 567 1404 V 21 w(read)195 1459 y Fu(Setting)d(this)g(to)f(a) +g(p)q(ositiv)o(e)h(v)m(alue)h(b)q(efore)f(calling)h Ft(readline\(\))d +Fu(causes)h(Readline)i(to)e(return)195 1514 y(after)h(accepting)i(that) +e(man)o(y)g(c)o(haracters,)h(rather)f(than)h(reading)g(up)g(to)f(a)h(c) +o(haracter)f(b)q(ound)195 1568 y(to)e Ft(accept-line)p +Fu(.)1773 1679 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p +215 1679 V 21 w(p)r(ending)p 436 1679 V 20 w(input)195 +1734 y Fu(Setting)13 b(this)g(to)f(a)g(v)m(alue)i(mak)o(es)e(it)h(the)f +(next)h(k)o(eystrok)o(e)f(read.)19 b(This)13 b(is)g(a)f(w)o(a)o(y)g(to) +f(stu\013)h(a)h(single)195 1789 y(c)o(haracter)h(in)o(to)i(the)f(input) +h(stream.)1773 1900 y(V)l(ariable)-1861 b Fi(int)20 b +Fh(rl)p 215 1900 V 21 w(dispatc)n(hing)195 1955 y Fu(Set)12 +b(to)g(a)f(non-zero)i(v)m(alue)g(if)g(a)f(function)h(is)f(b)q(eing)i +(called)f(from)f(a)f(k)o(ey)h(binding;)j(zero)d(otherwise.)195 +2010 y(Application)20 b(functions)e(can)g(test)g(this)g(to)f(disco)o(v) +o(er)h(whether)g(they)g(w)o(ere)g(called)h(directly)g(or)195 +2064 y(b)o(y)c(Readline's)h(dispatc)o(hing)h(mec)o(hanism.)1773 +2175 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 2175 +V 21 w(erase)p 363 2175 V 20 w(empt)n(y)p 540 2175 V +20 w(line)195 2230 y Fu(Setting)j(this)h(to)e(a)h(non-zero)g(v)m(alue)h +(causes)f(Readline)i(to)d(completely)i(erase)f(the)g(curren)o(t)195 +2285 y(line,)g(including)h(an)o(y)c(prompt,)h(an)o(y)g(time)g(a)f +(newline)j(is)e(t)o(yp)q(ed)g(as)f(the)h(only)g(c)o(haracter)f(on)195 +2340 y(an)e(otherwise-empt)o(y)g(line.)31 b(The)18 b(cursor)g(is)h(mo)o +(v)o(ed)e(to)h(the)g(b)q(eginning)i(of)e(the)g(newly-blank)195 +2395 y(line.)1773 2506 y(V)l(ariable)-1861 b Fi(char)20 +b(*)f Fh(rl)p 286 2506 V 21 w(prompt)195 2560 y Fu(The)13 +b(prompt)g(Readline)h(uses.)20 b(This)13 b(is)h(set)f(from)f(the)h +(argumen)o(t)g(to)f Ft(readline\(\))p Fu(,)g(and)h(should)195 +2615 y(not)g(b)q(e)h(assigned)g(to)f(directly)l(.)21 +b(The)14 b Ft(rl_set_prompt\(\))d Fu(function)j(\(see)g(Section)g +(2.4.6)e([Redis-)195 2670 y(pla)o(y],)j(page)g(30\))f(ma)o(y)h(b)q(e)g +(used)h(to)f(mo)q(dify)h(the)f(prompt)g(string)g(after)f(calling)j +Ft(readline\(\))p Fu(.)p eop +%%Page: 23 25 +23 24 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(23)1773 149 y(V)l(ariable)-1861 b Fi(int)20 +b Fh(rl)p 215 149 18 3 v 21 w(already)p 419 149 V 21 +w(prompted)195 204 y Fu(If)e(an)g(application)i(wishes)f(to)f(displa)o +(y)h(the)f(prompt)g(itself,)h(rather)f(than)g(ha)o(v)o(e)g(Readline)h +(do)195 259 y(it)e(the)f(\014rst)g(time)h Ft(readline\(\))e +Fu(is)i(called,)h(it)e(should)i(set)e(this)h(v)m(ariable)g(to)f(a)g +(non-zero)h(v)m(alue)195 314 y(after)h(displa)o(ying)j(the)e(prompt.)31 +b(The)19 b(prompt)g(m)o(ust)f(also)h(b)q(e)h(passed)f(as)f(the)h +(argumen)o(t)g(to)195 369 y Ft(readline\(\))c Fu(so)h(the)h(redispla)o +(y)g(functions)h(can)e(up)q(date)h(the)g(displa)o(y)h(prop)q(erly)l(.) +24 b(The)17 b(calling)195 423 y(application)g(is)f(resp)q(onsible)h +(for)d(managing)h(the)h(v)m(alue;)g(Readline)g(nev)o(er)g(sets)e(it.) +1773 549 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f +Fh(rl)p 436 549 V 21 w(library)p 625 549 V 21 w(v)n(ersion)195 +604 y Fu(The)c(v)o(ersion)h(n)o(um)o(b)q(er)f(of)g(this)h(revision)g +(of)f(the)g(library)l(.)1773 730 y(V)l(ariable)-1861 +b Fi(int)20 b Fh(rl)p 215 730 V 21 w(gn)n(u)p 327 730 +V 20 w(readline)p 545 730 V 22 w(p)195 785 y Fu(Alw)o(a)o(ys)15 +b(set)g(to)f(1,)h(denoting)h(that)e(this)i(is)g Fp(gnu)f +Fu(readline)h(rather)f(than)g(some)g(em)o(ulation.)1773 +911 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p +436 911 V 21 w(terminal)p 668 911 V 21 w(name)195 966 +y Fu(The)14 b(terminal)h(t)o(yp)q(e,)f(used)h(for)e(initialization.)23 +b(If)14 b(not)f(set)h(b)o(y)g(the)g(application,)i(Readline)f(sets)195 +1021 y(this)h(to)e(the)h(v)m(alue)i(of)e(the)g Ft(TERM)g +Fu(en)o(vironmen)o(t)g(v)m(ariable)i(the)e(\014rst)g(time)g(it)h(is)f +(called.)1773 1147 y(V)l(ariable)-1861 b Fi(const)20 +b(char)g(*)f Fh(rl)p 436 1147 V 21 w(readline)p 655 1147 +V 22 w(name)195 1201 y Fu(This)d(v)m(ariable)h(is)f(set)g(to)f(a)g +(unique)i(name)f(b)o(y)f(eac)o(h)h(application)h(using)f(Readline.)23 +b(The)16 b(v)m(alue)195 1256 y(allo)o(ws)e(conditional)i(parsing)e(of)g +(the)g(inputrc)h(\014le)g(\(see)f(Section)h(1.3.2)d([Conditional)j +(Init)g(Con-)195 1311 y(structs],)f(page)h(8\).)1773 +1437 y(V)l(ariable)-1861 b Fi(FILE)20 b(*)f Fh(rl)p 286 +1437 V 21 w(instream)195 1492 y Fu(The)c(stdio)h(stream)e(from)h(whic)o +(h)h(Readline)g(reads)f(input.)1773 1618 y(V)l(ariable)-1861 +b Fi(FILE)20 b(*)f Fh(rl)p 286 1618 V 21 w(outstream)195 +1673 y Fu(The)c(stdio)h(stream)e(to)h(whic)o(h)h(Readline)g(p)q +(erforms)f(output.)1773 1799 y(V)l(ariable)-1861 b Fi +(rl_command_func_t)22 b(*)d Fh(rl)p 626 1799 V 21 w(last)p +735 1799 V 21 w(func)195 1854 y Fu(The)f(address)f(of)g(the)g(last)h +(command)f(function)h(Readline)h(executed.)27 b(Ma)o(y)17 +b(b)q(e)h(used)g(to)f(test)195 1908 y(whether)e(or)g(not)g(a)g +(function)h(is)f(b)q(eing)i(executed)f(t)o(wice)g(in)g(succession,)g +(for)e(example.)1773 2034 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21 +b(*)e Fh(rl)p 547 2034 V 22 w(startup)p 752 2034 V 19 +w(ho)r(ok)195 2089 y Fu(If)e(non-zero,)h(this)g(is)f(the)h(address)f +(of)f(a)h(function)h(to)f(call)h(just)f(b)q(efore)g Ft(readline)f +Fu(prin)o(ts)i(the)195 2144 y(\014rst)d(prompt.)1773 +2270 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21 b(*)e +Fh(rl)p 547 2270 V 22 w(pre)p 651 2270 V 20 w(input)p +804 2270 V 21 w(ho)r(ok)195 2325 y Fu(If)f(non-zero,)g(this)g(is)h(the) +f(address)f(of)h(a)f(function)i(to)e(call)i(after)e(the)h(\014rst)f +(prompt)g(has)h(b)q(een)195 2380 y(prin)o(ted)e(and)f(just)g(b)q(efore) +h Ft(readline)e Fu(starts)g(reading)h(input)i(c)o(haracters.)1773 +2506 y(V)l(ariable)-1861 b Fi(rl_hook_func_t)21 b(*)e +Fh(rl)p 547 2506 V 22 w(ev)n(en)n(t)p 701 2506 V 22 w(ho)r(ok)195 +2560 y Fu(If)i(non-zero,)g(this)g(is)g(the)f(address)g(of)g(a)g +(function)h(to)f(call)i(p)q(erio)q(dically)h(when)e(Readline)g(is)195 +2615 y(w)o(aiting)15 b(for)f(terminal)h(input.)21 b(By)14 +b(default,)h(this)g(will)i(b)q(e)e(called)h(at)e(most)g(ten)g(times)h +(a)f(second)195 2670 y(if)i(there)f(is)h(no)f(k)o(eyb)q(oard)g(input.)p +eop +%%Page: 24 26 +24 25 bop 75 -58 a Fu(24)1299 b(GNU)15 b(Readline)h(Library)1773 +149 y(V)l(ariable)-1861 b Fi(rl_getc_func_t)21 b(*)e +Fh(rl)p 547 149 18 3 v 22 w(getc)p 671 149 V 21 w(function)195 +204 y Fu(If)c(non-zero,)h(Readline)g(will)h(call)f(indirectly)i +(through)d(this)g(p)q(oin)o(ter)h(to)f(get)f(a)h(c)o(haracter)g(from) +195 259 y(the)k(input)i(stream.)31 b(By)19 b(default,)h(it)g(is)g(set)f +(to)f Ft(rl_getc)p Fu(,)h(the)g(default)h(Readline)h(c)o(haracter)195 +314 y(input)16 b(function)g(\(see)f(Section)h(2.4.8)e([Character)g +(Input],)h(page)g(32\).)1773 442 y(V)l(ariable)-1861 +b Fi(rl_voidfunc_t)21 b(*)e Fh(rl)p 521 442 V 21 w(redispla)n(y)p +765 442 V 22 w(function)195 497 y Fu(If)f(non-zero,)h(Readline)g(will)h +(call)f(indirectly)h(through)e(this)g(p)q(oin)o(ter)h(to)e(up)q(date)i +(the)f(displa)o(y)195 552 y(with)c(the)f(curren)o(t)h(con)o(ten)o(ts)f +(of)g(the)g(editing)i(bu\013er.)k(By)14 b(default,)g(it)g(is)g(set)f +(to)g Ft(rl_redisplay)p Fu(,)195 607 y(the)i(default)h(Readline)h +(redispla)o(y)f(function)g(\(see)f(Section)h(2.4.6)e([Redispla)o(y],)h +(page)g(30\).)1773 735 y(V)l(ariable)-1861 b Fi(rl_vintfunc_t)21 +b(*)e Fh(rl)p 521 735 V 21 w(prep)p 656 735 V 21 w(term)p +798 735 V 19 w(function)195 790 y Fu(If)12 b(non-zero,)h(Readline)g +(will)h(call)f(indirectly)h(through)e(this)g(p)q(oin)o(ter)h(to)e +(initialize)k(the)e(terminal.)195 844 y(The)19 b(function)g(tak)o(es)f +(a)g(single)i(argumen)o(t,)e(an)h Ft(int)f Fu(\015ag)g(that)g(sa)o(ys)g +(whether)g(or)h(not)f(to)g(use)195 899 y(eigh)o(t-bit)g(c)o(haracters.) +25 b(By)17 b(default,)h(this)f(is)h(set)e(to)h Ft(rl_prep_terminal)e +Fu(\(see)i(Section)h(2.4.9)195 954 y([T)l(erminal)e(Managemen)o(t],)d +(page)i(32\).)1773 1082 y(V)l(ariable)-1861 b Fi(rl_voidfunc_t)21 +b(*)e Fh(rl)p 521 1082 V 21 w(deprep)p 714 1082 V 21 +w(term)p 856 1082 V 19 w(function)195 1137 y Fu(If)g(non-zero,)g +(Readline)g(will)h(call)g(indirectly)g(through)e(this)h(p)q(oin)o(ter)f +(to)g(reset)g(the)h(terminal.)195 1192 y(This)f(function)g(should)h +(undo)f(the)f(e\013ects)h(of)f Ft(rl_prep_term_function)p +Fu(.)24 b(By)17 b(default,)i(this)195 1247 y(is)d(set)f(to)f +Ft(rl_deprep_terminal)f Fu(\(see)i(Section)h(2.4.9)e([T)l(erminal)i +(Managemen)o(t],)d(page)i(32\).)1773 1375 y(V)l(ariable)-1861 +b Fi(Keymap)20 b Fh(rl)p 293 1375 V 21 w(executing)p +551 1375 V 22 w(k)n(eymap)195 1430 y Fu(This)f(v)m(ariable)g(is)f(set)g +(to)g(the)g(k)o(eymap)f(\(see)h(Section)h(2.4.2)e([Keymaps],)g(page)h +(26\))f(in)i(whic)o(h)195 1485 y(the)c(curren)o(tly)h(executing)g +(readline)h(function)f(w)o(as)f(found.)1773 1613 y(V)l(ariable)-1861 +b Fi(Keymap)20 b Fh(rl)p 293 1613 V 21 w(binding)p 501 +1613 V 22 w(k)n(eymap)195 1668 y Fu(This)f(v)m(ariable)g(is)f(set)g(to) +g(the)g(k)o(eymap)f(\(see)h(Section)h(2.4.2)e([Keymaps],)g(page)h(26\)) +f(in)i(whic)o(h)195 1723 y(the)c(last)g(k)o(ey)g(binding)j(o)q +(ccurred.)1773 1851 y(V)l(ariable)-1861 b Fi(char)20 +b(*)f Fh(rl)p 286 1851 V 21 w(executing)p 544 1851 V +22 w(macro)195 1906 y Fu(This)d(v)m(ariable)g(is)g(set)f(to)g(the)g +(text)g(of)f(an)o(y)h(curren)o(tly-executing)i(macro.)1773 +2034 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 2034 +V 21 w(readline)p 434 2034 V 22 w(state)195 2089 y Fu(A)d(v)m(ariable)i +(with)e(bit)h(v)m(alues)h(that)d(encapsulate)i(the)g(curren)o(t)f +(Readline)h(state.)25 b(A)18 b(bit)f(is)h(set)195 2144 +y(with)h(the)g Ft(RL_SETSTATE)f Fu(macro,)h(and)g(unset)g(with)g(the)g +Ft(RL_UNSETSTATE)e Fu(macro.)31 b(Use)19 b(the)195 2199 +y Ft(RL_ISSTATE)e Fu(macro)h(to)g(test)g(whether)h(a)f(particular)i +(state)d(bit)j(is)f(set.)30 b(Curren)o(t)18 b(state)g(bits)195 +2253 y(include:)195 2339 y Ft(RL_STATE_NONE)435 2393 +y Fu(Readline)e(has)g(not)e(y)o(et)h(b)q(een)h(called,)h(nor)e(has)g +(it)g(b)q(egun)h(to)f(in)o(tialize.)195 2477 y Ft +(RL_STATE_INITIALIZING)435 2532 y Fu(Readline)h(is)g(initializi)q(ng)i +(its)d(in)o(ternal)h(data)f(structures.)195 2615 y Ft +(RL_STATE_INITIALIZED)435 2670 y Fu(Readline)h(has)g(completed)g(its)f +(initialization.)p eop +%%Page: 25 27 +25 26 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(25)195 149 y Ft(RL_STATE_TERMPREPPED)435 +204 y Fu(Readline)16 b(has)e(mo)q(di\014ed)i(the)e(terminal)h(mo)q(des) +g(to)e(do)i(its)f(o)o(wn)g(input)h(and)g(redis-)435 259 +y(pla)o(y)l(.)195 342 y Ft(RL_STATE_READCMD)435 397 y +Fu(Readline)h(is)g(reading)g(a)f(command)g(from)f(the)i(k)o(eyb)q +(oard.)195 480 y Ft(RL_STATE_METANEXT)435 534 y Fu(Readline)g(is)g +(reading)g(more)f(input)h(after)e(reading)i(the)f(meta-pre\014x)h(c)o +(haracter.)195 617 y Ft(RL_STATE_DISPATCHING)435 672 +y Fu(Readline)g(is)g(dispatc)o(hing)h(to)d(a)h(command.)195 +755 y Ft(RL_STATE_MOREINPUT)435 810 y Fu(Readline)h(is)g(reading)g +(more)f(input)h(while)h(executing)f(an)f(editing)i(command.)195 +893 y Ft(RL_STATE_ISEARCH)435 947 y Fu(Readline)f(is)g(p)q(erforming)g +(an)f(incremen)o(tal)h(history)f(searc)o(h.)195 1030 +y Ft(RL_STATE_NSEARCH)435 1085 y Fu(Readline)h(is)g(p)q(erforming)g(a)f +(non-incremen)o(tal)h(history)g(searc)o(h.)195 1168 y +Ft(RL_STATE_SEARCH)435 1223 y Fu(Readline)11 b(is)g(searc)o(hing)g(bac) +o(kw)o(ard)e(or)h(forw)o(ard)f(through)h(the)g(history)g(for)f(a)h +(string.)195 1306 y Ft(RL_STATE_NUMERICARG)435 1360 y +Fu(Readline)16 b(is)g(reading)g(a)f(n)o(umeric)h(argumen)o(t.)195 +1443 y Ft(RL_STATE_MACROINPUT)435 1498 y Fu(Readline)d(is)g(curren)o +(tly)g(getting)f(its)g(input)h(from)e(a)h(previously-de\014ned)j(k)o +(eyb)q(oard)435 1553 y(macro.)195 1636 y Ft(RL_STATE_MACRODEF)435 +1691 y Fu(Readline)h(is)g(curren)o(tly)g(reading)g(c)o(haracters)e +(de\014ning)j(a)e(k)o(eyb)q(oard)g(macro.)195 1773 y +Ft(RL_STATE_OVERWRITE)435 1828 y Fu(Readline)h(is)g(in)g(o)o(v)o +(erwrite)f(mo)q(de.)195 1911 y Ft(RL_STATE_COMPLETING)435 +1966 y Fu(Readline)h(is)g(p)q(erforming)g(w)o(ord)e(completion.)195 +2049 y Ft(RL_STATE_SIGHANDLER)435 2104 y Fu(Readline)i(is)g(curren)o +(tly)g(executing)g(the)f(readline)i(signal)f(handler.)195 +2187 y Ft(RL_STATE_UNDOING)435 2241 y Fu(Readline)g(is)g(p)q(erforming) +g(an)f(undo.)195 2324 y Ft(RL_STATE_DONE)435 2379 y Fu(Readline)g(has)f +(read)g(a)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e Ft(accept-line)f +Fu(and)i(is)h(ab)q(out)f(to)435 2434 y(return)h(the)g(line)i(to)e(the)g +(caller.)1773 2560 y(V)l(ariable)-1861 b Fi(int)20 b +Fh(rl)p 215 2560 18 3 v 21 w(explicit)p 417 2560 V 24 +w(arg)195 2615 y Fu(Set)f(to)g(a)g(non-zero)h(v)m(alue)h(if)e(an)h +(explicit)h(n)o(umeric)g(argumen)o(t)d(w)o(as)h(sp)q(eci\014ed)i(b)o(y) +f(the)f(user.)195 2670 y(Only)d(v)m(alid)h(in)f(a)f(bindable)i(command) +f(function.)p eop +%%Page: 26 28 +26 27 bop 75 -58 a Fu(26)1299 b(GNU)15 b(Readline)h(Library)1773 +149 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 149 +18 3 v 21 w(n)n(umeric)p 437 149 V 20 w(arg)195 204 y +Fu(Set)j(to)f(the)g(v)m(alue)i(of)f(an)o(y)f(n)o(umeric)h(argumen)o(t)f +(explicitly)k(sp)q(eci\014ed)f(b)o(y)d(the)h(user)g(b)q(efore)195 +259 y(executing)14 b(the)f(curren)o(t)g(Readline)h(function.)20 +b(Only)14 b(v)m(alid)h(in)f(a)f(bindable)i(command)d(function.)1773 +368 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 368 +V 21 w(editing)p 407 368 V 22 w(mo)r(de)195 423 y Fu(Set)13 +b(to)f(a)g(v)m(alue)i(denoting)f(Readline's)g(curren)o(t)g(editing)h +(mo)q(de.)19 b(A)12 b(v)m(alue)i(of)e Fk(1)k Fu(means)d(Readline)195 +477 y(is)j(curren)o(tly)f(in)h(emacs)g(mo)q(de;)f Fk(0)j +Fu(means)d(that)g(vi)h(mo)q(de)f(is)h(activ)o(e.)75 601 +y Fs(2.4)33 b(Readline)23 b(Con)n(v)n(enience)g(F)-6 +b(unctions)75 737 y Fj(2.4.1)30 b(Naming)20 b(a)g(F)-5 +b(unction)137 832 y Fu(The)20 b(user)g(can)g(dynamically)i(c)o(hange)e +(the)g(bindings)i(of)d(k)o(eys)h(while)h(using)g(Readline.)35 +b(This)20 b(is)75 887 y(done)f(b)o(y)f(represen)o(ting)h(the)g +(function)g(with)g(a)f(descriptiv)o(e)i(name.)29 b(The)19 +b(user)f(is)h(able)h(to)d(t)o(yp)q(e)i(the)75 941 y(descriptiv)o(e)e +(name)e(when)h(referring)f(to)g(the)g(function.)21 b(Th)o(us,)14 +b(in)i(an)f(init)i(\014le,)f(one)f(migh)o(t)g(\014nd)195 +1004 y Ft(Meta-Rubout:)46 b(backward-kill-word)137 1070 +y Fu(This)21 b(binds)g(the)f(k)o(eystrok)o(e)661 1068 +y Fn(h)p 673 1042 209 2 v 673 1070 a Fm(Meta-Rub)q(out)p +673 1077 V 879 1068 a Fn(i)914 1070 y Fu(to)g(the)g(function)g +Fl(descriptively)k Fu(named)c Ft(backward-)75 1124 y(kill-word)p +Fu(.)29 b(Y)l(ou,)19 b(as)f(the)h(programmer,)f(should)i(bind)f(the)g +(functions)h(y)o(ou)e(write)h(to)e(descriptiv)o(e)75 +1179 y(names)e(as)g(w)o(ell.)21 b(Readline)16 b(pro)o(vides)g(a)f +(function)h(for)e(doing)i(that:)1762 1288 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1288 18 3 v 21 w(add)p 328 +1288 V 20 w(defun)i Fg(\()p Ft(const)14 b(char)h(*name,)f +(rl_command_func_t)283 1343 y(*function,)f(int)i(key)p +Fg(\))195 1397 y Fu(Add)j Fk(name)i Fu(to)d(the)h(list)h(of)e(named)h +(functions.)28 b(Mak)o(e)17 b Fk(function)h Fu(b)q(e)g(the)g(function)h +(that)d(gets)195 1452 y(called.)21 b(If)16 b Fk(k)o(ey)j +Fu(is)d(not)e(-1,)h(then)h(bind)g(it)g(to)e Fk(function)i +Fu(using)g Ft(rl_bind_key\(\))p Fu(.)137 1539 y(Using)g(this)f +(function)h(alone)g(is)f(su\016cien)o(t)h(for)f(most)f(applications.)21 +b(It)15 b(is)h(the)f(recommended)h(w)o(a)o(y)75 1594 +y(to)d(add)h(a)f(few)g(functions)h(to)f(the)h(default)g(functions)g +(that)f(Readline)i(has)e(built)i(in.)20 b(If)14 b(y)o(ou)f(need)h(to)f +(do)75 1649 y(something)k(other)g(than)f(adding)i(a)e(function)i(to)e +(Readline,)i(y)o(ou)f(ma)o(y)f(need)i(to)e(use)h(the)g(underlying)75 +1704 y(functions)f(describ)q(ed)h(b)q(elo)o(w.)75 1811 +y Fj(2.4.2)30 b(Selecting)20 b(a)h(Keymap)137 1906 y +Fu(Key)16 b(bindings)i(tak)o(e)c(place)j(on)e(a)g Fk(k)o(eymap)p +Fu(.)21 b(The)15 b(k)o(eymap)h(is)f(the)h(asso)q(ciation)g(b)q(et)o(w)o +(een)g(the)f(k)o(eys)75 1960 y(that)f(the)g(user)g(t)o(yp)q(es)g(and)h +(the)f(functions)h(that)f(get)g(run.)19 b(Y)l(ou)c(can)f(mak)o(e)g(y)o +(our)g(o)o(wn)f(k)o(eymaps,)h(cop)o(y)75 2015 y(existing)i(k)o(eymaps,) +f(and)g(tell)h(Readline)h(whic)o(h)f(k)o(eymap)f(to)f(use.)1762 +2124 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293 +2124 V 21 w(mak)n(e)p 445 2124 V 20 w(bare)p 575 2124 +V 20 w(k)n(eymap)j Fg(\()p Ft(void)p Fg(\))195 2179 y +Fu(Returns)12 b(a)f(new,)i(empt)o(y)f(k)o(eymap.)18 b(The)13 +b(space)f(for)f(the)i(k)o(eymap)e(is)i(allo)q(cated)g(with)f +Ft(malloc\(\))p Fu(;)195 2233 y(the)j(caller)i(should)f(free)f(it)h(b)o +(y)f(calling)i Ft(rl_discard_keymap\(\))12 b Fu(when)k(done.)1762 +2342 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293 +2342 V 21 w(cop)n(y)p 428 2342 V 21 w(k)n(eymap)j Fg(\()p +Ft(Keymap)14 b(map)p Fg(\))195 2397 y Fu(Return)h(a)g(new)g(k)o(eymap)g +(whic)o(h)h(is)g(a)f(cop)o(y)g(of)g Fk(map)p Fu(.)1762 +2506 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293 +2506 V 21 w(mak)n(e)p 445 2506 V 20 w(k)n(eymap)j Fg(\()p +Ft(void)p Fg(\))195 2560 y Fu(Return)16 b(a)f(new)i(k)o(eymap)e(with)i +(the)f(prin)o(ting)h(c)o(haracters)e(b)q(ound)i(to)e(rl)p +1457 2560 14 2 v 17 w(insert,)h(the)g(lo)o(w)o(ercase)195 +2615 y(Meta)11 b(c)o(haracters)f(b)q(ound)i(to)f(run)h(their)f(equiv)m +(alen)o(ts,)j(and)d(the)h(Meta)e(digits)i(b)q(ound)g(to)f(pro)q(duce) +195 2670 y(n)o(umeric)16 b(argumen)o(ts.)p eop +%%Page: 27 29 +27 28 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(27)1762 149 y(F)l(unction)-1861 b Fi(void)20 +b Fh(rl)p 241 149 18 3 v 21 w(discard)p 441 149 V 21 +w(k)n(eymap)i Fg(\()p Ft(Keymap)14 b(keymap)p Fg(\))195 +204 y Fu(F)l(ree)h(the)h(storage)d(asso)q(ciated)j(with)f +Fk(k)o(eymap)p Fu(.)137 293 y(Readline)24 b(has)f(sev)o(eral)g(in)o +(ternal)g(k)o(eymaps.)42 b(These)23 b(functions)g(allo)o(w)g(y)o(ou)f +(to)g(c)o(hange)h(whic)o(h)75 348 y(k)o(eymap)15 b(is)h(activ)o(e.)1762 +459 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293 +459 V 21 w(get)p 391 459 V 21 w(k)n(eymap)i Fg(\()p Ft(void)p +Fg(\))195 514 y Fu(Returns)15 b(the)g(curren)o(tly)h(activ)o(e)f(k)o +(eymap.)1762 625 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p +241 625 V 21 w(set)p 333 625 V 21 w(k)n(eymap)i Fg(\()p +Ft(Keymap)14 b(keymap)p Fg(\))195 680 y Fu(Mak)o(es)g +Fk(k)o(eymap)j Fu(the)e(curren)o(tly)h(activ)o(e)f(k)o(eymap.)1762 +791 y(F)l(unction)-1861 b Fi(Keymap)20 b Fh(rl)p 293 +791 V 21 w(get)p 391 791 V 21 w(k)n(eymap)p 605 791 V +20 w(b)n(y)p 685 791 V 21 w(name)i Fg(\()p Ft(const)14 +b(char)g(*name)p Fg(\))195 846 y Fu(Return)i(the)h(k)o(eymap)f(matc)o +(hing)h Fk(name)p Fu(.)24 b Fk(name)19 b Fu(is)e(one)g(whic)o(h)g(w)o +(ould)g(b)q(e)h(supplied)h(in)e(a)f Ft(set)195 901 y(keymap)e +Fu(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)i(Init)g(File],)g +(page)f(4\).)1762 1012 y(F)l(unction)-1861 b Fi(char)20 +b(*)f Fh(rl)p 286 1012 V 21 w(get)p 384 1012 V 21 w(k)n(eymap)p +598 1012 V 20 w(name)i Fg(\()p Ft(Keymap)14 b(keymap)p +Fg(\))195 1067 y Fu(Return)i(the)h(name)g(matc)o(hing)f +Fk(k)o(eymap)p Fu(.)24 b Fk(name)19 b Fu(is)e(one)g(whic)o(h)g(w)o +(ould)g(b)q(e)h(supplied)h(in)e(a)f Ft(set)195 1122 y(keymap)e +Fu(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)i(Init)g(File],)g +(page)f(4\).)75 1230 y Fj(2.4.3)30 b(Binding)20 b(Keys)137 +1325 y Fu(Key)13 b(sequences)g(are)e(asso)q(ciate)h(with)h(functions)f +(through)g(the)g(k)o(eymap.)19 b(Readline)13 b(has)f(sev)o(eral)g(in-) +75 1380 y(ternal)j(k)o(eymaps:)k Ft(emacs_standard_keymap)p +Fu(,)11 b Ft(emacs_meta_keymap)p Fu(,)h Ft(emacs_ctlx_keymap)p +Fu(,)g Ft(vi_)75 1435 y(movement_keymap)p Fu(,)20 b(and)i +Ft(vi_insertion_keymap)p Fu(.)35 b Ft(emacs_standard_keymap)18 +b Fu(is)k(the)f(default,)75 1490 y(and)15 b(the)h(examples)g(in)g(this) +f(man)o(ual)h(assume)f(that.)137 1556 y(Since)h Ft(readline\(\))c +Fu(installs)j(a)f(set)f(of)h(default)g(k)o(ey)g(bindings)h(the)f +(\014rst)g(time)g(it)g(is)g(called,)i(there)d(is)75 1611 +y(alw)o(a)o(ys)j(the)g(danger)g(that)g(a)g(custom)g(binding)i +(installed)g(b)q(efore)f(the)f(\014rst)g(call)i(to)d +Ft(readline\(\))g Fu(will)75 1666 y(b)q(e)f(o)o(v)o(erridden.)19 +b(An)13 b(alternate)g(mec)o(hanism)h(is)f(to)f(install)i(custom)f(k)o +(ey)g(bindings)h(in)g(an)f(initialization)75 1720 y(function)19 +b(assigned)h(to)d(the)i Ft(rl_startup_hook)e Fu(v)m(ariable)j(\(see)e +(Section)h(2.3)f([Readline)i(V)l(ariables],)75 1775 y(page)15 +b(22\).)137 1841 y(These)h(functions)g(manage)e(k)o(ey)i(bindings.)1762 +1953 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1953 +V 21 w(bind)p 347 1953 V 21 w(k)n(ey)k Fg(\()p Ft(int)14 +b(key,)h(rl_command_func_t)d(*function)p Fg(\))195 2007 +y Fu(Binds)18 b Fk(k)o(ey)i Fu(to)c Fk(function)h Fu(in)h(the)e(curren) +o(tly)h(activ)o(e)g(k)o(eymap.)23 b(Returns)16 b(non-zero)h(in)g(the)g +(case)195 2062 y(of)e(an)g(in)o(v)m(alid)i Fk(k)o(ey)p +Fu(.)1762 2173 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p +215 2173 V 21 w(bind)p 347 2173 V 21 w(k)n(ey)p 452 2173 +V 21 w(in)p 520 2173 V 22 w(map)h Fg(\()p Ft(int)14 b(key,)h +(rl_command_func_t)e(*function,)283 2228 y(Keymap)h(map)p +Fg(\))195 2283 y Fu(Bind)i Fk(k)o(ey)j Fu(to)c Fk(function)h +Fu(in)g Fk(map)p Fu(.)k(Returns)14 b(non-zero)i(in)g(the)f(case)g(of)g +(an)g(in)o(v)m(alid)j Fk(k)o(ey)p Fu(.)1762 2394 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 2394 V 21 w(un)n(bind)p 409 +2394 V 21 w(k)n(ey)k Fg(\()p Ft(int)14 b(key)p Fg(\))195 +2449 y Fu(Bind)19 b Fk(k)o(ey)j Fu(to)c(the)g(n)o(ull)i(function)f(in)g +(the)f(curren)o(tly)g(activ)o(e)h(k)o(eymap.)28 b(Returns)18 +b(non-zero)g(in)195 2504 y(case)d(of)g(error.)1762 2615 +y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2615 V +21 w(un)n(bind)p 409 2615 V 21 w(k)n(ey)p 514 2615 V +21 w(in)p 582 2615 V 22 w(map)h Fg(\()p Ft(int)14 b(key,)h(Keymap)f +(map)p Fg(\))195 2670 y Fu(Bind)i Fk(k)o(ey)j Fu(to)c(the)g(n)o(ull)i +(function)f(in)g Fk(map)p Fu(.)k(Returns)14 b(non-zero)i(in)g(case)f +(of)g(error.)p eop +%%Page: 28 30 +28 29 bop 75 -58 a Fu(28)1299 b(GNU)15 b(Readline)h(Library)1762 +149 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 149 +18 3 v 21 w(un)n(bind)p 409 149 V 21 w(function)p 635 +149 V 21 w(in)p 703 149 V 21 w(map)h Fg(\()p Ft(rl_command_func_t)13 +b(*function,)283 204 y(Keymap)h(map)p Fg(\))195 259 y +Fu(Un)o(bind)j(all)f(k)o(eys)f(that)f(execute)i Fk(function)g +Fu(in)g Fk(map)p Fu(.)1762 377 y(F)l(unction)-1861 b +Fi(int)20 b Fh(rl)p 215 377 V 21 w(un)n(bind)p 409 377 +V 21 w(command)p 674 377 V 17 w(in)p 738 377 V 22 w(map)h +Fg(\()p Ft(const)14 b(char)h(*command,)f(Keymap)283 432 +y(map)p Fg(\))195 486 y Fu(Un)o(bind)j(all)f(k)o(eys)f(that)f(are)h(b)q +(ound)h(to)f Fk(command)i Fu(in)f Fk(map)p Fu(.)1762 +604 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 604 +V 21 w(set)p 307 604 V 20 w(k)n(ey)k Fg(\()p Ft(const)14 +b(char)h(*keyseq,)f(rl_command_func_t)f(*function,)283 +659 y(Keymap)h(map)p Fg(\))195 714 y Fu(Bind)g(the)e(k)o(ey)h(sequence) +h(represen)o(ted)f(b)o(y)f(the)h(string)f Fk(k)o(eyseq)i +Fu(to)e(the)g(function)i Fk(function)p Fu(.)19 b(This)195 +768 y(mak)o(es)13 b(new)g(k)o(eymaps)g(as)f(necessary)l(.)20 +b(The)13 b(initial)j(k)o(eymap)c(in)i(whic)o(h)g(to)f(do)g(bindings)i +(is)f Fk(map)p Fu(.)1762 886 y(F)l(unction)-1861 b Fi(int)20 +b Fh(rl)p 215 886 V 21 w(generic)p 413 886 V 21 w(bind)j +Fg(\()p Ft(int)15 b(type,)f(const)h(char)f(*keyseq,)g(char)h(*data,)283 +941 y(Keymap)f(map)p Fg(\))195 996 y Fu(Bind)h(the)e(k)o(ey)h(sequence) +h(represen)o(ted)e(b)o(y)h(the)g(string)f Fk(k)o(eyseq)i +Fu(to)d(the)i(arbitrary)f(p)q(oin)o(ter)h Fk(data)p Fu(.)195 +1051 y Fk(t)o(yp)q(e)j Fu(sa)o(ys)c(what)h(kind)h(of)f(data)g(is)g(p)q +(oin)o(ted)i(to)d(b)o(y)h Fk(data)p Fu(;)g(this)h(can)f(b)q(e)h(a)f +(function)h(\()p Ft(ISFUNC)p Fu(\),)d(a)195 1105 y(macro)i(\()p +Ft(ISMACR)p Fu(\),)f(or)h(a)h(k)o(eymap)f(\()p Ft(ISKMAP)p +Fu(\).)k(This)e(mak)o(es)e(new)h(k)o(eymaps)f(as)h(necessary)l(.)20 +b(The)195 1160 y(initial)d(k)o(eymap)e(in)h(whic)o(h)g(to)f(do)g +(bindings)i(is)f Fk(map)p Fu(.)1762 1278 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1278 V 21 w(parse)p 369 1278 +V 19 w(and)p 480 1278 V 21 w(bind)j Fg(\()p Ft(char)14 +b(*line)p Fg(\))195 1333 y Fu(P)o(arse)g Fk(line)19 b +Fu(as)14 b(if)h(it)g(had)g(b)q(een)h(read)f(from)f(the)g +Ft(inputrc)g Fu(\014le)i(and)f(p)q(erform)f(an)o(y)h(k)o(ey)f(bindings) +195 1387 y(and)h(v)m(ariable)i(assignmen)o(ts)e(found)h(\(see)f +(Section)h(1.3)e([Readline)i(Init)g(File],)g(page)f(4\).)1762 +1505 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1505 +V 21 w(read)p 346 1505 V 20 w(init)p 450 1505 V 22 w(\014le)k +Fg(\()p Ft(const)14 b(char)h(*filename)p Fg(\))195 1560 +y Fu(Read)g(k)o(eybindings)j(and)e(v)m(ariable)h(assignmen)o(ts)f(from) +f Fk(\014lename)k Fu(\(see)d(Section)g(1.3)f([Readline)195 +1615 y(Init)h(File],)g(page)f(4\).)75 1727 y Fj(2.4.4)30 +b(Asso)r(ciating)20 b(F)-5 b(unction)20 b(Names)h(and)f(Bindings)137 +1824 y Fu(These)11 b(functions)h(allo)o(w)e(y)o(ou)h(to)f(\014nd)h(out) +f(what)g(k)o(eys)h(in)o(v)o(ok)o(e)f(named)h(functions)h(and)e(the)h +(functions)75 1879 y(in)o(v)o(ok)o(ed)j(b)o(y)g(a)f(particular)h(k)o +(ey)g(sequence.)21 b(Y)l(ou)14 b(ma)o(y)f(also)g(asso)q(ciate)h(a)g +(new)g(function)g(name)g(with)g(an)75 1933 y(arbitrary)h(function.)1762 +2051 y(F)l(unction)-1861 b Fi(rl_command_func_t)22 b(*)d +Fh(rl)p 626 2051 V 21 w(named)p 814 2051 V 19 w(function)k +Fg(\()p Ft(const)14 b(char)h(*name)p Fg(\))195 2106 y +Fu(Return)g(the)g(function)h(with)g(name)f Fk(name)p +Fu(.)1762 2224 y(F)l(unction)-1861 b Fi(rl_command_func_t)22 +b(*)d Fh(rl)p 626 2224 V 21 w(function)p 852 2224 V 21 +w(of)p 920 2224 V 20 w(k)n(eyseq)24 b Fg(\()p Ft(const)14 +b(char)283 2278 y(*keyseq,)g(Keymap)g(map,)h(int)f(*type)p +Fg(\))195 2333 y Fu(Return)i(the)g(function)h(in)o(v)o(ok)o(ed)g(b)o(y) +f Fk(k)o(eyseq)h Fu(in)g(k)o(eymap)f Fk(map)p Fu(.)23 +b(If)17 b Fk(map)g Fu(is)g Ft(NULL)p Fu(,)f(the)g(curren)o(t)195 +2388 y(k)o(eymap)i(is)h(used.)31 b(If)18 b Fk(t)o(yp)q(e)j +Fu(is)e(not)g Ft(NULL)p Fu(,)f(the)g(t)o(yp)q(e)h(of)f(the)h(ob)s(ject) +f(is)h(returned)g(in)g(the)f Ft(int)195 2443 y Fu(v)m(ariable)f(it)e(p) +q(oin)o(ts)h(to)e(\(one)h(of)g Ft(ISFUNC)p Fu(,)f Ft(ISKMAP)p +Fu(,)g(or)h Ft(ISMACR)p Fu(\).)1762 2560 y(F)l(unction)-1861 +b Fi(char)20 b(**)f Fh(rl)p 312 2560 V 21 w(in)n(v)n(oking)p +541 2560 V 23 w(k)n(eyseqs)k Fg(\()p Ft(rl_command_func_t)13 +b(*function)p Fg(\))195 2615 y Fu(Return)i(an)h(arra)o(y)e(of)h +(strings)h(represen)o(ting)g(the)g(k)o(ey)f(sequences)i(used)f(to)f(in) +o(v)o(ok)o(e)h Fk(function)g Fu(in)195 2670 y(the)f(curren)o(t)g(k)o +(eymap.)p eop +%%Page: 29 31 +29 30 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(29)1762 149 y(F)l(unction)-1861 b Fi(char)20 +b(**)f Fh(rl)p 312 149 18 3 v 21 w(in)n(v)n(oking)p 541 +149 V 23 w(k)n(eyseqs)p 750 149 V 21 w(in)p 818 149 V +22 w(map)i Fg(\()p Ft(rl_command_func_t)283 204 y(*function,)13 +b(Keymap)i(map)p Fg(\))195 259 y Fu(Return)g(an)h(arra)o(y)e(of)h +(strings)h(represen)o(ting)g(the)g(k)o(ey)f(sequences)i(used)f(to)f(in) +o(v)o(ok)o(e)h Fk(function)g Fu(in)195 314 y(the)f(k)o(eymap)g +Fk(map)p Fu(.)1762 426 y(F)l(unction)-1861 b Fi(void)20 +b Fh(rl)p 241 426 V 21 w(function)p 467 426 V 21 w(dump)r(er)g +Fg(\()p Ft(int)15 b(readable)p Fg(\))195 481 y Fu(Prin)o(t)g(the)f +(readline)j(function)e(names)g(and)f(the)h(k)o(ey)g(sequences)g(curren) +o(tly)g(b)q(ound)h(to)e(them)h(to)195 536 y Ft(rl_outstream)p +Fu(.)j(If)c Fk(readable)j Fu(is)d(non-zero,)g(the)g(list)g(is)h +(formatted)d(in)j(suc)o(h)f(a)f(w)o(a)o(y)g(that)g(it)h(can)195 +590 y(b)q(e)i(made)f(part)g(of)f(an)i Ft(inputrc)e Fu(\014le)i(and)f +(re-read.)1762 702 y(F)l(unction)-1861 b Fi(void)20 b +Fh(rl)p 241 702 V 21 w(list)p 337 702 V 22 w(funmap)p +550 702 V 18 w(names)h Fg(\()p Ft(void)p Fg(\))195 757 +y Fu(Prin)o(t)15 b(the)g(names)h(of)e(all)j(bindable)g(Readline)f +(functions)g(to)f Ft(rl_outstream)p Fu(.)1762 869 y(F)l(unction)-1861 +b Fi(const)20 b(char)g(**)f Fh(rl)p 462 869 V 21 w(funmap)p +674 869 V 18 w(names)i Fg(\()p Ft(void)p Fg(\))195 924 +y Fu(Return)13 b(a)f(NULL)i(terminated)g(arra)o(y)d(of)i(kno)o(wn)g +(function)g(names.)20 b(The)13 b(arra)o(y)f(is)h(sorted.)19 +b(The)195 979 y(arra)o(y)11 b(itself)j(is)f(allo)q(cated,)h(but)f(not)f +(the)h(strings)f(inside.)21 b(Y)l(ou)13 b(should)h Ft(free\(\))d +Fu(the)i(arra)o(y)e(when)195 1034 y(y)o(ou)k(are)g(done,)g(but)g(not)g +(the)g(p)q(oin)o(ters.)1762 1146 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1146 V 21 w(add)p 328 1146 +V 20 w(funmap)p 539 1146 V 18 w(en)n(try)j Fg(\()p Ft(const)14 +b(char)h(*name,)f(rl_command_func_t)283 1201 y(*function)p +Fg(\))195 1255 y Fu(Add)j Fk(name)i Fu(to)d(the)g(list)h(of)f(bindable) +j(Readline)f(command)e(names,)g(and)h(mak)o(e)f Fk(function)h +Fu(the)195 1310 y(function)f(to)f(b)q(e)g(called)i(when)f +Fk(name)i Fu(is)d(in)o(v)o(ok)o(ed.)75 1419 y Fj(2.4.5)30 +b(Allo)n(wing)21 b(Undoing)137 1515 y Fu(Supp)q(orting)14 +b(the)g(undo)f(command)g(is)h(a)f(painless)h(thing,)g(and)f(mak)o(es)g +(y)o(our)f(functions)i(m)o(uc)o(h)f(more)75 1569 y(useful.)21 +b(It)15 b(is)h(certainly)g(easy)f(to)g(try)f(something)i(if)f(y)o(ou)g +(kno)o(w)g(y)o(ou)g(can)g(undo)h(it.)137 1636 y(If)21 +b(y)o(our)f(function)h(simply)h(inserts)f(text)e(once,)j(or)e(deletes)h +(text)f(once,)i(and)f(uses)f Ft(rl_insert_)75 1690 y(text\(\))13 +b Fu(or)h Ft(rl_delete_text\(\))d Fu(to)j(do)f(it,)h(then)h(undoing)g +(is)f(already)g(done)h(for)e(y)o(ou)h(automatically)l(.)137 +1757 y(If)d(y)o(ou)f(do)g(m)o(ultiple)i(insertions)f(or)f(m)o(ultiple)i +(deletions,)g(or)e(an)o(y)g(com)o(bination)h(of)f(these)g(op)q +(erations,)75 1812 y(y)o(ou)19 b(should)h(group)e(them)h(together)g(in) +o(to)g(one)g(op)q(eration.)31 b(This)20 b(is)f(done)h(with)f +Ft(rl_begin_undo_)75 1866 y(group\(\))14 b Fu(and)i Ft +(rl_end_undo_group\(\))p Fu(.)137 1933 y(The)g(t)o(yp)q(es)f(of)g(ev)o +(en)o(ts)g(that)f(can)h(b)q(e)h(undone)g(are:)195 1996 +y Ft(enum)23 b(undo_code)g({)h(UNDO_DELETE,)e(UNDO_INSERT,)g +(UNDO_BEGIN,)g(UNDO_END)h(};)137 2062 y Fu(Notice)16 +b(that)e Ft(UNDO_DELETE)g Fu(means)h(to)g(insert)g(some)g(text,)f(and)i +Ft(UNDO_INSERT)d Fu(means)i(to)g(delete)75 2117 y(some)e(text.)19 +b(That)14 b(is,)g(the)g(undo)g(co)q(de)g(tells)h(what)e(to)h(undo,)g +(not)f(ho)o(w)g(to)g(undo)i(it.)k Ft(UNDO_BEGIN)13 b +Fu(and)75 2172 y Ft(UNDO_END)h Fu(are)h(tags)f(added)i(b)o(y)f +Ft(rl_begin_undo_group\(\))d Fu(and)k Ft(rl_end_undo_group\(\))p +Fu(.)1762 2284 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p +215 2284 V 21 w(b)r(egin)p 372 2284 V 20 w(undo)p 517 +2284 V 20 w(group)h Fg(\()p Ft(void)p Fg(\))195 2339 +y Fu(Begins)16 b(sa)o(ving)g(undo)g(information)f(in)i(a)e(group)g +(construct.)20 b(The)c(undo)g(information)g(usually)195 +2393 y(comes)21 b(from)f(calls)i(to)e Ft(rl_insert_text\(\))e +Fu(and)j Ft(rl_delete_text\(\))p Fu(,)f(but)h(could)g(b)q(e)h(the)195 +2448 y(result)16 b(of)e(calls)j(to)d Ft(rl_add_undo\(\))p +Fu(.)1762 2560 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p +215 2560 V 21 w(end)p 326 2560 V 20 w(undo)p 471 2560 +V 20 w(group)h Fg(\()p Ft(void)p Fg(\))195 2615 y Fu(Closes)15 +b(the)f(curren)o(t)h(undo)g(group)f(started)g(with)g +Ft(rl_begin_undo_group)f(\(\))p Fu(.)19 b(There)c(should)195 +2670 y(b)q(e)h(one)f(call)i(to)d Ft(rl_end_undo_group\(\))f +Fu(for)h(eac)o(h)h(call)i(to)d Ft(rl_begin_undo_group\(\))p +Fu(.)p eop +%%Page: 30 32 +30 31 bop 75 -58 a Fu(30)1299 b(GNU)15 b(Readline)h(Library)1762 +149 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 149 +18 3 v 21 w(add)p 354 149 V 20 w(undo)i Fg(\()p Ft(enum)14 +b(undo_code)g(what,)g(int)h(start,)g(int)f(end,)h(char)283 +204 y(*text)p Fg(\))195 259 y Fu(Remem)o(b)q(er)i(ho)o(w)f(to)h(undo)g +(an)g(ev)o(en)o(t)g(\(according)g(to)g Fk(what)q Fu(\).)24 +b(The)17 b(a\013ected)g(text)f(runs)i(from)195 314 y +Fk(start)d Fu(to)g Fk(end)p Fu(,)g(and)g(encompasses)h +Fk(text)p Fu(.)1762 428 y(F)l(unction)-1861 b Fi(void)20 +b Fh(rl)p 241 428 V 21 w(free)p 356 428 V 20 w(undo)p +501 428 V 20 w(list)k Fg(\()p Ft(void)p Fg(\))195 483 +y Fu(F)l(ree)15 b(the)h(existing)g(undo)f(list.)1762 +598 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 598 +V 21 w(do)p 297 598 V 20 w(undo)i Fg(\()p Ft(void)p Fg(\))195 +652 y Fu(Undo)12 b(the)f(\014rst)g(thing)h(on)g(the)f(undo)h(list.)19 +b(Returns)11 b Ft(0)h Fu(if)g(there)f(w)o(as)g(nothing)h(to)e(undo,)j +(non-zero)195 707 y(if)j(something)f(w)o(as)f(undone.)137 +798 y(Finally)l(,)j(if)f(y)o(ou)f(neither)i(insert)f(nor)f(delete)i +(text,)e(but)g(directly)i(mo)q(dify)f(the)g(existing)g(text)g(\(e.g.,) +75 853 y(c)o(hange)j(its)h(case\),)g(call)g Ft(rl_modifying\(\))e +Fu(once,)i(just)f(b)q(efore)h(y)o(ou)f(mo)q(dify)h(the)f(text.)32 +b(Y)l(ou)20 b(m)o(ust)75 907 y(supply)c(the)g(indices)h(of)e(the)g +(text)g(range)g(that)f(y)o(ou)h(are)g(going)g(to)g(mo)q(dify)l(.)1762 +1022 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1022 +V 21 w(mo)r(difying)h Fg(\()p Ft(int)15 b(start,)f(int)h(end)p +Fg(\))195 1077 y Fu(T)l(ell)22 b(Readline)f(to)e(sa)o(v)o(e)h(the)g +(text)g(b)q(et)o(w)o(een)g Fk(start)g Fu(and)g Fk(end)j +Fu(as)c(a)h(single)h(undo)g(unit.)35 b(It)20 b(is)195 +1131 y(assumed)15 b(that)g(y)o(ou)g(will)i(subsequen)o(tly)f(mo)q(dify) +g(that)e(text.)75 1242 y Fj(2.4.6)30 b(Redispla)n(y)1762 +1385 y Fu(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 +1385 V 21 w(redispla)n(y)k Fg(\()p Ft(void)p Fg(\))195 +1440 y Fu(Change)19 b(what's)f(displa)o(y)o(ed)i(on)f(the)g(screen)g +(to)f(re\015ect)i(the)f(curren)o(t)f(con)o(ten)o(ts)h(of)f +Ft(rl_line_)195 1495 y(buffer)p Fu(.)1762 1609 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1609 V 21 w(forced)p 390 1609 +V 20 w(up)r(date)p 584 1609 V 20 w(displa)n(y)k Fg(\()p +Ft(void)p Fg(\))195 1664 y Fu(F)l(orce)c(the)g(line)h(to)e(b)q(e)i(up)q +(dated)f(and)g(redispla)o(y)o(ed,)i(whether)e(or)g(not)f(Readline)i +(thinks)g(the)195 1719 y(screen)16 b(displa)o(y)g(is)g(correct.)1762 +1833 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1833 +V 21 w(on)p 297 1833 V 20 w(new)p 416 1833 V 21 w(line)k +Fg(\()p Ft(void)p Fg(\))195 1888 y Fu(T)l(ell)16 b(the)f(up)q(date)h +(functions)g(that)e(w)o(e)g(ha)o(v)o(e)h(mo)o(v)o(ed)f(on)o(to)g(a)h +(new)g(\(empt)o(y\))f(line,)i(usually)h(after)195 1943 +y(ouputting)f(a)e(newline.)1762 2058 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 2058 V 21 w(on)p 297 2058 V +20 w(new)p 416 2058 V 21 w(line)p 525 2058 V 22 w(with)p +657 2058 V 22 w(prompt)h Fg(\()p Ft(void)p Fg(\))195 +2112 y Fu(T)l(ell)14 b(the)e(up)q(date)h(functions)g(that)f(w)o(e)g(ha) +o(v)o(e)g(mo)o(v)o(ed)f(on)o(to)h(a)g(new)g(line,)i(with)f +Fk(rl)p 1556 2112 14 2 v 17 w(prompt)g Fu(already)195 +2167 y(displa)o(y)o(ed.)21 b(This)15 b(could)g(b)q(e)g(used)g(b)o(y)f +(applications)i(that)e(w)o(an)o(t)f(to)h(output)g(the)g(prompt)g +(string)195 2222 y(themselv)o(es,)g(but)g(still)h(need)g(Readline)g(to) +e(kno)o(w)g(the)h(prompt)f(string)h(length)g(for)f(redispla)o(y)l(.)21 +b(It)195 2277 y(should)16 b(b)q(e)g(used)g(after)e(setting)i +Fk(rl)p 795 2277 V 16 w(already)p 956 2277 V 17 w(prompted)p +Fu(.)1762 2391 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p +215 2391 18 3 v 21 w(reset)p 357 2391 V 20 w(line)p 465 +2391 V 23 w(state)j Fg(\()p Ft(void)p Fg(\))195 2446 +y Fu(Reset)17 b(the)g(displa)o(y)i(state)d(to)h(a)g(clean)h(state)f +(and)g(redispla)o(y)i(the)e(curren)o(t)g(line)i(starting)e(on)g(a)195 +2501 y(new)e(line.)1762 2615 y(F)l(unction)-1861 b Fi(int)20 +b Fh(rl)p 215 2615 V 21 w(crlf)j Fg(\()p Ft(void)p Fg(\))195 +2670 y Fu(Mo)o(v)o(e)14 b(the)h(cursor)g(to)g(the)g(start)f(of)h(the)g +(next)g(screen)h(line.)p eop +%%Page: 31 33 +31 32 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(31)1762 149 y(F)l(unction)-1861 b Fi(int)20 +b Fh(rl)p 215 149 18 3 v 21 w(sho)n(w)p 359 149 V 20 +w(c)n(har)j Fg(\()p Ft(int)14 b(c)p Fg(\))195 204 y Fu(Displa)o(y)j(c)o +(haracter)e Fk(c)20 b Fu(on)c Ft(rl_outstream)p Fu(.)21 +b(If)c(Readline)g(has)f(not)g(b)q(een)i(set)e(to)f(displa)o(y)j(meta) +195 259 y(c)o(haracters)12 b(directly)l(,)j(this)e(will)i(con)o(v)o +(ert)d(meta)h(c)o(haracters)f(to)g(a)h(meta-pre\014xed)g(k)o(ey)g +(sequence.)195 314 y(This)j(is)f(in)o(tended)i(for)e(use)g(b)o(y)g +(applications)i(whic)o(h)f(wish)g(to)f(do)g(their)g(o)o(wn)g(redispla)o +(y)l(.)1762 443 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p +215 443 V 21 w(message)g Fg(\()p Ft(const)14 b(char)h(*,)g(...)p +Fg(\))195 498 y Fu(The)c(argumen)o(ts)e(are)h(a)g(format)f(string)h(as) +g(w)o(ould)h(b)q(e)g(supplied)i(to)c Ft(printf)p Fu(,)h(p)q(ossibly)i +(con)o(taining)195 553 y(con)o(v)o(ersion)22 b(sp)q(eci\014cations)i +(suc)o(h)f(as)e(`)p Ft(\045d)p Fu(',)i(and)f(an)o(y)g(additional)h +(argumen)o(ts)e(necessary)i(to)195 608 y(satisfy)d(the)h(con)o(v)o +(ersion)g(sp)q(eci\014cations.)38 b(The)21 b(resulting)h(string)e(is)i +(displa)o(y)o(ed)g(in)f(the)g Fk(ec)o(ho)195 663 y(area)p +Fu(.)e(The)d(ec)o(ho)f(area)g(is)g(also)g(used)h(to)f(displa)o(y)h(n)o +(umeric)g(argumen)o(ts)f(and)g(searc)o(h)g(strings.)1762 +792 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 792 +V 21 w(clear)p 354 792 V 21 w(message)h Fg(\()p Ft(void)p +Fg(\))195 847 y Fu(Clear)15 b(the)h(message)e(in)i(the)g(ec)o(ho)f +(area.)1762 976 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p +241 976 V 21 w(sa)n(v)n(e)p 365 976 V 21 w(prompt)h Fg(\()p +Ft(void)p Fg(\))195 1031 y Fu(Sa)o(v)o(e)g(the)h(lo)q(cal)g(Readline)h +(prompt)e(displa)o(y)i(state)e(in)h(preparation)f(for)g(displa)o(ying)j +(a)d(new)195 1086 y(message)15 b(in)h(the)f(message)g(area)f(with)i +Ft(rl_message\(\))p Fu(.)1762 1215 y(F)l(unction)-1861 +b Fi(void)20 b Fh(rl)p 241 1215 V 21 w(restore)p 436 +1215 V 20 w(prompt)g Fg(\()p Ft(void)p Fg(\))195 1270 +y Fu(Restore)g(the)i(lo)q(cal)g(Readline)h(prompt)e(displa)o(y)h(state) +f(sa)o(v)o(ed)g(b)o(y)g(the)g(most)g(recen)o(t)g(call)i(to)195 +1325 y Ft(rl_save_prompt)p Fu(.)1762 1455 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1455 V 21 w(expand)p 416 1455 +V 20 w(prompt)h Fg(\()p Ft(char)14 b(*prompt)p Fg(\))195 +1509 y Fu(Expand)22 b(an)o(y)f(sp)q(ecial)i(c)o(haracter)e(sequences)h +(in)g Fk(prompt)g Fu(and)g(set)f(up)h(the)f(lo)q(cal)i(Readline)195 +1564 y(prompt)17 b(redispla)o(y)i(v)m(ariables.)30 b(This)18 +b(function)h(is)f(called)i(b)o(y)e Ft(readline\(\))p +Fu(.)26 b(It)18 b(ma)o(y)f(also)h(b)q(e)195 1619 y(called)12 +b(to)e(expand)h(the)g(primary)g(prompt)f(if)h(the)f Ft +(rl_on_new_line_with_prompt\(\))d Fu(function)195 1674 +y(or)12 b Ft(rl_already_prompted)e Fu(v)m(ariable)k(is)g(used.)19 +b(It)13 b(returns)g(the)f(n)o(um)o(b)q(er)i(of)e(visible)j(c)o +(haracters)195 1729 y(on)g(the)g(last)h(line)g(of)f(the)g(\(p)q +(ossibly)i(m)o(ulti-line\))g(prompt.)1762 1858 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1858 V 21 w(set)p 307 1858 +V 20 w(prompt)h Fg(\()p Ft(const)14 b(char)h(*prompt)p +Fg(\))195 1913 y Fu(Mak)o(e)e(Readline)i(use)e Fk(prompt)h +Fu(for)f(subsequen)o(t)h(redispla)o(y)l(.)21 b(This)14 +b(calls)g Ft(rl_expand_prompt\(\))195 1968 y Fu(to)h(expand)g(the)h +(prompt)e(and)i(sets)f Ft(rl_prompt)f Fu(to)g(the)h(result.)75 +2088 y Fj(2.4.7)30 b(Mo)r(difying)20 b(T)-5 b(ext)1762 +2247 y Fu(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 +2247 V 21 w(insert)p 378 2247 V 21 w(text)k Fg(\()p Ft(const)14 +b(char)g(*text)p Fg(\))195 2301 y Fu(Insert)h Fk(text)h +Fu(in)o(to)f(the)h(line)g(at)f(the)g(curren)o(t)g(cursor)g(p)q +(osition.)1762 2431 y(F)l(unction)-1861 b Fi(int)20 b +Fh(rl)p 215 2431 V 21 w(delete)p 383 2431 V 22 w(text)k +Fg(\()p Ft(int)14 b(start,)h(int)f(end)p Fg(\))195 2486 +y Fu(Delete)i(the)f(text)g(b)q(et)o(w)o(een)g Fk(start)g +Fu(and)h Fk(end)h Fu(in)f(the)g(curren)o(t)f(line.)1762 +2615 y(F)l(unction)-1861 b Fi(char)20 b(*)f Fh(rl)p 286 +2615 V 21 w(cop)n(y)p 421 2615 V 21 w(text)24 b Fg(\()p +Ft(int)14 b(start,)h(int)g(end)p Fg(\))195 2670 y Fu(Return)g(a)g(cop)o +(y)g(of)g(the)g(text)f(b)q(et)o(w)o(een)i Fk(start)f +Fu(and)g Fk(end)j Fu(in)e(the)f(curren)o(t)g(line.)p +eop +%%Page: 32 34 +32 33 bop 75 -58 a Fu(32)1299 b(GNU)15 b(Readline)h(Library)1762 +149 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 149 +18 3 v 21 w(kill)p 311 149 V 23 w(text)k Fg(\()p Ft(int)14 +b(start,)h(int)g(end)p Fg(\))195 204 y Fu(Cop)o(y)i(the)g(text)f(b)q +(et)o(w)o(een)i Fk(start)f Fu(and)g Fk(end)i Fu(in)f(the)f(curren)o(t)g +(line)i(to)e(the)g(kill)i(ring,)e(app)q(ending)195 259 +y(or)f(prep)q(ending)k(to)c(the)h(last)g(kill)i(if)e(the)g(last)g +(command)g(w)o(as)f(a)h(kill)i(command.)25 b(The)17 b(text)f(is)195 +314 y(deleted.)26 b(If)17 b Fk(start)g Fu(is)g(less)g(than)g +Fk(end)p Fu(,)g(the)g(text)g(is)g(app)q(ended,)h(otherwise)f(prep)q +(ended.)27 b(If)17 b(the)195 369 y(last)e(command)g(w)o(as)g(not)f(a)h +(kill,)i(a)e(new)g(kill)i(ring)f(slot)f(is)h(used.)1762 +478 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 478 +V 21 w(push)p 355 478 V 19 w(macro)p 529 478 V 19 w(input)k +Fg(\()p Ft(char)14 b(*macro)p Fg(\))195 533 y Fu(Cause)g +Fk(macro)i Fu(to)d(b)q(e)i(inserted)g(in)o(to)f(the)g(line,)i(as)e(if)g +(it)h(had)f(b)q(een)h(in)o(v)o(ok)o(ed)g(b)o(y)f(a)g(k)o(ey)g(b)q(ound) +h(to)195 588 y(a)g(macro.)k(Not)c(esp)q(ecially)i(useful;)f(use)g +Ft(rl_insert_text\(\))d Fu(instead.)75 696 y Fj(2.4.8)30 +b(Character)21 b(Input)1762 834 y Fu(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 834 V 21 w(read)p 346 834 V +20 w(k)n(ey)k Fg(\()p Ft(void)p Fg(\))195 889 y Fu(Return)14 +b(the)h(next)g(c)o(haracter)f(a)o(v)m(ailable)i(from)e(Readline's)i +(curren)o(t)f(input)g(stream.)k(This)d(han-)195 944 y(dles)f(input)g +(inserted)f(in)o(to)g(the)g(input)h(stream)e(via)h Fk(rl)p +1117 944 14 2 v 17 w(p)q(ending)p 1290 944 V 18 w(input)i +Fu(\(see)e(Section)h(2.3)e([Read-)195 999 y(line)21 b(V)l(ariables],)g +(page)f(22\))f(and)h Ft(rl_stuff_char\(\))p Fu(,)e(macros,)h(and)h(c)o +(haracters)f(read)h(from)195 1053 y(the)d(k)o(eyb)q(oard.)25 +b(While)19 b(w)o(aiting)e(for)f(input,)j(this)e(function)h(will)h(call) +f(an)o(y)e(function)i(assigned)195 1108 y(to)d(the)g +Ft(rl_event_hook)e Fu(v)m(ariable.)1762 1218 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1218 18 3 v 21 w(getc)j Fg(\()p +Ft(FILE)14 b(*stream)p Fg(\))195 1273 y Fu(Return)c(the)h(next)g(c)o +(haracter)f(a)o(v)m(ailable)i(from)e Fk(stream)p Fu(,)g(whic)o(h)i(is)f +(assumed)f(to)g(b)q(e)i(the)e(k)o(eyb)q(oard.)1762 1382 +y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1382 V +21 w(stu\013)p 346 1382 V 20 w(c)n(har)j Fg(\()p Ft(int)15 +b(c)p Fg(\))195 1437 y Fu(Insert)i Fk(c)i Fu(in)o(to)d(the)h(Readline)h +(input)f(stream.)23 b(It)16 b(will)i(b)q(e)f Ft(")p Fu(read)p +Ft(")g Fu(b)q(efore)f(Readline)i(attempts)195 1492 y(to)d(read)g(c)o +(haracters)f(from)h(the)g(terminal)h(with)f Ft(rl_read_key\(\))p +Fu(.)1762 1602 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p +215 1602 V 21 w(execute)p 423 1602 V 22 w(next)j Fg(\()p +Ft(int)15 b(c)p Fg(\))195 1656 y Fu(Mak)o(e)i Fk(c)k +Fu(b)q(e)d(the)g(next)g(command)g(to)f(b)q(e)i(executed)f(when)h +Ft(rl_read_key\(\))d Fu(is)i(called.)29 b(This)195 1711 +y(sets)15 b Fk(rl)p 317 1711 14 2 v 17 w(p)q(ending)p +490 1711 V 18 w(input)p Fu(.)1762 1821 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1821 18 3 v 21 w(clear)p 354 +1821 V 21 w(p)r(ending)p 575 1821 V 21 w(input)j Fg(\()p +Ft(void)p Fg(\))195 1876 y Fu(Unset)f Fk(rl)p 365 1876 +14 2 v 16 w(p)q(ending)p 537 1876 V 19 w(input)p Fu(,)h(e\013ectiv)o +(ely)g(negating)e(the)h(e\013ect)f(of)g(an)o(y)h(previous)g(call)h(to)d +Ft(rl_)195 1930 y(execute_next\(\))p Fu(.)29 b(This)19 +b(w)o(orks)f(only)h(if)h(the)e(p)q(ending)j(input)f(has)f(not)f +(already)h(b)q(een)h(read)195 1985 y(with)c Ft(rl_read_key\(\))p +Fu(.)1762 2095 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p +215 2095 18 3 v 21 w(set)p 307 2095 V 20 w(k)n(eyb)r(oard)p +558 2095 V 21 w(input)p 712 2095 V 21 w(timeout)i Fg(\()p +Ft(int)15 b(u)p Fg(\))195 2150 y Fu(While)21 b(w)o(aiting)g(for)e(k)o +(eyb)q(oard)h(input)h(in)g Ft(rl_read_key\(\))p Fu(,)e(Readline)i(will) +h(w)o(ait)e(for)f Fk(u)h Fu(mi-)195 2204 y(croseconds)h(for)e(input)j +(b)q(efore)f(calling)h(an)o(y)e(function)h(assigned)g(to)f +Ft(rl_event_hook)p Fu(.)34 b(The)195 2259 y(default)16 +b(w)o(aiting)f(p)q(erio)q(d)i(is)e(one-ten)o(th)h(of)e(a)h(second.)21 +b(Returns)14 b(the)i(old)f(timeout)h(v)m(alue.)75 2367 +y Fj(2.4.9)30 b(T)-5 b(erminal)20 b(Managemen)n(t)1762 +2506 y Fu(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 +2506 V 21 w(prep)p 376 2506 V 20 w(terminal)j Fg(\()p +Ft(int)14 b(meta_flag)p Fg(\))195 2560 y Fu(Mo)q(dify)22 +b(the)f(terminal)h(settings)f(for)g(Readline's)h(use,)h(so)d +Ft(readline\(\))g Fu(can)i(read)f(a)g(single)195 2615 +y(c)o(haracter)15 b(at)g(a)g(time)i(from)d(the)i(k)o(eyb)q(oard.)22 +b(The)16 b Fk(meta)p 1192 2615 14 2 v 15 w(\015ag)k Fu(argumen)o(t)15 +b(should)h(b)q(e)h(non-zero)195 2670 y(if)f(Readline)g(should)g(read)f +(eigh)o(t-bit)i(input.)p eop +%%Page: 33 35 +33 34 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(33)1762 149 y(F)l(unction)-1861 b Fi(void)20 +b Fh(rl)p 241 149 18 3 v 21 w(deprep)p 434 149 V 20 w(terminal)j +Fg(\()p Ft(void)p Fg(\))195 204 y Fu(Undo)16 b(the)g(e\013ects)f(of)h +Ft(rl_prep_terminal\(\))p Fu(,)d(lea)o(ving)k(the)e(terminal)i(in)g +(the)e(state)g(in)i(whic)o(h)195 259 y(it)e(w)o(as)g(b)q(efore)g(the)h +(most)e(recen)o(t)h(call)i(to)d Ft(rl_prep_terminal\(\))p +Fu(.)1762 379 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p +241 379 V 21 w(tt)n(y)p 334 379 V 22 w(set)p 427 379 +V 20 w(default)p 620 379 V 21 w(bindings)k Fg(\()p Ft(Keymap)14 +b(kmap)p Fg(\))195 434 y Fu(Read)k(the)h(op)q(erating)f(system's)g +(terminal)h(editing)h(c)o(haracters)e(\(as)f(w)o(ould)i(b)q(e)g(displa) +o(y)o(ed)h(b)o(y)195 488 y Ft(stty)p Fu(\))14 b(to)h(their)h(Readline)g +(equiv)m(alen)o(ts.)22 b(The)15 b(bindings)i(are)e(p)q(erformed)g(in)h +Fk(kmap)p Fu(.)1762 608 y(F)l(unction)-1861 b Fi(int)20 +b Fh(rl)p 215 608 V 21 w(reset)p 357 608 V 20 w(terminal)j +Fg(\()p Ft(const)15 b(char)f(*terminal_name)p Fg(\))195 +663 y Fu(Reinitialize)h(Readline's)e(idea)g(of)f(the)g(terminal)h +(settings)g(using)g Fk(terminal)p 1491 663 14 2 v 17 +w(name)h Fu(as)e(the)h(termi-)195 718 y(nal)k(t)o(yp)q(e)f(\(e.g.,)f +Ft(vt100)p Fu(\).)21 b(If)c Fk(terminal)p 878 718 V 17 +w(name)i Fu(is)d Ft(NULL)p Fu(,)g(the)g(v)m(alue)h(of)f(the)g +Ft(TERM)g Fu(en)o(vironmen)o(t)195 773 y(v)m(ariable)h(is)e(used.)75 +886 y Fj(2.4.10)29 b(Utilit)n(y)22 b(F)-5 b(unctions)1762 +1035 y Fu(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 +1035 18 3 v 21 w(extend)p 404 1035 V 21 w(line)p 513 +1035 V 22 w(bu\013er)j Fg(\()p Ft(int)15 b(len)p Fg(\))195 +1090 y Fu(Ensure)g(that)g Ft(rl_line_buffer)e Fu(has)i(enough)g(space)h +(to)e(hold)i Fk(len)g Fu(c)o(haracters,)e(p)q(ossibly)i(real-)195 +1145 y(lo)q(cating)g(it)f(if)h(necessary)l(.)1762 1265 +y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1265 V +21 w(initiali)q(z)q(e)26 b Fg(\()p Ft(void)p Fg(\))195 +1320 y Fu(Initialize)21 b(or)d(re-initialize)k(Readline's)d(in)o +(ternal)h(state.)28 b(It's)18 b(not)g(strictly)h(necessary)g(to)f(call) +195 1374 y(this;)d Ft(readline\(\))f Fu(calls)i(it)g(b)q(efore)f +(reading)h(an)o(y)f(input.)1762 1494 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1494 V 21 w(ding)j Fg(\()p +Ft(void)p Fg(\))195 1549 y Fu(Ring)15 b(the)g(terminal)h(b)q(ell,)h(ob) +q(eying)f(the)g(setting)f(of)g Ft(bell-style)p Fu(.)1762 +1669 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1669 +V 21 w(alphab)r(etic)k Fg(\()p Ft(int)14 b(c)p Fg(\))195 +1723 y Fu(Return)h(1)g(if)g Fk(c)j Fu(is)e(an)f(alphab)q(etic)i(c)o +(haracter.)1762 1843 y(F)l(unction)-1861 b Fi(void)20 +b Fh(rl)p 241 1843 V 21 w(displa)n(y)p 435 1843 V 22 +w(matc)n(h)p 611 1843 V 20 w(list)25 b Fg(\()p Ft(char)14 +b(**matches,)g(int)g(len,)h(int)g(max)p Fg(\))195 1898 +y Fu(A)i(con)o(v)o(enience)i(function)f(for)f(displa)o(ying)i(a)e(list) +h(of)e(strings)h(in)i(columnar)e(format)f(on)h(Read-)195 +1953 y(line's)h(output)f(stream.)23 b Ft(matches)16 b +Fu(is)h(the)g(list)h(of)e(strings,)h(in)g(argv)f(format,)g(suc)o(h)h +(as)f(a)h(list)g(of)195 2008 y(completion)c(matc)o(hes.)19 +b Ft(len)11 b Fu(is)i(the)f(n)o(um)o(b)q(er)h(of)e(strings)h(in)h +Ft(matches)p Fu(,)f(and)g Ft(max)g Fu(is)g(the)h(length)f(of)195 +2062 y(the)h(longest)g(string)g(in)h Ft(matches)p Fu(.)19 +b(This)13 b(function)h(uses)f(the)h(setting)f(of)f Ft +(print-completions-)195 2117 y(horizontally)k Fu(to)i(select)h(ho)o(w)e +(the)i(matc)o(hes)e(are)h(displa)o(y)o(ed)h(\(see)g(Section)g(1.3.1)d +([Readline)195 2172 y(Init)g(File)g(Syn)o(tax],)e(page)h(4\).)137 +2266 y(The)i(follo)o(wing)f(are)g(implemen)o(ted)i(as)e(macros,)f +(de\014ned)i(in)g Ft(chardefs.h)p Fu(.)k(Applications)d(should)75 +2321 y(refrain)d(from)g(using)h(them.)1762 2441 y(F)l(unction)-1861 +b Fi(int)p 176 2441 V 40 w Fh(rl)p 235 2441 V 21 w(upp)r(ercase)p +506 2441 V 20 w(p)23 b Fg(\()p Ft(int)14 b(c)p Fg(\))195 +2495 y Fu(Return)h(1)g(if)g Fk(c)j Fu(is)e(an)f(upp)q(ercase)i(alphab)q +(etic)f(c)o(haracter.)1762 2615 y(F)l(unction)-1861 b +Fi(int)p 176 2615 V 40 w Fh(rl)p 235 2615 V 21 w(lo)n(w)n(ercase)p +489 2615 V 23 w(p)22 b Fg(\()p Ft(int)15 b(c)p Fg(\))195 +2670 y Fu(Return)g(1)g(if)g Fk(c)j Fu(is)e(a)f(lo)o(w)o(ercase)g +(alphab)q(etic)i(c)o(haracter.)p eop +%%Page: 34 36 +34 35 bop 75 -58 a Fu(34)1299 b(GNU)15 b(Readline)h(Library)1762 +149 y(F)l(unction)-1861 b Fi(int)p 176 149 18 3 v 40 +w Fh(rl)p 235 149 V 21 w(digit)p 369 149 V 22 w(p)23 +b Fg(\()p Ft(int)14 b(c)p Fg(\))195 204 y Fu(Return)h(1)g(if)g +Fk(c)j Fu(is)e(a)f(n)o(umeric)h(c)o(haracter.)1762 360 +y(F)l(unction)-1861 b Fi(int)p 176 360 V 40 w Fh(rl)p +235 360 V 21 w(to)p 307 360 V 21 w(upp)r(er)21 b Fg(\()p +Ft(int)15 b(c)p Fg(\))195 415 y Fu(If)d Fk(c)j Fu(is)d(a)g(lo)o(w)o +(ercase)f(alphab)q(etic)j(c)o(haracter,)d(return)h(the)g(corresp)q +(onding)h(upp)q(ercase)g(c)o(haracter.)1762 571 y(F)l(unction)-1861 +b Fi(int)p 176 571 V 40 w Fh(rl)p 235 571 V 21 w(to)p +307 571 V 21 w(lo)n(w)n(er)24 b Fg(\()p Ft(int)15 b(c)p +Fg(\))195 626 y Fu(If)g Fk(c)i Fu(is)e(an)f(upp)q(ercase)i(alphab)q +(etic)g(c)o(haracter,)e(return)g(the)h(corresp)q(onding)g(lo)o(w)o +(ercase)f(c)o(harac-)195 680 y(ter.)1762 836 y(F)l(unction)-1861 +b Fi(int)p 176 836 V 40 w Fh(rl)p 235 836 V 21 w(digit)p +369 836 V 22 w(v)m(alue)24 b Fg(\()p Ft(int)15 b(c)p +Fg(\))195 891 y Fu(If)g Fk(c)k Fu(is)c(a)g(n)o(um)o(b)q(er,)g(return)g +(the)h(v)m(alue)g(it)g(represen)o(ts.)75 1029 y Fj(2.4.11)29 +b(Miscellaneous)22 b(F)-5 b(unctions)1762 1214 y Fu(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1214 V 21 w(macro)p 391 1214 +V 19 w(bind)j Fg(\()p Ft(const)14 b(char)g(*keyseq,)h(const)f(char)h +(*macro,)283 1269 y(Keymap)f(map)p Fg(\))195 1324 y Fu(Bind)f(the)f(k)o +(ey)f(sequence)i Fk(k)o(eyseq)g Fu(to)e(in)o(v)o(ok)o(e)g(the)h(macro)f +Fk(macro)p Fu(.)18 b(The)12 b(binding)h(is)f(p)q(erformed)g(in)195 +1379 y Fk(map)p Fu(.)19 b(When)14 b Fk(k)o(eyseq)h Fu(is)f(in)o(v)o(ok) +o(ed,)g(the)g Fk(macro)i Fu(will)f(b)q(e)f(inserted)h(in)o(to)f(the)g +(line.)21 b(This)14 b(function)195 1433 y(is)i(deprecated;)f(use)h +Ft(rl_generic_bind\(\))d Fu(instead.)1762 1589 y(F)l(unction)-1861 +b Fi(void)20 b Fh(rl)p 241 1589 V 21 w(macro)p 417 1589 +V 19 w(dump)r(er)g Fg(\()p Ft(int)15 b(readable)p Fg(\))195 +1644 y Fu(Prin)o(t)f(the)f(k)o(ey)h(sequences)g(b)q(ound)h(to)e(macros) +g(and)g(their)h(v)m(alues,)h(using)f(the)g(curren)o(t)g(k)o(eymap,)195 +1699 y(to)h Ft(rl_outstream)p Fu(.)k(If)d Fk(readable)j +Fu(is)d(non-zero,)g(the)g(list)g(is)g(formatted)f(in)h(suc)o(h)g(a)f(w) +o(a)o(y)g(that)g(it)195 1754 y(can)g(b)q(e)h(made)f(part)g(of)g(an)g +Ft(inputrc)f Fu(\014le)i(and)g(re-read.)1762 1910 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1910 V 21 w(v)m(ariable)p 431 +1910 V 22 w(bind)j Fg(\()p Ft(const)14 b(char)g(*variable,)g(const)h +(char)f(*value)p Fg(\))195 1964 y Fu(Mak)o(e)22 b(the)g(Readline)i(v)m +(ariable)g Fk(v)m(ariable)j Fu(ha)o(v)o(e)22 b Fk(v)m(alue)p +Fu(.)43 b(This)23 b(b)q(eha)o(v)o(es)g(as)f(if)h(the)f(readline)195 +2019 y(command)12 b(`)p Ft(set)j Fk(v)m(ariable)k(v)m(alue)s +Fu(')12 b(had)h(b)q(een)g(executed)h(in)f(an)f Ft(inputrc)g +Fu(\014le)h(\(see)f(Section)i(1.3.1)195 2074 y([Readline)i(Init)g(File) +h(Syn)o(tax],)d(page)h(4\).)1762 2230 y(F)l(unction)-1861 +b Fi(void)20 b Fh(rl)p 241 2230 V 21 w(v)m(ariable)p +457 2230 V 22 w(dump)r(er)g Fg(\()p Ft(int)14 b(readable)p +Fg(\))195 2285 y Fu(Prin)o(t)g(the)h(readline)h(v)m(ariable)f(names)g +(and)f(their)h(curren)o(t)f(v)m(alues)i(to)d Ft(rl_outstream)p +Fu(.)18 b(If)d Fk(read-)195 2340 y(able)20 b Fu(is)e(non-zero,)f(the)g +(list)h(is)g(formatted)e(in)h(suc)o(h)h(a)e(w)o(a)o(y)g(that)h(it)g +(can)g(b)q(e)h(made)f(part)f(of)h(an)195 2394 y Ft(inputrc)d +Fu(\014le)i(and)g(re-read.)1762 2550 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 2550 V 21 w(set)p 307 2550 +V 20 w(paren)p 469 2550 V 20 w(blink)p 613 2550 V 23 +w(timeout)i Fg(\()p Ft(int)15 b(u)p Fg(\))195 2605 y +Fu(Set)e(the)f(time)h(in)o(terv)m(al)h(\(in)f(microseconds\))g(that)f +(Readline)i(w)o(aits)e(when)h(sho)o(wing)f(a)h(balancing)195 +2660 y(c)o(haracter)h(when)i Ft(blink-matching-paren)d +Fu(has)i(b)q(een)h(enabled.)p eop +%%Page: 35 37 +35 36 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(35)75 149 y Fj(2.4.12)29 b(Alternate)21 +b(In)n(terface)137 245 y Fu(An)i(alternate)f(in)o(terface)h(is)g(a)o(v) +m(ailable)h(to)d(plain)j Ft(readline\(\))p Fu(.)40 b(Some)22 +b(applications)i(need)g(to)75 300 y(in)o(terlea)o(v)o(e)15 +b(k)o(eyb)q(oard)f(I/O)h(with)g(\014le,)h(device,)f(or)f(windo)o(w)h +(system)f(I/O,)h(t)o(ypically)h(b)o(y)e(using)h(a)g(main)75 +355 y(lo)q(op)f(to)g Ft(select\(\))e Fu(on)i(v)m(arious)g(\014le)h +(descriptors.)20 b(T)l(o)14 b(accomo)q(date)f(this)h(need,)h(readline)g +(can)f(also)g(b)q(e)75 409 y(in)o(v)o(ok)o(ed)i(as)f(a)g(`callbac)o(k') +h(function)h(from)d(an)i(ev)o(en)o(t)f(lo)q(op.)22 b(There)16 +b(are)f(functions)h(a)o(v)m(ailable)i(to)c(mak)o(e)75 +464 y(this)i(easy)l(.)1762 577 y(F)l(unction)-1861 b +Fi(void)20 b Fh(rl)p 241 577 18 3 v 21 w(callbac)n(k)p +458 577 V 23 w(handler)p 670 577 V 21 w(install)25 b +Fg(\()p Ft(const)14 b(char)h(*prompt,)283 632 y(rl_vcpfunc_t)e +(*lhandler)p Fg(\))195 687 y Fu(Set)f(up)h(the)g(terminal)g(for)f +(readline)i(I/O)f(and)f(displa)o(y)i(the)e(initial)j(expanded)e(v)m +(alue)h(of)e Fk(prompt)p Fu(.)195 742 y(Sa)o(v)o(e)j(the)h(v)m(alue)h +(of)f Fk(lhandler)21 b Fu(to)15 b(use)h(as)f(a)h(function)h(to)e(call)i +(when)f(a)g(complete)g(line)i(of)d(input)195 797 y(has)g(b)q(een)h(en)o +(tered.)21 b(The)15 b(function)h(tak)o(es)e(the)i(text)e(of)h(the)g +(line)i(as)e(an)g(argumen)o(t.)1762 910 y(F)l(unction)-1861 +b Fi(void)20 b Fh(rl)p 241 910 V 21 w(callbac)n(k)p 458 +910 V 23 w(read)p 591 910 V 20 w(c)n(har)j Fg(\()p Ft(void)p +Fg(\))195 965 y Fu(Whenev)o(er)17 b(an)g(application)h(determines)g +(that)e(k)o(eyb)q(oard)h(input)h(is)f(a)o(v)m(ailable,)i(it)e(should)h +(call)195 1019 y Ft(rl_callback_read_char\(\))p Fu(,)8 +b(whic)o(h)k(will)g(read)f(the)g(next)g(c)o(haracter)f(from)g(the)h +(curren)o(t)g(input)195 1074 y(source.)20 b(If)14 b(that)f(c)o +(haracter)g(completes)i(the)f(line,)h Ft(rl_callback_read_char)c +Fu(will)16 b(in)o(v)o(ok)o(e)e(the)195 1129 y Fk(lhandler)21 +b Fu(function)c(sa)o(v)o(ed)e(b)o(y)h Ft(rl_callback_handler_install)d +Fu(to)i(pro)q(cess)h(the)g(line.)24 b Ft(EOF)195 1184 +y Fu(is)16 b(indicated)h(b)o(y)e(calling)i Fk(lhandler)j +Fu(with)15 b(a)g Ft(NULL)g Fu(line.)1762 1297 y(F)l(unction)-1861 +b Fi(void)20 b Fh(rl)p 241 1297 V 21 w(callbac)n(k)p +458 1297 V 23 w(handler)p 670 1297 V 21 w(remo)n(v)n(e)i +Fg(\()p Ft(void)p Fg(\))195 1352 y Fu(Restore)c(the)g(terminal)i(to)d +(its)i(initial)i(state)d(and)g(remo)o(v)o(e)g(the)h(line)h(handler.)31 +b(This)19 b(ma)o(y)f(b)q(e)195 1407 y(called)f(from)d(within)j(a)e +(callbac)o(k)h(as)f(w)o(ell)h(as)f(indep)q(enden)o(tly)l(.)75 +1516 y Fj(2.4.13)29 b(A)21 b(Readline)g(Example)137 1612 +y Fu(Here)f(is)g(a)f(function)i(whic)o(h)f(c)o(hanges)f(lo)o(w)o +(ercase)h(c)o(haracters)e(to)h(their)h(upp)q(ercase)h(equiv)m(alen)o +(ts,)75 1667 y(and)e(upp)q(ercase)i(c)o(haracters)d(to)h(lo)o(w)o +(ercase.)31 b(If)20 b(this)f(function)h(w)o(as)f(b)q(ound)h(to)f(`)p +Ft(M-c)p Fu(',)f(then)i(t)o(yping)75 1721 y(`)p Ft(M-c)p +Fu(')12 b(w)o(ould)h(c)o(hange)h(the)f(case)g(of)g(the)g(c)o(haracter)g +(under)g(p)q(oin)o(t.)20 b(T)o(yping)14 b(`)p Ft(M-1)g(0)h(M-c)p +Fu(')d(w)o(ould)i(c)o(hange)75 1776 y(the)h(case)g(of)g(the)h(follo)o +(wing)f(10)g(c)o(haracters,)f(lea)o(ving)i(the)f(cursor)g(on)g(the)h +(last)f(c)o(haracter)f(c)o(hanged.)195 1840 y Ft(/*)24 +b(Invert)f(the)g(case)g(of)h(the)f(COUNT)h(following)e(characters.)h +(*/)195 1892 y(int)195 1944 y(invert_case_line)f(\(count,)h(key\))314 +1995 y(int)h(count,)f(key;)195 2047 y({)243 2099 y(register)f(int)i +(start,)f(end,)g(i;)243 2203 y(start)g(=)h(rl_point;)243 +2307 y(if)f(\(rl_point)g(>=)h(rl_end\))290 2359 y(return)f(\(0\);)243 +2462 y(if)g(\(count)g(<)h(0\))290 2514 y({)338 2566 y(direction)f(=)h +(-1;)338 2618 y(count)f(=)h(-count;)290 2670 y(})p eop +%%Page: 36 38 +36 37 bop 75 -58 a Fu(36)1299 b(GNU)15 b(Readline)h(Library)243 +149 y Ft(else)290 201 y(direction)23 b(=)h(1;)243 305 +y(/*)f(Find)h(the)f(end)h(of)f(the)h(range)f(to)g(modify.)g(*/)243 +357 y(end)g(=)h(start)f(+)h(\(count)f(*)h(direction\);)243 +461 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g(*/)243 +513 y(if)g(\(end)h(>)f(rl_end\))290 565 y(end)h(=)g(rl_end;)243 +616 y(else)f(if)h(\(end)f(<)h(0\))290 668 y(end)g(=)g(0;)243 +772 y(if)f(\(start)g(==)h(end\))290 824 y(return)f(\(0\);)243 +928 y(if)g(\(start)g(>)h(end\))290 980 y({)338 1032 y(int)g(temp)f(=)h +(start;)338 1083 y(start)f(=)h(end;)338 1135 y(end)g(=)f(temp;)290 +1187 y(})243 1291 y(/*)g(Tell)h(readline)e(that)i(we)f(are)h(modifying) +e(the)i(line,)f(so)h(it)f(will)h(save)314 1343 y(the)g(undo)f +(information.)f(*/)243 1395 y(rl_modifying)g(\(start,)h(end\);)243 +1499 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f(i++\))290 +1550 y({)338 1602 y(if)h(\(_rl_uppercase_p)d(\(rl_line_buffer[i]\)\)) +386 1654 y(rl_line_buffer[i])g(=)j(_rl_to_lower)e +(\(rl_line_buffer[i]\);)338 1706 y(else)h(if)h(\(_rl_lowercase_p)e +(\(rl_line_buffer[i]\)\))386 1758 y(rl_line_buffer[i])f(=)j +(_rl_to_upper)e(\(rl_line_buffer[i]\);)290 1810 y(})243 +1862 y(/*)h(Move)h(point)f(to)g(on)h(top)f(of)h(the)f(last)h(character) +e(changed.)h(*/)243 1914 y(rl_point)f(=)i(\(direction)f(==)g(1\))h(?)g +(end)f(-)h(1)g(:)f(start;)243 1966 y(return)g(\(0\);)195 +2017 y(})75 2217 y Fs(2.5)33 b(Readline)23 b(Signal)h(Handling)137 +2341 y Fu(Signals)e(are)f(async)o(hronous)f(ev)o(en)o(ts)h(sen)o(t)f +(to)h(a)f(pro)q(cess)h(b)o(y)g(the)g(Unix)h(k)o(ernel,)g(sometimes)f +(on)75 2396 y(b)q(ehalf)g(of)e(another)h(pro)q(cess.)34 +b(They)20 b(are)g(in)o(tended)h(to)e(indicate)j(exceptional)f(ev)o(en)o +(ts,)f(lik)o(e)h(a)f(user)75 2451 y(pressing)c(the)f(in)o(terrupt)g(k)o +(ey)g(on)g(his)h(terminal,)f(or)g(a)f(net)o(w)o(ork)g(connection)i(b)q +(eing)g(brok)o(en.)k(There)15 b(is)75 2506 y(a)e(class)g(of)g(signals)h +(that)f(can)g(b)q(e)h(sen)o(t)f(to)f(the)i(pro)q(cess)f(curren)o(tly)h +(reading)f(input)i(from)d(the)h(k)o(eyb)q(oard.)75 2560 +y(Since)i(Readline)f(c)o(hanges)g(the)f(terminal)h(attributes)f(when)h +(it)g(is)g(called,)h(it)e(needs)h(to)f(p)q(erform)g(sp)q(ecial)75 +2615 y(pro)q(cessing)i(when)f(suc)o(h)g(a)g(signal)g(is)g(receiv)o(ed)h +(in)g(order)f(to)f(restore)g(the)h(terminal)g(to)f(a)h(sane)g(state,)e +(or)75 2670 y(pro)o(vide)k(application)h(writers)e(with)g(functions)h +(to)f(do)g(so)g(man)o(ually)l(.)p eop +%%Page: 37 39 +37 38 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(37)137 149 y(Readline)22 b(con)o(tains)e(an)g(in)o +(ternal)h(signal)g(handler)g(that)f(is)h(installed)h(for)d(a)h(n)o(um)o +(b)q(er)g(of)g(signals)75 204 y(\()p Ft(SIGINT)p Fu(,)h +Ft(SIGQUIT)p Fu(,)g Ft(SIGTERM)p Fu(,)g Ft(SIGALRM)p +Fu(,)g Ft(SIGTSTP)p Fu(,)g Ft(SIGTTIN)p Fu(,)h(and)f +Ft(SIGTTOU)p Fu(\).)36 b(When)21 b(one)g(of)75 259 y(these)16 +b(signals)h(is)f(receiv)o(ed,)h(the)f(signal)h(handler)f(will)i(reset)e +(the)g(terminal)g(attributes)g(to)f(those)h(that)75 314 +y(w)o(ere)d(in)i(e\013ect)e(b)q(efore)h Ft(readline\(\))e +Fu(w)o(as)h(called,)i(reset)f(the)f(signal)i(handling)g(to)e(what)g(it) +h(w)o(as)f(b)q(efore)75 369 y Ft(readline\(\))21 b Fu(w)o(as)h(called,) +j(and)e(resend)g(the)g(signal)g(to)f(the)h(calling)h(application.)44 +b(If)23 b(and)f(when)75 423 y(the)17 b(calling)i(application's)f +(signal)g(handler)g(returns,)f(Readline)h(will)h(reinitialize)h(the)d +(terminal)h(and)75 478 y(con)o(tin)o(ue)d(to)e(accept)i(input.)20 +b(When)15 b(a)e Ft(SIGINT)h Fu(is)g(receiv)o(ed,)h(the)g(Readline)g +(signal)g(handler)g(p)q(erforms)75 533 y(some)k(additional)i(w)o(ork,)e +(whic)o(h)h(will)h(cause)f(an)o(y)f(partially-en)o(tered)i(line)g(to)d +(b)q(e)i(ab)q(orted)g(\(see)f(the)75 588 y(description)e(of)d +Ft(rl_free_line_state\(\))f Fu(b)q(elo)o(w\).)137 655 +y(There)g(is)f(an)g(additional)i(Readline)g(signal)f(handler,)g(for)f +Ft(SIGWINCH)p Fu(,)f(whic)o(h)i(the)f(k)o(ernel)h(sends)g(to)e(a)75 +710 y(pro)q(cess)k(whenev)o(er)g(the)f(terminal's)h(size)g(c)o(hanges)f +(\(for)g(example,)h(if)g(a)f(user)h(resizes)g(an)f Ft(xterm)p +Fu(\).)19 b(The)75 764 y(Readline)g Ft(SIGWINCH)e Fu(handler)i(up)q +(dates)f(Readline's)h(in)o(ternal)f(screen)h(size)f(information,)h(and) +f(then)75 819 y(calls)g(an)o(y)f Ft(SIGWINCH)e Fu(signal)j(handler)g +(the)f(calling)i(application)f(has)f(installed.)27 b(Readline)18 +b(calls)g(the)75 874 y(application's)h Ft(SIGWINCH)d +Fu(signal)j(handler)f(without)g(resetting)g(the)f(terminal)i(to)e(its)g +(original)i(state.)75 929 y(If)d(the)g(application's)h(signal)g +(handler)g(do)q(es)g(more)e(than)h(up)q(date)h(its)f(idea)h(of)e(the)h +(terminal)h(size)g(and)75 984 y(return)e(\(for)f(example,)h(a)f +Ft(longjmp)g Fu(bac)o(k)h(to)f(a)h(main)g(pro)q(cessing)g(lo)q(op\),)g +(it)g Fl(must)20 b Fu(call)c Ft(rl_cleanup_)75 1038 y(after_signal\(\)) +d Fu(\(describ)q(ed)k(b)q(elo)o(w\),)e(to)g(restore)f(the)h(terminal)h +(state.)137 1105 y(Readline)g(pro)o(vides)f(t)o(w)o(o)e(v)m(ariables)i +(that)f(allo)o(w)g(application)i(writers)e(to)g(con)o(trol)g(whether)h +(or)e(not)75 1160 y(it)k(will)h(catc)o(h)e(certain)h(signals)h(and)f +(act)f(on)g(them)h(when)g(they)f(are)h(receiv)o(ed.)25 +b(It)16 b(is)i(imp)q(ortan)o(t)e(that)75 1215 y(applications)k(c)o +(hange)e(the)h(v)m(alues)g(of)f(these)h(v)m(ariables)g(only)g(when)g +(calling)h Ft(readline\(\))p Fu(,)d(not)h(in)h(a)75 1270 +y(signal)d(handler,)g(so)f(Readline's)h(in)o(ternal)g(signal)g(state)e +(is)i(not)f(corrupted.)1773 1385 y(V)l(ariable)-1861 +b Fi(int)20 b Fh(rl)p 215 1385 18 3 v 21 w(catc)n(h)p +366 1385 V 22 w(signals)195 1440 y Fu(If)15 b(this)g(v)m(ariable)g(is)g +(non-zero,)g(Readline)h(will)g(install)f(signal)h(handlers)f(for)f +Ft(SIGINT)p Fu(,)f Ft(SIGQUIT)p Fu(,)195 1495 y Ft(SIGTERM)p +Fu(,)h Ft(SIGALRM)p Fu(,)g Ft(SIGTSTP)p Fu(,)f Ft(SIGTTIN)p +Fu(,)h(and)i Ft(SIGTTOU)p Fu(.)195 1562 y(The)f(default)h(v)m(alue)h +(of)d Ft(rl_catch_signals)f Fu(is)j(1.)1773 1678 y(V)l(ariable)-1861 +b Fi(int)20 b Fh(rl)p 215 1678 V 21 w(catc)n(h)p 366 +1678 V 22 w(sigwinc)n(h)195 1732 y Fu(If)15 b(this)h(v)m(ariable)h(is)e +(non-zero,)g(Readline)i(will)g(install)f(a)f(signal)h(handler)h(for)d +Ft(SIGWINCH)p Fu(.)195 1799 y(The)h(default)h(v)m(alue)h(of)d +Ft(rl_catch_sigwinch)f Fu(is)j(1.)137 1891 y(If)g(an)f(application)j +(do)q(es)d(not)g(wish)i(to)d(ha)o(v)o(e)h(Readline)i(catc)o(h)f(an)o(y) +f(signals,)h(or)f(to)f(handle)j(signals)75 1945 y(other)i(than)g(those) +g(Readline)i(catc)o(hes)e(\()p Ft(SIGHUP)p Fu(,)g(for)g(example\),)h +(Readline)h(pro)o(vides)e(con)o(v)o(enience)75 2000 y(functions)d(to)f +(do)g(the)g(necessary)g(terminal)h(and)g(in)o(ternal)g(state)e(clean)o +(up)i(up)q(on)g(receipt)g(of)f(a)g(signal.)1762 2116 +y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 2116 V +21 w(clean)n(up)p 450 2116 V 22 w(after)p 590 2116 V +20 w(signal)j Fg(\()p Ft(void)p Fg(\))195 2171 y Fu(This)18 +b(function)f(will)i(reset)e(the)g(state)f(of)g(the)h(terminal)h(to)e +(what)h(it)g(w)o(as)f(b)q(efore)h Ft(readline\(\))195 +2226 y Fu(w)o(as)d(called,)i(and)f(remo)o(v)o(e)f(the)g(Readline)i +(signal)g(handlers)g(for)e(all)h(signals,)g(dep)q(ending)i(on)e(the)195 +2280 y(v)m(alues)h(of)f Ft(rl_catch_signals)e Fu(and)i +Ft(rl_catch_sigwinch)p Fu(.)1762 2396 y(F)l(unction)-1861 +b Fi(void)20 b Fh(rl)p 241 2396 V 21 w(free)p 356 2396 +V 20 w(line)p 464 2396 V 23 w(state)j Fg(\()p Ft(void)p +Fg(\))195 2451 y Fu(This)d(will)h(free)f(an)o(y)f(partial)h(state)f +(asso)q(ciated)h(with)g(the)g(curren)o(t)f(input)i(line)g(\(undo)f +(infor-)195 2506 y(mation,)i(an)o(y)f(partial)h(history)f(en)o(try)l(,) +h(an)o(y)f(partially-en)o(tered)i(k)o(eyb)q(oard)e(macro,)h(and)f(an)o +(y)195 2560 y(partially-en)o(tered)k(n)o(umeric)g(argumen)o(t\).)45 +b(This)24 b(should)h(b)q(e)g(called)g(b)q(efore)g Ft(rl_cleanup_)195 +2615 y(after_signal\(\))p Fu(.)36 b(The)22 b(Readline)h(signal)f +(handler)g(for)f Ft(SIGINT)f Fu(calls)j(this)e(to)g(ab)q(ort)g(the)195 +2670 y(curren)o(t)15 b(input)h(line.)p eop +%%Page: 38 40 +38 39 bop 75 -58 a Fu(38)1299 b(GNU)15 b(Readline)h(Library)1762 +149 y(F)l(unction)-1861 b Fi(void)20 b Fh(rl)p 241 149 +18 3 v 21 w(reset)p 383 149 V 20 w(after)p 521 149 V +21 w(signal)j Fg(\()p Ft(void)p Fg(\))195 204 y Fu(This)15 +b(will)h(reinitialize)h(the)d(terminal)h(and)g(reinstall)h(an)o(y)d +(Readline)j(signal)f(handlers,)g(dep)q(end-)195 259 y(ing)h(on)f(the)g +(v)m(alues)i(of)d Ft(rl_catch_signals)f Fu(and)j Ft(rl_catch_sigwinch)p +Fu(.)137 352 y(If)k(an)g(application)h(do)q(es)f(not)g(wish)g(Readline) +h(to)e(catc)o(h)g Ft(SIGWINCH)p Fu(,)h(it)g(ma)o(y)f(call)h +Ft(rl_resize_)75 407 y(terminal\(\))12 b Fu(or)h Ft +(rl_set_screen_size\(\))e Fu(to)i(force)g(Readline)i(to)e(up)q(date)h +(its)g(idea)g(of)g(the)f(terminal)75 461 y(size)j(when)g(a)f +Ft(SIGWINCH)f Fu(is)h(receiv)o(ed.)1762 579 y(F)l(unction)-1861 +b Fi(void)20 b Fh(rl)p 241 579 V 21 w(resize)p 401 579 +V 22 w(terminal)j Fg(\()p Ft(void)p Fg(\))195 634 y Fu(Up)q(date)16 +b(Readline's)g(in)o(ternal)g(screen)f(size)i(b)o(y)e(reading)g(v)m +(alues)i(from)d(the)i(k)o(ernel.)1762 752 y(F)l(unction)-1861 +b Fi(void)20 b Fh(rl)p 241 752 V 21 w(set)p 333 752 V +21 w(screen)p 510 752 V 20 w(size)k Fg(\()p Ft(int)15 +b(rows,)f(int)h(cols)p Fg(\))195 807 y Fu(Set)g(Readline's)h(idea)g(of) +f(the)g(terminal)h(size)g(to)f Fk(ro)o(ws)h Fu(ro)o(ws)e(and)i +Fk(cols)h Fu(columns.)137 899 y(If)g(an)g(application)h(do)q(es)f(not)f +(w)o(an)o(t)g(to)g(install)i(a)f Ft(SIGWINCH)e Fu(handler,)j(but)f(is)g +(still)h(in)o(terested)f(in)75 954 y(the)e(screen)h(dimensions,)g +(Readline's)h(idea)e(of)g(the)h(screen)f(size)h(ma)o(y)f(b)q(e)h +(queried.)1762 1072 y(F)l(unction)-1861 b Fi(void)20 +b Fh(rl)p 241 1072 V 21 w(get)p 339 1072 V 21 w(screen)p +516 1072 V 20 w(size)k Fg(\()p Ft(int)15 b(*rows,)f(int)h(*cols)p +Fg(\))195 1127 y Fu(Return)g(Readline's)h(idea)f(of)g(the)g(terminal's) +g(size)h(in)g(the)f(v)m(ariables)i(p)q(oin)o(ted)f(to)e(b)o(y)h(the)g +(argu-)195 1181 y(men)o(ts.)137 1274 y(The)h(follo)o(wing)g(functions)g +(install)g(and)g(remo)o(v)o(e)e(Readline's)i(signal)g(handlers.)1762 +1392 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 1392 +V 21 w(set)p 307 1392 V 20 w(signals)j Fg(\()p Ft(void)p +Fg(\))195 1447 y Fu(Install)c(Readline's)f(signal)h(handler)f(for)f +Ft(SIGINT)p Fu(,)g Ft(SIGQUIT)p Fu(,)g Ft(SIGTERM)p Fu(,)g +Ft(SIGALRM)p Fu(,)f Ft(SIGTSTP)p Fu(,)195 1502 y Ft(SIGTTIN)p +Fu(,)11 b Ft(SIGTTOU)p Fu(,)g(and)h Ft(SIGWINCH)p Fu(,)e(dep)q(ending)k +(on)e(the)f(v)m(alues)i(of)e Ft(rl_catch_signals)f Fu(and)195 +1556 y Ft(rl_catch_sigwinch)p Fu(.)1762 1674 y(F)l(unction)-1861 +b Fi(int)20 b Fh(rl)p 215 1674 V 21 w(clear)p 354 1674 +V 21 w(signals)j Fg(\()p Ft(void)p Fg(\))195 1729 y Fu(Remo)o(v)o(e)14 +b(all)i(of)f(the)g(Readline)i(signal)f(handlers)g(installed)h(b)o(y)e +Ft(rl_set_signals\(\))p Fu(.)75 1858 y Fs(2.6)33 b(Custom)21 +b(Completers)137 1955 y Fu(T)o(ypically)l(,)e(a)d(program)f(that)h +(reads)h(commands)f(from)g(the)h(user)f(has)h(a)f(w)o(a)o(y)g(of)g +(disam)o(biguating)75 2010 y(commands)i(and)f(data.)27 +b(If)18 b(y)o(our)f(program)g(is)h(one)g(of)f(these,)i(then)f(it)g(can) +f(pro)o(vide)i(completion)g(for)75 2065 y(commands,)14 +b(data,)g(or)g(b)q(oth.)20 b(The)15 b(follo)o(wing)g(sections)g +(describ)q(e)h(ho)o(w)e(y)o(our)g(program)g(and)h(Readline)75 +2119 y(co)q(op)q(erate)g(to)g(pro)o(vide)g(this)h(service.)75 +2232 y Fj(2.6.1)30 b(Ho)n(w)21 b(Completing)f(W)-5 b(orks)137 +2329 y Fu(In)18 b(order)f(to)f(complete)i(some)f(text,)g(the)g(full)i +(list)e(of)g(p)q(ossible)i(completions)f(m)o(ust)f(b)q(e)h(a)o(v)m +(ailable.)75 2383 y(That)e(is,)i(it)f(is)h(not)f(p)q(ossible)h(to)f +(accurately)g(expand)h(a)e(partial)i(w)o(ord)e(without)h(kno)o(wing)g +(all)h(of)f(the)75 2438 y(p)q(ossible)i(w)o(ords)e(whic)o(h)h(mak)o(e)f +(sense)h(in)h(that)d(con)o(text.)26 b(The)18 b(Readline)h(library)f +(pro)o(vides)g(the)g(user)75 2493 y(in)o(terface)f(to)f(completion,)i +(and)e(t)o(w)o(o)g(of)g(the)h(most)f(common)g(completion)i(functions:) +23 b(\014lename)18 b(and)75 2548 y(username.)h(F)l(or)10 +b(completing)i(other)e(t)o(yp)q(es)h(of)f(text,)h(y)o(ou)g(m)o(ust)f +(write)h(y)o(our)f(o)o(wn)h(completion)g(function.)75 +2602 y(This)16 b(section)g(describ)q(es)g(exactly)g(what)f(suc)o(h)g +(functions)h(m)o(ust)f(do,)f(and)i(pro)o(vides)f(an)h(example.)137 +2670 y(There)g(are)f(three)g(ma)s(jor)f(functions)i(used)f(to)g(p)q +(erform)g(completion:)p eop +%%Page: 39 41 +39 40 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(39)100 149 y(1.)29 b(The)22 b(user-in)o(terface)g +(function)h Ft(rl_complete\(\))p Fu(.)37 b(This)22 b(function)h(is)f +(called)h(with)f(the)g(same)165 204 y(argumen)o(ts)17 +b(as)h(other)g(bindable)i(Readline)f(functions:)27 b +Fk(coun)o(t)19 b Fu(and)f Fk(in)o(v)o(oking)p 1556 204 +14 2 v 17 w(k)o(ey)p Fu(.)28 b(It)19 b(isolates)165 259 +y(the)g(w)o(ord)f(to)g(b)q(e)i(completed)f(and)g(calls)h +Ft(rl_completion_matches\(\))c Fu(to)i(generate)g(a)h(list)g(of)165 +314 y(p)q(ossible)e(completions.)22 b(It)16 b(then)g(either)g(lists)g +(the)g(p)q(ossible)h(completions,)g(inserts)f(the)f(p)q(ossible)165 +369 y(completions,)25 b(or)d(actually)i(p)q(erforms)e(the)g +(completion,)k(dep)q(ending)e(on)f(whic)o(h)g(b)q(eha)o(vior)g(is)165 +423 y(desired.)100 489 y(2.)29 b(The)17 b(in)o(ternal)h(function)f +Ft(rl_completion_matches\(\))d Fu(uses)j(an)g(application-supplie)q(d)j +Fk(gener-)165 544 y(ator)h Fu(function)e(to)f(generate)g(the)h(list)g +(of)f(p)q(ossible)i(matc)o(hes,)f(and)f(then)h(returns)g(the)f(arra)o +(y)f(of)165 599 y(these)j(matc)o(hes.)32 b(The)20 b(caller)g(should)h +(place)f(the)g(address)f(of)h(its)f(generator)g(function)h(in)g +Ft(rl_)165 653 y(completion_entry_function)p Fu(.)100 +719 y(3.)29 b(The)12 b(generator)e(function)i(is)g(called)h(rep)q +(eatedly)g(from)e Ft(rl_completion_matches\(\))p Fu(,)d(returning)165 +774 y(a)16 b(string)g(eac)o(h)h(time.)24 b(The)17 b(argumen)o(ts)e(to)h +(the)g(generator)g(function)h(are)f Fk(text)h Fu(and)g +Fk(state)p Fu(.)22 b Fk(text)165 828 y Fu(is)17 b(the)f(partial)g(w)o +(ord)f(to)h(b)q(e)h(completed.)23 b Fk(state)18 b Fu(is)e(zero)g(the)g +(\014rst)g(time)g(the)g(function)h(is)g(called,)165 883 +y(allo)o(wing)23 b(the)f(generator)f(to)g(p)q(erform)h(an)o(y)g +(necessary)g(initialization,)k(and)c(a)g(p)q(ositiv)o(e)h(non-)165 +938 y(zero)14 b(in)o(teger)h(for)f(eac)o(h)h(subsequen)o(t)g(call.)21 +b(The)15 b(generator)e(function)j(returns)e Ft(\(char)h(*\)NULL)f +Fu(to)165 993 y(inform)19 b Ft(rl_completion_matches\(\))d +Fu(that)i(there)h(are)g(no)g(more)g(p)q(ossibilities)j(left.)32 +b(Usually)165 1048 y(the)19 b(generator)g(function)h(computes)g(the)f +(list)h(of)f(p)q(ossible)i(completions)g(when)e Fk(state)j +Fu(is)d(zero,)165 1102 y(and)13 b(returns)g(them)f(one)h(at)f(a)h(time) +g(on)g(subsequen)o(t)g(calls.)20 b(Eac)o(h)13 b(string)f(the)h +(generator)f(function)165 1157 y(returns)k(as)f(a)h(matc)o(h)f(m)o(ust) +h(b)q(e)g(allo)q(cated)h(with)g Ft(malloc\(\))p Fu(;)d(Readline)k +(frees)e(the)g(strings)f(when)165 1212 y(it)g(has)h(\014nished)g(with)g +(them.)1762 1321 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p +215 1321 18 3 v 21 w(complete)j Fg(\()p Ft(int)14 b(ignore,)g(int)h +(invoking_key)p Fg(\))195 1375 y Fu(Complete)h(the)f(w)o(ord)g(at)f(or) +h(b)q(efore)h(p)q(oin)o(t.)21 b(Y)l(ou)15 b(ha)o(v)o(e)g(supplied)j +(the)d(function)i(that)d(do)q(es)i(the)195 1430 y(initial)23 +b(simple)f(matc)o(hing)e(selection)i(algorithm)f(\(see)f +Ft(rl_completion_matches\(\))p Fu(\).)33 b(The)195 1485 +y(default)16 b(is)f(to)g(do)g(\014lename)h(completion.)1773 +1594 y(V)l(ariable)-1861 b Fi(rl_compentry_func_t)22 +b(*)d Fh(rl)p 678 1594 V 21 w(completion)p 973 1594 V +21 w(en)n(try)p 1126 1594 V 22 w(function)195 1648 y +Fu(This)i(is)f(a)g(p)q(oin)o(ter)g(to)f(the)h(generator)g(function)g +(for)g Ft(rl_completion_matches\(\))p Fu(.)31 b(If)20 +b(the)195 1703 y(v)m(alue)13 b(of)f Ft(rl_completion_entry_fun)o(ction) +d Fu(is)j Ft(NULL)f Fu(then)h(the)g(default)h(\014lename)g(generator) +195 1758 y(function,)j Ft(rl_filename_completion_f)o(unction)o(\(\))p +Fu(,)c(is)k(used.)75 1865 y Fj(2.6.2)30 b(Completion)20 +b(F)-5 b(unctions)137 1960 y Fu(Here)16 b(is)f(the)h(complete)g(list)g +(of)e(callable)k(completion)e(functions)g(presen)o(t)f(in)h(Readline.) +1762 2068 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 +2068 V 21 w(complete)p 460 2068 V 21 w(in)n(ternal)k +Fg(\()p Ft(int)15 b(what_to_do)p Fg(\))195 2123 y Fu(Complete)k(the)g +(w)o(ord)f(at)g(or)g(b)q(efore)h(p)q(oin)o(t.)31 b Fk(what)p +1108 2123 14 2 v 16 w(to)p 1165 2123 V 16 w(do)21 b Fu(sa)o(ys)d(what)g +(to)g(do)h(with)g(the)g(com-)195 2178 y(pletion.)j(A)16 +b(v)m(alue)h(of)e(`)p Ft(?)p Fu(')g(means)g(list)i(the)e(p)q(ossible)j +(completions.)k(`)p Ft(TAB)p Fu(')14 b(means)i(do)f(standard)195 +2233 y(completion.)22 b(`)p Ft(*)p Fu(')15 b(means)g(insert)h(all)h(of) +e(the)h(p)q(ossible)h(completions.)22 b(`)p Ft(!)p Fu(')15 +b(means)g(to)g(displa)o(y)i(all)195 2287 y(of)g(the)g(p)q(ossible)i +(completions,)f(if)g(there)f(is)h(more)f(than)g(one,)g(as)g(w)o(ell)h +(as)f(p)q(erforming)h(partial)195 2342 y(completion.)1762 +2451 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 2451 +18 3 v 21 w(complete)j Fg(\()p Ft(int)14 b(ignore,)g(int)h +(invoking_key)p Fg(\))195 2506 y Fu(Complete)21 b(the)g(w)o(ord)e(at)h +(or)g(b)q(efore)h(p)q(oin)o(t.)37 b(Y)l(ou)21 b(ha)o(v)o(e)f(supplied)j +(the)d(function)i(that)e(do)q(es)195 2560 y(the)d(initial)h(simple)g +(matc)o(hing)f(selection)h(algorithm)e(\(see)g Ft +(rl_completion_matches\(\))e Fu(and)195 2615 y Ft +(rl_completion_entry_functi)o(on)p Fu(\).)25 b(The)18 +b(default)h(is)f(to)f(do)h(\014lename)h(completion.)29 +b(This)195 2670 y(calls)16 b Ft(rl_complete_internal\(\))c +Fu(with)k(an)f(argumen)o(t)f(dep)q(ending)k(on)d Fk(in)o(v)o(oking)p +1657 2670 14 2 v 17 w(k)o(ey)p Fu(.)p eop +%%Page: 40 42 +40 41 bop 75 -58 a Fu(40)1299 b(GNU)15 b(Readline)h(Library)1762 +149 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 149 +18 3 v 21 w(p)r(ossible)p 433 149 V 20 w(completions)j +Fg(\()p Ft(int)15 b(count,)f(int)h(invoking_key)p Fg(\))195 +204 y Fu(List)21 b(the)f(p)q(ossible)i(completions.)36 +b(See)21 b(description)h(of)e Ft(rl_complete)13 b(\(\))p +Fu(.)35 b(This)21 b(calls)g Ft(rl_)195 259 y(complete_internal\(\))13 +b Fu(with)i(an)g(argumen)o(t)g(of)f(`)p Ft(?)p Fu('.)1762 +371 y(F)l(unction)-1861 b Fi(int)20 b Fh(rl)p 215 371 +V 21 w(insert)p 378 371 V 21 w(completions)j Fg(\()p +Ft(int)14 b(count,)g(int)h(invoking_key)p Fg(\))195 426 +y Fu(Insert)i(the)g(list)h(of)e(p)q(ossible)j(completions)e(in)o(to)g +(the)g(line,)i(deleting)f(the)f(partially-completed)195 +481 y(w)o(ord.)k(See)c(description)g(of)e Ft(rl_complete\(\))p +Fu(.)20 b(This)d(calls)g Ft(rl_complete_internal\(\))c +Fu(with)195 535 y(an)i(argumen)o(t)g(of)f(`)p Ft(*)p +Fu('.)1762 648 y(F)l(unction)-1861 b Fi(char)20 b(**)f +Fh(rl)p 312 648 V 21 w(completion)p 607 648 V 21 w(matc)n(hes)j +Fg(\()p Ft(const)15 b(char)f(*text,)283 702 y(rl_compentry_func_t)e +(*entry_func)p Fg(\))195 757 y Fu(Returns)18 b(an)h(arra)o(y)f(of)g +(strings)h(whic)o(h)h(is)g(a)e(list)i(of)e(completions)i(for)f +Fk(text)p Fu(.)30 b(If)19 b(there)g(are)g(no)195 812 +y(completions,)f(returns)g Ft(NULL)p Fu(.)25 b(The)17 +b(\014rst)g(en)o(try)g(in)h(the)f(returned)h(arra)o(y)e(is)i(the)f +(substitution)195 867 y(for)c Fk(text)p Fu(.)18 b(The)c(remaining)g(en) +o(tries)f(are)g(the)h(p)q(ossible)g(completions.)21 b(The)13 +b(arra)o(y)f(is)i(terminated)195 921 y(with)i(a)e Ft(NULL)h +Fu(p)q(oin)o(ter.)195 988 y Fk(en)o(try)p 302 988 14 +2 v 16 w(func)h Fu(is)e(a)f(function)h(of)e(t)o(w)o(o)g(args,)g(and)i +(returns)f(a)f Ft(char)j(*)p Fu(.)k(The)13 b(\014rst)g(argumen)o(t)f +(is)i Fk(text)p Fu(.)195 1043 y(The)f(second)g(is)f(a)h(state)e +(argumen)o(t;)h(it)h(is)g(zero)f(on)g(the)h(\014rst)f(call,)i(and)e +(non-zero)h(on)f(subsequen)o(t)195 1097 y(calls.)20 b +Fk(en)o(try)p 420 1097 V 16 w(func)15 b Fu(returns)e(a)e +Ft(NULL)h Fu(p)q(oin)o(ter)h(to)e(the)i(caller)g(when)g(there)f(are)g +(no)g(more)g(matc)o(hes.)1762 1209 y(F)l(unction)-1861 +b Fi(char)20 b(*)f Fh(rl)p 286 1209 18 3 v 21 w(\014lename)p +515 1209 V 20 w(completion)p 809 1209 V 21 w(function)k +Fg(\()p Ft(const)15 b(char)f(*text,)h(int)283 1264 y(state)p +Fg(\))195 1319 y Fu(A)e(generator)f(function)h(for)g(\014lename)h +(completion)f(in)h(the)f(general)g(case.)19 b Fk(text)14 +b Fu(is)f(a)g(partial)g(\014le-)195 1374 y(name.)20 b(The)15 +b(Bash)f(source)h(is)g(a)g(useful)g(reference)h(for)e(writing)h(custom) +f(completion)i(functions)195 1429 y(\(the)f(Bash)g(completion)i +(functions)e(call)i(this)e(and)h(other)f(Readline)h(functions\).)1762 +1541 y(F)l(unction)-1861 b Fi(char)20 b(*)f Fh(rl)p 286 +1541 V 21 w(username)p 547 1541 V 19 w(completion)p 840 +1541 V 21 w(function)k Fg(\()p Ft(const)14 b(char)g(*text,)283 +1595 y(int)g(state)p Fg(\))195 1650 y Fu(A)g(completion)i(generator)d +(for)h(usernames.)19 b Fk(text)c Fu(con)o(tains)f(a)g(partial)h +(username)f(preceded)i(b)o(y)195 1705 y(a)f(random)g(c)o(haracter)f +(\(usually)j(`)p Ft(~)p Fu('\).)i(As)c(with)g(all)i(completion)f +(generators,)e Fk(state)j Fu(is)f(zero)f(on)195 1760 +y(the)g(\014rst)g(call)h(and)g(non-zero)f(for)g(subsequen)o(t)h(calls.) +75 1869 y Fj(2.6.3)30 b(Completion)20 b(V)-5 b(ariables)1773 +2010 y Fu(V)l(ariable)-1861 b Fi(rl_compentry_func_t)22 +b(*)d Fh(rl)p 678 2010 V 21 w(completion)p 973 2010 V +21 w(en)n(try)p 1126 2010 V 22 w(function)195 2065 y +Fu(A)e(p)q(oin)o(ter)g(to)f(the)h(generator)f(function)h(for)f +Ft(rl_completion_matches\(\))p Fu(.)22 b Ft(NULL)16 b +Fu(means)h(to)195 2120 y(use)f Ft(rl_filename_completion_)o(functio)o +(n\(\))p Fu(,)c(the)j(default)h(\014lename)g(completer.)1773 +2232 y(V)l(ariable)-1861 b Fi(rl_completion_func_t)22 +b(*)d Fh(rl)p 704 2232 V 22 w(attempted)p 985 2232 V +20 w(completion)p 1279 2232 V 21 w(function)195 2286 +y Fu(A)e(p)q(oin)o(ter)h(to)f(an)g(alternativ)o(e)h(function)g(to)f +(create)g(matc)o(hes.)26 b(The)18 b(function)g(is)g(called)h(with)195 +2341 y Fk(text)p Fu(,)11 b Fk(start)p Fu(,)g(and)h Fk(end)p +Fu(.)19 b Fk(start)11 b Fu(and)h Fk(end)i Fu(are)d(indices)i(in)g +Ft(rl_line_buffer)c Fu(de\014ning)k(the)f(b)q(ound-)195 +2396 y(aries)h(of)g Fk(text)p Fu(,)f(whic)o(h)i(is)g(a)e(c)o(haracter)h +(string.)19 b(If)13 b(this)g(function)h(exists)g(and)f(returns)g +Ft(NULL)p Fu(,)f(or)g(if)195 2451 y(this)f(v)m(ariable)i(is)e(set)g(to) +f Ft(NULL)p Fu(,)h(then)g Ft(rl_complete\(\))e Fu(will)k(call)f(the)f +(v)m(alue)h(of)f Ft(rl_completion_)195 2506 y(entry_function)h +Fu(to)i(generate)g(matc)o(hes,)f(otherwise)i(the)f(arra)o(y)f(of)h +(strings)g(returned)g(will)i(b)q(e)195 2560 y(used.)j(If)12 +b(this)f(function)h(sets)f(the)g Ft(rl_attempted_completion_over)d +Fu(v)m(ariable)k(to)f(a)g(non-zero)195 2615 y(v)m(alue,)18 +b(Readline)h(will)f(not)f(p)q(erform)f(its)i(default)f(completion)h(ev) +o(en)f(if)h(this)f(function)h(returns)195 2670 y(no)d(matc)o(hes.)p +eop +%%Page: 41 43 +41 42 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(41)1773 149 y(V)l(ariable)-1861 b Fi(rl_quote_func_t)21 +b(*)f Fh(rl)p 574 149 18 3 v 21 w(\014lename)p 803 149 +V 20 w(quoting)p 1012 149 V 21 w(function)195 204 y Fu(A)c(p)q(oin)o +(ter)h(to)f(a)g(function)h(that)e(will)j(quote)e(a)g(\014lename)i(in)f +(an)f(application-sp)q(eci\014)q(c)j(fashion.)195 259 +y(This)h(is)g(called)i(if)e(\014lename)g(completion)h(is)f(b)q(eing)h +(attempted)e(and)h(one)g(of)f(the)h(c)o(haracters)195 +314 y(in)d Ft(rl_filename_quote_characters)c Fu(app)q(ears)k(in)g(a)g +(completed)g(\014lename.)25 b(The)17 b(function)195 369 +y(is)i(called)i(with)e Fk(text)p Fu(,)g Fk(matc)o(h)p +722 369 14 2 v 16 w(t)o(yp)q(e)p Fu(,)g(and)g Fk(quote)p +1059 369 V 17 w(p)q(oin)o(ter)p Fu(.)31 b(The)19 b Fk(text)h +Fu(is)f(the)g(\014lename)h(to)e(b)q(e)195 423 y(quoted.)39 +b(The)21 b Fk(matc)o(h)p 607 423 V 16 w(t)o(yp)q(e)j +Fu(is)e(either)g Ft(SINGLE_MATCH)p Fu(,)f(if)h(there)f(is)h(only)g(one) +g(completion)195 478 y(matc)o(h,)15 b(or)g Ft(MULT_MATCH)p +Fu(.)20 b(Some)c(functions)g(use)g(this)g(to)f(decide)j(whether)e(or)f +(not)g(to)g(insert)h(a)195 533 y(closing)c(quote)e(c)o(haracter.)18 +b(The)11 b Fk(quote)p 877 533 V 16 w(p)q(oin)o(ter)k +Fu(is)c(a)f(p)q(oin)o(ter)i(to)e(an)o(y)g(op)q(ening)i(quote)f(c)o +(haracter)195 588 y(the)k(user)h(t)o(yp)q(ed.)k(Some)15 +b(functions)h(c)o(ho)q(ose)f(to)g(reset)g(this)g(c)o(haracter.)1773 +690 y(V)l(ariable)-1861 b Fi(rl_dequote_func_t)22 b(*)d +Fh(rl)p 626 690 18 3 v 21 w(\014lename)p 855 690 V 20 +w(dequoting)p 1122 690 V 21 w(function)195 744 y Fu(A)c(p)q(oin)o(ter)g +(to)f(a)h(function)g(that)g(will)h(remo)o(v)o(e)e(application-sp)q +(eci\014)q(c)k(quoting)d(c)o(haracters)f(from)195 799 +y(a)i(\014lename)h(b)q(efore)g(completion)g(is)g(attempted,)f(so)f +(those)h(c)o(haracters)g(do)g(not)g(in)o(terfere)h(with)195 +854 y(matc)o(hing)i(the)g(text)g(against)f(names)h(in)h(the)f +(\014lesystem.)33 b(It)19 b(is)g(called)i(with)e Fk(text)p +Fu(,)g(the)g(text)195 909 y(of)i(the)g(w)o(ord)g(to)g(b)q(e)h +(dequoted,)h(and)e Fk(quote)p 1009 909 14 2 v 17 w(c)o(har)p +Fu(,)h(whic)o(h)g(is)g(the)f(quoting)h(c)o(haracter)f(that)195 +964 y(delimits)d(the)e(\014lename)i(\(usually)f(`)p Ft(')p +Fu(')f(or)f(`)p Ft(")p Fu('\).)22 b(If)17 b Fk(quote)p +1187 964 V 16 w(c)o(har)i Fu(is)e(zero,)f(the)g(\014lename)i(w)o(as)d +(not)195 1018 y(in)h(an)f(em)o(b)q(edded)i(string.)1773 +1120 y(V)l(ariable)-1861 b Fi(rl_linebuf_func_t)22 b(*)d +Fh(rl)p 626 1120 18 3 v 21 w(c)n(har)p 754 1120 V 21 +w(is)p 813 1120 V 21 w(quoted)p 1005 1120 V 21 w(p)195 +1175 y Fu(A)f(p)q(oin)o(ter)h(to)f(a)g(function)h(to)f(call)i(that)d +(determines)j(whether)e(or)g(not)g(a)g(sp)q(eci\014c)j(c)o(haracter)195 +1230 y(in)d(the)f(line)i(bu\013er)e(is)h(quoted,)g(according)f(to)g +(whatev)o(er)f(quoting)i(mec)o(hanism)g(the)f(program)195 +1284 y(calling)d(Readline)g(uses.)19 b(The)13 b(function)g(is)g(called) +h(with)f(t)o(w)o(o)e(argumen)o(ts:)17 b Fk(text)p Fu(,)12 +b(the)h(text)f(of)g(the)195 1339 y(line,)17 b(and)e Fk(index)p +Fu(,)i(the)e(index)i(of)e(the)g(c)o(haracter)g(in)h(the)g(line.)22 +b(It)15 b(is)h(used)g(to)f(decide)i(whether)e(a)195 1394 +y(c)o(haracter)f(found)i(in)g Ft(rl_completer_word_break_)o(charact)o +(ers)c Fu(should)k(b)q(e)g(used)g(to)e(break)195 1449 +y(w)o(ords)g(for)h(the)g(completer.)1773 1551 y(V)l(ariable)-1861 +b Fi(int)20 b Fh(rl)p 215 1551 V 21 w(completion)p 510 +1551 V 21 w(query)p 673 1551 V 21 w(items)195 1605 y +Fu(Up)e(to)g(this)g(man)o(y)g(items)g(will)i(b)q(e)f(displa)o(y)o(ed)g +(in)g(resp)q(onse)g(to)e(a)h(p)q(ossible-completions)j(call.)195 +1660 y(After)14 b(that,)f(w)o(e)h(ask)g(the)h(user)f(if)h(she)f(is)h +(sure)g(she)f(w)o(an)o(ts)f(to)h(see)h(them)f(all.)20 +b(The)15 b(default)g(v)m(alue)195 1715 y(is)h(100.)1773 +1817 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p +436 1817 V 21 w(basic)p 580 1817 V 21 w(w)n(ord)p 725 +1817 V 21 w(break)p 886 1817 V 20 w(c)n(haracters)195 +1872 y Fu(The)j(basic)h(list)g(of)f(c)o(haracters)f(that)g(signal)i(a)f +(break)g(b)q(et)o(w)o(een)g(w)o(ords)g(for)f(the)h(completer)195 +1926 y(routine.)30 b(The)19 b(default)g(v)m(alue)h(of)e(this)h(v)m +(ariable)h(is)f(the)g(c)o(haracters)f(whic)o(h)h(break)g(w)o(ords)f +(for)195 1981 y(completion)e(in)g(Bash:)k Ft(")15 b +(\\t\\n\\"\\\\'`@$><=;|&{\(")p Fu(.)1773 2083 y(V)l(ariable)-1861 +b Fi(const)20 b(char)g(*)f Fh(rl)p 436 2083 V 21 w(basic)p +580 2083 V 21 w(quote)p 740 2083 V 21 w(c)n(haracters)195 +2138 y Fu(A)c(list)h(of)f(quote)g(c)o(haracters)f(whic)o(h)i(can)g +(cause)f(a)g(w)o(ord)g(break.)1773 2239 y(V)l(ariable)-1861 +b Fi(const)20 b(char)g(*)f Fh(rl)p 436 2239 V 21 w(completer)p +705 2239 V 21 w(w)n(ord)p 850 2239 V 20 w(break)p 1010 +2239 V 20 w(c)n(haracters)195 2294 y Fu(The)33 b(list)g(of)f(c)o +(haracters)g(that)f(signal)j(a)e(break)g(b)q(et)o(w)o(een)h(w)o(ords)f +(for)g Ft(rl_complete_)195 2349 y(internal\(\))p Fu(.)18 +b(The)e(default)g(list)g(is)f(the)h(v)m(alue)g(of)f Ft +(rl_basic_word_break_chara)o(cters)p Fu(.)1773 2451 y(V)l(ariable)-1861 +b Fi(const)20 b(char)g(*)f Fh(rl)p 436 2451 V 21 w(completer)p +705 2451 V 21 w(quote)p 865 2451 V 20 w(c)n(haracters)195 +2506 y Fu(A)e(list)h(of)e(c)o(haracters)g(whic)o(h)i(can)f(b)q(e)g +(used)h(to)e(quote)h(a)f(substring)h(of)g(the)g(line.)26 +b(Completion)195 2560 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)g +(substring,)h(and)f(within)i(the)e(substring)g Ft +(rl_completer_word_break_)195 2615 y(characters)j Fu(are)h(treated)g +(as)h(an)o(y)f(other)g(c)o(haracter,)g(unless)i(they)e(also)h(app)q +(ear)g(within)h(this)195 2670 y(list.)p eop +%%Page: 42 44 +42 43 bop 75 -58 a Fu(42)1299 b(GNU)15 b(Readline)h(Library)1773 +149 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f Fh(rl)p +436 149 18 3 v 21 w(\014lename)p 665 149 V 20 w(quote)p +824 149 V 21 w(c)n(haracters)195 204 y Fu(A)e(list)h(of)e(c)o +(haracters)g(that)g(cause)h(a)g(\014lename)h(to)e(b)q(e)i(quoted)e(b)o +(y)h(the)g(completer)h(when)f(they)195 259 y(app)q(ear)e(in)h(a)f +(completed)h(\014lename.)21 b(The)16 b(default)g(is)f(the)h(n)o(ull)g +(string.)1773 376 y(V)l(ariable)-1861 b Fi(const)20 b(char)g(*)f +Fh(rl)p 436 376 V 21 w(sp)r(ecial)p 623 376 V 22 w(pre\014xes)195 +431 y Fu(The)14 b(list)h(of)e(c)o(haracters)g(that)g(are)h(w)o(ord)f +(break)h(c)o(haracters,)f(but)h(should)h(b)q(e)f(left)g(in)h +Fk(text)f Fu(when)195 486 y(it)f(is)f(passed)h(to)f(the)g(completion)h +(function.)20 b(Programs)11 b(can)h(use)h(this)g(to)f(help)h(determine) +h(what)195 541 y(kind)i(of)e(completing)i(to)e(do.)19 +b(F)l(or)14 b(instance,)i(Bash)e(sets)h(this)g(v)m(ariable)h(to)e +Ft(")p Fu($)p Ft(@")g Fu(so)g(that)g(it)h(can)195 596 +y(complete)h(shell)h(v)m(ariables)f(and)g(hostnames.)1773 +713 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 713 +V 21 w(completion)p 510 713 V 21 w(app)r(end)p 715 713 +V 19 w(c)n(haracter)195 768 y Fu(When)d(a)f(single)i(completion)g +(alternativ)o(e)f(matc)o(hes)f(at)g(the)h(end)g(of)f(the)h(command)f +(line,)j(this)195 823 y(c)o(haracter)10 b(is)h(app)q(ended)i(to)d(the)g +(inserted)i(completion)g(text.)18 b(The)11 b(default)g(is)g(a)g(space)g +(c)o(haracter)195 877 y(\(`)j('\).)19 b(Setting)14 b(this)f(to)g(the)g +(n)o(ull)i(c)o(haracter)e(\(`)p Ft(\\0)p Fu('\))e(prev)o(en)o(ts)i(an)o +(ything)h(b)q(eing)h(app)q(ended)f(auto-)195 932 y(matically)l(.)21 +b(This)15 b(can)f(b)q(e)h(c)o(hanged)g(in)g(custom)f(completion)i +(functions)f(to)f(pro)o(vide)h(the)f(\\most)195 987 y(sensible)i(w)o +(ord)c(separator)h(c)o(haracter")f(according)i(to)f(an)h +(application-sp)q(eci\014c)j(command)c(line)195 1042 +y(syn)o(tax)h(sp)q(eci\014cation.)1773 1159 y(V)l(ariable)-1861 +b Fi(int)20 b Fh(rl)p 215 1159 V 21 w(ignore)p 391 1159 +V 20 w(completion)p 685 1159 V 21 w(duplicates)195 1214 +y Fu(If)15 b(non-zero,)h(then)f(duplicates)i(in)f(the)f(matc)o(hes)g +(are)g(remo)o(v)o(ed.)k(The)d(default)g(is)f(1.)1773 +1331 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p 215 1331 +V 21 w(\014lename)p 444 1331 V 20 w(completion)p 738 +1331 V 21 w(desired)195 1386 y Fu(Non-zero)c(means)g(that)f(the)h +(results)g(of)g(the)g(matc)o(hes)f(are)h(to)f(b)q(e)i(treated)e(as)g +(\014lenames.)23 b(This)195 1441 y(is)14 b Fl(always)j +Fu(zero)c(on)g(en)o(try)l(,)g(and)h(can)f(only)h(b)q(e)g(c)o(hanged)f +(within)i(a)e(completion)h(en)o(try)f(generator)195 1496 +y(function.)38 b(If)21 b(it)g(is)g(set)g(to)f(a)g(non-zero)h(v)m(alue,) +i(directory)e(names)g(ha)o(v)o(e)g(a)f(slash)h(app)q(ended)195 +1551 y(and)d(Readline)h(attempts)d(to)h(quote)g(completed)i +(\014lenames)f(if)g(they)g(con)o(tain)g(an)o(y)f(c)o(haracters)195 +1605 y(in)f Ft(rl_filename_quote_character)o(s)d Fu(and)i +Ft(rl_filename_quoting_desired)d Fu(is)k(set)f(to)f(a)195 +1660 y(non-zero)h(v)m(alue.)1773 1778 y(V)l(ariable)-1861 +b Fi(int)20 b Fh(rl)p 215 1778 V 21 w(\014lename)p 444 +1778 V 20 w(quoting)p 653 1778 V 21 w(desired)195 1832 +y Fu(Non-zero)14 b(means)g(that)f(the)i(results)f(of)g(the)g(matc)o +(hes)f(are)h(to)f(b)q(e)i(quoted)f(using)h(double)g(quotes)195 +1887 y(\(or)c(an)h(application-sp)q(eci\014)q(c)j(quoting)d(mec)o +(hanism\))g(if)h(the)f(completed)h(\014lename)g(con)o(tains)f(an)o(y) +195 1942 y(c)o(haracters)i(in)i Ft(rl_filename_quote_chars)p +Fu(.)h(This)f(is)f Fl(always)k Fu(non-zero)d(on)f(en)o(try)l(,)f(and)i +(can)195 1997 y(only)c(b)q(e)g(c)o(hanged)g(within)h(a)f(completion)g +(en)o(try)g(generator)e(function.)20 b(The)12 b(quoting)g(is)g +(e\013ected)195 2052 y(via)j(a)g(call)i(to)d(the)i(function)g(p)q(oin)o +(ted)g(to)e(b)o(y)h Ft(rl_filename_quoting_function)p +Fu(.)1773 2169 y(V)l(ariable)-1861 b Fi(int)20 b Fh(rl)p +215 2169 V 21 w(attempted)p 495 2169 V 20 w(completion)p +789 2169 V 21 w(o)n(v)n(er)195 2224 y Fu(If)47 b(an)g(application-sp)q +(eci\014)q(c)j(completion)e(function)g(assigned)f(to)g +Ft(rl_attempted_)195 2279 y(completion_function)24 b +Fu(sets)i(this)h(v)m(ariable)h(to)e(a)g(non-zero)h(v)m(alue,)j +(Readline)e(will)g(not)195 2333 y(p)q(erform)15 b(its)g(default)g +(\014lename)h(completion)g(ev)o(en)f(if)g(the)g(application's)h +(completion)g(function)195 2388 y(returns)f(no)g(matc)o(hes.)20 +b(It)15 b(should)h(b)q(e)g(set)f(only)h(b)o(y)f(an)g(application's)h +(completion)h(function.)1773 2506 y(V)l(ariable)-1861 +b Fi(int)20 b Fh(rl)p 215 2506 V 21 w(completion)p 510 +2506 V 21 w(t)n(yp)r(e)195 2560 y Fu(Set)e(to)e(a)i(c)o(haracter)f +(describing)i(the)e(t)o(yp)q(e)h(of)f(completion)i(Readline)g(is)f +(curren)o(tly)g(attempt-)195 2615 y(ing;)g(see)f(the)f(description)i +(of)f Ft(rl_complete_internal\(\))c Fu(\(see)k(Section)h(2.6.2)d +([Completion)195 2670 y(F)l(unctions],)g(page)g(39\))g(for)f(the)h +(list)h(of)f(c)o(haracters.)p eop +%%Page: 43 45 +43 44 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(43)1773 149 y(V)l(ariable)-1861 b Fi(int)20 +b Fh(rl)p 215 149 18 3 v 21 w(inhibit)p 399 149 V 23 +w(completion)195 204 y Fu(If)14 b(this)h(v)m(ariable)g(is)g(non-zero,)f +(completion)i(is)e(inhibited.)22 b(The)15 b(completion)g(c)o(haracter)e +(will)j(b)q(e)195 259 y(inserted)g(as)f(an)o(y)g(other)g(b)q(ound)h(to) +e Ft(self-insert)p Fu(.)1773 376 y(V)l(ariable)-1861 +b Fi(rl_compignore_func_t)22 b(*)d Fh(rl)p 704 376 V +22 w(ignore)p 881 376 V 20 w(some)p 1028 376 V 19 w(completions)p +1344 376 V 21 w(function)195 431 y Fu(This)g(function,)i(if)e +(de\014ned,)i(is)e(called)h(b)o(y)f(the)g(completer)g(when)h(real)f +(\014lename)h(completion)195 486 y(is)e(done,)f(after)f(all)i(the)f +(matc)o(hing)g(names)g(ha)o(v)o(e)g(b)q(een)h(generated.)25 +b(It)17 b(is)h(passed)f(a)g Ft(NULL)f Fu(ter-)195 540 +y(minated)g(arra)o(y)e(of)h(matc)o(hes.)20 b(The)c(\014rst)f(elemen)o +(t)h(\()p Ft(matches[0])p Fu(\))d(is)j(the)g(maximal)g(substring)195 +595 y(common)e(to)g(all)h(matc)o(hes.)k(This)c(function)g(can)g +(re-arrange)f(the)g(list)h(of)f(matc)o(hes)g(as)g(required,)195 +650 y(but)h(eac)o(h)h(elemen)o(t)g(deleted)g(from)f(the)g(arra)o(y)f(m) +o(ust)g(b)q(e)i(freed.)1773 767 y(V)l(ariable)-1861 b +Fi(rl_icppfunc_t)21 b(*)e Fh(rl)p 521 767 V 21 w(directory)p +769 767 V 22 w(completion)p 1065 767 V 21 w(ho)r(ok)195 +822 y Fu(This)k(function,)i(if)e(de\014ned,)j(is)d(allo)o(w)o(ed)g(to)f +(mo)q(dify)h(the)g(directory)g(p)q(ortion)g(of)f(\014lenames)195 +877 y(Readline)e(completes.)29 b(It)19 b(is)f(called)i(with)f(the)f +(address)h(of)e(a)h(string)h(\(the)f(curren)o(t)g(directory)195 +932 y(name\))g(as)g(an)h(argumen)o(t,)f(and)h(ma)o(y)f(mo)q(dify)h +(that)f(string.)30 b(If)19 b(the)f(string)h(is)g(replaced)h(with)195 +986 y(a)g(new)g(string,)h(the)f(old)g(v)m(alue)h(should)g(b)q(e)g +(freed.)34 b(An)o(y)20 b(mo)q(di\014ed)i(directory)e(name)g(should)195 +1041 y(ha)o(v)o(e)14 b(a)g(trailing)i(slash.)k(The)15 +b(mo)q(di\014ed)h(v)m(alue)g(will)g(b)q(e)f(displa)o(y)o(ed)h(as)e +(part)g(of)h(the)f(completion,)195 1096 y(replacing)h(the)g(directory)f +(p)q(ortion)g(of)g(the)g(pathname)g(the)h(user)f(t)o(yp)q(ed.)20 +b(It)14 b(returns)g(an)g(in)o(teger)195 1151 y(that)i(should)h(b)q(e)g +(non-zero)g(if)g(the)g(function)g(mo)q(di\014es)h(its)e(directory)h +(argumen)o(t.)23 b(It)17 b(could)g(b)q(e)195 1205 y(used)f(to)e(expand) +i(sym)o(b)q(olic)h(links)f(or)f(shell)i(v)m(ariables)f(in)g(pathnames.) +1773 1323 y(V)l(ariable)-1861 b Fi(rl_compdisp_func_t)22 +b(*)d Fh(rl)p 652 1323 V 21 w(completion)p 947 1323 V +21 w(displa)n(y)p 1141 1323 V 22 w(matc)n(hes)p 1366 +1323 V 21 w(ho)r(ok)195 1377 y Fu(If)11 b(non-zero,)h(then)f(this)h(is) +f(the)g(address)g(of)g(a)g(function)g(to)g(call)h(when)f(completing)i +(a)d(w)o(ord)h(w)o(ould)195 1432 y(normally)h(displa)o(y)g(the)f(list)h +(of)f(p)q(ossible)h(matc)o(hes.)18 b(This)12 b(function)g(is)g(called)g +(in)g(lieu)h(of)e(Readline)195 1487 y(displa)o(ying)21 +b(the)d(list.)32 b(It)19 b(tak)o(es)f(three)h(argumen)o(ts:)26 +b(\()p Ft(char)14 b(**)p Fk(matc)o(hes)p Fu(,)19 b Ft(int)f +Fk(n)o(um)p 1688 1487 14 2 v 17 w(matc)o(hes)p Fu(,)195 +1542 y Ft(int)13 b Fk(max)p 368 1542 V 16 w(length)p +Fu(\))i(where)f Fk(matc)o(hes)h Fu(is)f(the)g(arra)o(y)f(of)g(matc)o +(hing)h(strings,)g Fk(n)o(um)p 1578 1542 V 16 w(matc)o(hes)i +Fu(is)e(the)195 1597 y(n)o(um)o(b)q(er)h(of)f(strings)h(in)h(that)e +(arra)o(y)l(,)f(and)i Fk(max)p 1012 1597 V 16 w(length)h +Fu(is)f(the)g(length)g(of)g(the)f(longest)h(string)g(in)195 +1651 y(that)e(arra)o(y)l(.)19 b(Readline)c(pro)o(vides)g(a)e(con)o(v)o +(enience)j(function,)f Ft(rl_display_match_list)p Fu(,)c(that)195 +1706 y(tak)o(es)17 b(care)g(of)g(doing)h(the)f(displa)o(y)i(to)d +(Readline's)j(output)e(stream.)26 b(That)16 b(function)j(ma)o(y)d(b)q +(e)195 1761 y(called)h(from)d(this)i(ho)q(ok.)75 1873 +y Fj(2.6.4)30 b(A)21 b(Short)f(Completion)g(Example)137 +1969 y Fu(Here)11 b(is)f(a)g(small)h(application)h(demonstrating)e(the) +g(use)h(of)e(the)i(GNU)f(Readline)h(library)l(.)19 b(It)11 +b(is)f(called)75 2024 y Ft(fileman)p Fu(,)17 b(and)h(the)g(source)g(co) +q(de)g(resides)h(in)f(`)p Ft(examples/fileman.c)p Fu('.)25 +b(This)18 b(sample)g(application)75 2079 y(pro)o(vides)c(completion)g +(of)e(command)h(names,)g(line)i(editing)g(features,)d(and)i(access)f +(to)f(the)h(history)h(list.)p eop +%%Page: 44 46 +44 45 bop 75 -58 a Fu(44)1299 b(GNU)15 b(Readline)h(Library)195 +149 y Ft(/*)24 b(fileman.c)e(--)i(A)g(tiny)f(application)f(which)h +(demonstrates)g(how)g(to)h(use)f(the)267 201 y(GNU)g(Readline)g +(library.)46 b(This)24 b(application)e(interactively)g(allows)h(users) +267 253 y(to)g(manipulate)g(files)g(and)g(their)g(modes.)h(*/)195 +357 y(#include)f(<stdio.h>)195 409 y(#include)g(<sys/types.h>)195 +461 y(#include)g(<sys/file.h>)195 513 y(#include)g(<sys/stat.h>)195 +565 y(#include)g(<sys/errno.h>)195 668 y(#include)g +(<readline/readline.h>)195 720 y(#include)g(<readline/history.h>)195 +824 y(extern)g(char)g(*xmalloc)g(\(\);)195 928 y(/*)h(The)f(names)g(of) +h(functions)e(that)i(actually)f(do)g(the)h(manipulation.)e(*/)195 +980 y(int)h(com_list)g(__P\(\(char)g(*\)\);)195 1032 +y(int)g(com_view)g(__P\(\(char)g(*\)\);)195 1083 y(int)g(com_rename)g +(__P\(\(char)g(*\)\);)195 1135 y(int)g(com_stat)g(__P\(\(char)g(*\)\);) +195 1187 y(int)g(com_pwd)g(__P\(\(char)g(*\)\);)195 1239 +y(int)g(com_delete)g(__P\(\(char)g(*\)\);)195 1291 y(int)g(com_help)g +(__P\(\(char)g(*\)\);)195 1343 y(int)g(com_cd)g(__P\(\(char)g(*\)\);) +195 1395 y(int)g(com_quit)g(__P\(\(char)g(*\)\);)195 +1499 y(/*)h(A)f(structure)g(which)g(contains)g(information)f(on)i(the)f +(commands)g(this)g(program)267 1550 y(can)g(understand.)f(*/)195 +1654 y(typedef)h(struct)g({)243 1706 y(char)g(*name;)g(/*)h(User)f +(printable)g(name)g(of)h(the)f(function.)g(*/)243 1758 +y(rl_icpfunc_t)f(*func;)h(/*)h(Function)e(to)i(call)f(to)h(do)f(the)h +(job.)f(*/)243 1810 y(char)g(*doc;)g(/*)h(Documentation)e(for)h(this)h +(function.)46 b(*/)195 1862 y(})24 b(COMMAND;)195 1966 +y(COMMAND)f(commands[])f(=)i({)243 2017 y({)f("cd",)h(com_cd,)f +("Change)f(to)i(directory)f(DIR")g(},)243 2069 y({)g("delete",)g +(com_delete,)f("Delete)h(FILE")h(},)243 2121 y({)f("help",)g(com_help,) +g("Display)g(this)g(text")g(},)243 2173 y({)g("?",)h(com_help,)e +("Synonym)h(for)h(`help'")f(},)243 2225 y({)g("list",)g(com_list,)g +("List)g(files)g(in)h(DIR")f(},)243 2277 y({)g("ls",)h(com_list,)e +("Synonym)h(for)g(`list'")g(},)243 2329 y({)g("pwd",)g(com_pwd,)g +("Print)g(the)h(current)f(working)g(directory")f(},)243 +2381 y({)h("quit",)g(com_quit,)g("Quit)g(using)g(Fileman")g(},)243 +2433 y({)g("rename",)g(com_rename,)f("Rename)h(FILE)h(to)f(NEWNAME")g +(},)243 2484 y({)g("stat",)g(com_stat,)g("Print)g(out)g(statistics)g +(on)h(FILE")f(},)243 2536 y({)g("view",)g(com_view,)g("View)g(the)h +(contents)e(of)i(FILE")f(},)243 2588 y({)g(\(char)h(*\)NULL,)f +(\(rl_icpfunc_t)f(*\)NULL,)h(\(char)g(*\)NULL)g(})195 +2640 y(};)p eop +%%Page: 45 47 +45 46 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(45)195 201 y Ft(/*)24 b(Forward)e(declarations.)h(*/) +195 253 y(char)g(*stripwhite)g(\(\);)195 305 y(COMMAND)g(*find_command) +f(\(\);)195 409 y(/*)i(The)f(name)g(of)h(this)f(program,)g(as)h(taken)f +(from)g(argv[0].)g(*/)195 461 y(char)g(*progname;)195 +565 y(/*)h(When)f(non-zero,)g(this)g(means)g(the)g(user)h(is)f(done)h +(using)f(this)g(program.)g(*/)195 616 y(int)g(done;)195 +720 y(char)g(*)195 772 y(dupstr)g(\(s\))314 824 y(int)h(s;)195 +876 y({)243 928 y(char)f(*r;)243 1032 y(r)g(=)h(xmalloc)f(\(strlen)g +(\(s\))g(+)h(1\);)243 1083 y(strcpy)f(\(r,)g(s\);)243 +1135 y(return)g(\(r\);)195 1187 y(})195 1291 y(main)g(\(argc,)g(argv\)) +314 1343 y(int)h(argc;)314 1395 y(char)g(**argv;)195 +1447 y({)243 1499 y(char)f(*line,)g(*s;)243 1602 y(progname)f(=)i +(argv[0];)243 1706 y(initialize_readline)d(\(\);)i(/*)h(Bind)f(our)h +(completer.)e(*/)243 1810 y(/*)h(Loop)h(reading)f(and)g(executing)g +(lines)g(until)g(the)g(user)h(quits.)f(*/)243 1862 y(for)g(\()h(;)g +(done)f(==)h(0;)f(\))290 1914 y({)338 1966 y(line)g(=)h(readline)f +(\("FileMan:)f("\);)338 2069 y(if)i(\(!line\))386 2121 +y(break;)338 2225 y(/*)g(Remove)f(leading)g(and)g(trailing)g +(whitespace)f(from)i(the)f(line.)410 2277 y(Then,)g(if)h(there)f(is)g +(anything)g(left,)g(add)h(it)f(to)h(the)f(history)g(list)410 +2329 y(and)g(execute)g(it.)h(*/)338 2381 y(s)g(=)g(stripwhite)e +(\(line\);)338 2484 y(if)i(\(*s\))386 2536 y({)434 2588 +y(add_history)e(\(s\);)434 2640 y(execute_line)g(\(s\);)p +eop +%%Page: 46 48 +46 47 bop 75 -58 a Fu(46)1299 b(GNU)15 b(Readline)h(Library)386 +149 y Ft(})338 253 y(free)23 b(\(line\);)290 305 y(})243 +357 y(exit)g(\(0\);)195 409 y(})195 513 y(/*)h(Execute)e(a)i(command)f +(line.)g(*/)195 565 y(int)195 616 y(execute_line)f(\(line\))314 +668 y(char)i(*line;)195 720 y({)243 772 y(register)e(int)i(i;)243 +824 y(COMMAND)f(*command;)243 876 y(char)g(*word;)243 +980 y(/*)g(Isolate)g(the)h(command)f(word.)g(*/)243 1032 +y(i)g(=)h(0;)243 1083 y(while)f(\(line[i])g(&&)g(whitespace)g +(\(line[i]\)\))290 1135 y(i++;)243 1187 y(word)g(=)h(line)f(+)h(i;)243 +1291 y(while)f(\(line[i])g(&&)g(!whitespace)g(\(line[i]\)\))290 +1343 y(i++;)243 1447 y(if)g(\(line[i]\))290 1499 y(line[i++])g(=)h +('\\0';)243 1602 y(command)f(=)g(find_command)g(\(word\);)243 +1706 y(if)g(\(!command\))290 1758 y({)338 1810 y(fprintf)g(\(stderr,)g +("\045s:)g(No)h(such)f(command)g(for)g(FileMan.\\n",)g(word\);)338 +1862 y(return)g(\(-1\);)290 1914 y(})243 2017 y(/*)g(Get)h(argument)f +(to)g(command,)g(if)g(any.)h(*/)243 2069 y(while)f(\(whitespace)f +(\(line[i]\)\))290 2121 y(i++;)243 2225 y(word)h(=)h(line)f(+)h(i;)243 +2329 y(/*)f(Call)h(the)f(function.)g(*/)243 2381 y(return)g +(\(\(*\(command->func\)\))e(\(word\)\);)195 2433 y(})195 +2536 y(/*)j(Look)f(up)g(NAME)h(as)f(the)h(name)f(of)h(a)f(command,)g +(and)h(return)f(a)g(pointer)g(to)h(that)267 2588 y(command.)46 +b(Return)23 b(a)h(NULL)f(pointer)g(if)h(NAME)f(isn't)g(a)h(command)f +(name.)g(*/)195 2640 y(COMMAND)g(*)p eop +%%Page: 47 49 +47 48 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(47)195 149 y Ft(find_command)22 b(\(name\))314 +201 y(char)i(*name;)195 253 y({)243 305 y(register)e(int)i(i;)243 +409 y(for)f(\(i)h(=)f(0;)h(commands[i].name;)e(i++\))290 +461 y(if)i(\(strcmp)f(\(name,)g(commands[i].name\))f(==)h(0\))338 +513 y(return)g(\(&commands[i]\);)243 616 y(return)g(\(\(COMMAND)f +(*\)NULL\);)195 668 y(})195 772 y(/*)i(Strip)f(whitespace)f(from)i(the) +f(start)g(and)h(end)f(of)h(STRING.)46 b(Return)24 b(a)f(pointer)267 +824 y(into)g(STRING.)g(*/)195 876 y(char)g(*)195 928 +y(stripwhite)f(\(string\))314 980 y(char)i(*string;)195 +1032 y({)243 1083 y(register)e(char)i(*s,)f(*t;)243 1187 +y(for)g(\(s)h(=)f(string;)g(whitespace)g(\(*s\);)g(s++\))290 +1239 y(;)243 1343 y(if)g(\(*s)h(==)f(0\))290 1395 y(return)g(\(s\);)243 +1499 y(t)g(=)h(s)g(+)g(strlen)f(\(s\))g(-)h(1;)243 1550 +y(while)f(\(t)g(>)h(s)g(&&)g(whitespace)e(\(*t\)\))290 +1602 y(t--;)243 1654 y(*++t)h(=)h('\\0';)243 1758 y(return)f(s;)195 +1810 y(})195 1914 y(/*)h(***********************)o(*******)o(********)o +(*******)o(*******)o(********)o(****)d(*/)195 1966 y(/*)1575 +b(*/)195 2017 y(/*)429 b(Interface)23 b(to)g(Readline)g(Completion)381 +b(*/)195 2069 y(/*)1575 b(*/)195 2121 y(/*)24 b +(***********************)o(*******)o(********)o(*******)o(*******)o +(********)o(****)d(*/)195 2225 y(char)i(*command_generator)f +(__P\(\(const)g(char)i(*,)f(int\)\);)195 2277 y(char)g +(**fileman_completion)e(__P\(\(const)i(char)g(*,)h(int,)f(int\)\);)195 +2381 y(/*)h(Tell)f(the)g(GNU)h(Readline)f(library)f(how)i(to)g +(complete.)46 b(We)24 b(want)f(to)h(try)f(to)267 2433 +y(complete)f(on)i(command)f(names)g(if)h(this)f(is)h(the)f(first)g +(word)g(in)h(the)g(line,)f(or)267 2484 y(on)g(filenames)g(if)g(not.)h +(*/)195 2536 y(initialize_readline)d(\(\))195 2588 y({)243 +2640 y(/*)i(Allow)g(conditional)g(parsing)g(of)g(the)h(~/.inputrc)e +(file.)h(*/)p eop +%%Page: 48 50 +48 49 bop 75 -58 a Fu(48)1299 b(GNU)15 b(Readline)h(Library)243 +149 y Ft(rl_readline_name)21 b(=)j("FileMan";)243 253 +y(/*)f(Tell)h(the)f(completer)g(that)g(we)h(want)f(a)h(crack)f(first.)g +(*/)243 305 y(rl_attempted_completion_)o(functio)o(n)e(=)j +(fileman_completion;)195 357 y(})195 461 y(/*)g(Attempt)e(to)i +(complete)f(on)g(the)h(contents)f(of)g(TEXT.)47 b(START)23 +b(and)h(END)267 513 y(bound)f(the)g(region)g(of)h(rl_line_buffer)e +(that)h(contains)g(the)g(word)h(to)267 565 y(complete.)46 +b(TEXT)23 b(is)h(the)f(word)h(to)f(complete.)47 b(We)23 +b(can)h(use)f(the)h(entire)267 616 y(contents)e(of)i(rl_line_buffer)e +(in)h(case)h(we)f(want)h(to)f(do)h(some)f(simple)267 +668 y(parsing.)46 b(Returnthe)23 b(array)g(of)h(matches,)e(or)i(NULL)f +(if)h(there)f(aren't)g(any.)g(*/)195 720 y(char)g(**)195 +772 y(fileman_completion)e(\(text,)i(start,)g(end\))314 +824 y(const)g(char)h(*text;)314 876 y(int)g(start,)f(end;)195 +928 y({)243 980 y(char)g(**matches;)243 1083 y(matches)g(=)g(\(char)h +(**\)NULL;)243 1187 y(/*)f(If)h(this)f(word)h(is)f(at)h(the)f(start)g +(of)h(the)f(line,)h(then)f(it)g(is)h(a)g(command)314 +1239 y(to)g(complete.)46 b(Otherwise)23 b(it)h(is)f(the)h(name)f(of)h +(a)f(file)h(in)f(the)h(current)314 1291 y(directory.)f(*/)243 +1343 y(if)g(\(start)g(==)h(0\))290 1395 y(matches)f(=)h +(rl_completion_matches)d(\(text,)i(command_generator\);)243 +1499 y(return)g(\(matches\);)195 1550 y(})195 1654 y(/*)h(Generator)e +(function)h(for)g(command)g(completion.)47 b(STATE)23 +b(lets)g(us)267 1706 y(know)g(whether)g(to)g(start)h(from)f(scratch;)g +(without)g(any)g(state)267 1758 y(\(i.e.)g(STATE)g(==)h(0\),)f(then)g +(we)h(start)f(at)h(the)f(top)h(of)f(the)h(list.)f(*/)195 +1810 y(char)g(*)195 1862 y(command_generator)f(\(text,)h(state\))314 +1914 y(const)g(char)h(*text;)314 1966 y(int)g(state;)195 +2017 y({)243 2069 y(static)f(int)g(list_index,)g(len;)243 +2121 y(char)g(*name;)243 2225 y(/*)g(If)h(this)f(is)h(a)g(new)f(word)g +(to)h(complete,)f(initialize)f(now.)47 b(This)314 2277 +y(includes)23 b(saving)g(the)h(length)f(of)g(TEXT)h(for)f(efficiency,)f +(and)314 2329 y(initializing)h(the)g(index)g(variable)g(to)h(0.)f(*/) +243 2381 y(if)g(\(!state\))290 2433 y({)338 2484 y(list_index)g(=)g(0;) +338 2536 y(len)h(=)f(strlen)g(\(text\);)290 2588 y(})p +eop +%%Page: 49 51 +49 50 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(49)243 149 y Ft(/*)23 b(Return)g(the)h(next)f(name)g +(which)h(partially)e(matches)h(from)g(the)314 201 y(command)g(list.)g +(*/)243 253 y(while)g(\(name)g(=)h(commands[list_index].name)o(\))290 +305 y({)338 357 y(list_index++;)338 461 y(if)g(\(strncmp)f(\(name,)g +(text,)g(len\))g(==)h(0\))386 513 y(return)f(\(dupstr\(name\)\);)290 +565 y(})243 668 y(/*)g(If)h(no)f(names)h(matched,)e(then)i(return)f +(NULL.)g(*/)243 720 y(return)g(\(\(char)g(*\)NULL\);)195 +772 y(})195 876 y(/*)h(***********************)o(*******)o(********)o +(*******)o(*******)o(********)o(****)d(*/)195 928 y(/*)1575 +b(*/)195 980 y(/*)549 b(FileMan)22 b(Commands)644 b(*/)195 +1032 y(/*)1575 b(*/)195 1083 y(/*)24 b(***********************)o +(*******)o(********)o(*******)o(*******)o(********)o(****)d(*/)195 +1187 y(/*)j(String)f(to)g(pass)h(to)f(system)g(\(\).)47 +b(This)24 b(is)f(for)h(the)f(LIST,)g(VIEW)h(and)f(RENAME)267 +1239 y(commands.)f(*/)195 1291 y(static)h(char)g(syscom[1024];)195 +1395 y(/*)h(List)f(the)g(file\(s\))g(named)g(in)h(arg.)f(*/)195 +1447 y(com_list)g(\(arg\))314 1499 y(char)h(*arg;)195 +1550 y({)243 1602 y(if)f(\(!arg\))290 1654 y(arg)h(=)g("";)243 +1758 y(sprintf)f(\(syscom,)f("ls)i(-FClg)f(\045s",)g(arg\);)243 +1810 y(return)g(\(system)g(\(syscom\)\);)195 1862 y(})195 +1966 y(com_view)g(\(arg\))314 2017 y(char)h(*arg;)195 +2069 y({)243 2121 y(if)f(\(!valid_argument)f(\("view",)h(arg\)\))290 +2173 y(return)g(1;)243 2277 y(sprintf)g(\(syscom,)f("more)i(\045s",)f +(arg\);)243 2329 y(return)g(\(system)g(\(syscom\)\);)195 +2381 y(})195 2484 y(com_rename)f(\(arg\))314 2536 y(char)i(*arg;)195 +2588 y({)243 2640 y(too_dangerous)e(\("rename"\);)p eop +%%Page: 50 52 +50 51 bop 75 -58 a Fu(50)1299 b(GNU)15 b(Readline)h(Library)243 +149 y Ft(return)23 b(\(1\);)195 201 y(})195 305 y(com_stat)g(\(arg\)) +314 357 y(char)h(*arg;)195 409 y({)243 461 y(struct)f(stat)g(finfo;)243 +565 y(if)g(\(!valid_argument)f(\("stat",)h(arg\)\))290 +616 y(return)g(\(1\);)243 720 y(if)g(\(stat)g(\(arg,)h(&finfo\))f(==)g +(-1\))290 772 y({)338 824 y(perror)g(\(arg\);)338 876 +y(return)g(\(1\);)290 928 y(})243 1032 y(printf)g(\("Statistics)f(for)h +(`\045s':\\n",)g(arg\);)243 1135 y(printf)g(\("\045s)g(has)h(\045d)f +(link\045s,)g(and)g(is)h(\045d)g(byte\045s)f(in)g(length.\\n",)g(arg,) +434 1187 y(finfo.st_nlink,)434 1239 y(\(finfo.st_nlink)e(==)j(1\))g(?)f +("")h(:)g("s",)434 1291 y(finfo.st_size,)434 1343 y(\(finfo.st_size)e +(==)h(1\))h(?)f("")h(:)g("s"\);)243 1395 y(printf)f(\("Inode)g(Last)g +(Change)g(at:)g(\045s",)h(ctime)f(\(&finfo.st_ctime\)\);)243 +1447 y(printf)g(\(")143 b(Last)23 b(access)g(at:)g(\045s",)h(ctime)f +(\(&finfo.st_atime\)\);)243 1499 y(printf)g(\(")95 b(Last)23 +b(modified)g(at:)g(\045s",)h(ctime)f(\(&finfo.st_mtime\)\);)243 +1550 y(return)g(\(0\);)195 1602 y(})195 1706 y(com_delete)f(\(arg\))314 +1758 y(char)i(*arg;)195 1810 y({)243 1862 y(too_dangerous)e +(\("delete"\);)243 1914 y(return)h(\(1\);)195 1966 y(})195 +2069 y(/*)h(Print)f(out)g(help)h(for)f(ARG,)g(or)h(for)f(all)h(of)f +(the)h(commands)f(if)g(ARG)h(is)267 2121 y(not)f(present.)g(*/)195 +2173 y(com_help)g(\(arg\))314 2225 y(char)h(*arg;)195 +2277 y({)243 2329 y(register)e(int)i(i;)243 2381 y(int)f(printed)g(=)h +(0;)243 2484 y(for)f(\(i)h(=)f(0;)h(commands[i].name;)e(i++\))290 +2536 y({)338 2588 y(if)i(\(!*arg)f(||)g(\(strcmp)g(\(arg,)g +(commands[i].name\))f(==)i(0\)\))386 2640 y({)p eop +%%Page: 51 53 +51 52 bop 75 -58 a Fu(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g +(Readline)843 b(51)434 149 y Ft(printf)23 b(\("\045s\\t\\t\045s.\\n",)e +(commands[i].name,)h(commands[i].doc\);)434 201 y(printed++;)386 +253 y(})290 305 y(})243 409 y(if)h(\(!printed\))290 461 +y({)338 513 y(printf)g(\("No)h(commands)e(match)h(`\045s'.)48 +b(Possibilties)22 b(are:\\n",)h(arg\);)338 616 y(for)h(\(i)f(=)h(0;)g +(commands[i].name;)d(i++\))386 668 y({)434 720 y(/*)i(Print)g(in)h(six) +f(columns.)g(*/)434 772 y(if)g(\(printed)g(==)h(6\))481 +824 y({)529 876 y(printed)f(=)h(0;)529 928 y(printf)f(\("\\n"\);)481 +980 y(})434 1083 y(printf)g(\("\045s\\t",)f(commands[i].name\);)434 +1135 y(printed++;)386 1187 y(})338 1291 y(if)i(\(printed\))386 +1343 y(printf)f(\("\\n"\);)290 1395 y(})243 1447 y(return)g(\(0\);)195 +1499 y(})195 1602 y(/*)h(Change)f(to)g(the)h(directory)e(ARG.)i(*/)195 +1654 y(com_cd)f(\(arg\))314 1706 y(char)h(*arg;)195 1758 +y({)243 1810 y(if)f(\(chdir)g(\(arg\))h(==)f(-1\))290 +1862 y({)338 1914 y(perror)g(\(arg\);)338 1966 y(return)g(1;)290 +2017 y(})243 2121 y(com_pwd)g(\(""\);)243 2173 y(return)g(\(0\);)195 +2225 y(})195 2329 y(/*)h(Print)f(out)g(the)h(current)f(working)f +(directory.)h(*/)195 2381 y(com_pwd)g(\(ignore\))314 +2433 y(char)h(*ignore;)195 2484 y({)243 2536 y(char)f(dir[1024],)g(*s;) +243 2640 y(s)g(=)h(getcwd)f(\(dir,)g(sizeof\(dir\))g(-)g(1\);)p +eop +%%Page: 52 54 +52 53 bop 75 -58 a Fu(52)1299 b(GNU)15 b(Readline)h(Library)243 +149 y Ft(if)23 b(\(s)h(==)f(0\))290 201 y({)338 253 y(printf)g +(\("Error)g(getting)g(pwd:)g(\045s\\n",)g(dir\);)338 +305 y(return)g(1;)290 357 y(})243 461 y(printf)g(\("Current)f +(directory)h(is)h(\045s\\n",)f(dir\);)243 513 y(return)g(0;)195 +565 y(})195 668 y(/*)h(The)f(user)g(wishes)g(to)h(quit)f(using)g(this)h +(program.)46 b(Just)24 b(set)f(DONE)267 720 y(non-zero.)f(*/)195 +772 y(com_quit)h(\(arg\))314 824 y(char)h(*arg;)195 876 +y({)243 928 y(done)f(=)h(1;)243 980 y(return)f(\(0\);)195 +1032 y(})195 1135 y(/*)h(Function)e(which)i(tells)f(you)g(that)g(you)h +(can't)f(do)h(this.)f(*/)195 1187 y(too_dangerous)f(\(caller\))314 +1239 y(char)i(*caller;)195 1291 y({)243 1343 y(fprintf)f(\(stderr,)457 +1395 y("\045s:)h(Too)f(dangerous)g(for)g(me)h(to)g(distribute.)46 +b(Write)23 b(it)h(yourself.\\n",)p 1987 1405 21 42 v +457 1447 a(caller\);)195 1499 y(})195 1602 y(/*)g(Return)f(non-zero)f +(if)i(ARG)f(is)h(a)g(valid)f(argument)g(for)g(CALLER,)g(else)g(print) +267 1654 y(an)g(error)g(message)g(and)h(return)f(zero.)g(*/)195 +1706 y(int)195 1758 y(valid_argument)f(\(caller,)h(arg\))314 +1810 y(char)h(*caller,)e(*arg;)195 1862 y({)243 1914 +y(if)h(\(!arg)g(||)h(!*arg\))290 1966 y({)338 2017 y(fprintf)f +(\(stderr,)g("\045s:)g(Argument)g(required.\\n",)f(caller\);)338 +2069 y(return)h(\(0\);)290 2121 y(})243 2225 y(return)g(\(1\);)195 +2277 y(})p eop +%%Page: 53 55 +53 54 bop 75 -58 a Fu(Concept)15 b(Index)1466 b(53)75 +149 y Fq(Concept)27 b(Index)75 321 y Fs(C)75 382 y Ff(command)14 +b(editing)e Fe(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22 +b Ff(1)75 511 y Fs(E)75 572 y Ff(editing)15 b(command)f(lines)f +Fe(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)g(.)24 b Ff(1)75 702 y Fs(I)75 +763 y Ff(initiali)q(zati)q(on)16 b(\014le,)e(readline)t +Fe(.)8 b(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)17 b Ff(4)75 808 y(in)o(teraction,)e(readline)5 +b Fe(.)j(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(1)75 +938 y Fs(K)75 999 y Ff(kill)d(ring)8 b Fe(.)f(.)f(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 +b Ff(3)75 1044 y(killing)c(text)9 b Fe(.)d(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(2)1012 321 +y Fs(N)1012 390 y Ff(notation,)15 b(readline)7 b Fe(.)h(.)e(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(1)1012 539 y Fs(R)1012 +608 y Ff(readline,)15 b(function)8 b Fe(.)g(.)e(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)21 b Ff(19)1012 757 y Fs(V)1012 826 y Ff(v)n(ariables,)15 +b(readline)t Fe(.)9 b(.)d(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)17 +b Ff(4)1012 976 y Fs(Y)1012 1044 y Ff(y)o(anking)e(text)t +Fe(.)7 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)17 +b Ff(2)p eop +%%Page: 54 56 +54 55 bop 75 -58 a Fu(54)1299 b(GNU)15 b(Readline)h(Library)p +eop +%%Page: 55 57 +55 56 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187 +b(55)75 149 y Fq(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26 +b(Index)p 79 307 21 3 v 75 369 a Fd(_rl_digit_)o(p)7 +b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 +b Ff(34)75 415 y Fd(_rl_digit_)o(va)o(lue)6 b Fe(.)t(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)20 b Ff(34)75 462 y Fd(_rl_lowerc)o(as)o(e_p)6 +b Fe(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Ff(33)75 +508 y Fd(_rl_to_low)o(er)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)22 b Ff(34)75 554 y Fd(_rl_to_upp)o(er)6 +b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22 +b Ff(34)75 600 y Fd(_rl_upperc)o(as)o(e_p)6 b Fe(.)t(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)20 b Ff(33)75 733 y Fs(A)75 794 y +Fd(abort)11 b(\(C-g\))5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)17 b Ff(17)75 841 y Fd(accept-lin)o(e)10 +b(\(Newline)f(or)j(Return\))6 b Fe(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)19 b Ff(12)75 973 y Fs(B)75 1035 y Fd(backward-c)o(ha)o(r)10 +b(\(C-b\))e Fe(.)t(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)21 b Ff(12)75 +1081 y Fd(backward-d)o(el)o(ete)o(-c)o(har)9 b(\(Rubout\))e +Fe(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22 +b Ff(14)75 1127 y Fd(backward-k)o(il)o(l-l)o(in)o(e)10 +b(\(C-x)h(Rubout\))e Fe(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24 +b Ff(15)75 1174 y Fd(backward-k)o(il)o(l-w)o(or)o(d)10 +b(\(M-)501 1172 y Fn(h)p 512 1146 73 2 v 512 1174 a Fm(DEL)p +512 1181 V 583 1172 a Fn(i)598 1174 y Fd(\))g Fe(.)c(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)23 b Ff(15)75 1220 y +Fd(backward-w)o(or)o(d)10 b(\(M-b\))e Fe(.)t(.)e(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)21 +b Ff(12)75 1266 y Fd(beginning-)o(of)o(-hi)o(st)o(ory)9 +b(\(M-<\))h Fe(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)25 b Ff(13)75 1312 y Fd(beginning-)o(of)o(-li)o(ne)9 +b(\(C-a\))c Fe(.)t(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(12)75 1359 y(b)q(ell-st)o(yle)7 +b Fe(.)i(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)20 b Ff(4)75 1490 y Fs(C)75 1552 y Fd(call-last-)o(kb)o(d-m) +o(ac)o(ro)9 b(\(C-x)j(e\))5 b Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)g(.)h(.)f(.)18 b Ff(17)75 1598 y Fd(capitalize)o(-w)o(ord)9 +b(\(M-c\))d Fe(.)f(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Ff(14)75 1644 y Fd(character-)o(se) +o(arc)o(h)10 b(\(C-]\))c Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)18 b Ff(17)75 +1691 y Fd(character-)o(se)o(arc)o(h-)o(bac)o(kwa)o(rd)9 +b(\(M-C-]\))e Fe(.)s(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)20 +b Ff(17)75 1737 y Fd(clear-scre)o(en)9 b(\(C-l\))g Fe(.)t(.)d(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)21 b Ff(12)75 1783 y(commen)o(t-b)q(egin)9 +b Fe(.)f(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)21 +b Ff(5)75 1829 y Fd(complete)10 b(\()265 1827 y Fn(h)p +276 1801 74 2 v 276 1829 a Fm(T)m(AB)p 276 1837 V 348 +1827 a Fn(i)363 1829 y Fd(\))f Fe(.)e(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) +22 b Ff(16)75 1875 y(completion-query-i)q(tems)t Fe(.)9 +b(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(5)75 1922 y(con)o(v)o(ert-meta)10 +b Fe(.)c(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)22 +b Ff(5)75 1968 y Fd(copy-backw)o(ar)o(d-w)o(or)o(d)10 +b(\(\))c Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Ff(15)75 2014 y Fd(copy-forwa)o(rd)o +(-wo)o(rd)9 b(\(\))e Fe(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(15)75 +2060 y Fd(copy-regio)o(n-)o(as-)o(ki)o(ll)9 b(\(\))d +Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)18 b Ff(15)75 2193 y Fs(D)75 2255 y Fd(delete-cha)o(r)10 +b(\(C-d\))d Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(14)75 +2301 y Fd(delete-cha)o(r-)o(or-)o(li)o(st)9 b(\(\))d +Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)18 b Ff(16)75 2347 y Fd(delete-hor)o(iz)o(ont)o(al)o +(-sp)o(ace)9 b(\(\))i Fe(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)25 b Ff(15)75 2393 y Fd(digit-argu)o(me)o(nt)9 +b(\()p Fc(M-0)p Fd(,)i Fc(M-1)p Fd(,)h(...)f Fc(M--)p +Fd(\))c Fe(.)e(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(15)75 +2439 y(disable-comple)q(tion)9 b Fe(.)g(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)21 b Ff(5)75 2486 y Fd(do-upperca)o(se)o(-ve)o(rs)o(ion)9 +b(\(M-a,)i(M-b,)g(M-)p Fb(x)p Fd(,)h(...)o(\))159 2531 +y Fe(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(17)75 2578 y Fd(downcase-w)o(or)o(d)10 +b(\(M-l\))e Fe(.)t(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)21 b Ff(14)75 +2624 y Fd(dump-funct)o(io)o(ns)9 b(\(\))g Fe(.)d(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)22 b Ff(18)75 2670 y Fd(dump-macro)o(s)10 b(\(\))g +Fe(.)c(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)24 b Ff(18)1012 +307 y Fd(dump-variab)o(le)o(s)10 b(\(\))e Fe(.)e(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)23 b Ff(18)1012 465 y Fs(E)1012 537 y Ff(editing-mo)q(de)12 +b Fe(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22 +b Ff(5)1012 587 y(enable-k)o(eypad)9 b Fe(.)g(.)d(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(5)1012 638 y Fd(end-kbd-mac)o(ro)9 +b(\(C-x)i(\)\))e Fe(.)e(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)23 b Ff(16)1012 689 +y Fd(end-of-hist)o(or)o(y)10 b(\(M->\))d Fe(.)t(.)f(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20 +b Ff(13)1012 740 y Fd(end-of-line)9 b(\(C-e\))e Fe(.)f(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)23 b Ff(12)1012 791 y Fd(exchange-po)o(in)o(t-a)o(nd)o(-ma) +o(rk)9 b(\(C-x)j(C-x\))c Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)24 +b Ff(17)1012 842 y(expand-tilde)6 b Fe(.)j(.)d(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)19 b Ff(5)1012 999 y +Fs(F)1012 1070 y Fd(forward-bac)o(kw)o(ard)o(-d)o(ele)o(te)o(-ch)o(ar)9 +b(\(\))f Fe(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22 +b Ff(14)1012 1121 y Fd(forward-cha)o(r)10 b(\(C-f\))f +Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(12)1012 1172 y +Fd(forward-sea)o(rc)o(h-h)o(is)o(tor)o(y)10 b(\(C-s\))e +Fe(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 +b Ff(13)1012 1223 y Fd(forward-wor)o(d)10 b(\(M-f\))f +Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(12)1012 1373 y +Fs(H)1012 1445 y Fd(history-sea)o(rc)o(h-b)o(ac)o(kwa)o(rd)9 +b(\(\))i Fe(.)c(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f +(.)25 b Ff(13)1012 1496 y Fd(history-sea)o(rc)o(h-f)o(or)o(war)o(d)10 +b(\(\))s Fe(.)c(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)17 b Ff(13)1012 1546 y(horizon)o(tal-scrol)q(l-mo)r(de)6 +b Fe(.)j(.)d(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(5)1012 1697 y +Fs(I)1012 1768 y Ff(input-meta)8 b Fe(.)g(.)e(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(6)1012 1819 +y Fd(insert-comm)o(en)o(t)10 b(\(M-#\))d Fe(.)t(.)f(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20 +b Ff(17)1012 1870 y Fd(insert-comp)o(le)o(tio)o(ns)9 +b(\(M-*\))t Fe(.)c(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)18 b Ff(16)1012 1921 y(isearc)o(h-terminators)t +Fe(.)8 b(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)16 b Ff(6)1012 +2071 y Fs(K)1012 2143 y Ff(k)o(eymap)9 b Fe(.)e(.)f(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 +b Ff(6)1012 2194 y Fd(kill-line)10 b(\(C-k\))f Fe(.)d(.)g(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)24 b Ff(14)1012 2245 y Fd(kill-region)9 +b(\(\))i Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 +b Ff(15)1012 2295 y Fd(kill-whole-)o(li)o(ne)9 b(\(\))g +Fe(.)c(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 b Ff(15)1012 2346 y +Fd(kill-word)10 b(\(M-d\))f Fe(.)d(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +24 b Ff(15)1012 2497 y Fs(M)1012 2568 y Ff(mark-mo)q(di\014ed-li)q(nes) +8 b Fe(.)h(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(6)1012 +2619 y Fd(menu-comple)o(te)9 b(\(\))g Fe(.)e(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)23 b Ff(16)1012 2670 y(meta-\015ag)t Fe(.)8 b(.)e(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 +b Ff(6)p eop +%%Page: 56 58 +56 57 bop 75 -58 a Fu(56)1299 b(GNU)15 b(Readline)h(Library)75 +149 y Fs(N)75 212 y Fd(next-histo)o(ry)9 b(\(C-n\))g +Fe(.)t(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(12)75 258 y Fd(non-increm)o(en)o +(tal)o(-f)o(orw)o(ard)o(-s)o(ear)o(ch)o(-hi)o(st)o(ory)9 +b(\(M-n\))159 304 y Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(13)75 +350 y Fd(non-increm)o(en)o(tal)o(-r)o(eve)o(rse)o(-s)o(ear)o(ch)o(-hi)o +(st)o(ory)9 b(\(M-p\))159 396 y Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 +b Ff(13)75 521 y Fs(O)75 583 y Ff(output-meta)5 b Fe(.)i(.)f(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(6)75 +716 y Fs(P)75 778 y Fd(possible-c)o(om)o(ple)o(ti)o(ons)9 +b(\(M-?\))h Fe(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)25 b Ff(16)75 824 y Fd(prefix-met)o(a)10 b(\()324 +822 y Fn(h)p 335 796 70 2 v 335 824 a Fm(ESC)p 335 832 +V 402 822 a Fn(i)417 824 y Fd(\))g Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 +b Ff(17)75 870 y Fd(previous-h)o(is)o(tor)o(y)10 b(\(C-p\))c +Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)18 b Ff(12)75 1004 y Fs(Q)75 1066 y Fd(quoted-ins)o(er)o +(t)10 b(\(C-q)h(or)h(C-v\))c Fe(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)f(.)22 b Ff(14)75 1199 y Fs(R)75 +1261 y Fd(re-read-in)o(it)o(-fi)o(le)9 b(\(C-x)i(C-r\))5 +b Fe(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)18 +b Ff(17)75 1307 y Fd(readline)s Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Ff(19)75 +1354 y Fd(redraw-cur)o(re)o(nt-)o(li)o(ne)9 b(\(\))d +Fe(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)18 b Ff(12)75 1400 y Fd(reverse-se)o(ar)o(ch-)o(hi)o +(sto)o(ry)9 b(\(C-r\))g Fe(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)23 b Ff(13)75 1446 y Fd(revert-lin)o(e)10 +b(\(M-r\))d Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(17)75 +1493 y Fd(rl_add_def)o(un)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)22 b Ff(26)75 1539 y Fd(rl_add_fun)o(ma)o(p_e)o(nt)o(ry) +t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(29)75 1585 y Fd(rl_add_und)o(o)7 +b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 +b Ff(30)75 1632 y Fd(rl_alphabe)o(ti)o(c)9 b Fe(.)s(.)d(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)22 b Ff(33)75 1678 y Fd(rl_already)o(_p)o(rom)o +(pt)o(ed)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(23)75 +1724 y Fd(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_f)o(unc)o(ti)o(on)t +Fe(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 b Ff(40)75 +1771 y Fd(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_o)o(ver)6 +b Fe(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 +b Ff(42)75 1817 y Fd(rl_basic_q)o(uo)o(te_)o(ch)o(ara)o(cte)o(rs)8 +b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +22 b Ff(41)75 1863 y Fd(rl_basic_w)o(or)o(d_b)o(re)o(ak_)o(cha)o(ra)o +(cte)o(rs)5 b Fe(.)s(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18 +b Ff(41)75 1910 y Fd(rl_begin_u)o(nd)o(o_g)o(ro)o(up)t +Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(29)75 1956 y Fd(rl_bind_ke)o(y)7 +b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 +b Ff(27)75 2002 y Fd(rl_bind_ke)o(y_)o(in_)o(ma)o(p)5 +b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(27)75 2049 y +Fd(rl_binding)o(_k)o(eym)o(ap)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 +b Ff(24)75 2095 y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(ins)o(ta)o(ll)7 +b Fe(.)s(.)g(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20 +b Ff(35)75 2141 y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(rem)o(ov)o(e)8 +b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21 +b Ff(35)75 2188 y Fd(rl_callbac)o(k_)o(rea)o(d_)o(cha)o(r)9 +b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)25 b Ff(35)75 2234 y Fd(rl_catch_s)o(ig)o(nal)o(s)6 +b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(37)75 +2281 y Fd(rl_catch_s)o(ig)o(win)o(ch)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)19 b Ff(37)75 2327 y Fd(rl_char_is)o(_q)o(uot)o(ed)o(_p)t +Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(41)75 2373 y Fd(rl_cleanup)o(_a)o +(fte)o(r_)o(sig)o(nal)7 b Fe(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(37)75 2420 y +Fd(rl_clear_m)o(es)o(sag)o(e)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) +19 b Ff(31)75 2466 y Fd(rl_clear_p)o(en)o(din)o(g_)o(inp)o(ut)8 +b Fe(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)24 b Ff(32)75 2512 y Fd(rl_clear_s)o(ig)o(nal)o(s)6 +b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(38)1012 +149 y Fd(rl_complete)6 b Fe(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)24 b Ff(39)1012 196 y Fd(rl_complete)o(_i)o(nte)o(rn)o(al)s +Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)17 b Ff(39)1012 242 y Fd(rl_complete)o(r_)o +(quo)o(te)o(_ch)o(ar)o(act)o(ers)5 b Fe(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)20 b Ff(41)1012 288 y Fd(rl_complete)o(r_)o(wor)o +(d_)o(bre)o(ak)o(_ch)o(ara)o(ct)o(ers)8 b Fe(.)e(.)g(.)g(.)h(.)f(.)g(.) +25 b Ff(41)1012 335 y Fd(rl_completi)o(on)o(_ap)o(pe)o(nd_)o(ch)o(ara)o +(cte)o(r)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19 +b Ff(42)1012 381 y Fd(rl_completi)o(on)o(_di)o(sp)o(lay)o(_m)o(atc)o +(hes)o(_h)o(ook)8 b Fe(.)e(.)g(.)g(.)h(.)f(.)g(.)25 b +Ff(43)1012 427 y Fd(rl_completi)o(on)o(_en)o(tr)o(y_f)o(un)o(cti)o(on)s +Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)17 b Ff(39,)c(40)1012 +474 y Fd(rl_completi)o(on)o(_ma)o(tc)o(hes)8 b Fe(.)f(.)f(.)g(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25 +b Ff(40)1012 520 y Fd(rl_completi)o(on)o(_qu)o(er)o(y_i)o(te)o(ms)9 +b Fe(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) +23 b Ff(41)1012 566 y Fd(rl_completi)o(on)o(_ty)o(pe)t +Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(42)1012 613 y +Fd(rl_copy_key)o(ma)o(p)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)21 b Ff(26)1012 659 y Fd(rl_copy_tex)o(t)6 b Fe(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(31)1012 705 y +Fd(rl_crlf)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)17 b Ff(30)1012 752 y Fd(rl_delete_t)o(ex)o(t)8 +b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b +Ff(31)1012 798 y Fd(rl_deprep_t)o(er)o(m_f)o(un)o(cti)o(on)7 +b Fe(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)24 b Ff(24)1012 844 y Fd(rl_deprep_t)o(er)o(min)o(al)t +Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(33)1012 891 y +Fd(rl_ding)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)17 b Ff(33)1012 937 y Fd(rl_director)o(y_)o +(com)o(pl)o(eti)o(on)o(_ho)o(ok)7 b Fe(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)g(.)h(.)20 b Ff(43)1012 983 y Fd(rl_discard_)o(ke)o(yma) +o(p)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Ff(27)1012 +1030 y Fd(rl_dispatch)o(in)o(g)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)21 b Ff(22)1012 1076 y Fd(rl_display_)o(ma)o(tch)o(_l)o +(ist)8 b Fe(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)25 b Ff(33)1012 1122 y Fd(rl_do_undo)8 +b Fe(.)e(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24 +b Ff(30)1012 1169 y Fd(rl_done)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b Ff(22)1012 +1215 y Fd(rl_editing_)o(mo)o(de)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)21 b Ff(26)1012 1261 y Fd(rl_end)5 b Fe(.)t(.)h(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 +b Ff(22)1012 1308 y Fd(rl_end_undo)o(_g)o(rou)o(p)6 b +Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)19 b Ff(29)1012 1354 +y Fd(rl_erase_em)o(pt)o(y_l)o(in)o(e)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 +b Ff(22)1012 1400 y Fd(rl_event_ho)o(ok)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(23)1012 1447 y Fd(rl_execute_)o(ne)o +(xt)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 +b Ff(32)1012 1493 y Fd(rl_executin)o(g_)o(key)o(ma)o(p)t +Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Ff(24)1012 1539 y Fd(rl_executin)o(g_) +o(mac)o(ro)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(24)1012 +1586 y Fd(rl_expand_p)o(ro)o(mpt)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)20 b Ff(31)1012 1632 y Fd(rl_explicit)o(_a)o(rg)7 +b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(25)1012 +1678 y Fd(rl_extend_l)o(in)o(e_b)o(uf)o(fer)8 b Fe(.)f(.)f(.)g(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25 +b Ff(33)1012 1725 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(des)o +(ire)o(d)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19 +b Ff(42)1012 1771 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(fun)o +(cti)o(on)t Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 +b Ff(40)1012 1817 y Fd(rl_filename)o(_d)o(equ)o(ot)o(ing)o(_f)o(unc)o +(tio)o(n)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19 +b Ff(41)1012 1864 y Fd(rl_filename)o(_q)o(uot)o(e_)o(cha)o(ra)o(cte)o +(rs)7 b Fe(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20 +b Ff(42)1012 1910 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_d)o(es)o(ire)o +(d)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21 +b Ff(42)1012 1956 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_f)o(un)o(cti)o +(on)7 b Fe(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20 +b Ff(41)1012 2003 y Fd(rl_forced_u)o(pd)o(ate)o(_d)o(isp)o(la)o(y)7 +b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)23 b Ff(30)1012 2049 y Fd(rl_free_lin)o(e_)o(sta)o(te)t +Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(37)1012 2095 +y Fd(rl_free_und)o(o_)o(lis)o(t)6 b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +19 b Ff(30)1012 2142 y Fd(rl_function)o(_d)o(ump)o(er)t +Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(29)1012 2188 +y Fd(rl_function)o(_o)o(f_k)o(ey)o(seq)8 b Fe(.)f(.)f(.)g(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25 +b Ff(28)1012 2234 y Fd(rl_funmap_n)o(am)o(es)7 b Fe(.)s(.)f(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)21 b Ff(29)1012 2281 y Fd(rl_generic_)o(bi)o(nd)7 +b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(28)1012 +2327 y Fd(rl_get_keym)o(ap)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)22 b Ff(27)1012 2373 y Fd(rl_get_keym)o(ap)o(_by)o(_n)o +(ame)8 b Fe(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)25 b Ff(27)1012 2420 y Fd(rl_get_keym)o(ap)o +(_na)o(me)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(27)1012 +2466 y Fd(rl_get_scre)o(en)o(_si)o(ze)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g +(.)19 b Ff(38)1012 2512 y Fd(rl_getc)t Fe(.)t(.)6 b(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)17 b +Ff(32)p eop +%%Page: 57 59 +57 58 bop 75 -58 a Fu(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187 +b(57)75 149 y Fd(rl_getc_fu)o(nc)o(tio)o(n)6 b Fe(.)t(.)g(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)g(.)h(.)19 b Ff(24)75 195 y Fd(rl_gnu_rea)o(dl)o(ine)o(_p)5 +b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(23)75 241 +y Fd(rl_ignore_)o(co)o(mpl)o(et)o(ion)o(_du)o(pl)o(ica)o(te)o(s)5 +b Fe(.)s(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)18 b Ff(42)75 +286 y Fd(rl_ignore_)o(so)o(me_)o(co)o(mpl)o(eti)o(on)o(s_f)o(un)o(cti)o +(on)7 b Fe(.)g(.)f(.)g(.)g(.)g(.)24 b Ff(43)75 332 y +Fd(rl_inhibit)o(_c)o(omp)o(le)o(tio)o(n)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 +b Ff(43)75 378 y Fd(rl_initial)o(iz)o(e)9 b Fe(.)s(.)d(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)22 b Ff(33)75 424 y Fd(rl_insert_)o(co)o(mpl)o +(et)o(ion)o(s)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Ff(40)75 469 y Fd(rl_insert_)o(te) +o(xt)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 +b Ff(31)75 515 y Fd(rl_instrea)o(m)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(23)75 561 y Fd(rl_invokin)o(g_)o +(key)o(se)o(qs)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(28)75 +606 y Fd(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)8 +b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21 +b Ff(29)75 652 y Fd(rl_kill_te)o(xt)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)22 b Ff(32)75 698 y Fd(rl_last_fu)o(nc)6 +b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22 +b Ff(23)75 743 y Fd(rl_library)o(_v)o(ers)o(io)o(n)5 +b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(23)75 789 y Fd(rl_line_bu)o(ff) +o(er)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 +b Ff(22)75 835 y Fd(rl_list_fu)o(nm)o(ap_)o(na)o(mes)s +Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(29)75 880 y Fd(rl_macro_b)o(in)o(d)9 +b Fe(.)s(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22 +b Ff(34)75 926 y Fd(rl_macro_d)o(um)o(per)6 b Fe(.)t(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)20 b Ff(34)75 972 y Fd(rl_make_ba)o(re)o(_ke)o(ym)o +(ap)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(26)75 1017 +y Fd(rl_make_ke)o(ym)o(ap)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)21 b Ff(26)75 1063 y Fd(rl_mark)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 +b Ff(22)75 1109 y Fd(rl_message)7 b Fe(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 b Ff(31)75 1154 y Fd(rl_modifyi)o(ng)6 +b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22 +b Ff(30)75 1200 y Fd(rl_named_f)o(un)o(cti)o(on)5 b Fe(.)s(.)i(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)19 b Ff(28)75 1246 y Fd(rl_num_cha)o(rs)o(_to)o(_r)o +(ead)s Fe(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)16 b Ff(22)75 1291 y Fd(rl_numeric)o(_a) +o(rg)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)21 +b Ff(26)75 1337 y Fd(rl_on_new_)o(li)o(ne)8 b Fe(.)s(.)e(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(30)75 1383 y Fd(rl_on_new_)o(li)o(ne_)o +(wi)o(th_)o(pro)o(mp)o(t)8 b Fe(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)g(.)h(.)f(.)21 b Ff(30)75 1428 y Fd(rl_outstre)o(am)6 +b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)22 +b Ff(23)75 1474 y Fd(rl_parse_a)o(nd)o(_bi)o(nd)5 b Fe(.)s(.)i(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)19 b Ff(28)75 1520 y Fd(rl_pending)o(_i)o(npu)o(t)6 +b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(22)75 +1565 y Fd(rl_point)s Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)16 b Ff(22)75 1611 y Fd(rl_possibl)o(e_)o +(com)o(pl)o(eti)o(ons)7 b Fe(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(40)75 1657 y +Fd(rl_pre_inp)o(ut)o(_ho)o(ok)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 +b Ff(23)75 1702 y Fd(rl_prep_te)o(rm)o(_fu)o(nc)o(tio)o(n)9 +b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)25 b Ff(24)75 1748 y Fd(rl_prep_te)o(rm)o(ina)o(l)6 +b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)19 b Ff(32)75 +1794 y Fd(rl_prompt)8 b Fe(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)24 b Ff(22)75 1840 y Fd(rl_push_ma)o(cr)o(o_i)o(np) +o(ut)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(32)75 1885 +y Fd(rl_read_in)o(it)o(_fi)o(le)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +19 b Ff(28)75 1931 y Fd(rl_read_ke)o(y)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(32)75 1977 y +Fd(rl_readlin)o(e_)o(nam)o(e)6 b Fe(.)t(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) +19 b Ff(23)75 2022 y Fd(rl_readlin)o(e_)o(sta)o(te)5 +b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 b Ff(24)75 2068 +y Fd(rl_redispl)o(ay)6 b Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)22 b Ff(30)75 2114 y Fd(rl_redispl)o(ay)o(_fu)o(nc)o(tio)o(n)9 +b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)25 b Ff(24)75 2159 y Fd(rl_reset_a)o(ft)o(er_)o(si)o +(gna)o(l)9 b Fe(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Ff(38)75 2205 y Fd(rl_reset_l)o(in)o +(e_s)o(ta)o(te)t Fe(.)s(.)6 b(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)17 b Ff(30)75 +2251 y Fd(rl_reset_t)o(er)o(min)o(al)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)19 b Ff(33)75 2296 y Fd(rl_resize_)o(te)o(rmi)o(na)o(l)5 +b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)18 b Ff(38)75 2342 y +Fd(rl_restore)o(_p)o(rom)o(pt)5 b Fe(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 +b Ff(31)75 2388 y Fd(rl_save_pr)o(om)o(pt)8 b Fe(.)s(.)e(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)21 b Ff(31)75 2433 y Fd(rl_set_key)7 +b Fe(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 +b Ff(28)75 2479 y Fd(rl_set_key)o(bo)o(ard)o(_i)o(npu)o(t_t)o(im)o(eou) +o(t)6 b Fe(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19 +b Ff(32)1012 149 y Fd(rl_set_keym)o(ap)8 b Fe(.)s(.)e(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)22 b Ff(27)1012 195 y Fd(rl_set_pare)o(n_)o +(bli)o(nk)o(_ti)o(me)o(out)7 b Fe(.)t(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)22 b Ff(34)1012 241 y Fd(rl_set_prom)o(pt)8 +b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 +b Ff(31)1012 287 y Fd(rl_set_scre)o(en)o(_si)o(ze)t Fe(.)t(.)6 +b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)g(.)19 b Ff(38)1012 334 y Fd(rl_set_sign)o(al)o(s)8 +b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)21 b +Ff(38)1012 380 y Fd(rl_show_cha)o(r)6 b Fe(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)23 b Ff(31)1012 426 y Fd(rl_special_)o(pr)o +(efi)o(xe)o(s)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)18 b Ff(42)1012 +472 y Fd(rl_startup_)o(ho)o(ok)7 b Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)21 b Ff(23)1012 518 y Fd(rl_stuff_ch)o(ar)8 b +Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 +b Ff(32)1012 564 y Fd(rl_terminal)o(_n)o(ame)6 b Fe(.)s(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)20 b Ff(23)1012 610 y Fd(rl_tty_set_)o(de)o(fau)o(lt)o +(_bi)o(nd)o(ing)o(s)8 b Fe(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)21 b Ff(33)1012 656 y Fd(rl_unbind_c)o(om)o(man)o(d_)o +(in_)o(ma)o(p)7 b Fe(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)23 b Ff(28)1012 702 y Fd(rl_unbind_f)o(un)o(cti)o +(on)o(_in)o(_m)o(ap)9 b Fe(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)g(.)23 b Ff(28)1012 748 y Fd(rl_unbind_k)o(ey)8 +b Fe(.)s(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)22 +b Ff(27)1012 794 y Fd(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)s +Fe(.)t(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.) +g(.)g(.)g(.)h(.)f(.)g(.)17 b Ff(27)1012 840 y Fd(rl_username)o(_c)o +(omp)o(le)o(tio)o(n_)o(fun)o(cti)o(on)t Fe(.)s(.)7 b(.)f(.)g(.)g(.)g(.) +g(.)h(.)f(.)g(.)18 b Ff(40)1012 886 y Fd(rl_variable)o(_b)o(ind)6 +b Fe(.)s(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Ff(34)1012 +932 y Fd(rl_variable)o(_d)o(ump)o(er)t Fe(.)t(.)6 b(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) +19 b Ff(34)1012 1063 y Fs(S)1012 1125 y Fd(self-insert)9 +b(\(a,)j(b,)g(A,)g(1,)g(!,)g(...)o(\))6 b Fe(.)g(.)g(.)g(.)g(.)g(.)g(.) +h(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1171 y Fd(set-mark)10 +b(\(C-@\))g Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 +b Ff(17)1012 1217 y(sho)o(w-all-if-am)o(bigu)q(ous)14 +b Fe(.)6 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)23 b Ff(6)1012 1263 +y Fd(start-kbd-m)o(ac)o(ro)9 b(\(C-x)j(\(\))c Fe(.)d(.)i(.)f(.)g(.)g(.) +g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)22 +b Ff(16)1012 1386 y Fs(T)1012 1448 y Fd(tab-insert)9 +b(\(M-)1281 1446 y Fn(h)p 1292 1420 74 2 v 1292 1448 +a Fm(T)m(AB)p 1292 1456 V 1364 1446 a Fn(i)1379 1448 +y Fd(\))e Fe(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Ff(14)1012 1494 +y Fd(tilde-expan)o(d)10 b(\(M-~\))f Fe(.)s(.)e(.)f(.)g(.)g(.)g(.)g(.)g +(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)22 +b Ff(17)1012 1540 y Fd(transpose-c)o(ha)o(rs)9 b(\(C-t\))d +Fe(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1586 y Fd(transpose-w)o(or)o(ds)9 +b(\(M-t\))d Fe(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(14)1012 1717 y +Fs(U)1012 1779 y Fd(undo)12 b(\(C-_)f(or)h(C-x)g(C-u\))c +Fe(.)t(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)21 b Ff(17)1012 1825 y Fd(universal-a)o(rg)o +(ume)o(nt)9 b(\(\))d Fe(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Ff(16)1012 +1871 y Fd(unix-line-d)o(is)o(car)o(d)10 b(\(C-u\))5 b +Fe(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g +(.)h(.)f(.)18 b Ff(15)1012 1917 y Fd(unix-word-r)o(ub)o(out)9 +b(\(C-w\))d Fe(.)t(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Ff(15)1012 1963 y Fd(upcase-word)9 +b(\(M-u\))e Fe(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h +(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)23 b Ff(14)1012 +2094 y Fs(V)1012 2156 y Ff(visible-stats)14 b Fe(.)6 +b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24 +b Ff(6)1012 2279 y Fs(Y)1012 2341 y Fd(yank)12 b(\(C-y\))5 +b Fe(.)t(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.) +f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)19 +b Ff(15)1012 2387 y Fd(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))c +Fe(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23 +b Ff(13)1012 2433 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))d +Fe(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f +(.)g(.)g(.)g(.)g(.)h(.)20 b Ff(13)1012 2479 y Fd(yank-pop)10 +b(\(M-y\))g Fe(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g +(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 +b Ff(15)p eop +%%Page: 58 60 +58 59 bop 75 -58 a Fu(58)1299 b(GNU)15 b(Readline)h(Library)p +eop +%%Page: -1 61 +-1 60 bop 1862 -58 a Fu(i)75 149 y Fq(T)-7 b(able)27 +b(of)f(Con)n(ten)n(ts)75 320 y Fs(1)67 b(Command)22 b(Line)i(Editing)d +Fa(.)10 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h +(.)f(.)g(.)g(.)42 b Fs(1)224 389 y Fu(1.1)j(In)o(tro)q(duction)16 +b(to)f(Line)h(Editing)e Fl(.)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 Fu(1)224 444 y(1.2)45 b(Readline)16 b(In)o(teraction)8 +b Fl(.)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 Fu(1)374 499 y(1.2.1)44 b(Readline)16 +b(Bare)f(Essen)o(tials)f Fl(.)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 Fu(1)374 553 y(1.2.2)44 b(Readline)16 b(Mo)o(v)o(emen)o(t)e(Commands) +7 b Fl(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)21 b Fu(2)374 608 y(1.2.3)44 b(Readline)16 b(Killing)i(Commands) +11 b Fl(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)25 b Fu(2)374 663 y(1.2.4)44 b(Readline)16 +b(Argumen)o(ts)c Fl(.)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 Fu(3)374 718 y(1.2.5)44 b(Searc)o(hing)16 b(for)e(Commands)h(in)h +(the)f(History)e Fl(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27 +b Fu(3)224 773 y(1.3)45 b(Readline)16 b(Init)h(File)e +Fl(.)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 Fu(4)374 827 y(1.3.1)44 b(Readline)16 +b(Init)g(File)h(Syn)o(tax)7 b Fl(.)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 Fu(4)374 882 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)5 +b Fl(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)19 b Fu(8)374 937 y(1.3.3)44 b(Sample)16 +b(Init)g(File)11 b Fl(.)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 Fu(9)224 992 y(1.4)45 b(Bindable)17 b(Readline)g(Commands) +6 b Fl(.)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 Fu(12)374 +1046 y(1.4.1)44 b(Commands)14 b(F)l(or)h(Mo)o(ving)e +Fl(.)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 Fu(12)374 1101 y(1.4.2)44 +b(Commands)14 b(F)l(or)h(Manipulating)i(The)e(History)9 +b Fl(.)e(.)h(.)f(.)h(.)f(.)h(.)24 b Fu(12)374 1156 y(1.4.3)44 +b(Commands)14 b(F)l(or)h(Changing)h(T)l(ext)e Fl(.)8 +b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30 +b Fu(13)374 1211 y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)9 +b Fl(.)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 Fu(14)374 +1266 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)c +Fl(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)27 +b Fu(15)374 1320 y(1.4.6)44 b(Letting)15 b(Readline)i(T)o(yp)q(e)e(F)l +(or)g(Y)l(ou)10 b Fl(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)25 b Fu(16)374 1375 y(1.4.7)44 b(Keyb)q(oard)15 +b(Macros)6 b Fl(.)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 Fu(16)374 1430 y(1.4.8)44 b(Some)15 b(Miscellaneous)i(Commands)7 +b Fl(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) +22 b Fu(17)224 1485 y(1.5)45 b(Readline)16 b(vi)g(Mo)q(de)e +Fl(.)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 Fu(18)75 1606 y Fs(2)67 b(Programming)23 +b(with)g(GNU)f(Readline)12 b Fa(.)f(.)g(.)f(.)g(.)g(.)g(.)h(.)f(.)35 +b Fs(19)224 1675 y Fu(2.1)45 b(Basic)16 b(Beha)o(vior)8 +b Fl(.)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(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)f(.)23 b Fu(19)224 1729 y(2.2)45 +b(Custom)14 b(F)l(unctions)7 b Fl(.)i(.)f(.)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(.)h(.)g(.)f(.)h(.)f(.)h(.)22 b Fu(20)374 +1784 y(2.2.1)44 b(Readline)16 b(T)o(yp)q(edefs)9 b Fl(.)g(.)e(.)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(.)24 b Fu(20)374 1839 y(2.2.2)44 +b(W)l(riting)16 b(a)e(New)i(F)l(unction)6 b Fl(.)i(.)f(.)h(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) +21 b Fu(21)224 1894 y(2.3)45 b(Readline)16 b(V)l(ariables)g +Fl(.)8 b(.)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(.)h(.)f(.)h(.)g +(.)f(.)h(.)29 b Fu(22)224 1949 y(2.4)45 b(Readline)16 +b(Con)o(v)o(enience)h(F)l(unctions)7 b Fl(.)i(.)e(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) +23 b Fu(26)374 2003 y(2.4.1)44 b(Naming)15 b(a)g(F)l(unction)e +Fl(.)7 b(.)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(.)27 b Fu(26)374 +2058 y(2.4.2)44 b(Selecting)17 b(a)e(Keymap)6 b Fl(.)h(.)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(.)21 b Fu(26)374 2113 y(2.4.3)44 b(Binding)17 +b(Keys)5 b Fl(.)j(.)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(.)20 b Fu(27)374 2168 y(2.4.4)44 b(Asso)q(ciating)16 +b(F)l(unction)g(Names)f(and)g(Bindings)8 b Fl(.)h(.)f(.)f(.)h(.)f(.)h +(.)23 b Fu(28)374 2222 y(2.4.5)44 b(Allo)o(wing)16 b(Undoing)f +Fl(.)8 b(.)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(.)h(.)29 b +Fu(29)374 2277 y(2.4.6)44 b(Redispla)o(y)10 b Fl(.)e(.)g(.)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(.)h(.)f(.)h(.)f(.)26 +b Fu(30)374 2332 y(2.4.7)44 b(Mo)q(difying)16 b(T)l(ext)7 +b Fl(.)g(.)g(.)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(.)22 +b Fu(31)374 2387 y(2.4.8)44 b(Character)14 b(Input)c +Fl(.)f(.)e(.)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(.)h(.)25 +b Fu(32)374 2442 y(2.4.9)44 b(T)l(erminal)16 b(Managemen)o(t)11 +b Fl(.)c(.)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 Fu(32)374 2496 y(2.4.10)43 +b(Utilit)o(y)17 b(F)l(unctions)c Fl(.)7 b(.)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(.)28 b Fu(33)374 2551 y(2.4.11)43 b(Miscellaneous)18 +b(F)l(unctions)6 b Fl(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Fu(34)374 +2606 y(2.4.12)43 b(Alternate)16 b(In)o(terface)f Fl(.)7 +b(.)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(.)30 b Fu(35)374 2661 +y(2.4.13)43 b(A)16 b(Readline)g(Example)9 b Fl(.)f(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) +h(.)f(.)24 b Fu(35)p eop +%%Page: -2 62 +-2 61 bop 75 -58 a Fu(ii)1321 b(GNU)15 b(Readline)h(Library)224 +42 y(2.5)45 b(Readline)16 b(Signal)h(Handling)12 b Fl(.)c(.)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(.)27 b Fu(36)224 96 +y(2.6)45 b(Custom)14 b(Completers)f Fl(.)8 b(.)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(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)28 b Fu(38)374 +151 y(2.6.1)44 b(Ho)o(w)14 b(Completing)i(W)l(orks)10 +b Fl(.)d(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)f(.)h(.)f(.)h(.)f(.)25 b Fu(38)374 206 y(2.6.2)44 +b(Completion)16 b(F)l(unctions)6 b Fl(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.) +21 b Fu(39)374 261 y(2.6.3)44 b(Completion)16 b(V)l(ariables)c +Fl(.)c(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)27 b Fu(40)374 315 +y(2.6.4)44 b(A)15 b(Short)g(Completion)h(Example)5 b +Fl(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)20 b Fu(43)75 437 y Fs(Concept)i(Index)10 b Fa(.)i(.)e(.)g(.)g +(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.) +g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)33 b Fs(53)75 572 +y(F)-6 b(unction)25 b(and)d(V)-6 b(ariable)24 b(Index)9 +b Fa(.)i(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.) +g(.)32 b Fs(55)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/readline-4.2/doc/rluserman.html b/readline-4.2/doc/rluserman.html new file mode 100644 index 0000000..76b05d3 --- /dev/null +++ b/readline-4.2/doc/rluserman.html @@ -0,0 +1,1608 @@ +<HTML> +<HEAD> +<!-- This HTML file has been created by texi2html 1.52 + from /usr/homes/chet/src/bash/readline-src/doc/rluserman.texinfo on 16 April 2001 --> + +<TITLE>GNU Readline Library</TITLE> +</HEAD> +<BODY> +<H1>GNU Readline Library User Interface</H1> +<H2>Edition 4.2, for <CODE>Readline Library</CODE> Version 4.2.</H2> +<H2>Apr 2001</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-2001 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> +<EM>first</EM>, 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>RET</KBD>. You do not have to be at the +end of the line to press <KBD>RET</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-<KBD>DEL</KBD></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-<KBD>DEL</KBD></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>, +which will delete the next ten characters on the input line. + +</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: <EM>incremental</EM> and <EM>non-incremental</EM>. + +</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. +A movement command will terminate the search, make the last line found +the current line, and begin editing. + +</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 @env{INPUTRC}. 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. +The syntax is simple: + + +<PRE> +set <VAR>variable</VAR> <VAR>value</VAR> +</PRE> + +Here, for example, 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> + +Variable names and values, where appropriate, are recognized without regard +to case. + +A great deal of run-time behavior is changeable with the following +variables. + +<A NAME="IDX9"></A> +<DL COMPACT> + +<DT><CODE>bell-style</CODE> +<DD> +<A NAME="IDX10"></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="IDX11"></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="IDX12"></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. +This variable must be set to an integer value greater than or equal to 0. +The default limit is <CODE>100</CODE>. + +<DT><CODE>convert-meta</CODE> +<DD> +<A NAME="IDX13"></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="IDX14"></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="IDX15"></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="IDX16"></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="IDX17"></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="IDX18"></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="IDX19"></A> +<A NAME="IDX20"></A> +If set to <SAMP>`on'</SAMP>, Readline will enable eight-bit input (it +will not clear the eighth bit in 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="IDX21"></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="IDX22"></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-move</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="IDX23"></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="IDX24"></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="IDX25"></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="IDX26"></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 on a line +in the init file the name of the key +you wish to bind the command to, a colon, and then the name of the +command. The name of the key +can be expressed in different ways, depending on what you find most +comfortable. + +In addition to command names, readline allows keys to be bound +to a string that is inserted when the key is pressed (a <VAR>macro</VAR>). + +<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: "> output" +</PRE> + +In the above example, <KBD>C-u</KBD> is bound to the function +<CODE>universal-argument</CODE>, +<KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</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>`> output'</SAMP> into the line). + +A number of symbolic character names are recognized while +processing this key binding syntax: +<VAR>DEL</VAR>, +<VAR>ESC</VAR>, +<VAR>ESCAPE</VAR>, +<VAR>LFD</VAR>, +<VAR>NEWLINE</VAR>, +<VAR>RET</VAR>, +<VAR>RETURN</VAR>, +<VAR>RUBOUT</VAR>, +<VAR>SPACE</VAR>, +<VAR>SPC</VAR>, +and +<VAR>TAB</VAR>. + +<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 again 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 ASCII code is the octal value <VAR>nnn</VAR> +(one to three digits) +<DT><CODE>\x<VAR>nnn</VAR></CODE> +<DD> +the character whose ASCII 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>`<KBD>C-x</KBD> \'</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 +a particular value. +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. +For example, the following directive reads from <TT>`/etc/inputrc'</TT>: + +<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 <VAR>inputrc</VAR> 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. +Command names without an accompanying key sequence are unbound by default. + +</P> +<P> +In the following descriptions, <EM>point</EM> refers to the current cursor +position, and <EM>mark</EM> 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 <EM>region</EM>. + +</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="IDX27"></A> +Move to the start of the current line. + +<DT><CODE>end-of-line (C-e)</CODE> +<DD> +<A NAME="IDX28"></A> +Move to the end of the line. + +<DT><CODE>forward-char (C-f)</CODE> +<DD> +<A NAME="IDX29"></A> +Move forward a character. + +<DT><CODE>backward-char (C-b)</CODE> +<DD> +<A NAME="IDX30"></A> +Move back a character. + +<DT><CODE>forward-word (M-f)</CODE> +<DD> +<A NAME="IDX31"></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="IDX32"></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="IDX33"></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="IDX34"></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 or Return)</CODE> +<DD> +<A NAME="IDX35"></A> +Accept the line regardless of where the cursor is. +If this line is +non-empty, it may be added to the history list for future recall with +<CODE>add_history()</CODE>. +If this line is a modified history line, the history line is restored +to its original state. + +<DT><CODE>previous-history (C-p)</CODE> +<DD> +<A NAME="IDX36"></A> +Move `back' through the history list, fetching the previous command. + +<DT><CODE>next-history (C-n)</CODE> +<DD> +<A NAME="IDX37"></A> +Move `forward' through the history list, fetching the next command. + +<DT><CODE>beginning-of-history (M-<)</CODE> +<DD> +<A NAME="IDX38"></A> +Move to the first line in the history. + +<DT><CODE>end-of-history (M->)</CODE> +<DD> +<A NAME="IDX39"></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="IDX40"></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="IDX41"></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="IDX42"></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="IDX43"></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="IDX44"></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="IDX45"></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="IDX46"></A> +Insert the first argument to the previous command (usually +the second word on the previous line) at point. +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-. or M-_)</CODE> +<DD> +<A NAME="IDX47"></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="IDX48"></A> +Delete the character at point. If point 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 EOF. + +<DT><CODE>backward-delete-char (Rubout)</CODE> +<DD> +<A NAME="IDX49"></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="IDX50"></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 or C-v)</CODE> +<DD> +<A NAME="IDX51"></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-<KBD>TAB</KBD>)</CODE> +<DD> +<A NAME="IDX52"></A> +Insert a tab character. + +<DT><CODE>self-insert (a, b, A, 1, !, ...)</CODE> +<DD> +<A NAME="IDX53"></A> +Insert yourself. + +<DT><CODE>transpose-chars (C-t)</CODE> +<DD> +<A NAME="IDX54"></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="IDX55"></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="IDX56"></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="IDX57"></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="IDX58"></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="IDX59"></A> +Kill the text from point to the end of the line. + +<DT><CODE>backward-kill-line (C-x Rubout)</CODE> +<DD> +<A NAME="IDX60"></A> +Kill backward to the beginning of the line. + +<DT><CODE>unix-line-discard (C-u)</CODE> +<DD> +<A NAME="IDX61"></A> +Kill backward from the cursor to the beginning of the current line. + +<DT><CODE>kill-whole-line ()</CODE> +<DD> +<A NAME="IDX62"></A> +Kill all characters on the current line, no matter where point is. +By default, this is unbound. + +<DT><CODE>kill-word (M-d)</CODE> +<DD> +<A NAME="IDX63"></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-<KBD>DEL</KBD>)</CODE> +<DD> +<A NAME="IDX64"></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="IDX65"></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="IDX66"></A> +Delete all spaces and tabs around point. By default, this is unbound. + +<DT><CODE>kill-region ()</CODE> +<DD> +<A NAME="IDX67"></A> +Kill the text in the current region. +By default, this command is unbound. + +<DT><CODE>copy-region-as-kill ()</CODE> +<DD> +<A NAME="IDX68"></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="IDX69"></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="IDX70"></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="IDX71"></A> +Yank the top of the kill ring into the buffer at point. + +<DT><CODE>yank-pop (M-y)</CODE> +<DD> +<A NAME="IDX72"></A> +Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>. +</DL> + + + +<H3><A NAME="SEC18" HREF="rluserman.html#TOC18">Specifying Numeric Arguments</A></H3> +<DL COMPACT> + +<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, ... <KBD>M--</KBD>)</CODE> +<DD> +<A NAME="IDX73"></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="IDX74"></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 (<KBD>TAB</KBD>)</CODE> +<DD> +<A NAME="IDX75"></A> +Attempt to perform completion on the text before point. +The actual completion performed is application-specific. +The default is filename completion. + +<DT><CODE>possible-completions (M-?)</CODE> +<DD> +<A NAME="IDX76"></A> +List the possible completions of the text before point. + +<DT><CODE>insert-completions (M-*)</CODE> +<DD> +<A NAME="IDX77"></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="IDX78"></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 +(subject to the setting of <CODE>bell-style</CODE>) +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 <KBD>TAB</KBD>, but is unbound +by default. + +<DT><CODE>delete-char-or-list ()</CODE> +<DD> +<A NAME="IDX79"></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="IDX80"></A> +Begin saving the characters typed into the current keyboard macro. + +<DT><CODE>end-kbd-macro (C-x ))</CODE> +<DD> +<A NAME="IDX81"></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="IDX82"></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="IDX83"></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="IDX84"></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="IDX85"></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 (<KBD>ESC</KBD>)</CODE> +<DD> +<A NAME="IDX86"></A> +Metafy the next character typed. This is for keyboards +without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing +<KBD>M-f</KBD>. + +<DT><CODE>undo (C-_ or C-x C-u)</CODE> +<DD> +<A NAME="IDX87"></A> +Incremental undo, separately remembered for each line. + +<DT><CODE>revert-line (M-r)</CODE> +<DD> +<A NAME="IDX88"></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="IDX89"></A> +Perform tilde expansion on the current word. + +<DT><CODE>set-mark (C-@)</CODE> +<DD> +<A NAME="IDX90"></A> +Set the mark to the 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="IDX91"></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="IDX92"></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="IDX93"></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="IDX94"></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="IDX95"></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="IDX96"></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="IDX97"></A> +Print all of the Readline key sequences bound to macros and the +strings they output. 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 <KBD>M-C-j</KBD> (bound to emacs-editing-mode +when in <CODE>vi</CODE> mode and to vi-editing-mode in <CODE>emacs</CODE> 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 16 April 2001 using the +<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A> +translator version 1.52.</P> +</BODY> +</HTML> diff --git a/readline-4.2/doc/rluserman.ps b/readline-4.2/doc/rluserman.ps new file mode 100644 index 0000000..705766a --- /dev/null +++ b/readline-4.2/doc/rluserman.ps @@ -0,0 +1,1932 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.86 Copyright 1999 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 2001.04.16:1105 +%%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/IEn 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 IEn 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/IEn 256 array N 2 string 0 1 255{IEn 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 cmbxti10 14.4 1 +/Fa 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46 +D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fb cmbx12 13.14 46 +/Fb 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: Fc cmsl10 10.95 39 +/Fc 39 122 df<EAFFF0A20C027E8A0F>45 D<1408140C141C143CA2147C147E149EA2EB +011EA21302801304A21308A20110138014071320A2EB7FFF90384007C0EB8003A2EA0100 +A21202EC01E01206001F130339FF801FFE1F207F9F22>65 D<0007B5FC3900F803C09038 +7801E0EC00F04913F8A515F03801E001EC03E015C0EC0F809038FFFE009038E00F803903 +C003C0EC01E015F0A21400A2485A1401A215E01403EC07C0390F000F80EC3E00B512F01D +1F7E9E20>I<ECFE02903807018690381C004E0170133E49131E4848131C4848130C1207 +48C7FC5A121E003E1408003C1400127CA45AA4127815101520A27E1540001C14806CEB01 +006C13023803800C3800E030EB3FC01F217C9F21>I<0007B57E3900F801E09038780070 +81497F151E150E150FA348481480A6484814005DA3151E153E4848133C5DA25D4A5A4A5A +260F000FC7FC143CB512F0211F7E9E23>I<0007B512FC3900F8007C0178131C150C5B15 +04A414043901E00800A31438EBFFF8EBE0383803C010A4EC00081510485AA21520A21560 +15C0380F00011407B612801E1F7E9E1F>I<0007B512F83900F800780178133815185B15 +08A53901E00800A314181438EBFFF83803C0301410A491C7FC485AA648C8FC7FEAFFFC1D +1F7E9E1E>I<3807FF803800F8001378A25BA6485AA6485AA6485AA648C7FC7FEAFFF011 +1F7E9E10>73 D<3A07FF803FE03A00F8001F000178130C5D4913205D5D4AC7FC14021408 +48485A5C146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E141F48487E811407 +81140381380F00016D487E39FFF00FFE231F7E9E23>75 D<3807FFE0D800FCC7FC1378A2 +5BA6485AA6485AA41580EC0100EA0780A25C14021406140E380F001E147CB512FC191F7E +9E1C>I<D807F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83C0D8 +01035BEB01E0A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A2140100 +0C5C001E1300B47E221F7E9E22>78 D<EB01FCEB0E0790383801C090387000E0484813F0 +48481378485A153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01F0 +007C14E01403003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F801F +217C9F23>I<0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01 +E0EC03C0EC0F00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807FF +FE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00EB +FFF03803C03880141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078CC7 +EA01F020207E9E22>82 D<EB1F82EB7066EBC01E3801800EEA030048130C00061304120E +A3000F1300A27FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA200401338 +A3143000601370146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512F0 +383C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383FFF +E01C1F7A9E21>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A6485B +A600705BA25CA200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFFF0 +7FF81FF03B1F000FC007C0001E903907800380001FED01006C1502140F5EEC17C002135B +142301805C000713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C415 +F2EBC80015F4EA01F015F85B5D5B15605B000014402C207A9E2F>87 +D<EA07F8EA0C0CEA1E061307121C1200A313FFEA07C7EA1E07EA3C0E127800F01310A313 +1EEB2E2038784F40381F878014147D9317>97 D<1207123F120F7EA2120EA65A137CEA1D +83381E0180001C13C0EB00E05A14F0A5387001E0A214C013031480EB0700EAE80EEACC38 +EA83E014207B9F19>I<13FEEA0383380E0780121C0038130090C7FC12785AA45AA37E5B +EA70026C5AEA1C18EA07E011147D9314>I<13F8EA070EEA0E07381C0380123812781270 +12F0B5FC00F0C7FCA25AA46C5AEA7002EA3004EA1C18EA07E011147D9314>101 +D<EB07C0EB1C60EB30F01360EBE0E0EBC0001201A5485AEA3FFCEA0380A448C7FCA6120E +A65A121EEAFFC014207F9F0E>I<140EEB3E11EBE1A33801C1C2380381E0EA0780130112 +0FA3380703C01480EB8700EA04FC48C7FCA21218121CEA0FFF14C014E0381800F0481330 +5A5AA3006013606C13C0381C0700EA07FC181F809417>I<EA01C0EA03E0A213C0EA0180 +C7FCA6EA0380121F12071203A2EA0700A6120EA65A121EEAFF800B1F7F9E0C>105 +D<13E0120712011200A2485AA6485AEB81FCEB80F014C0EB81801400EA07045B13181338 +137C131C120E7FA2130F7F1480EA1C03381E07C038FF8FF016207E9F18>107 +D<13E0120712011200A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B207F9F0C +>I<390387C07C391F9861863907A072073903C03403EB80380007EB7807EB0070A5000E +EBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80381F90E0EA07 +A03803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014147E9319 +>I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A214C0130300F0 +138038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807EC383801F01C6C487E14 +0F48487E1580A53903800F00A2140E141E141C5C38074070EB61C0011FC7FC90C8FCA312 +0EA4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E01E0123C003813C01278 +12F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA0007A3130EA4131EEBFF +C0131D7D9318>I<EA038E381FB380EA07C71203EB8300EA078090C7FCA5120EA65A121E +EAFFC011147E9312>I<EA01F9EA0607EA080312181301EA3802EA3C00121F13F0EA07FC +EA01FEEA001FEA40071303A212601306EAF004EAC818EA87E010147F9312>I<1380EA01 +00A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C9B12>I< +381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E381F9F801114 +7B9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12075BA25BEA03 +9013A013E05B5B120190C7FC15147C9318>I<381FF0FF3803C0780001137014403800E0 +C0EBE180EB73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03 +E038FE07FC18147F9318>120 D<390FF83F803901E00E00EBC00C140813E000005B1430 +14205C13705CA20171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000 +F1C8FC12E61278191D809318>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fd cmti10 10.95 8 +/Fd 8 117 df<EC3FE0ECE010903801803801031378A290380700301500A3130EA390B5 +12E0EB0E0090381C01C0A4EC03801338A3EC0700A2137801701310EC0E20A313609038E0 +0640EC038091C7FC5BA21201EA3180127948C8FC1262123C1D29829F1A>12 +D<127012F8A212F012E005057B840E>46 D<EB3C60EBE2703801C1E0EA0380EA07005A38 +0E01C0121EA3383C0380A4EB0700A2EA1C0F1317EA0C2EEA03CEEA000EA25BA21230EA78 +38485AEA60E0EA3F80141D7E9315>103 D<13C0EA01E0A213C0C7FCA7120E12131223EA +4380EA4700A21287120EA35AA3EA38401380A21270EA31001232121C0B1F7C9E0E>105 +D<381C0F80382630C0384740601380EB0070A2008E13E0120EA3381C01C0A3EB03840038 +1388A2EB0708EB031000701330383001C016147C931A>110 D<EA1C1EEA266138278380 +EA47871307EB0300008EC7FC120EA35AA45AA45A123011147C9313>114 +D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0EA07F8EA03FCEA003E130E1270 +EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>I<EA018013C0EA0380A4EA0700A2 +EAFFF0EA0700120EA45AA45AA31320EA7040A21380A2EA3100121E0C1C7C9B0F>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fe cmr8 8 26 +/Fe 26 118 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<EAFFC0001CC7FCAD1420A31460A2144014C0 +1303B5FC13177F9616>76 D<EAFFFE381C0380EB00C014601470A4146014C0EB0380381F +FE00001CC7FCAAB47E14177F9618>80 D<EAFFFC381C0380EB00C014E01470A414E014C0 +EB0380381FFE00381C0780EB01C0EB00E0A514E1A2147238FF803C18177F961A>82 +D<EA0FC4EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FCEA001C +130E13061280A3EAC004EAE008EAD810EA87E00F177E9614>I<387FFFF8386038180040 +1308A200801304A300001300AF3803FF8016177F9619>I<12FCA212C0B3AB12FCA20621 +7D980A>91 D<EA3FC0EA70601330EA20381200EA03F8EA1E3812301270EAE039A21379EA +70FFEA1F1E100E7F8D12>97 D<EA07F0EA18381230EA7010EA600012E0A41260EA700812 +30EA1830EA07C00D0E7F8D10>99 D<EA0FC0EA1860EA3030EA7038EAE018EAFFF8EAE000 +A31260EA7008EA3010EA1830EA07C00D0E7F8D10>101 D<1203EA0780A2EA0300C7FCA5 +EA1F801203AF1243EAE30012E7127C091D82960B>106 D<12F81238A8133E1338133013 +4013801239EA3FC0EA39E0123813F01378133CA2EAFE7F10177F9613>I<EAF8F8EA3B1C +EA3C0E1238AA38FE3F80110E7F8D14>110 D<EAF9F0EA3E1CEA380613077F1480A41400 +5B130EEA3E1CEA39F00038C7FCA512FE11147F8D14>112 D<EAF9E0EA3A70123CEA3820 +1300A9B4FC0C0E7F8D0E>114 D<EA1F40EA60C0EAC040A2EAE000B4FCEA7F80EA1FC0EA +01E0EA8060A212C0EAE0C0EA9F000B0E7F8D0E>I<1208A31218A21238EAFFC0EA3800A7 +1340A4EA1C80EA0F000A147F930E>I<EAF83EEA380EAA131EEA1C2E3807CF80110E7F8D +14>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Ff cmsy9 9 2 +/Ff 2 106 df<13801201EA0300A31206A25AA35AA35AA25AA35AA21260A37EA27EA37E +A37EA27EA3EA0180120009267D9B0F>104 D<12C0A21260A37EA27EA37EA37EA27EA3EA +0180A2EA0300A31206A25AA35AA35AA25AA35AA209267E9B0F>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fg cmsltt10 10.95 29 +/Fg 29 122 df<1206120FEA1F80120FA21203EA0700A25A120E123C127C12F01260090E +769B18>39 D<387FFFC0B512E0A26C13C013047C8F18>45 D<133E13FF000313803807C3 +C0EA0F01000E13E0EA1C00123C003813F014705AA34813E0A4EB01C0A2130300F01380EA +7007EB0F00EA781E6C5AEA1FF85BEA07C0141C7C9B18>48 D<13181338A2137813F81203 +120F137012041200A413E0A6EA01C0A6EA7FFE12FF127F0F1C7B9B18>I<EB3E18EBFFB8 +4813F8EA07C1EB8078EA0E00121E001C137048133014005AA35AA614C0EA7001A2130338 +380780383C0F00EA1FFE6C5AEA03F0151C7C9B18>67 D<3807FFC014E014F03801C0F814 +78143C141CEA0380141EA2140EA33807001CA4143C1438120E147014F0EB01E0EB03C013 +07387FFF8038FFFE00EA7FF8171C7F9B18>I<0007B5FC5A7E3801C007A3140638038000 +A2EB818014C0A213FF481380A21303A2140090C7FC120E140C141CA4387FFFF8B5FC7E18 +1C7F9B18>I<EB1FF8EB3FFCEB1FF8EB01C0A4EB0380A6EB0700A6130EA2124012E06C5A +EAE03CEAFFF86C5AEA1FC0161C7C9B18>74 D<EA07FC487E6C5AEA01C0A4485AA648C7FC +A6120E14301470A4B512E0A3141C7E9B18>76 D<3907E01F80000FEB3FC0000714803903 +B02E00146EA214CE380730DC1331149CA21333141C000E5B13371336133E133C131848C6 +5AA638FE03F800FF7F00FE5B1A1C7F9B18>I<126012F0A37E1278A3127C123CA3123E12 +1EA3121F7EA313801207A313C01203A413E01201A313F0120013600C24789F18>92 +D<387FFFC0B512E0A26C13C013047E7F18>95 D<EA03FC48B4FC4813801303380601C012 +00A2137FEA07FF121FEA3F813878038012F012E0A21307EA701F387FFFF0EA3FFBEA0FE1 +14147D9318>97 D<127EA3120EA45A137CEA1DFF001F13801383381E01C0123CEB00E012 +38A4387801C0A2EB0380A2EB0F00EA7C1FEAFFFCEAEFF8EA63E0131C7C9B18>I<EB07E0 +A31300A4EB01C0EA01F1EA07FDEA0FFFEA1E0FEA3C0738780380127012E0A4EB0700A25B +5B6C5AEA787F383FFFC0381FEFE0380F87C0131C7C9B18>100 D<13F8EA07FE487E381F +0780EA3C03387801C0127012E0A2B5FCA2148000E0C7FCA213033870078038780F00EA3F +FE6C5AEA07F012147B9318>I<EB01F8EB07FC131FEB1E3CEB38181400A25B381FFFF05A +7E38007000A25BA6485AA6EA7FFE12FF127F161C7E9B18>I<EB1E1F90387FFF8090B5FC +3901E1E3003803C0E01380EA0700A3495AA238038780EA07FF49C7FCEA0E7890C8FCA26C +B47E4813E0487F383C007848133812705AA2147800705B387C03E0383FFFC0000F90C7FC +EA03FC191F809318>I<14C0EB01E013031301EB00C01400A4EBFFC0A31301A2EB0380A6 +EB0700A6130EA65BA2EA6038EAF078B45A5BEA3F8013277F9C18>106 +D<EA07E0120F12071200A4485AEBC7FEA3EBC1E0EBC3C038038780EB8F00139E13BC13FE +13EEEA07CF1387EB0780130314C01301387FC7F838FFE7FC387FC7F8171C7F9B18>I<EA +0FFCA3EA001CA45BA65BA65BA6B5128014C01480121C7D9B18>I<13FCEA03FF000F1380 +EA1F07383C03C0EA7801007013E0EAE000A4EB01C0A2EB0380EAF007EB0F00EA7C3EEA3F +FC6C5AEA07E013147C9318>111 D<EBF8C0EA03FDEA0FFFEA1F0FEA3C07387803801270 +12E0A4EB0700A25BA26C5AEA787FEA3FFEEA1FEEEA078EEA000EA35BA43801FF80A3121E +7C9318>113 D<381FE1F8EBE7FCEBEFFE3800FE1EEBFC0C3801F8005B5B5BA3485AA6EA +FFFC7F5B17147E9318>I<EBFE603807FFE05AEA1F01121C003813C0EA3C00001F1300EA +0FF8EA07FE3800FF801307383001C01270A238780380EA7C07B51200EAEFFEEA63F81314 +7D9318>I<387E07E0EAFE0FEA7E07EA0E00A2381C01C0A638380380A41307131F383FFF +E06C13F03807E3E014147D9318>117 D<38FF87F8138F1387383800E0EB01C0A3148013 +E3EA39F31233EB7700A212371376EA3666136EEA3C7CA2EA383815147C9318>119 +D<381FE3FC13E713E33803C3C000011380EBE700EA00EE13FC137C1338137813FCEA01DC +EA038E12071307120E38FF1FE0EB9FF0EB1FE016147E9318>I<380FF1FE381FF9FF380F +F1FE3803807013C0000113E0A213C114C0A23800E380A2EBE700A213E6136E136C137C13 +78A21370A25BA2485A12F3EAF780B4C7FC5A1278181E7F9318>I +E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fh cmcsc10 10.95 12 +/Fh 12 121 df<1318A2133CA3134EA213CF1387A238010380A2000313C0EA0201A23807 +FFE0EA0400A2481370A2001813380038137838FE01FF18177F961C>97 +D<EB7E083803819838070078000C1338001C13185A00781308127000F01300A700701308 +127812386C1310120C000713603803818038007E0015177E961B>99 +D<B512C0EA1C011300144014601420A213081400A21318EA1FF8EA1C1813081410A21300 +14301420A21460EB01E0B5FC14177E9619>101 D<B512C0EA1C011300144014601420A2 +13081400A21318EA1FF8EA1C181308A390C7FCA6EAFFC013177E9618>I<EB7E08380381 +9838070078000C1338001C13185A00781308127000F01300A5EB03FEEB00381270127812 +387E120C1207380380D838007F0817177E961D>I<EAFF80EA1C00B3A3EAFF8009177E96 +0E>105 D<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2131C13 +0E1307A2EB03A0EB01E0A213001460123800FE132016177E961C>110 +D<13FE38038380380E00E0481370003C1378003813380078133C0070131C00F0131EA700 +70131C0078133C00381338003C1378001C13706C13E0380383803800FE0017177E961D> +I<EAFFFCEA1C07EB03C0130114E0A414C01303EB0700EA1FFC001CC7FCAAB47E13177E96 +19>I<EA0FC4EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FCEA +001C130E13061280A3EAC004EAE008EAD810EA87E00F177E9615>115 +D<38FF81FC381C00701420B0000C1340120E6C138038018300EA007C16177E961C>117 +D<38FF80FE381F0070000E13606C1340EB80803803C100EA01C3EA00E213F4137813387F +133E134E13C7EB8780380103C0EA0201380600E0000413F0000C1370003C137800FE13FF +18177F961C>120 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fi cmbx12 17.28 18 +/Fi 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: Fj cmsy10 10.95 1 +/Fj 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01 +800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15 +306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0 +D900FEC7FC272B7DA02E>13 D E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fk cmbx12 14.4 39 +/Fk 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: Fl cmtt10 10.95 77 +/Fl 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<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA7EAFFC0 +A3141C7E9B18>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: Fm cmr10 10.95 71 +/Fm 71 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 +EA07C0EA7FFE0F1E7C9D17>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<90380FE02090387818609038E004E03803800238070001481300001E14 +60A25A1520127C127800F81400A7EC7FFCEC03E000781301127C123CA27EA27E7E380380 +023900E00460903878182090380FE0001E217D9F24>I<39FFF07FF8390F000780AD90B5 +FCEB0007AF39FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<39FF +F007FC390F0003E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21E013 +41EB80F0EB0078A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>75 +D<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E1C>I<B4 +6CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D1383A29038 +0E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A> +I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03 +C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D1F7E9E22 +>I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0A2007C14 +F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E06CEB03C0 +6C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80 +EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<B512 +E0380F80780007131E80EC0780A215C0A41580A2EC0F00141E1478EBFFE0EB8060143814 +3C141C141EA3141FA315011581140F390FC0078239FFFC03C4C812F820207F9E22>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<EA1FE0EA3030EA7818131CEA300E1200A313FEEA0F8EEA1E0E1238127800F01310A313 +1E127838386720380F83C014147E9317>I<121C12FC121CAA137CEA1D87381E0180EB00 +C0001C13E01470A21478A6147014F014E0001E13C0381A018038198700EA107C15207E9F +19>I<EA01FCEA0706EA1C0F123813060078C7FC127012F0A61270127800381380A2381C +0100EA0706EA01F811147F9314>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112 +381278127012F0A61270A21238EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA +0E1C487E487EA238700380A212F0B5FC00F0C7FCA41270A26C1380A2381C0100EA0706EA +01F811147F9314>I<137CEA01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE010 +20809F0E>I<14E03803E330EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33 +E00020C7FCA21230A2EA3FFE381FFF8014C0383001E038600070481330A4006013606C13 +C0381C03803803FC00141F7F9417>I<121C12FC121CAA137C1386EA1D03001E1380A212 +1CAE38FF8FF014207E9F19>I<1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F +9E0C>I<13E0EA01F0A3EA00E01300A61370EA07F012001370B3A31260EAF06013C0EA61 +80EA3F000C28829E0E>I<121C12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0 +EA1DF0EA1E70EA1C38133C131C7F130F7F148014C038FF9FF014207E9F18>I<121C12FC +121CB3ABEAFF8009207F9F0C>I<391C3E03E039FCC30C30391D019018001EEBE01CA200 +1C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF +8FF014147E9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A60070 +13E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA1C7CEAFD87381E0180 +14C0381C00E014F014701478A6147014F014E0381E01C0EB0380381D8700EA1C7C90C7FC +A8B47E151D7E9319>I<3801F04038070CC0EA0E02EA1C03EA38011278127012F0A61270 +12781238EA1C03EA0C05EA0709EA01F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18 +EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA0FC8EA3038EA6018EAC008A3EAE000 +127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0A21304EAE00CEAD818EA87E00F147F +9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F +9B12>I<381C0380EAFC1FEA1C03AE1307120CEA061B3803E3F014147E9319>I<38FF83F8 +383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3 +132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214C0D807 +04138014E0A239038861001471A23801D032143A143E3800E01CA2EB6018EB40081E147F +9321>I<38FF87F8381E03C0380E0180EB0300EA0702EA0384EA01C813D8EA00F0137013 +7813F8139CEA010E1202EA060738040380000C13C0003C13E038FE07FC16147F9318>I< +38FF83F8383E00E0001C13C06C1380A338070100A21383EA0382A2EA01C4A213E4EA00E8 +A21370A31320A25BA3EAF080A200F1C7FC1262123C151D7F9318>I<EA7FFFEA700E1260 +EA401C133813781370EA00E0120113C0EA038012071301120E121EEA1C03EA3802EA7006 +130EEAFFFE10147F9314>I E +%EndDVIPSBitmapFont +%DVIPSBitmapFont: Fn cmbx12 20.736 19 +/Fn 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 659 a Fn(GNU)33 b(Readline)h(Library)e(User)h(In)m(terface)p +75 709 1800 17 v 936 757 a Fm(Edition)17 b(4.2,)c(for)i +Fl(Readline)f(Library)g Fm(V)l(ersion)i(4.2.)1692 811 +y(Apr)f(2001)75 2467 y Fk(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 217 a Fm(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)i(Library)l(,)g +(a)e(utilit)o(y)75 271 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 326 y(a)j(command)g(line)i(in)o(terface.)75 +394 y(Published)g(b)o(y)f(the)f(F)l(ree)g(Soft)o(w)o(are)f(F)l +(oundation)75 448 y(59)h(T)l(emple)h(Place,)f(Suite)i(330,)75 +503 y(Boston,)d(MA)h(02111)f(USA)75 570 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 625 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 692 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 747 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 802 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 +869 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 924 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 979 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 Fj(\015)h Fm(1988-2001)f(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 Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077 +b(1)75 149 y Fi(1)41 b(Command)28 b(Line)e(Editing)137 +271 y Fm(This)16 b(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f +(of)g(the)g Fh(gnu)g Fm(command)g(line)i(editing)f(in)o(terface.)75 +403 y Fk(1.1)33 b(In)n(tro)r(duction)24 b(to)e(Line)i(Editing)137 +501 y Fm(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 +569 y(The)h(text)f Fg(C-k)h Fm(is)g(read)g(as)f(`Con)o(trol-K')g(and)h +(describ)q(es)h(the)f(c)o(haracter)f(pro)q(duced)h(when)h(the)1831 +567 y Ff(h)p 1844 541 19 2 v 1844 569 a Fe(k)p 1844 577 +V 1860 567 a Ff(i)75 624 y Fm(k)o(ey)d(is)h(pressed)g(while)g(the)f +(Con)o(trol)g(k)o(ey)g(is)h(depressed.)137 693 y(The)g(text)g +Fg(M-k)f Fm(is)i(read)f(as)f(`Meta-K')g(and)h(describ)q(es)i(the)e(c)o +(haracter)f(pro)q(duced)i(when)g(the)f(Meta)75 747 y(k)o(ey)e(\(if)g(y) +o(ou)g(ha)o(v)o(e)g(one\))g(is)h(depressed,)g(and)f(the)930 +745 y Ff(h)p 942 719 V 942 747 a Fe(k)p 942 755 V 958 +745 a Ff(i)987 747 y Fm(k)o(ey)g(is)h(pressed.)20 b(The)15 +b(Meta)e(k)o(ey)h(is)h(lab)q(eled)1779 745 y Ff(h)p 1791 +719 72 2 v 1791 747 a Fe(AL)m(T)p 1791 755 V 1860 745 +a Ff(i)75 802 y Fm(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 800 y Ff(h)p 1225 774 V 1225 802 a Fe(AL)m(T)p 1225 +810 V 1294 800 a Ff(i)1322 802 y Fm(\(usually)i(to)e(either)i(side)g +(of)f(the)75 857 y(space)j(bar\),)f(the)388 855 y Ff(h)p +400 829 V 400 857 a Fe(AL)m(T)p 400 865 V 469 855 a Ff(i)499 +857 y Fm(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 855 y Ff(h)p +1709 829 V 1709 857 a Fe(AL)m(T)p 1709 865 V 1778 855 +a Ff(i)1808 857 y Fm(k)o(ey)75 912 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 967 +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 1035 +y(If)c(y)o(ou)g(do)g(not)f(ha)o(v)o(e)h(a)f(Meta)h(or)694 +1033 y Ff(h)p 706 1007 V 706 1035 a Fe(AL)m(T)p 706 1043 +V 775 1033 a Ff(i)801 1035 y Fm(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 +1090 y(k)o(eystrok)o(e)f(can)i(b)q(e)g(generated)f(b)o(y)g(t)o(yping) +809 1088 y Ff(h)p 822 1062 70 2 v 822 1090 a Fe(ESC)p +822 1098 V 888 1088 a Ff(i)915 1090 y Fd(\014rst)p Fm(,)g(and)g(then)h +(t)o(yping)1339 1088 y Ff(h)p 1351 1062 19 2 v 1351 1090 +a Fe(k)p 1351 1098 V 1368 1088 a Ff(i)1383 1090 y Fm(.)18 +b(Either)12 b(pro)q(cess)f(is)h(kno)o(wn)75 1145 y(as)j +Fc(metafying)k Fm(the)425 1143 y Ff(h)p 437 1117 V 437 +1145 a Fe(k)p 437 1153 V 454 1143 a Ff(i)484 1145 y Fm(k)o(ey)l(.)137 +1214 y(The)i(text)e Fg(M-C-k)h Fm(is)h(read)f(as)f(`Meta-Con)o(trol-k') +g(and)h(describ)q(es)i(the)e(c)o(haracter)g(pro)q(duced)h(b)o(y)75 +1268 y Fc(metafying)e Fg(C-k)p Fm(.)137 1337 y(In)g(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 1335 y Ff(h)p 1396 1309 +73 2 v 1396 1337 a Fe(DEL)p 1396 1345 V 1467 1335 a Ff(i)1482 +1337 y Fm(,)1514 1335 y Ff(h)p 1526 1309 70 2 v 1526 +1337 a Fe(ESC)p 1526 1345 V 1593 1335 a Ff(i)1608 1337 +y Fm(,)1640 1335 y Ff(h)p 1652 1309 72 2 v 1652 1337 +a Fe(LFD)p 1652 1345 V 1722 1335 a Ff(i)1737 1337 y Fm(,)1768 +1335 y Ff(h)p 1780 1309 70 2 v 1780 1337 a Fe(SPC)p 1780 +1345 V 1847 1335 a Ff(i)1862 1337 y Fm(,)75 1390 y Ff(h)p +87 1364 76 2 v 87 1392 a Fe(RET)p 87 1399 V 160 1390 +a Ff(i)175 1392 y Fm(,)23 b(and)306 1390 y Ff(h)p 318 +1364 74 2 v 318 1392 a Fe(T)m(AB)p 318 1399 V 390 1390 +a Ff(i)427 1392 y Fm(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 +1447 y(Section)d(1.3)f([Readline)h(Init)g(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 +1445 y Ff(h)p 1456 1419 72 2 v 1456 1447 a Fe(LFD)p 1456 +1454 V 1526 1445 a Ff(i)1560 1447 y Fm(k)o(ey)l(,)h(t)o(yping)1802 +1445 y Ff(h)p 1814 1419 49 2 v 1814 1447 a Fe(C-j)p 1814 +1454 V 1860 1445 a Ff(i)75 1501 y Fm(will)c(pro)q(duce)g(the)f(desired) +h(c)o(haracter.)j(The)874 1499 y Ff(h)p 886 1473 76 2 +v 886 1501 a Fe(RET)p 886 1509 V 959 1499 a Ff(i)989 +1501 y Fm(k)o(ey)c(ma)o(y)f(b)q(e)h(lab)q(eled)1385 1499 +y Ff(h)p 1397 1473 109 2 v 1397 1501 a Fe(Return)p 1397 +1509 V 1503 1499 a Ff(i)1533 1501 y Fm(or)1588 1499 y +Ff(h)p 1600 1473 86 2 v 1600 1501 a Fe(En)o(ter)p 1600 +1509 V 1684 1499 a Ff(i)1714 1501 y Fm(on)f(some)75 1556 +y(k)o(eyb)q(oards.)75 1688 y Fk(1.2)33 b(Readline)23 +b(In)n(teraction)137 1786 y Fm(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 1841 y(\014rst)k(w)o(ord)f(on)h +(the)h(line)h(is)e(missp)q(elled.)26 b(The)16 b(Readline)i(library)f +(giv)o(es)f(y)o(ou)g(a)g(set)g(of)g(commands)g(for)75 +1896 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 1950 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 2005 +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 +2060 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 2058 y Ff(h)p 1172 2032 76 +2 v 1172 2060 a Fe(RET)p 1172 2068 V 1245 2058 a Ff(i)1260 +2060 y Fm(.)k(Y)l(ou)16 b(do)f(not)h(ha)o(v)o(e)f(to)g(b)q(e)h(at)f +(the)75 2115 y(end)k(of)e(the)h(line)i(to)d(press)563 +2113 y Ff(h)p 575 2087 V 575 2115 a Fe(RET)p 575 2122 +V 648 2113 a Ff(i)663 2115 y Fm(;)i(the)f(en)o(tire)h(line)g(is)g +(accepted)f(regardless)g(of)g(the)g(lo)q(cation)g(of)g(the)75 +2170 y(cursor)d(within)h(the)g(line.)75 2284 y Fb(1.2.1)30 +b(Readline)20 b(Bare)g(Essen)n(tials)137 2382 y Fm(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 2437 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 2492 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)g(other)f(c)o(haracters.)19 +b(In)c(that)e(case,)i(y)o(ou)f(can)g(t)o(yp)q(e)h Fg(C-b)f +Fm(to)g(mo)o(v)o(e)f(the)i(cursor)f(to)g(the)g(left,)h(and)75 +2670 y(then)h(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)g Fg(C-f)p Fm(.)p eop +%%Page: 2 4 +2 3 bop 75 -58 a Fm(2)1322 b(GNU)15 b(Readline)h(Library)137 +149 y(When)h(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 +204 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 259 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 314 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 +369 y(for)k(editing)h(the)f(text)g(of)g(an)g(input)h(line)h(follo)o +(ws.)75 449 y Fg(C-b)168 b Fm(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o +(haracter.)75 530 y Fg(C-f)168 b Fm(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h +(c)o(haracter.)75 608 y Ff(h)p 87 582 73 2 v 87 610 a +Fe(DEL)p 87 618 V 158 608 a Ff(i)188 610 y Fm(or)244 +608 y Ff(h)p 256 582 159 2 v 256 610 a Fe(Bac)o(kspace)p +256 618 V 412 608 a Ff(i)315 665 y Fm(Delete)h(the)f(c)o(haracter)g(to) +f(the)h(left)h(of)f(the)g(cursor.)75 745 y Fg(C-d)168 +b Fm(Delete)16 b(the)f(c)o(haracter)g(underneath)h(the)f(cursor.)75 +825 y(Prin)o(ting)h(c)o(haracters)315 880 y(Insert)f(the)h(c)o +(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h(cursor.)75 +961 y Fg(C-_)g Fm(or)f Fg(C-x)h(C-u)315 1015 y Fm(Undo)i(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 1070 y(line.)75 +1151 y(\(Dep)q(ending)i(on)f(y)o(our)g(con\014guration,)g(the)863 +1149 y Ff(h)p 875 1123 V 875 1151 a Fe(Bac)o(kspace)p +875 1159 V 1032 1149 a Ff(i)1063 1151 y Fm(k)o(ey)g(b)q(e)h(set)f(to)f +(delete)i(the)f(c)o(haracter)g(to)f(the)75 1206 y(left)h(of)f(the)h +(cursor)f(and)g(the)596 1204 y Ff(h)p 608 1178 73 2 v +608 1206 a Fe(DEL)p 608 1213 V 679 1204 a Ff(i)710 1206 +y Fm(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 1260 y Fg(C-d)p Fm(,)e(rather)h(than)g(the) +g(c)o(haracter)g(to)f(the)i(left)f(of)g(the)g(cursor.\))75 +1374 y Fb(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i(Commands)137 +1471 y Fm(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 1526 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 1580 y(to)h Fg(C-b)p +Fm(,)h Fg(C-f)p Fm(,)f Fg(C-d)p Fm(,)g(and)522 1578 y +Ff(h)p 534 1552 V 534 1580 a Fe(DEL)p 534 1588 V 605 +1578 a Ff(i)619 1580 y Fm(.)23 b(Here)16 b(are)g(some)f(commands)h(for) +f(mo)o(ving)h(more)g(rapidly)h(ab)q(out)f(the)75 1635 +y(line.)75 1716 y Fg(C-a)168 b Fm(Mo)o(v)o(e)14 b(to)h(the)g(start)f +(of)h(the)g(line.)75 1796 y Fg(C-e)168 b Fm(Mo)o(v)o(e)14 +b(to)h(the)g(end)h(of)f(the)g(line.)75 1876 y Fg(M-f)168 +b Fm(Mo)o(v)o(e)14 b(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 1957 +y Fg(M-b)168 b Fm(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75 +2037 y Fg(C-l)168 b Fm(Clear)15 b(the)h(screen,)f(reprin)o(ting)h(the)f +(curren)o(t)g(line)i(at)e(the)g(top.)137 2118 y(Notice)e(ho)o(w)f +Fg(C-f)g Fm(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)i +Fg(M-f)e Fm(mo)o(v)o(es)f(forw)o(ard)g(a)h(w)o(ord.)18 +b(It)13 b(is)g(a)f(lo)q(ose)75 2173 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 2227 y(w)o(ords.)75 +2341 y Fb(1.2.3)30 b(Readline)20 b(Killing)h(Commands)137 +2438 y Fc(Killing)26 b Fm(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 2493 y(usually)f(b)o(y)f Fc(y)o(anking)22 +b Fm(\(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 +2547 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 Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077 +b(3)137 149 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 Fc(kill-ring)p Fm(.)21 +b(An)o(y)12 b(n)o(um)o(b)q(er)g(of)f(consecutiv)o(e)75 +204 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 259 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 +314 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 380 y(Here)h(is)f(the)h(list)g +(of)e(commands)h(for)g(killing)j(text.)75 458 y Fg(C-k)168 +b Fm(Kill)17 b(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 535 y +Fg(M-d)168 b Fm(Kill)15 b(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 590 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)f +Fg(M-f)p Fm(.)75 668 y Fg(M-)123 666 y Ff(h)p 135 640 +73 2 v 135 668 a Fe(DEL)p 135 675 V 206 666 a Ff(i)315 +668 y Fm(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 +723 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 777 y Fg(M-b)p Fm(.)75 855 y Fg(C-w)168 b +Fm(Kill)18 b(from)d(the)g(cursor)h(to)f(the)g(previous)i(whitespace.)22 +b(This)16 b(is)g(di\013eren)o(t)g(than)f Fg(M-)1777 853 +y Ff(h)p 1789 827 V 1789 855 a Fe(DEL)p 1789 863 V 1860 +853 a Ff(i)315 910 y Fm(b)q(ecause)h(the)f(w)o(ord)g(b)q(oundaries)h +(di\013er.)137 987 y(Here)21 b(is)h(ho)o(w)e(to)g Fc(y)o(ank)j +Fm(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 1042 y(recen)o(tly-killed)d +(text)d(from)f(the)i(kill)h(bu\013er.)75 1120 y Fg(C-y)168 +b Fm(Y)l(ank)15 b(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 1198 +y Fg(M-y)168 b Fm(Rotate)16 b(the)h(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 1252 y(command)d(is)h Fg(C-y)f Fm(or)f Fg(M-y)p Fm(.)75 +1361 y Fb(1.2.4)30 b(Readline)20 b(Argumen)n(ts)137 1457 +y Fm(Y)l(ou)15 b(can)g(pass)f(n)o(umeric)i(argumen)o(ts)e(to)g +(Readline)h(commands.)20 b(Sometimes)15 b(the)g(argumen)o(t)e(acts)75 +1511 y(as)20 b(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)g(it)h(is)f +(the)g Fd(sign)j Fm(of)c(the)h(argumen)o(t)g(that)f(is)i(signi\014can)o +(t.)35 b(If)20 b(y)o(ou)75 1566 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 1621 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 1676 y(the)f(line,)i(y)o(ou)e(migh)o(t)g +(t)o(yp)q(e)g(`)p Fl(M--)f(C-k)p Fm('.)137 1742 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 1797 +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 Fl(-)p Fm('\),)d(then)j(the)f(sign)h(of)f +(the)h(argumen)o(t)75 1852 y(will)21 b(b)q(e)f(negativ)o(e.)31 +b(Once)20 b(y)o(ou)f(ha)o(v)o(e)g(t)o(yp)q(ed)g(one)g(meta)g(digit)h +(to)e(get)h(the)g(argumen)o(t)f(started,)h(y)o(ou)75 +1906 y(can)c(t)o(yp)q(e)f(the)h(remainder)g(of)f(the)g(digits,)h(and)g +(then)g(the)f(command.)20 b(F)l(or)13 b(example,)i(to)f(giv)o(e)h(the)f +Fg(C-d)75 1961 y Fm(command)19 b(an)f(argumen)o(t)g(of)g(10,)h(y)o(ou)f +(could)i(t)o(yp)q(e)f(`)p Fl(M-1)14 b(0)h(C-d)p Fm(',)k(whic)o(h)g +(will)h(delete)g(the)f(next)g(ten)75 2016 y(c)o(haracters)14 +b(on)i(the)f(input)h(line.)75 2125 y Fb(1.2.5)30 b(Searc)n(hing)21 +b(for)f(Commands)h(in)f(the)h(History)137 2220 y Fm(Readline)d(pro)o +(vides)e(commands)g(for)g(searc)o(hing)g(through)g(the)g(command)g +(history)g(for)g(lines)i(con-)75 2275 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 Fc(incremen)o(tal)e Fm(and)e Fc(non-incremen)o(tal)p +Fm(.)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)g(displa)o(ys)f(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)h Fg(C-r)p +Fm(.)k(T)o(yping)d Fg(C-s)e Fm(searc)o(hes)h(forw)o(ard)e(through)h +(the)h(history)l(.)20 b(The)15 b(c)o(haracters)f(presen)o(t)75 +2615 y(in)20 b(the)f(v)m(alue)h(of)f(the)g Fl(isearch-terminators)d +Fm(v)m(ariable)k(are)f(used)h(to)e(terminate)h(an)g(incremen)o(tal)75 +2670 y(searc)o(h.)31 b(If)19 b(that)f(v)m(ariable)i(has)f(not)f(b)q +(een)i(assigned)g(a)e(v)m(alue,)j(the)1289 2668 y Ff(h)p +1301 2642 70 2 v 1301 2670 a Fe(ESC)p 1301 2678 V 1368 +2668 a Ff(i)1402 2670 y Fm(and)e Fg(C-J)f Fm(c)o(haracters)g(will)p +eop +%%Page: 4 6 +4 5 bop 75 -58 a Fm(4)1322 b(GNU)15 b(Readline)h(Library)75 +149 y(terminate)21 b(an)g(incremen)o(tal)i(searc)o(h.)37 +b Fg(C-g)21 b Fm(will)i(ab)q(ort)e(an)g(incremen)o(tal)h(searc)o(h)f +(and)g(restore)g(the)75 204 y(original)16 b(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 259 +y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 324 y(T)l(o)g(\014nd)i +(other)e(matc)o(hing)g(en)o(tries)h(in)h(the)e(history)h(list,)g(t)o +(yp)q(e)f Fg(C-r)g Fm(or)g Fg(C-s)g Fm(as)h(appropriate.)k(This)75 +379 y(will)15 b(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 434 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) +h(command)e(will)j(terminate)e(the)75 489 y(searc)o(h)10 +b(and)h(execute)g(that)f(command.)18 b(F)l(or)10 b(instance,)i(a)1063 +487 y Ff(h)p 1076 461 76 2 v 1076 489 a Fe(RET)p 1076 +496 V 1149 487 a Ff(i)1174 489 y Fm(will)g(terminate)f(the)g(searc)o(h) +f(and)h(accept)75 543 y(the)k(line,)h(thereb)o(y)f(executing)g(the)g +(command)g(from)f(the)g(history)h(list.)20 b(A)15 b(mo)o(v)o(emen)o(t)f +(command)g(will)75 598 y(terminate)h(the)g(searc)o(h,)g(mak)o(e)g(the)g +(last)g(line)i(found)f(the)f(curren)o(t)g(line,)h(and)g(b)q(egin)g +(editing.)137 664 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 718 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 773 y(con)o(ten)o(ts)15 +b(of)f(the)i(curren)o(t)f(line.)75 896 y Fk(1.3)33 b(Readline)23 +b(Init)h(File)137 990 y Fm(Although)f(the)g(Readline)h(library)f(comes) +g(with)g(a)f(set)g(of)g(Emacs-lik)o(e)i(k)o(eybindings)g(installed)75 +1045 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 1100 y(programs)15 b(that)h(use)g(Readline) +i(b)o(y)e(putting)g(commands)g(in)i(an)e Fc(inputrc)k +Fm(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75 1155 +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 1209 y Fl(INPUTRC)p Fm(.)i(If)c(that)g(v)m(ariable)h(is)g +(unset,)f(the)g(default)h(is)g(`)p Fl(~/.inputrc)p Fm('.)137 +1275 y(When)f(a)g(program)f(whic)o(h)h(uses)g(the)g(Readline)h(library) +g(starts)d(up,)i(the)g(init)h(\014le)g(is)f(read,)g(and)g(the)75 +1329 y(k)o(ey)g(bindings)i(are)e(set.)137 1395 y(In)f(addition,)h(the)e +Fl(C-x)i(C-r)e Fm(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 1450 y(that)h(y)o(ou)h +(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75 1556 y Fb(1.3.1)30 +b(Readline)20 b(Init)g(File)h(Syn)n(tax)137 1650 y Fm(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)h(init)g(\014le.)26 b(Blank)18 b(lines)g(are)75 +1705 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d(a)h(`)p +Fl(#)p Fm(')e(are)h(commen)o(ts.)35 b(Lines)22 b(b)q(eginning)h(with)e +(a)f(`)p Fl($)p Fm(')f(indicate)75 1760 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 1814 y(denote)h(v)m(ariable)i(settings)e(and)h +(k)o(ey)f(bindings.)75 1890 y(V)l(ariable)h(Settings)315 +1945 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)j(b)o(y)e(altering)h(the)f(v)m(alues)h(of)315 +2000 y(v)m(ariables)d(in)g(Readline)g(using)f(the)g Fl(set)g +Fm(command)f(within)i(the)f(init)h(\014le.)26 b(The)17 +b(syn)o(tax)315 2055 y(is)f(simple:)435 2117 y Fl(set)23 +b Fc(v)m(ariable)28 b(v)m(alue)315 2182 y Fm(Here,)14 +b(for)f(example,)h(is)g(ho)o(w)f(to)g(c)o(hange)h(from)f(the)h(default) +g(Emacs-lik)o(e)h(k)o(ey)e(binding)j(to)315 2237 y(use)g +Fl(vi)e Fm(line)j(editing)g(commands:)435 2299 y Fl(set)23 +b(editing-mode)g(vi)315 2365 y Fm(V)l(ariable)c(names)e(and)h(v)m +(alues,)h(where)e(appropriate,)h(are)f(recognized)i(without)e(regard) +315 2419 y(to)e(case.)315 2485 y(A)g(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 2560 y Fl(bell-style)555 2615 y Fm(Con)o(trols)21 +b(what)h(happ)q(ens)h(when)f(Readline)h(w)o(an)o(ts)e(to)g(ring)i(the)f +(termi-)555 2670 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p +Fl(none)p Fm(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32 +b(If)19 b(set)g(to)p eop +%%Page: 5 7 +5 6 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077 +b(5)555 149 y(`)p Fl(visible)p Fm(',)15 b(Readline)i(uses)g(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 204 y(`)p Fl(audible)p Fm(')g(\(the)h +(default\),)i(Readline)g(attempts)e(to)g(ring)h(the)g(terminal's)555 +259 y(b)q(ell.)315 338 y Fl(comment-begin)555 393 y Fm(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 +Fl(insert-)555 448 y(comment)f Fm(command)h(is)h(executed.)21 +b(The)15 b(default)h(v)m(alue)g(is)g Fl("#")p Fm(.)315 +527 y Fl(completion-ignore-case)555 582 y Fm(If)e(set)f(to)g(`)p +Fl(on)p Fm(',)g(Readline)i(p)q(erforms)e(\014lename)i(matc)o(hing)f +(and)g(completion)555 637 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k +(The)15 b(default)h(v)m(alue)g(is)g(`)p Fl(off)p Fm('.)315 +716 y Fl(completion-query-items)555 770 y Fm(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 825 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 880 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 +935 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 990 y(they)f(are)g(simply)i(listed.)20 +b(This)13 b(v)m(ariable)g(m)o(ust)f(b)q(e)h(set)f(to)f(an)h(in)o(teger) +h(v)m(alue)555 1044 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d +(default)f(limit)i(is)f Fl(100)p Fm(.)315 1124 y Fl(convert-meta)555 +1178 y Fm(If)11 b(set)g(to)g(`)p Fl(on)p Fm(',)f(Readline)i(will)h(con) +o(v)o(ert)d(c)o(haracters)h(with)g(the)g(eigh)o(th)h(bit)f(set)555 +1233 y(to)f(an)h Fh(asci)q(i)e Fm(k)o(ey)i(sequence)g(b)o(y)g +(stripping)h(the)e(eigh)o(th)h(bit)h(and)e(pre\014xing)i(an)555 +1286 y Ff(h)p 567 1260 70 2 v 567 1288 a Fe(ESC)p 567 +1296 V 634 1286 a Ff(i)666 1288 y Fm(c)o(haracter,)k(con)o(v)o(erting)h +(them)g(to)f(a)h(meta-pre\014xed)g(k)o(ey)g(sequence.)555 +1343 y(The)e(default)h(v)m(alue)h(is)e(`)p Fl(on)p Fm('.)315 +1422 y Fl(disable-completion)555 1477 y Fm(If)k(set)f(to)f(`)p +Fl(On)p Fm(',)h(Readline)i(will)g(inhibit)g(w)o(ord)e(completion.)30 +b(Completion)555 1531 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 +1586 y(to)h Fl(self-insert)p Fm(.)j(The)d(default)h(is)g(`)p +Fl(off)p Fm('.)315 1665 y Fl(editing-mode)555 1720 y +Fm(The)f Fl(editing-mode)d Fm(v)m(ariable)k(con)o(trols)e(whic)o(h)h +(default)g(set)f(of)g(k)o(ey)g(bind-)555 1775 y(ings)f(is)g(used.)20 +b(By)12 b(default,)i(Readline)f(starts)f(up)h(in)g(Emacs)f(editing)i +(mo)q(de,)555 1830 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 +1885 y(b)q(e)g(set)f(to)f(either)i(`)p Fl(emacs)p Fm(')e(or)h(`)p +Fl(vi)p Fm('.)315 1964 y Fl(enable-keypad)555 2019 y +Fm(When)d(set)f(to)h(`)p Fl(on)p Fm(',)e(Readline)j(will)h(try)d(to)g +(enable)i(the)f(application)h(k)o(eypad)555 2073 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 2128 y(The)j(default)h(is)g(`)p +Fl(off)p Fm('.)315 2207 y Fl(expand-tilde)555 2262 y +Fm(If)e(set)g(to)f(`)p Fl(on)p Fm(',)f(tilde)k(expansion)e(is)h(p)q +(erformed)f(when)g(Readline)h(attempts)555 2317 y(w)o(ord)g +(completion.)21 b(The)15 b(default)h(is)f(`)p Fl(off)p +Fm('.)315 2396 y Fl(horizontal-scroll-mode)555 2451 y +Fm(This)k(v)m(ariable)g(can)f(b)q(e)g(set)g(to)f(either)i(`)p +Fl(on)p Fm(')e(or)g(`)p Fl(off)p Fm('.)27 b(Setting)19 +b(it)f(to)f(`)p Fl(on)p Fm(')555 2506 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 +2560 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 2615 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 2670 y(v)m(ariable)j(is)e(set)g(to)g(`)p +Fl(off)p Fm('.)p eop +%%Page: 6 8 +6 7 bop 75 -58 a Fm(6)1322 b(GNU)15 b(Readline)h(Library)315 +149 y Fl(input-meta)555 204 y Fm(If)g(set)f(to)g(`)p +Fl(on)p Fm(',)f(Readline)j(will)h(enable)e(eigh)o(t-bit)h(input)f(\(it) +g(will)h(not)e(clear)555 259 y(the)20 b(eigh)o(th)g(bit)g(in)h(the)f(c) +o(haracters)f(it)h(reads\),)g(regardless)g(of)g(what)f(the)555 +314 y(terminal)i(claims)g(it)f(can)g(supp)q(ort.)34 b(The)20 +b(default)h(v)m(alue)g(is)g(`)p Fl(off)p Fm('.)33 b(The)555 +369 y(name)15 b Fl(meta-flag)f Fm(is)i(a)f(synon)o(ym)g(for)f(this)i(v) +m(ariable.)315 448 y Fl(isearch-terminators)555 503 y +Fm(The)26 b(string)g(of)f(c)o(haracters)g(that)g(should)i(terminate)f +(an)g(incremen)o(tal)555 557 y(searc)o(h)12 b(without)h(subsequen)o +(tly)g(executing)h(the)e(c)o(haracter)g(as)g(a)g(command)555 +612 y(\(see)22 b(Section)h(1.2.5)e([Searc)o(hing],)j(page)e(3\).)40 +b(If)23 b(this)g(v)m(ariable)g(has)f(not)555 667 y(b)q(een)17 +b(giv)o(en)f(a)g(v)m(alue,)g(the)g(c)o(haracters)1247 +665 y Ff(h)p 1259 639 70 2 v 1259 667 a Fe(ESC)p 1259 +675 V 1326 665 a Ff(i)1357 667 y Fm(and)g Fg(C-J)f Fm(will)i(terminate) +f(an)555 722 y(incremen)o(tal)g(searc)o(h.)315 801 y +Fl(keymap)96 b Fm(Sets)19 b(Readline's)i(idea)f(of)f(the)g(curren)o(t)h +(k)o(eymap)f(for)f(k)o(ey)i(binding)h(com-)555 856 y(mands.)41 +b(Acceptable)23 b Fl(keymap)f Fm(names)g(are)f Fl(emacs)p +Fm(,)i Fl(emacs-standard)p Fm(,)555 910 y Fl(emacs-meta)p +Fm(,)49 b Fl(emacs-ctlx)p Fm(,)g Fl(vi)p Fm(,)h Fl(vi-move)p +Fm(,)f Fl(vi-command)p Fm(,)g(and)555 965 y Fl(vi-insert)p +Fm(.)31 b Fl(vi)20 b Fm(is)g(equiv)m(alen)o(t)h(to)e +Fl(vi-command)p Fm(;)g Fl(emacs)g Fm(is)h(equiv)m(alen)o(t)555 +1020 y(to)15 b Fl(emacs-standard)p Fm(.)20 b(The)d(default)f(v)m(alue)h +(is)g Fl(emacs)p Fm(.)k(The)16 b(v)m(alue)h(of)f(the)555 +1075 y Fl(editing-mode)e Fm(v)m(ariable)i(also)f(a\013ects)g(the)g +(default)h(k)o(eymap.)315 1154 y Fl(mark-directories)555 +1209 y Fm(If)j(set)g(to)g(`)p Fl(on)p Fm(',)f(completed)i(directory)g +(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1264 +y(The)15 b(default)h(is)g(`)p Fl(on)p Fm('.)315 1343 +y Fl(mark-modified-lines)555 1398 y Fm(This)j(v)m(ariable,)g(when)g +(set)e(to)h(`)p Fl(on)p Fm(',)f(causes)h(Readline)h(to)e(displa)o(y)i +(an)f(as-)555 1452 y(terisk)f(\(`)p Fl(*)p Fm('\))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 1507 y(This)e(v)m(ariable)g(is)g(`)p Fl(off)p +Fm(')e(b)o(y)h(default.)315 1586 y Fl(output-meta)555 +1641 y Fm(If)j(set)f(to)g(`)p Fl(on)p Fm(',)g(Readline)i(will)h(displa) +o(y)f(c)o(haracters)d(with)j(the)e(eigh)o(th)h(bit)555 +1696 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 1751 y(default)16 +b(is)f(`)p Fl(off)p Fm('.)315 1830 y Fl(print-completions-horizont)o +(ally)555 1885 y Fm(If)d(set)g(to)f(`)p Fl(on)p Fm(',)h(Readline)h +(will)g(displa)o(y)h(completions)f(with)f(matc)o(hes)f(sorted)555 +1939 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 1994 y(The)15 b(default)h(is)g(`)p +Fl(off)p Fm('.)315 2073 y Fl(show-all-if-ambiguous)555 +2128 y Fm(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 2183 y(to)e(`)p +Fl(on)p Fm(',)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 2238 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 2293 y(The)c(default)h(v)m(alue)h(is)e(`)p +Fl(off)p Fm('.)315 2372 y Fl(visible-stats)555 2426 y +Fm(If)h(set)g(to)f(`)p Fl(on)p Fm(',)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 +2481 y(\014lename)h(when)g(listing)h(p)q(ossible)g(completions.)j(The)c +(default)g(is)f(`)p Fl(off)p Fm('.)75 2560 y(Key)h(Bindings)315 +2615 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 2670 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)p eop +%%Page: 7 9 +7 8 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077 +b(7)315 149 y(sections)18 b(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 +204 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g(command)g(do)q +(es.)315 273 y(Once)k(y)o(ou)f(kno)o(w)f(the)h(name)g(of)g(the)g +(command,)g(simply)h(place)g(on)f(a)f(line)j(in)f(the)f(init)315 +328 y(\014le)g(the)f(name)g(of)f(the)h(k)o(ey)g(y)o(ou)f(wish)i(to)e +(bind)i(the)f(command)g(to,)f(a)g(colon,)i(and)f(then)315 +382 y(the)f(name)g(of)g(the)g(command.)22 b(The)16 b(name)g(of)g(the)g +(k)o(ey)f(can)i(b)q(e)f(expressed)h(in)g(di\013eren)o(t)315 +437 y(w)o(a)o(ys,)d(dep)q(ending)j(on)e(what)g(y)o(ou)g(\014nd)h(most)e +(comfortable.)315 506 y(In)19 b(addition)g(to)e(command)h(names,)g +(readline)i(allo)o(ws)e(k)o(eys)g(to)f(b)q(e)i(b)q(ound)g(to)e(a)h +(string)315 561 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h +(pressed)g(\(a)e Fc(macro)r Fm(\).)315 643 y Fc(k)o(eyname)s +Fm(:)19 b Fc(function-name)g Fm(or)c Fc(macro)555 698 +y(k)o(eyname)i Fm(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 764 y Fl(Control-u:)22 +b(universal-argument)675 816 y(Meta-Rubout:)g(backward-kill-word)675 +867 y(Control-o:)g(">)i(output")555 936 y Fm(In)c(the)f(ab)q(o)o(v)o(e) +g(example,)i Fg(C-u)e Fm(is)h(b)q(ound)g(to)f(the)g(function)h +Fl(universal-)555 991 y(argument)p Fm(,)e Fg(M-DEL)h +Fm(is)g(b)q(ound)h(to)e(the)h(function)h Fl(backward-kill-word)p +Fm(,)555 1046 y(and)g Fg(C-o)f Fm(is)h(b)q(ound)g(to)f(run)h(the)f +(macro)g(expressed)h(on)g(the)f(righ)o(t)h(hand)555 1101 +y(side)c(\(that)e(is,)i(to)e(insert)i(the)f(text)g(`)p +Fl(>)f(output)p Fm(')g(in)o(to)i(the)f(line\).)555 1169 +y(A)k(n)o(um)o(b)q(er)f(of)g(sym)o(b)q(olic)i(c)o(haracter)e(names)g +(are)g(recognized)i(while)g(pro-)555 1224 y(cessing)13 +b(this)f(k)o(ey)g(binding)h(syn)o(tax:)18 b Fc(DEL)p +Fm(,)11 b Fc(ESC)p Fm(,)h Fc(ESCAPE)p Fm(,)f Fc(LFD)p +Fm(,)g Fc(NEW-)555 1279 y(LINE)p Fm(,)16 b Fc(RET)p Fm(,)e +Fc(RETURN)p Fm(,)f Fc(R)o(UBOUT)p Fm(,)i Fc(SP)l(A)o(CE)p +Fm(,)g Fc(SPC)p Fm(,)f(and)i Fc(T)l(AB)p Fm(.)315 1361 +y Fl(")p Fc(k)o(eyseq)q Fl(")p Fm(:)k Fc(function-name)e +Fm(or)d Fc(macro)555 1416 y(k)o(eyseq)i Fm(di\013ers)e(from)g +Fc(k)o(eyname)j Fm(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g +(an)f(en-)555 1471 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 +1526 y(double)e(quotes.)j(Some)c Fh(gnu)g Fm(Emacs)f(st)o(yle)h(k)o(ey) +g(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 1580 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 1635 y(recognized.)675 1701 y Fl("\\C-u":)23 +b(universal-argument)675 1753 y("\\C-x\\C-r":)f(re-read-init-file)675 +1805 y("\\e[11~":)h("Function)f(Key)i(1")555 1873 y Fm(In)33 +b(the)f(ab)q(o)o(v)o(e)g(example,)37 b Fg(C-u)32 b Fm(is)h(again)f(b)q +(ound)h(to)f(the)g(function)555 1928 y Fl(universal-argument)19 +b Fm(\(just)j(as)f(it)h(w)o(as)f(in)i(the)f(\014rst)f(example\),)j(`)p +Fg(C-x)555 1983 y(C-r)p Fm(')c(is)h(b)q(ound)g(to)f(the)h(function)g +Fl(re-read-init-file)p Fm(,)f(and)g(`)1731 1981 y Ff(h)p +1743 1955 70 2 v 1743 1983 a Fe(ESC)p 1743 1991 V 1810 +1981 a Ff(i)15 b(h)p 1852 1955 10 2 v 1852 1983 a Fe([)p +1852 1991 V 1860 1981 a Ff(i)555 2036 y(h)p 567 2010 +18 2 v 567 2038 a Fe(1)p 567 2045 V 583 2036 a Ff(i)g(h)p +625 2010 V 625 2038 a Fe(1)p 625 2045 V 640 2036 a Ff(i)g(h)p +683 2010 24 2 v 683 2038 a Fl(~)p 683 2045 V 704 2036 +a Ff(i)719 2038 y Fm(')g(is)h(b)q(ound)g(to)e(insert)i(the)f(text)g(`)p +Fl(Function)f(Key)g(1)p Fm('.)315 2120 y(The)h(follo)o(wing)h +Fh(gnu)e Fm(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 2175 y(k)o(ey)g(sequences:)315 +2258 y Fg(\\C-)168 b Fm(con)o(trol)15 b(pre\014x)315 +2340 y Fg(\\M-)168 b Fm(meta)15 b(pre\014x)315 2423 y +Fg(\\e)192 b Fm(an)15 b(escap)q(e)h(c)o(haracter)315 +2505 y Fg(\\\\)192 b Fm(bac)o(kslash)315 2587 y Fg(\\)p +Fl(")555 2585 y Ff(h)p 567 2559 V 567 2587 a Fl(")p 567 +2595 V 589 2585 a Ff(i)604 2587 y Fm(,)15 b(a)f(double)j(quotation)e +(mark)315 2670 y Fg(\\')555 2668 y Ff(h)p 567 2642 10 +2 v 567 2670 a Fe(')p 567 2678 V 575 2668 a Ff(i)590 +2670 y Fm(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)p +eop +%%Page: 8 10 +8 9 bop 75 -58 a Fm(8)1322 b(GNU)15 b(Readline)h(Library)315 +149 y(In)e(addition)h(to)f(the)f Fh(gnu)h Fm(Emacs)g(st)o(yle)f(escap)q +(e)i(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315 +204 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 286 y Fl(\\a)192 +b Fm(alert)15 b(\(b)q(ell\))315 368 y Fl(\\b)192 b Fm(bac)o(kspace)315 +449 y Fl(\\d)g Fm(delete)315 531 y Fl(\\f)g Fm(form)14 +b(feed)315 613 y Fl(\\n)192 b Fm(newline)315 694 y Fl(\\r)g +Fm(carriage)15 b(return)315 776 y Fl(\\t)192 b Fm(horizon)o(tal)16 +b(tab)315 858 y Fl(\\v)192 b Fm(v)o(ertical)16 b(tab)315 +940 y Fl(\\)p Fc(nnn)141 b Fm(the)14 b(c)o(haracter)f(whose)h +Fh(asci)q(i)e Fm(co)q(de)j(is)f(the)g(o)q(ctal)g(v)m(alue)h +Fc(nnn)f Fm(\(one)g(to)f(three)555 994 y(digits\))315 +1076 y Fl(\\x)p Fc(nnn)117 b Fm(the)16 b(c)o(haracter)f(whose)h +Fh(asci)q(i)f Fm(co)q(de)i(is)f(the)h(hexadecimal)g(v)m(alue)g +Fc(nnn)g Fm(\(one)555 1131 y(to)e(three)g(digits\))315 +1213 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 1267 +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 1322 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 1377 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 Fl(")p Fm(')c(and)h(`)p +Fl(')p Fm('.)34 b(F)l(or)315 1432 y(example,)14 b(the)f(follo)o(wing)g +(binding)i(will)g(mak)o(e)d(`)p Fg(C-x)i Fl(\\)p Fm(')f(insert)g(a)g +(single)h(`)p Fl(\\)p Fm(')e(in)o(to)h(the)g(line:)435 +1497 y Fl("\\C-x\\\\":)23 b("\\\\")75 1613 y Fb(1.3.2)30 +b(Conditional)20 b(Init)g(Constructs)137 1712 y Fm(Readline)f(implemen) +o(ts)g(a)f(facilit)o(y)g(similar)h(in)g(spirit)f(to)f(the)h +(conditional)h(compilation)g(features)75 1766 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 1821 y(the)e(result)h +(of)f(tests.)k(There)c(are)g(four)g(parser)g(directiv)o(es)h(used.)75 +1904 y Fl($if)168 b Fm(The)16 b Fl($if)f Fm(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 1959 y(terminal)k(b)q(eing)g(used,)g(or)f(the)g(application)i +(using)e(Readline.)33 b(The)19 b(text)g(of)f(the)i(test)315 +2013 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 +2095 y Fl(mode)144 b Fm(The)11 b Fl(mode=)e Fm(form)h(of)g(the)h +Fl($if)f Fm(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline) +555 2150 y(is)k(in)h Fl(emacs)e Fm(or)g Fl(vi)g Fm(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 +2205 y(`)p Fl(set)f(keymap)p Fm(')f(command,)g(for)h(instance,)g(to)f +(set)h(bindings)h(in)g(the)f Fl(emacs-)555 2260 y(standard)d +Fm(and)i Fl(emacs-ctlx)e Fm(k)o(eymaps)h(only)i(if)f(Readline)g(is)g +(starting)f(out)555 2314 y(in)k Fl(emacs)f Fm(mo)q(de.)315 +2396 y Fl(term)144 b Fm(The)14 b Fl(term=)e Fm(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 +2451 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 2506 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 Fl(=)p Fm(')f(is)h(tested)g(against)555 2560 +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 2615 y(name)i(b)q(efore)g(the)g +(\014rst)f(`)p Fl(-)p Fm('.)24 b(This)17 b(allo)o(ws)g +Fl(sun)f Fm(to)g(matc)o(h)h(b)q(oth)f Fl(sun)h Fm(and)555 +2670 y Fl(sun-cmd)p Fm(,)d(for)g(instance.)p eop +%%Page: 9 11 +9 10 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077 +b(9)315 149 y Fl(application)555 204 y Fm(The)11 b Fc(application)i +Fm(construct)e(is)g(used)h(to)e(include)j(application-sp)q(eci)q(\014c) +h(set-)555 259 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e +(Readline)i(library)f(sets)f(the)g Fc(application)555 +314 y(name)p Fm(,)g(and)g(y)o(ou)f(can)h(test)f(for)g(a)g(particular)h +(v)m(alue.)20 b(This)12 b(could)h(b)q(e)f(used)h(to)555 +369 y(bind)18 b(k)o(ey)e(sequences)i(to)d(functions)j(useful)f(for)f(a) +g(sp)q(eci\014c)i(program.)23 b(F)l(or)555 423 y(instance,)17 +b(the)g(follo)o(wing)g(command)g(adds)f(a)g(k)o(ey)h(sequence)g(that)f +(quotes)555 478 y(the)f(curren)o(t)g(or)g(previous)h(w)o(ord)e(in)j +(Bash:)675 543 y Fl($if)23 b(Bash)675 594 y(#)h(Quote)f(the)g(current)g +(or)h(previous)f(word)675 646 y("\\C-xq":)g("\\eb\\"\\ef\\"")675 +698 y($endif)75 778 y($endif)96 b Fm(This)16 b(command,)e(as)h(seen)h +(in)g(the)f(previous)h(example,)g(terminates)f(an)g Fl($if)f +Fm(command.)75 858 y Fl($else)120 b Fm(Commands)15 b(in)h(this)f(branc) +o(h)h(of)e(the)i Fl($if)e Fm(directiv)o(e)j(are)e(executed)h(if)g(the)f +(test)g(fails.)75 937 y Fl($include)48 b Fm(This)22 b(directiv)o(e)h +(tak)o(es)e(a)h(single)h(\014lename)g(as)e(an)h(argumen)o(t)f(and)h +(reads)f(commands)315 992 y(and)e(bindings)j(from)c(that)h(\014le.)33 +b(F)l(or)19 b(example,)i(the)e(follo)o(wing)h(directiv)o(e)h(reads)e +(from)315 1047 y(`)p Fl(/etc/inputrc)p Fm(':)435 1111 +y Fl($include)k(/etc/inputrc)75 1223 y Fb(1.3.3)30 b(Sample)20 +b(Init)h(File)137 1320 y Fm(Here)16 b(is)g(an)f(example)h(of)f(an)g +Fc(inputrc)k Fm(\014le.)i(This)16 b(illustrates)g(k)o(ey)f(binding,)i +(v)m(ariable)f(assignmen)o(t,)75 1374 y(and)f(conditional)i(syn)o(tax.) +p eop +%%Page: 10 12 +10 11 bop 75 -58 a Fm(10)1299 b(GNU)15 b(Readline)h(Library)195 +201 y Fl(#)24 b(This)f(file)g(controls)g(the)h(behaviour)e(of)i(line)f +(input)g(editing)g(for)195 253 y(#)h(programs)e(that)i(use)f(the)h(Gnu) +f(Readline)g(library.)47 b(Existing)22 b(programs)195 +305 y(#)i(include)f(FTP,)g(Bash,)g(and)h(Gdb.)195 357 +y(#)195 409 y(#)g(You)f(can)h(re-read)f(the)g(inputrc)g(file)g(with)h +(C-x)f(C-r.)195 461 y(#)h(Lines)f(beginning)g(with)g('#')g(are)h +(comments.)195 513 y(#)195 565 y(#)g(First,)f(include)g(any)g +(systemwide)g(bindings)f(and)i(variable)f(assignments)f(from)195 +616 y(#)i(/etc/Inputrc)195 668 y($include)f(/etc/Inputrc)195 +772 y(#)195 824 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.) +195 928 y(set)g(editing-mode)g(emacs)195 1032 y($if)g(mode=emacs)195 +1135 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 1145 21 38 v +195 1239 a(#)195 1291 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195 +1343 y(#)195 1395 y(#"\\M-OD":)190 b(backward-char)195 +1447 y(#"\\M-OC":)g(forward-char)195 1499 y(#"\\M-OA":)g +(previous-history)195 1550 y(#"\\M-OB":)g(next-history)195 +1602 y(#)195 1654 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195 +1706 y(#)195 1758 y("\\M-[D":)190 b(backward-char)195 +1810 y("\\M-[C":)g(forward-char)195 1862 y("\\M-[A":)g +(previous-history)195 1914 y("\\M-[B":)g(next-history)195 +1966 y(#)195 2017 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode) +195 2069 y(#)195 2121 y(#"\\M-\\C-OD":)165 b(backward-char)195 +2173 y(#"\\M-\\C-OC":)g(forward-char)195 2225 y(#"\\M-\\C-OA":)g +(previous-history)195 2277 y(#"\\M-\\C-OB":)g(next-history)195 +2329 y(#)195 2381 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode) +195 2433 y(#)195 2484 y(#"\\M-\\C-[D":)165 b(backward-char)195 +2536 y(#"\\M-\\C-[C":)g(forward-char)195 2588 y(#"\\M-\\C-[A":)g +(previous-history)195 2640 y(#"\\M-\\C-[B":)g(next-history)p +eop +%%Page: 11 13 +11 12 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055 +b(11)195 201 y Fl(C-q:)23 b(quoted-insert)195 305 y($endif)195 +409 y(#)h(An)f(old-style)g(binding.)47 b(This)23 b(happens)g(to)g(be)h +(the)f(default.)195 461 y(TAB:)g(complete)195 565 y(#)h(Macros)f(that)g +(are)h(convenient)e(for)h(shell)h(interaction)195 616 +y($if)f(Bash)195 668 y(#)h(edit)f(the)g(path)195 720 +y("\\C-xp":)g("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195 +772 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 824 y(#)h(and)f(move)g(to)h(just)f +(after)h(the)f(open)g(quote)195 876 y("\\C-x\\"":)g("\\"\\"\\C-b")195 +928 y(#)h(insert)f(a)g(backslash)g(\(testing)g(backslash)g(escapes)f +(in)i(sequences)f(and)g(macros\))195 980 y("\\C-x\\\\":)g("\\\\")195 +1032 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)195 +1083 y("\\C-xq":)g("\\eb\\"\\ef\\"")195 1135 y(#)h(Add)f(a)h(binding)f +(to)g(refresh)g(the)h(line,)f(which)g(is)h(unbound)195 +1187 y("\\C-xr":)f(redraw-current-line)195 1239 y(#)h(Edit)f(variable)g +(on)g(current)g(line.)195 1291 y("\\M-\\C-v":)f +("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)o(")195 1343 y($endif)195 +1447 y(#)i(use)f(a)h(visible)f(bell)g(if)h(one)f(is)h(available)195 +1499 y(set)f(bell-style)g(visible)195 1602 y(#)h(don't)f(strip)g +(characters)g(to)g(7)h(bits)f(when)h(reading)195 1654 +y(set)f(input-meta)g(on)195 1758 y(#)h(allow)f(iso-latin1)f(characters) +h(to)g(be)h(inserted)f(rather)g(than)g(converted)g(to)195 +1810 y(#)h(prefix-meta)e(sequences)195 1862 y(set)h(convert-meta)g(off) +195 1966 y(#)h(display)f(characters)f(with)h(the)h(eighth)f(bit)g(set)h +(directly)f(rather)g(than)195 2017 y(#)h(as)f(meta-prefixed)f +(characters)195 2069 y(set)h(output-meta)g(on)195 2173 +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 2225 y(#)h(user)f(if)h(he)f(wants)g +(to)h(see)f(all)h(of)f(them)195 2277 y(set)g(completion-query-items)e +(150)195 2381 y(#)j(For)f(FTP)195 2433 y($if)g(Ftp)195 +2484 y("\\C-xg":)g("get)g(\\M-?")195 2536 y("\\C-xt":)g("put)g(\\M-?") +195 2588 y("\\M-.":)g(yank-last-arg)195 2640 y($endif)p +eop +%%Page: 12 14 +12 13 bop 75 -58 a Fm(12)1299 b(GNU)15 b(Readline)h(Library)75 +149 y Fk(1.4)33 b(Bindable)24 b(Readline)f(Commands)137 +247 y Fm(This)17 b(section)f(describ)q(es)h(Readline)g(commands)f(that) +e(ma)o(y)h(b)q(e)i(b)q(ound)f(to)f(k)o(ey)h(sequences.)22 +b(Com-)75 301 y(mand)15 b(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)f(default.)137 +369 y(In)f(the)f(follo)o(wing)h(descriptions,)h Fc(p)q(oin)o(t)f +Fm(refers)f(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)j(and)e +Fc(mark)i Fm(refers)75 424 y(to)k(a)g(cursor)g(p)q(osition)h(sa)o(v)o +(ed)f(b)o(y)h(the)f Fl(set-mark)g Fm(command.)32 b(The)20 +b(text)f(b)q(et)o(w)o(een)g(the)h(p)q(oin)o(t)g(and)75 +479 y(mark)15 b(is)g(referred)h(to)e(as)h(the)g Fc(region)p +Fm(.)75 593 y Fb(1.4.1)30 b(Commands)21 b(F)-5 b(or)19 +b(Mo)n(ving)75 716 y Fl(beginning-of-line)13 b(\(C-a\))315 +771 y Fm(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g(line.) +75 864 y Fl(end-of-line)f(\(C-e\))315 919 y Fm(Mo)o(v)o(e)g(to)h(the)g +(end)h(of)f(the)g(line.)75 1012 y Fl(forward-char)f(\(C-f\))315 +1067 y Fm(Mo)o(v)o(e)g(forw)o(ard)g(a)h(c)o(haracter.)75 +1160 y Fl(backward-char)e(\(C-b\))315 1215 y Fm(Mo)o(v)o(e)h(bac)o(k)h +(a)g(c)o(haracter.)75 1309 y Fl(forward-word)f(\(M-f\))315 +1363 y Fm(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 +1418 y(digits.)75 1512 y Fl(backward-word)e(\(M-b\))315 +1566 y Fm(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 +1621 y(of)e(letters)g(and)g(digits.)75 1715 y Fl(clear-screen)f +(\(C-l\))315 1769 y Fm(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 1824 y(of)i(the)g(screen.)75 1918 y Fl(redraw-current-line)e +(\(\))315 1972 y Fm(Refresh)i(the)g(curren)o(t)g(line.)22 +b(By)15 b(default,)h(this)f(is)h(un)o(b)q(ound.)75 2086 +y Fb(1.4.2)30 b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f +(History)75 2209 y Fl(accept-line)14 b(\(Newline)g(or)h(Return\))315 +2264 y Fm(Accept)j(the)g(line)h(regardless)f(of)f(where)h(the)g(cursor) +f(is.)27 b(If)18 b(this)g(line)h(is)g(non-empt)o(y)l(,)f(it)315 +2319 y(ma)o(y)d(b)q(e)i(added)f(to)g(the)g(history)g(list)g(for)g +(future)g(recall)h(with)f Fl(add_history\(\))p Fm(.)k(If)d(this)315 +2374 y(line)g(is)f(a)e(mo)q(di\014ed)j(history)e(line,)i(the)e(history) +g(line)i(is)f(restored)e(to)h(its)g(original)i(state.)75 +2467 y Fl(previous-history)c(\(C-p\))315 2522 y Fm(Mo)o(v)o(e)h(`bac)o +(k')h(through)f(the)i(history)f(list,)g(fetc)o(hing)h(the)f(previous)h +(command.)75 2615 y Fl(next-history)e(\(C-n\))315 2670 +y Fm(Mo)o(v)o(e)g(`forw)o(ard')f(through)i(the)h(history)f(list,)g +(fetc)o(hing)h(the)f(next)h(command.)p eop +%%Page: 13 15 +13 14 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055 +b(13)75 149 y Fl(beginning-of-history)12 b(\(M-<\))315 +204 y Fm(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)i(in)f(the)f(history)l +(.)75 307 y Fl(end-of-history)e(\(M->\))315 362 y Fm(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 466 y Fl +(reverse-search-history)c(\(C-r\))315 520 y Fm(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 575 y(tory)e(as)h(necessary)l(.)20 +b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 678 +y Fl(forward-search-history)c(\(C-s\))315 733 y Fm(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 788 y(history)g(as)g(necessary)l(.)20 +b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 891 +y Fl(non-incremental-reverse-se)o(arch-hi)o(story)c(\(M-p\))315 +946 y Fm(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 +1001 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 1056 +y(user.)75 1159 y Fl(non-incremental-forward-se)o(arch-hi)o(story)12 +b(\(M-n\))315 1214 y Fm(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 1268 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 +1323 y(user.)75 1427 y Fl(history-search-forward)f(\(\))315 +1481 y Fm(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 +1536 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 1591 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75 +1694 y Fl(history-search-backward)c(\(\))315 1749 y Fm(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 1804 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 +1859 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75 +1962 y Fl(yank-nth-arg)e(\(M-C-y\))315 2017 y Fm(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 2071 y(the)j(previous)h(line\))g(at)e +(p)q(oin)o(t.)21 b(With)15 b(an)g(argumen)o(t)f Fc(n)p +Fm(,)h(insert)g(the)g Fc(n)p Fm(th)g(w)o(ord)g(from)f(the)315 +2126 y(previous)g(command)g(\(the)f(w)o(ords)f(in)j(the)e(previous)i +(command)e(b)q(egin)i(with)e(w)o(ord)g(0\).)19 b(A)315 +2181 y(negativ)o(e)13 b(argumen)o(t)f(inserts)h(the)g +Fc(n)p Fm(th)g(w)o(ord)f(from)g(the)h(end)h(of)e(the)h(previous)g +(command.)75 2284 y Fl(yank-last-arg)g(\(M-.)i(or)g(M-_\))315 +2339 y Fm(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 2394 +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 Fl(yank-nth-arg)p Fm(.)j(Succes-)315 +2449 y(siv)o(e)f(calls)g(to)f Fl(yank-last-arg)e Fm(mo)o(v)o(e)i(bac)o +(k)g(through)g(the)g(history)g(list,)i(inserting)f(the)315 +2503 y(last)d(argumen)o(t)g(of)f(eac)o(h)i(line)g(in)g(turn.)75 +2630 y Fb(1.4.3)30 b(Commands)21 b(F)-5 b(or)19 b(Changing)i(T)-5 +b(ext)p eop +%%Page: 14 16 +14 15 bop 75 -58 a Fm(14)1299 b(GNU)15 b(Readline)h(Library)75 +149 y Fl(delete-char)e(\(C-d\))315 204 y Fm(Delete)20 +b(the)g(c)o(haracter)e(at)h(p)q(oin)o(t.)33 b(If)20 b(p)q(oin)o(t)g(is) +g(at)e(the)i(b)q(eginning)i(of)d(the)g(line,)j(there)315 +259 y(are)c(no)h(c)o(haracters)e(in)j(the)e(line,)j(and)e(the)f(last)h +(c)o(haracter)e(t)o(yp)q(ed)i(w)o(as)f(not)g(b)q(ound)i(to)315 +314 y Fl(delete-char)p Fm(,)13 b(then)j(return)f Fh(eof)p +Fm(.)75 406 y Fl(backward-delete-char)d(\(Rubout\))315 +460 y Fm(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 +515 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75 +607 y Fl(forward-backward-delete-ch)o(ar)12 b(\(\))315 +662 y Fm(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 +717 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 +771 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 863 +y Fl(quoted-insert)e(\(C-q)i(or)g(C-v\))315 918 y Fm(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 973 +y(sequences)f(lik)o(e)h Fg(C-q)p Fm(,)d(for)h(example.)75 +1065 y Fl(tab-insert)f(\(M-)401 1063 y Ff(h)p 412 1037 +74 2 v 412 1065 a Fe(T)m(AB)p 412 1072 V 484 1063 a Ff(i)499 +1065 y Fl(\))315 1119 y Fm(Insert)h(a)g(tab)g(c)o(haracter.)75 +1211 y Fl(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315 +1266 y Fm(Insert)g(y)o(ourself.)75 1358 y Fl(transpose-chars)e(\(C-t\)) +315 1413 y Fm(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 +1467 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 1522 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 1577 y(ha)o(v)o(e)k(no)g(e\013ect.)75 +1669 y Fl(transpose-words)e(\(M-t\))315 1724 y Fm(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 1778 +y(w)o(ord)f(as)f(w)o(ell.)75 1870 y Fl(upcase-word)g(\(M-u\))315 +1925 y Fm(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 +1980 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 2072 y Fl(downcase-word)d(\(M-l\))315 +2126 y Fm(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 2181 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 2273 y Fl(capitalize-word)e(\(M-c\))315 +2328 y Fm(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 +2383 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 2494 y Fb(1.4.4)30 b(Killing)20 b(And)h(Y)-5 +b(anking)75 2615 y Fl(kill-line)14 b(\(C-k\))315 2670 +y Fm(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.)p eop +%%Page: 15 17 +15 16 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055 +b(15)75 149 y Fl(backward-kill-line)13 b(\(C-x)h(Rubout\))315 +204 y Fm(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g +(line.)75 295 y Fl(unix-line-discard)e(\(C-u\))315 349 +y Fm(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.)75 440 y Fl(kill-whole-line)e +(\(\))315 495 y Fm(Kill)20 b(all)g(c)o(haracters)d(on)h(the)h(curren)o +(t)f(line,)i(no)e(matter)g(where)g(p)q(oin)o(t)h(is.)29 +b(By)19 b(default,)315 549 y(this)d(is)f(un)o(b)q(ound.)75 +640 y Fl(kill-word)f(\(M-d\))315 695 y Fm(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 750 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 +Fl(forward-word)p Fm(.)75 840 y Fl(backward-kill-word)e(\(M-)592 +838 y Ff(h)p 603 812 73 2 v 603 840 a Fe(DEL)p 603 848 +V 674 838 a Ff(i)689 840 y Fl(\))315 895 y Fm(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 Fl(backward-word)p Fm(.)75 985 y Fl(unix-word-rubout)f +(\(C-w\))315 1040 y Fm(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 1095 y(text)f(is)g(sa)o(v)o(ed)g(on)g(the)h +(kill-ring.)75 1185 y Fl(delete-horizontal-space)c(\(\))315 +1240 y Fm(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 1330 +y Fl(kill-region)e(\(\))315 1385 y Fm(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 1476 y Fl(copy-region-as-kill)d(\(\))315 +1530 y Fm(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 1585 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q +(ound.)75 1676 y Fl(copy-backward-word)d(\(\))315 1730 +y Fm(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 +1785 y(same)c(as)g Fl(backward-word)p Fm(.)j(By)d(default,)g(this)h +(command)f(is)h(un)o(b)q(ound.)75 1876 y Fl(copy-forward-word)d(\(\)) +315 1930 y Fm(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 1985 y(same)g(as)g Fl(forward-word)p Fm(.)j(By)d(default,)h +(this)f(command)g(is)h(un)o(b)q(ound.)75 2076 y Fl(yank)f(\(C-y\))315 +2131 y Fm(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(p)q(oin)o(t.)75 2221 y Fl(yank-pop)g(\(M-y\))315 +2276 y Fm(Rotate)i(the)h(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 +2331 y(command)d(is)h Fl(yank)e Fm(or)h Fl(yank-pop)p +Fm(.)75 2441 y Fb(1.4.5)30 b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts) +75 2560 y Fl(digit-argument)13 b(\()p Fg(M-0)p Fl(,)i +Fg(M-1)p Fl(,)f(...)h Fg(M--)p Fl(\))315 2615 y Fm(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 2670 y Fg(M--)h Fm(starts)f(a)h(negativ)o(e)g +(argumen)o(t.)p eop +%%Page: 16 18 +16 17 bop 75 -58 a Fm(16)1299 b(GNU)15 b(Readline)h(Library)75 +149 y Fl(universal-argument)d(\(\))315 204 y Fm(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 +259 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 314 +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 Fl(universal-argument)315 369 +y Fm(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 +423 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)315 +478 y(or)d(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 +533 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 +588 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 +643 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 762 y Fb(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 892 y Fl(complete)14 b(\()305 890 y Ff(h)p 317 +864 74 2 v 317 892 a Fe(T)m(AB)p 317 900 V 389 890 a +Ff(i)404 892 y Fl(\))315 947 y Fm(A)o(ttempt)c(to)h(p)q(erform)g +(completion)i(on)e(the)g(text)g(b)q(efore)h(p)q(oin)o(t.)19 +b(The)11 b(actual)h(completion)315 1002 y(p)q(erformed)j(is)h +(application-sp)q(eci\014)q(c.)23 b(The)15 b(default)h(is)g(\014lename) +g(completion.)75 1099 y Fl(possible-completions)c(\(M-?\))315 +1154 y Fm(List)k(the)f(p)q(ossible)i(completions)f(of)f(the)g(text)g(b) +q(efore)h(p)q(oin)o(t.)75 1251 y Fl(insert-completions)d(\(M-*\))315 +1306 y Fm(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 +1361 y(b)o(y)f Fl(possible-completions)p Fm(.)75 1458 +y Fl(menu-complete)e(\(\))315 1513 y Fm(Similar)g(to)f +Fl(complete)p Fm(,)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 1568 y(from)k(the)h(list) +h(of)e(p)q(ossible)j(completions.)32 b(Rep)q(eated)19 +b(execution)h(of)f Fl(menu-complete)315 1623 y Fm(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 1678 y(A)o(t)d(the)g(end)h(of)f(the)h(list)g +(of)f(completions,)i(the)e(b)q(ell)j(is)d(rung)h(\(sub)s(ject)f(to)f +(the)i(setting)315 1732 y(of)f Fl(bell-style)p Fm(\))e(and)i(the)g +(original)h(text)f(is)g(restored.)28 b(An)19 b(argumen)o(t)e(of)g +Fc(n)i Fm(mo)o(v)o(es)e Fc(n)315 1787 y Fm(p)q(ositions)h(forw)o(ard)e +(in)j(the)e(list)h(of)f(matc)o(hes;)h(a)f(negativ)o(e)g(argumen)o(t)g +(ma)o(y)g(b)q(e)h(used)g(to)315 1842 y(mo)o(v)o(e)g(bac)o(kw)o(ard)h +(through)g(the)g(list.)32 b(This)20 b(command)f(is)h(in)o(tended)g(to)f +(b)q(e)h(b)q(ound)g(to)315 1895 y Ff(h)p 327 1869 V 327 +1897 a Fe(T)m(AB)p 327 1905 V 399 1895 a Ff(i)414 1897 +y Fm(,)15 b(but)g(is)h(un)o(b)q(ound)g(b)o(y)f(default.)75 +1994 y Fl(delete-char-or-list)e(\(\))315 2049 y Fm(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 2104 y(\(lik)o(e)i Fl(delete-char)p +Fm(\).)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 Fl(possible-)315 2159 y(completions)p +Fm(.)k(This)e(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.)75 +2278 y Fb(1.4.7)30 b(Keyb)r(oard)20 b(Macros)75 2408 +y Fl(start-kbd-macro)13 b(\(C-x)i(\(\))315 2463 y Fm(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 2560 y Fl(end-kbd-macro)e(\(C-x)i(\)\))315 +2615 y Fm(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 2670 y(de\014nition.)p eop +%%Page: 17 19 +17 18 bop 75 -58 a Fm(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055 +b(17)75 149 y Fl(call-last-kbd-macro)13 b(\(C-x)h(e\))315 +204 y Fm(Re-execute)k(the)g(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 +259 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.)75 368 y Fb(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands) +75 486 y Fl(re-read-init-file)13 b(\(C-x)h(C-r\))315 +541 y Fm(Read)d(in)g(the)g(con)o(ten)o(ts)g(of)f(the)h +Fc(inputrc)k Fm(\014le,)d(and)g(incorp)q(orate)f(an)o(y)f(bindings)j +(or)e(v)m(ariable)315 596 y(assignmen)o(ts)k(found)h(there.)75 +684 y Fl(abort)e(\(C-g\))315 739 y Fm(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 794 y(setting)i(of)g Fl(bell-style)p +Fm(\).)75 883 y Fl(do-uppercase-version)d(\(M-a,)j(M-b,)f(M-)p +Fc(x)p Fl(,)h(...\))315 938 y Fm(If)f(the)g(meta\014ed)g(c)o(haracter)f +Fc(x)k Fm(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 993 y(corresp)q(onding)j(upp)q(ercase)g(c)o +(haracter.)75 1082 y Fl(prefix-meta)e(\()377 1080 y Ff(h)p +389 1054 70 2 v 389 1082 a Fe(ESC)p 389 1089 V 456 1080 +a Ff(i)471 1082 y Fl(\))315 1136 y Fm(Metafy)k(the)h(next)g(c)o +(haracter)f(t)o(yp)q(ed.)30 b(This)20 b(is)f(for)f(k)o(eyb)q(oards)h +(without)g(a)f(meta)g(k)o(ey)l(.)315 1191 y(T)o(yping)e(`)485 +1189 y Ff(h)p 496 1163 V 496 1191 a Fe(ESC)p 496 1199 +V 563 1189 a Ff(i)593 1191 y Fl(f)p Fm(')f(is)h(equiv)m(alen)o(t)h(to)d +(t)o(yping)i Fg(M-f)p Fm(.)75 1280 y Fl(undo)f(\(C-_)f(or)h(C-x)g +(C-u\))315 1335 y Fm(Incremen)o(tal)h(undo,)f(separately)h(remem)o(b)q +(ered)g(for)e(eac)o(h)h(line.)75 1424 y Fl(revert-line)f(\(M-r\))315 +1479 y Fm(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 Fl(undo)f +Fm(command)315 1533 y(enough)g(times)f(to)g(get)f(bac)o(k)h(to)g(the)g +(b)q(eginning.)75 1622 y Fl(tilde-expand)f(\(M-~\))315 +1677 y Fm(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o +(ord.)75 1766 y Fl(set-mark)f(\(C-@\))315 1821 y Fm(Set)i(the)h(mark)f +(to)f(the)i(p)q(oin)o(t.)24 b(If)17 b(a)f(n)o(umeric)h(argumen)o(t)f +(is)g(supplied,)j(the)e(mark)e(is)i(set)315 1876 y(to)e(that)f(p)q +(osition.)75 1965 y Fl(exchange-point-and-mark)e(\(C-x)j(C-x\))315 +2020 y Fm(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 2074 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 2163 y Fl(character-search)e +(\(C-]\))315 2218 y Fm(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 2273 y(A)j(negativ)o(e)h(coun)o(t)f(searc)o(hes)g +(for)f(previous)i(o)q(ccurrences.)75 2362 y Fl +(character-search-backward)c(\(M-C-]\))315 2417 y Fm(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 2471 +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 2560 y Fl(insert-comment)d(\(M-#\)) +315 2615 y Fm(The)19 b(v)m(alue)i(of)e(the)g Fl(comment-begin)e +Fm(v)m(ariable)k(is)f(inserted)g(at)e(the)i(b)q(eginning)h(of)e(the)315 +2670 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.)p eop +%%Page: 18 20 +18 19 bop 75 -58 a Fm(18)1299 b(GNU)15 b(Readline)h(Library)75 +149 y Fl(dump-functions)d(\(\))315 204 y Fm(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)g +(output)f(stream.)315 259 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 314 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g +Fc(inputrc)k Fm(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o +(y)f(default.)75 406 y Fl(dump-variables)e(\(\))315 461 +y Fm(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)h(output)e(stream.)315 +516 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 +570 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g Fc(inputrc)k +Fm(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.) +75 663 y Fl(dump-macros)f(\(\))315 717 y Fm(Prin)o(t)j(all)h(of)e(the)h +(Readline)h(k)o(ey)f(sequences)h(b)q(ound)g(to)e(macros)g(and)h(the)g +(strings)g(they)315 772 y(output.)26 b(If)18 b(a)f(n)o(umeric)h +(argumen)o(t)f(is)h(supplied,)i(the)d(output)g(is)h(formatted)e(in)j +(suc)o(h)e(a)315 827 y(w)o(a)o(y)d(that)g(it)i(can)f(b)q(e)g(made)g +(part)g(of)f(an)h Fc(inputrc)k Fm(\014le.)i(This)15 b(command)g(is)h +(un)o(b)q(ound)g(b)o(y)315 882 y(default.)75 1010 y Fk(1.5)33 +b(Readline)23 b(vi)h(Mo)r(de)137 1107 y Fm(While)13 b(the)f(Readline)i +(library)e(do)q(es)g(not)g(ha)o(v)o(e)f(a)h(full)h(set)f(of)f +Fl(vi)g Fm(editing)j(functions,)f(it)f(do)q(es)g(con)o(tain)75 +1161 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)h Fl(vi)f Fm(mo)q(de)g(b)q(eha)o(v)o(es)g(as)g +(sp)q(eci\014ed)i(in)75 1216 y(the)c Fh(posix)g Fm(1003.2)f(standard.) +137 1284 y(In)h(order)g(to)f(switc)o(h)g(in)o(teractiv)o(ely)i(b)q(et)o +(w)o(een)f Fl(emacs)e Fm(and)i Fl(vi)f Fm(editing)i(mo)q(des,)f(use)f +(the)h(command)75 1338 y Fg(M-C-j)j Fm(\(b)q(ound)i(to)e +(emacs-editing-mo)q(de)j(when)e(in)h Fl(vi)f Fm(mo)q(de)g(and)g(to)f +(vi-editing-mo)q(de)k(in)e Fl(emacs)75 1393 y Fm(mo)q(de\).)g(The)15 +b(Readline)i(default)f(is)f Fl(emacs)g Fm(mo)q(de.)137 +1460 y(When)h(y)o(ou)e(en)o(ter)h(a)g(line)i(in)e Fl(vi)g +Fm(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 1515 y(had)e(t)o(yp)q(ed)h(an)f(`)p +Fl(i)p Fm('.)18 b(Pressing)608 1513 y Ff(h)p 620 1487 +70 2 v 620 1515 a Fe(ESC)p 620 1523 V 687 1513 a Ff(i)715 +1515 y Fm(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 1570 y(text)i(of)h(the)g(line)h +(with)g(the)f(standard)f Fl(vi)h Fm(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 1625 +y(`)p Fl(k)p Fm(')14 b(and)i(subsequen)o(t)f(lines)i(with)f(`)p +Fl(j)p Fm(',)e(and)h(so)g(forth.)p eop +%%Page: -1 21 +-1 20 bop 1862 -58 a Fm(i)75 149 y Fi(T)-7 b(able)27 +b(of)f(Con)n(ten)n(ts)75 320 y Fk(1)67 b(Command)22 b(Line)i(Editing)d +Fa(.)10 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h +(.)f(.)g(.)g(.)42 b Fk(1)224 389 y Fm(1.1)j(In)o(tro)q(duction)16 +b(to)f(Line)h(Editing)e Fd(.)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 Fm(1)224 444 y(1.2)45 b(Readline)16 b(In)o(teraction)8 +b Fd(.)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 Fm(1)374 499 y(1.2.1)44 b(Readline)16 +b(Bare)f(Essen)o(tials)f Fd(.)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 Fm(1)374 553 y(1.2.2)44 b(Readline)16 b(Mo)o(v)o(emen)o(t)e(Commands) +7 b Fd(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)21 b Fm(2)374 608 y(1.2.3)44 b(Readline)16 b(Killing)i(Commands) +11 b Fd(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)25 b Fm(2)374 663 y(1.2.4)44 b(Readline)16 +b(Argumen)o(ts)c Fd(.)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 Fm(3)374 718 y(1.2.5)44 b(Searc)o(hing)16 b(for)e(Commands)h(in)h +(the)f(History)e Fd(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27 +b Fm(3)224 773 y(1.3)45 b(Readline)16 b(Init)h(File)e +Fd(.)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 Fm(4)374 827 y(1.3.1)44 b(Readline)16 +b(Init)g(File)h(Syn)o(tax)7 b Fd(.)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 Fm(4)374 882 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)5 +b Fd(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)19 b Fm(8)374 937 y(1.3.3)44 b(Sample)16 +b(Init)g(File)11 b Fd(.)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 Fm(9)224 992 y(1.4)45 b(Bindable)17 b(Readline)g(Commands) +6 b Fd(.)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 Fm(12)374 +1046 y(1.4.1)44 b(Commands)14 b(F)l(or)h(Mo)o(ving)e +Fd(.)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 Fm(12)374 1101 y(1.4.2)44 +b(Commands)14 b(F)l(or)h(Manipulating)i(The)e(History)9 +b Fd(.)e(.)h(.)f(.)h(.)f(.)h(.)24 b Fm(12)374 1156 y(1.4.3)44 +b(Commands)14 b(F)l(or)h(Changing)h(T)l(ext)e Fd(.)8 +b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30 +b Fm(13)374 1211 y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)9 +b Fd(.)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 Fm(14)374 +1266 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)c +Fd(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)27 +b Fm(15)374 1320 y(1.4.6)44 b(Letting)15 b(Readline)i(T)o(yp)q(e)e(F)l +(or)g(Y)l(ou)10 b Fd(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)25 b Fm(16)374 1375 y(1.4.7)44 b(Keyb)q(oard)15 +b(Macros)6 b Fd(.)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 Fm(16)374 1430 y(1.4.8)44 b(Some)15 b(Miscellaneous)i(Commands)7 +b Fd(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) +22 b Fm(17)224 1485 y(1.5)45 b(Readline)16 b(vi)g(Mo)q(de)e +Fd(.)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 Fm(18)p eop +%%Page: -2 22 +-2 21 bop 75 -58 a Fm(ii)1321 b(GNU)15 b(Readline)h(Library)p +eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF |