summaryrefslogtreecommitdiff
path: root/lib/readline
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2011-12-03 12:52:47 -0500
committerChet Ramey <chet.ramey@case.edu>2011-12-03 12:52:47 -0500
commit5e13499c55639e93fbe46ce3dc053d74e5578cf9 (patch)
treefa9727e25343ed0d726c0690e3e255f9f696d422 /lib/readline
parentd3a24ed242e91e6afb53b2cbf38b89667637168d (diff)
downloadbash-5e13499c55639e93fbe46ce3dc053d74e5578cf9.tar.gz
commit bash-20040107 snapshot
Diffstat (limited to 'lib/readline')
-rw-r--r--lib/readline/-i0
-rw-r--r--lib/readline/Makefile.in8
-rw-r--r--lib/readline/NEW/xxx-autocomplete39
l---------[-rw-r--r--]lib/readline/ansi_stdlib.h55
-rw-r--r--lib/readline/complete.c22
-rw-r--r--lib/readline/display.c53
-rw-r--r--lib/readline/doc/Makefile.in144
-rw-r--r--lib/readline/doc/Makefile.old76
l---------[-rw-r--r--]lib/readline/doc/fdl.texi453
-rw-r--r--lib/readline/doc/history.3663
-rw-r--r--lib/readline/doc/history.aux66
-rw-r--r--lib/readline/doc/history.bt0
-rw-r--r--lib/readline/doc/history.cp6
-rw-r--r--lib/readline/doc/history.cps10
-rw-r--r--lib/readline/doc/history.dvibin0 -> 79868 bytes
-rw-r--r--lib/readline/doc/history.fn0
-rw-r--r--lib/readline/doc/history.html2270
-rw-r--r--lib/readline/doc/history.info1317
-rw-r--r--lib/readline/doc/history.ky0
-rw-r--r--lib/readline/doc/history.log172
-rw-r--r--lib/readline/doc/history.pg0
-rw-r--r--lib/readline/doc/history.ps2404
-rw-r--r--lib/readline/doc/history.toc23
-rw-r--r--lib/readline/doc/history.tp0
-rw-r--r--lib/readline/doc/history.vr45
-rw-r--r--lib/readline/doc/history.vrs56
-rw-r--r--lib/readline/doc/readline.31282
-rw-r--r--lib/readline/doc/readline.dvibin0 -> 270424 bytes
-rw-r--r--lib/readline/doc/readline.html6595
-rw-r--r--lib/readline/doc/readline.info4167
-rw-r--r--lib/readline/doc/readline.ps5957
-rw-r--r--lib/readline/doc/rlman.aux156
-rw-r--r--lib/readline/doc/rlman.bt0
-rw-r--r--lib/readline/doc/rlman.cp12
-rw-r--r--lib/readline/doc/rlman.cps22
-rw-r--r--lib/readline/doc/rlman.fn263
-rw-r--r--lib/readline/doc/rlman.fns282
-rw-r--r--lib/readline/doc/rlman.ky0
-rw-r--r--lib/readline/doc/rlman.log213
-rw-r--r--lib/readline/doc/rlman.pg0
-rw-r--r--lib/readline/doc/rlman.toc53
-rw-r--r--lib/readline/doc/rlman.tp0
-rw-r--r--lib/readline/doc/rlman.vr0
-rw-r--r--lib/readline/doc/rltech.texi20
-rw-r--r--lib/readline/doc/rluserman.aux72
-rw-r--r--lib/readline/doc/rluserman.bt0
-rw-r--r--lib/readline/doc/rluserman.cp10
-rw-r--r--lib/readline/doc/rluserman.cps18
-rw-r--r--lib/readline/doc/rluserman.dvibin0 -> 91652 bytes
-rw-r--r--lib/readline/doc/rluserman.fn74
-rw-r--r--lib/readline/doc/rluserman.fns94
-rw-r--r--lib/readline/doc/rluserman.html2770
-rw-r--r--lib/readline/doc/rluserman.info1726
-rw-r--r--lib/readline/doc/rluserman.ky0
-rw-r--r--lib/readline/doc/rluserman.log197
-rw-r--r--lib/readline/doc/rluserman.pg0
-rw-r--r--lib/readline/doc/rluserman.ps2702
-rw-r--r--lib/readline/doc/rluserman.toc25
-rw-r--r--lib/readline/doc/rluserman.tp0
-rw-r--r--lib/readline/doc/rluserman.vr22
-rw-r--r--lib/readline/doc/rluserman.vrs34
l---------lib/readline/doc/texi2dvi1
l---------lib/readline/doc/texi2html1
l---------lib/readline/doc/texinfo.tex1
-rw-r--r--lib/readline/doc/version.texi6
-rw-r--r--lib/readline/histexpand.c5
l---------[-rw-r--r--]lib/readline/posixdir.h58
l---------[-rw-r--r--]lib/readline/posixjmp.h41
l---------[-rw-r--r--]lib/readline/posixstat.h143
-rw-r--r--lib/readline/readline.h21
-rw-r--r--lib/readline/savestring.c3
-rw-r--r--lib/readline/shell.c4
l---------[-rw-r--r--]lib/readline/tilde.c459
l---------[-rw-r--r--]lib/readline/tilde.h79
-rw-r--r--lib/readline/vi_mode.c3
-rw-r--r--lib/readline/vi_mode.c.save1485
76 files changed, 35642 insertions, 1316 deletions
diff --git a/lib/readline/-i b/lib/readline/-i
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/-i
diff --git a/lib/readline/Makefile.in b/lib/readline/Makefile.in
index ce91f46d..a1183043 100644
--- a/lib/readline/Makefile.in
+++ b/lib/readline/Makefile.in
@@ -20,6 +20,14 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
+PACKAGE = @PACKAGE_NAME@
+VERSION = @PACKAGE_VERSION@
+
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+
srcdir = @srcdir@
VPATH = .:@srcdir@
topdir = @top_srcdir@
diff --git a/lib/readline/NEW/xxx-autocomplete b/lib/readline/NEW/xxx-autocomplete
new file mode 100644
index 00000000..fdc2ad07
--- /dev/null
+++ b/lib/readline/NEW/xxx-autocomplete
@@ -0,0 +1,39 @@
+#if defined (READLINE_AUTOCOMPLETE)
+/* Return the list of completions for the text between START and END.
+ FOUND_QUOTE is non-zero if we're completing a quoted word; if so,
+ QUOTE_CHAR is the delimiter. If NONTRIVIAL_P is nonzero, it gets
+ set to a flag saying whether or not the completion added anything
+ to the word. Not part of rl_complete_internal because it's too
+ hard to separate functions without postprocess_matches possibly being
+ called twice; here to support the autocompletion code. */
+char **
+_rl_generate_completions (start, end, found_quote, quote_char, nontrivial_p)
+ int start, end, found_quote, quote_char, *nontrivial_p;
+{
+ rl_compentry_func_t *our_func;
+ char *text;
+ char **matches;
+
+ our_func = rl_completion_entry_function
+ ? rl_completion_entry_function
+ : rl_filename_completion_function;
+ text = rl_copy_text (start, end);
+ matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
+
+ /* *nontrivial_p is set if the common prefix adds something to the word
+ being completed. */
+ if (nontrivial_p)
+ *nontrivial_p = matches && strcmp (text, matches[0]) != 0;
+
+ free (text);
+
+ /* Postprocess the matches */
+ if (matches == 0)
+ return (char **)0;
+
+ if (postprocess_matches (&matches, rl_filename_completion_desired) == 0)
+ return (char **)0;
+
+ return 0;
+}
+#endif
diff --git a/lib/readline/ansi_stdlib.h b/lib/readline/ansi_stdlib.h
index db13cd23..0bfba502 100644..120000
--- a/lib/readline/ansi_stdlib.h
+++ b/lib/readline/ansi_stdlib.h
@@ -1,54 +1 @@
-/* ansi_stdlib.h -- An ANSI Standard stdlib.h. */
-/* A minimal stdlib.h containing extern declarations for those functions
- that bash uses. */
-
-/* Copyright (C) 1993 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 2, or (at your option) any later
- version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- for more details.
-
- You should have received a copy of the GNU General Public License along
- with Bash; see the file COPYING. If not, write to the Free Software
- Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_STDLIB_H_)
-#define _STDLIB_H_ 1
-
-/* String conversion functions. */
-extern int atoi ();
-
-extern double atof ();
-extern double strtod ();
-
-/* Memory allocation functions. */
-/* Generic pointer type. */
-#ifndef PTR_T
-
-#if defined (__STDC__)
-# define PTR_T void *
-#else
-# define PTR_T char *
-#endif
-
-#endif /* PTR_T */
-
-extern PTR_T malloc ();
-extern PTR_T realloc ();
-extern void free ();
-
-/* Other miscellaneous functions. */
-extern void abort ();
-extern void exit ();
-extern char *getenv ();
-extern void qsort ();
-
-#endif /* _STDLIB_H */
+../../include/ansi_stdlib.h \ No newline at end of file
diff --git a/lib/readline/complete.c b/lib/readline/complete.c
index d72d2468..c14b757b 100644
--- a/lib/readline/complete.c
+++ b/lib/readline/complete.c
@@ -288,6 +288,19 @@ int rl_completion_suppress_append = 0;
default is a space. */
int rl_completion_append_character = ' ';
+/* If non-zero, the completion functions don't append any closing quote.
+ This is set to 0 by rl_complete_internal and may be changed by an
+ application-specific completion function. */
+int rl_completion_suppress_quote = 0;
+
+/* Set to any quote character readline thinks it finds before any application
+ completion function is called. */
+int rl_completion_quote_character;
+
+/* Set to a non-zero value if readline found quoting anywhere in the word to
+ be completed; set before any application completion function is called. */
+int rl_completion_found_quote;
+
/* If non-zero, a slash will be appended to completed filenames that are
symbolic links to directory names, subject to the value of the
mark-directories variable (which is user-settable). This exists so
@@ -382,7 +395,7 @@ set_completion_defaults (what_to_do)
rl_filename_completion_desired = 0;
rl_filename_quoting_desired = 1;
rl_completion_type = what_to_do;
- rl_completion_suppress_append = 0;
+ rl_completion_suppress_append = rl_completion_suppress_quote = 0;
/* The completion entry function may optionally change this. */
rl_completion_mark_symlink_dirs = _rl_complete_mark_symlink_dirs;
@@ -891,6 +904,9 @@ gen_completion_matches (text, start, end, our_func, found_quote, quote_char)
{
char **matches, *temp;
+ rl_completion_found_quote = found_quote;
+ rl_completion_quote_character = quote_char;
+
/* If the user wants to TRY to complete, but then wants to give
up and use the default completion function, they set the
variable rl_attempted_completion_function. */
@@ -1443,7 +1459,8 @@ append_to_match (text, delimiter, quote_char, nontrivial_match)
struct stat finfo;
temp_string_index = 0;
- if (quote_char && rl_point && rl_line_buffer[rl_point - 1] != quote_char)
+ if (quote_char && rl_point && rl_completion_suppress_quote == 0 &&
+ rl_line_buffer[rl_point - 1] != quote_char)
temp_string[temp_string_index++] = quote_char;
if (delimiter)
@@ -1575,7 +1592,6 @@ rl_complete_internal (what_to_do)
our_func = rl_completion_entry_function
? rl_completion_entry_function
: rl_filename_completion_function;
-
/* We now look backwards for the start of a filename/variable word. */
end = rl_point;
found_quote = delimiter = 0;
diff --git a/lib/readline/display.c b/lib/readline/display.c
index c1cd9544..0052e414 100644
--- a/lib/readline/display.c
+++ b/lib/readline/display.c
@@ -867,7 +867,7 @@ rl_redisplay ()
#endif
_rl_output_some_chars (local_prompt, nleft);
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos = _rl_col_width(local_prompt, 0, nleft);
+ _rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft);
else
_rl_last_c_pos = nleft;
}
@@ -1126,25 +1126,36 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
- memset (&ps_new, 0, sizeof(mbstate_t));
- memset (&ps_old, 0, sizeof(mbstate_t));
-
- if (omax == nmax && STREQN (new, old, omax))
+ /* See if the old line is a subset of the new line, so that the
+ only change is adding characters. */
+ temp = (omax < nmax) ? omax : nmax;
+ if (memcmp (old, new, temp) == 0)
{
- ofd = old + omax;
- nfd = new + nmax;
+ ofd = old + temp;
+ nfd = new + temp;
}
else
- {
- new_offset = old_offset = 0;
- for (ofd = old, nfd = new;
- (ofd - old < omax) && *ofd &&
- _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new); )
+ {
+ memset (&ps_new, 0, sizeof(mbstate_t));
+ memset (&ps_old, 0, sizeof(mbstate_t));
+
+ if (omax == nmax && STREQN (new, old, omax))
{
- old_offset = _rl_find_next_mbchar (old, old_offset, 1, MB_FIND_ANY);
- new_offset = _rl_find_next_mbchar (new, new_offset, 1, MB_FIND_ANY);
- ofd = old + old_offset;
- nfd = new + new_offset;
+ ofd = old + omax;
+ nfd = new + nmax;
+ }
+ else
+ {
+ new_offset = old_offset = 0;
+ for (ofd = old, nfd = new;
+ (ofd - old < omax) && *ofd &&
+ _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new); )
+ {
+ old_offset = _rl_find_next_mbchar (old, old_offset, 1, MB_FIND_ANY);
+ new_offset = _rl_find_next_mbchar (new, new_offset, 1, MB_FIND_ANY);
+ ofd = old + old_offset;
+ nfd = new + new_offset;
+ }
}
}
}
@@ -1358,7 +1369,11 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
if ((temp - lendiff) > 0)
{
_rl_output_some_chars (nfd + lendiff, temp - lendiff);
-#if 0
+#if 1
+ /* XXX -- this bears closer inspection. Fixes a redisplay bug
+ reported against bash-3.0-alpha by Andreas Schwab involving
+ multibyte characters and prompt strings with invisible
+ characters, but was previously disabled. */
_rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
#else
_rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff);
@@ -2166,7 +2181,7 @@ _rl_col_width (str, start, end)
memset (&ps, 0, sizeof (mbstate_t));
}
else if (MB_NULLWCH (tmp))
- break; /* Found '\0' */
+ break; /* Found '\0' */
else
{
point += tmp;
@@ -2198,7 +2213,7 @@ _rl_col_width (str, start, end)
memset (&ps, 0, sizeof (mbstate_t));
}
else if (MB_NULLWCH (tmp))
- break; /* Found '\0' */
+ break; /* Found '\0' */
else
{
point += tmp;
diff --git a/lib/readline/doc/Makefile.in b/lib/readline/doc/Makefile.in
new file mode 100644
index 00000000..68b7278e
--- /dev/null
+++ b/lib/readline/doc/Makefile.in
@@ -0,0 +1,144 @@
+# Derived by hand from the generated readline-src/doc/Makefile
+# This makefile for Readline library documentation is in -*- text -*- mode.
+# Emacs likes it that way.
+
+# Copyright (C) 1996-2002 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
+
+topdir = .
+srcdir = .
+VPATH = .
+
+prefix = /usr/local
+infodir = ${prefix}/info
+
+mandir = ${prefix}/man
+manpfx = man
+
+man1ext = 1
+man1dir = $(mandir)/$(manpfx)$(man1ext)
+man3ext = 3
+man3dir = $(mandir)/$(manpfx)$(man3ext)
+
+SHELL = /bin/sh
+RM = rm -f
+
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+
+BUILD_DIR = .
+TEXINPUTDIR = $(srcdir)
+
+MAKEINFO = LANGUAGE= makeinfo
+TEXI2DVI = $(srcdir)/texi2dvi
+TEXI2HTML = $(srcdir)/texi2html
+QUIETPS = #set this to -q to shut up dvips
+PSDPI = 600
+DVIPS = dvips -D ${PSDPI} $(QUIETPS) -o $@ # tricky
+
+RLSRC = $(srcdir)/rlman.texi $(srcdir)/rluser.texi \
+ $(srcdir)/rltech.texi $(srcdir)/version.texi \
+ $(srcdir)/rluserman.texi
+HISTSRC = $(srcdir)/history.texi $(srcdir)/hsuser.texi \
+ $(srcdir)/hstech.texi $(srcdir)/version.texi
+
+# This should be a program that converts troff to an ascii-readable format
+NROFF = groff -Tascii
+
+# This should be a program that converts troff to postscript
+GROFF = groff
+
+DVIOBJ = readline.dvi history.dvi rluserman.dvi
+INFOOBJ = readline.info history.info rluserman.info
+PSOBJ = readline.ps history.ps rluserman.ps
+HTMLOBJ = readline.html history.html rluserman.html
+
+INTERMEDIATE_OBJ = rlman.dvi
+
+CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ)
+
+.SUFFIXES: .ps .txt .dvi
+
+all: info dvi html ps
+nodvi: info html
+
+readline.dvi: $(RLSRC)
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi
+ mv rlman.dvi readline.dvi
+
+readline.info: $(RLSRC)
+ $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi
+
+rluserman.dvi: $(RLSRC)
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texi
+
+rluserman.info: $(RLSRC)
+ $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texi
+
+history.dvi: ${HISTSRC}
+ TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/history.texi
+
+history.info: ${HISTSRC}
+ $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/history.texi
+
+readline.ps: readline.dvi
+ $(RM) $@
+ $(DVIPS) readline.dvi
+
+rluserman.ps: rluserman.dvi
+ $(RM) $@
+ $(DVIPS) rluserman.dvi
+
+history.ps: history.dvi
+ $(RM) $@
+ $(DVIPS) history.dvi
+
+readline.html: ${RLSRC}
+ $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rlman.texi
+ sed -e 's:rlman.html:readline.html:' rlman.html > readline.html
+ $(RM) rlman.html
+
+rluserman.html: ${RLSRC}
+ $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texi
+
+history.html: ${HISTSRC}
+ $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/history.texi
+
+info: $(INFOOBJ)
+dvi: $(DVIOBJ)
+ps: $(PSOBJ)
+html: $(HTMLOBJ)
+
+clean:
+ $(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
+ *.fns *.kys *.tps *.vrs *.bt *.bts *.o core *.core
+
+distclean: clean
+ $(RM) $(CREATED_DOCS)
+ $(RM) $(INTERMEDIATE_OBJ)
+ $(RM) Makefile
+
+mostlyclean: clean
+
+maintainer-clean: clean
+ $(RM) $(CREATED_DOCS)
+ $(RM) $(INTERMEDIATE_OBJ)
+ $(RM) Makefile
+
+install:
+ @echo "This documentation should not be installed."
+
+uninstall:
diff --git a/lib/readline/doc/Makefile.old b/lib/readline/doc/Makefile.old
new file mode 100644
index 00000000..58d4dd76
--- /dev/null
+++ b/lib/readline/doc/Makefile.old
@@ -0,0 +1,76 @@
+# This makefile for Readline library documentation is in -*- text -*- mode.
+# Emacs likes it that way.
+RM = rm -f
+
+MAKEINFO = makeinfo
+TEXI2DVI = texi2dvi
+TEXI2HTML = texi2html
+QUIETPS = #set this to -q to shut up dvips
+DVIPS = dvips -D 300 $(QUIETPS) -o $@ # tricky
+
+INSTALL_DATA = cp
+infodir = /usr/local/info
+
+RLSRC = rlman.texinfo rluser.texinfo rltech.texinfo
+HISTSRC = hist.texinfo hsuser.texinfo hstech.texinfo
+
+DVIOBJ = readline.dvi history.dvi
+INFOOBJ = readline.info history.info
+PSOBJ = readline.ps history.ps
+HTMLOBJ = readline.html history.html
+
+all: info dvi html ps
+nodvi: info html
+
+readline.dvi: $(RLSRC)
+ $(TEXI2DVI) rlman.texinfo
+ mv rlman.dvi readline.dvi
+
+readline.info: $(RLSRC)
+ $(MAKEINFO) --no-split -o $@ rlman.texinfo
+
+history.dvi: ${HISTSRC}
+ $(TEXI2DVI) hist.texinfo
+ mv hist.dvi history.dvi
+
+history.info: ${HISTSRC}
+ $(MAKEINFO) --no-split -o $@ hist.texinfo
+
+readline.ps: readline.dvi
+ $(RM) $@
+ $(DVIPS) readline.dvi
+
+history.ps: history.dvi
+ $(RM) $@
+ $(DVIPS) history.dvi
+
+readline.html: ${RLSRC}
+ $(TEXI2HTML) rlman.texinfo
+ sed -e 's:rlman.html:readline.html:' -e 's:rlman_toc.html:readline_toc.html:' rlman.html > readline.html
+ sed -e 's:rlman.html:readline.html:' -e 's:rlman_toc.html:readline_toc.html:' rlman_toc.html > readline_toc.html
+ $(RM) rlman.html rlman_toc.html
+
+history.html: ${HISTSRC}
+ $(TEXI2HTML) hist.texinfo
+ sed -e 's:hist.html:history.html:' -e 's:hist_toc.html:history_toc.html:' hist.html > history.html
+ sed -e 's:hist.html:history.html:' -e 's:hist_toc.html:history_toc.html:' hist_toc.html > history_toc.html
+ $(RM) hist.html hist_toc.html
+
+info: $(INFOOBJ)
+dvi: $(DVIOBJ)
+ps: $(PSOBJ)
+html: $(HTMLOBJ)
+
+clean:
+ $(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
+ *.fns *.kys *.tps *.vrs *.o core
+
+distclean: clean
+mostlyclean: clean
+
+maintainer-clean: clean
+ $(RM) *.dvi *.info *.info-* *.ps *.html
+
+install: info
+ ${INSTALL_DATA} readline.info $(infodir)/readline.info
+ ${INSTALL_DATA} history.info $(infodir)/history.info
diff --git a/lib/readline/doc/fdl.texi b/lib/readline/doc/fdl.texi
index 47ead9f0..68e5eb54 100644..120000
--- a/lib/readline/doc/fdl.texi
+++ b/lib/readline/doc/fdl.texi
@@ -1,452 +1 @@
-
-@node GNU Free Documentation License
-@appendixsec GNU Free Documentation License
-
-@cindex FDL, GNU Free Documentation License
-@center Version 1.2, November 2002
-
-@display
-Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-@end display
-
-@enumerate 0
-@item
-PREAMBLE
-
-The purpose of this License is to make a manual, textbook, or other
-functional and useful document @dfn{free} in the sense of freedom: to
-assure everyone the effective freedom to copy and redistribute it,
-with or without modifying it, either commercially or noncommercially.
-Secondarily, this License preserves for the author and publisher a way
-to get credit for their work, while not being considered responsible
-for modifications made by others.
-
-This License is a kind of ``copyleft'', which means that derivative
-works of the document must themselves be free in the same sense. It
-complements the GNU General Public License, which is a copyleft
-license designed for free software.
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does. But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book. We recommend this License
-principally for works whose purpose is instruction or reference.
-
-@item
-APPLICABILITY AND DEFINITIONS
-
-This License applies to any manual or other work, in any medium, that
-contains a notice placed by the copyright holder saying it can be
-distributed under the terms of this License. Such a notice grants a
-world-wide, royalty-free license, unlimited in duration, to use that
-work under the conditions stated herein. The ``Document'', below,
-refers to any such manual or work. Any member of the public is a
-licensee, and is addressed as ``you''. You accept the license if you
-copy, modify or distribute the work in a way requiring permission
-under copyright law.
-
-A ``Modified Version'' of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-
-A ``Secondary Section'' is a named appendix or a front-matter section
-of the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall
-subject (or to related matters) and contains nothing that could fall
-directly within that overall subject. (Thus, if the Document is in
-part a textbook of mathematics, a Secondary Section may not explain
-any mathematics.) The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-
-The ``Invariant Sections'' are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License. If a
-section does not fit the above definition of Secondary then it is not
-allowed to be designated as Invariant. The Document may contain zero
-Invariant Sections. If the Document does not identify any Invariant
-Sections then there are none.
-
-The ``Cover Texts'' are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License. A Front-Cover Text may
-be at most 5 words, and a Back-Cover Text may be at most 25 words.
-
-A ``Transparent'' copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, that is suitable for revising the document
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters. A copy made in an otherwise Transparent file
-format whose markup, or absence of markup, has been arranged to thwart
-or discourage subsequent modification by readers is not Transparent.
-An image format is not Transparent if used for any substantial amount
-of text. A copy that is not ``Transparent'' is called ``Opaque''.
-
-Examples of suitable formats for Transparent copies include plain
-@sc{ascii} without markup, Texinfo input format, La@TeX{} input
-format, @acronym{SGML} or @acronym{XML} using a publicly available
-@acronym{DTD}, and standard-conforming simple @acronym{HTML},
-PostScript or @acronym{PDF} designed for human modification. Examples
-of transparent image formats include @acronym{PNG}, @acronym{XCF} and
-@acronym{JPG}. Opaque formats include proprietary formats that can be
-read and edited only by proprietary word processors, @acronym{SGML} or
-@acronym{XML} for which the @acronym{DTD} and/or processing tools are
-not generally available, and the machine-generated @acronym{HTML},
-PostScript or @acronym{PDF} produced by some word processors for
-output purposes only.
-
-The ``Title Page'' means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page. For works in
-formats which do not have any title page as such, ``Title Page'' means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-
-A section ``Entitled XYZ'' means a named subunit of the Document whose
-title either is precisely XYZ or contains XYZ in parentheses following
-text that translates XYZ in another language. (Here XYZ stands for a
-specific section name mentioned below, such as ``Acknowledgements'',
-``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
-of such a section when you modify the Document means that it remains a
-section ``Entitled XYZ'' according to this definition.
-
-The Document may include Warranty Disclaimers next to the notice which
-states that this License applies to the Document. These Warranty
-Disclaimers are considered to be included by reference in this
-License, but only as regards disclaiming warranties: any other
-implication that these Warranty Disclaimers may have is void and has
-no effect on the meaning of this License.
-
-@item
-VERBATIM COPYING
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License. You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute. However, you may accept
-compensation in exchange for copies. If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
-@item
-COPYING IN QUANTITY
-
-If you publish printed copies (or copies in media that commonly have
-printed covers) of the Document, numbering more than 100, and the
-Document's license notice requires Cover Texts, you must enclose the
-copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover. Both covers must also clearly and legibly identify
-you as the publisher of these copies. The front cover must present
-the full title with all words of the title equally prominent and
-visible. You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a computer-network location from which the general network-using
-public has access to download using public-standard network protocols
-a complete Transparent copy of the Document, free of added material.
-If you use the latter option, you must take reasonably prudent steps,
-when you begin distribution of Opaque copies in quantity, to ensure
-that this Transparent copy will remain thus accessible at the stated
-location until at least one year after the last time you distribute an
-Opaque copy (directly or through your agents or retailers) of that
-edition to the public.
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-
-@item
-MODIFICATIONS
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it. In addition, you must do these things in the Modified Version:
-
-@enumerate A
-@item
-Use in the Title Page (and on the covers, if any) a title distinct
-from that of the Document, and from those of previous versions
-(which should, if there were any, be listed in the History section
-of the Document). You may use the same title as a previous version
-if the original publisher of that version gives permission.
-
-@item
-List on the Title Page, as authors, one or more persons or entities
-responsible for authorship of the modifications in the Modified
-Version, together with at least five of the principal authors of the
-Document (all of its principal authors, if it has fewer than five),
-unless they release you from this requirement.
-
-@item
-State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-
-@item
-Preserve all the copyright notices of the Document.
-
-@item
-Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-
-@item
-Include, immediately after the copyright notices, a license notice
-giving the public permission to use the Modified Version under the
-terms of this License, in the form shown in the Addendum below.
-
-@item
-Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-
-@item
-Include an unaltered copy of this License.
-
-@item
-Preserve the section Entitled ``History'', Preserve its Title, and add
-to it an item stating at least the title, year, new authors, and
-publisher of the Modified Version as given on the Title Page. If
-there is no section Entitled ``History'' in the Document, create one
-stating the title, year, authors, and publisher of the Document as
-given on its Title Page, then add an item describing the Modified
-Version as stated in the previous sentence.
-
-@item
-Preserve the network location, if any, given in the Document for
-public access to a Transparent copy of the Document, and likewise
-the network locations given in the Document for previous versions
-it was based on. These may be placed in the ``History'' section.
-You may omit a network location for a work that was published at
-least four years before the Document itself, or if the original
-publisher of the version it refers to gives permission.
-
-@item
-For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
-the Title of the section, and preserve in the section all the
-substance and tone of each of the contributor acknowledgements and/or
-dedications given therein.
-
-@item
-Preserve all the Invariant Sections of the Document,
-unaltered in their text and in their titles. Section numbers
-or the equivalent are not considered part of the section titles.
-
-@item
-Delete any section Entitled ``Endorsements''. Such a section
-may not be included in the Modified Version.
-
-@item
-Do not retitle any existing section to be Entitled ``Endorsements'' or
-to conflict in title with any Invariant Section.
-
-@item
-Preserve any Warranty Disclaimers.
-@end enumerate
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant. To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-
-You may add a section Entitled ``Endorsements'', provided it contains
-nothing but endorsements of your Modified Version by various
-parties---for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version. Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity. If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-
-@item
-COMBINING DOCUMENTS
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice, and that you preserve all their Warranty Disclaimers.
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy. If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-
-In the combination, you must combine any sections Entitled ``History''
-in the various original documents, forming one section Entitled
-``History''; likewise combine any sections Entitled ``Acknowledgements'',
-and any sections Entitled ``Dedications''. You must delete all
-sections Entitled ``Endorsements.''
-
-@item
-COLLECTIONS OF DOCUMENTS
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-
-@item
-AGGREGATION WITH INDEPENDENT WORKS
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, is called an ``aggregate'' if the copyright
-resulting from the compilation is not used to limit the legal rights
-of the compilation's users beyond what the individual works permit.
-When the Document is included an aggregate, this License does not
-apply to the other works in the aggregate which are not themselves
-derivative works of the Document.
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one half of
-the entire aggregate, the Document's Cover Texts may be placed on
-covers that bracket the Document within the aggregate, or the
-electronic equivalent of covers if the Document is in electronic form.
-Otherwise they must appear on printed covers that bracket the whole
-aggregate.
-
-@item
-TRANSLATION
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections. You may include a
-translation of this License, and all the license notices in the
-Document, and any Warranty Disclaimers, provided that you also include
-the original English version of this License and the original versions
-of those notices and disclaimers. In case of a disagreement between
-the translation and the original version of this License or a notice
-or disclaimer, the original version will prevail.
-
-If a section in the Document is Entitled ``Acknowledgements'',
-``Dedications'', or ``History'', the requirement (section 4) to Preserve
-its Title (section 1) will typically require changing the actual
-title.
-
-@item
-TERMINATION
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License. Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License. However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-@item
-FUTURE REVISIONS OF THIS LICENSE
-
-The Free Software Foundation may publish new, revised versions
-of the GNU Free Documentation License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns. See
-@uref{http://www.gnu.org/copyleft/}.
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License ``or any later version'' applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation. If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
-@end enumerate
-
-@page
-@appendixsubsec ADDENDUM: How to use this License for your documents
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and
-license notices just after the title page:
-
-@smallexample
-@group
- Copyright (C) @var{year} @var{your name}.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.2
- or any later version published by the Free Software Foundation;
- with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
- A copy of the license is included in the section entitled ``GNU
- Free Documentation License''.
-@end group
-@end smallexample
-
-If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the ``with...Texts.'' line with this:
-
-@smallexample
-@group
- with the Invariant Sections being @var{list their titles}, with
- the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
- being @var{list}.
-@end group
-@end smallexample
-
-If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License,
-to permit their use in free software.
-
-@c Local Variables:
-@c ispell-local-pdict: "ispell-dict"
-@c End:
-
+../../../doc/fdl.texi \ No newline at end of file
diff --git a/lib/readline/doc/history.3 b/lib/readline/doc/history.3
new file mode 100644
index 00000000..3ade839f
--- /dev/null
+++ b/lib/readline/doc/history.3
@@ -0,0 +1,663 @@
+.\"
+.\" MAN PAGE COMMENTS to
+.\"
+.\" Chet Ramey
+.\" Information Network Services
+.\" Case Western Reserve University
+.\" chet@ins.CWRU.Edu
+.\"
+.\" Last Change: Thu Jul 31 08:46:08 EDT 2003
+.\"
+.TH HISTORY 3 "2003 July 31" "GNU History 5.0"
+.\"
+.\" File Name macro. This used to be `.PN', for Path Name,
+.\" but Sun doesn't seem to like that very much.
+.\"
+.de FN
+\fI\|\\$1\|\fP
+..
+.ds lp \fR\|(\fP
+.ds rp \fR\|)\fP
+.\" FnN return-value fun-name N arguments
+.de Fn1
+\fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3\fP\\*(rp
+.br
+..
+.de Fn2
+.if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4\fP\\*(rp
+.if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4\fP\\*(rp
+.br
+..
+.de Fn3
+.if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4,\|\\$5\fP\|\\*(rp
+.if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4, \\$5\fP\\*(rp
+.br
+..
+.de Vb
+\fI\\$1\fP \fB\\$2\fP
+.br
+..
+.SH NAME
+history \- GNU History Library
+.SH COPYRIGHT
+.if t The GNU History Library is Copyright \(co 1989-2002 by the Free Software Foundation, Inc.
+.if n The GNU History Library is Copyright (C) 1989-2002 by the Free Software Foundation, Inc.
+.SH DESCRIPTION
+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.
+.PP
+.SH "HISTORY EXPANSION"
+.PP
+The history library supports a history expansion feature that
+is identical to the history expansion in
+.BR bash.
+This section describes what syntax features are available.
+.PP
+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.
+.PP
+History expansion is usually performed immediately after a complete line
+is read.
+It takes place in two parts.
+The first is to determine which line from the history list
+to use during substitution.
+The second is to select portions of that line for inclusion into
+the current one.
+The line selected from the history is the \fIevent\fP,
+and the portions of that line that are acted upon are \fIwords\fP.
+Various \fImodifiers\fP are available to manipulate the selected words.
+The line is broken into words in the same fashion as \fBbash\fP
+does when reading input,
+so that several words that would otherwise be separated
+are considered one word when surrounded by quotes (see the
+description of \fBhistory_tokenize()\fP below).
+History expansions are introduced by the appearance of the
+history expansion character, which is \^\fB!\fP\^ by default.
+Only backslash (\^\fB\e\fP\^) and single quotes can quote
+the history expansion character.
+.SS Event Designators
+.PP
+An event designator is a reference to a command line entry in the
+history list.
+.PP
+.PD 0
+.TP
+.B !
+Start a history substitution, except when followed by a
+.BR blank ,
+newline, = or (.
+.TP
+.B !\fIn\fR
+Refer to command line
+.IR n .
+.TP
+.B !\-\fIn\fR
+Refer to the current command line minus
+.IR n .
+.TP
+.B !!
+Refer to the previous command. This is a synonym for `!\-1'.
+.TP
+.B !\fIstring\fR
+Refer to the most recent command starting with
+.IR string .
+.TP
+.B !?\fIstring\fR\fB[?]\fR
+Refer to the most recent command containing
+.IR string .
+The trailing \fB?\fP may be omitted if
+.I string
+is followed immediately by a newline.
+.TP
+.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
+Quick substitution. Repeat the last command, replacing
+.I string1
+with
+.IR string2 .
+Equivalent to
+``!!:s/\fIstring1\fP/\fIstring2\fP/''
+(see \fBModifiers\fP below).
+.TP
+.B !#
+The entire command line typed so far.
+.PD
+.SS Word Designators
+.PP
+Word designators are used to select desired words from the event.
+A
+.B :
+separates the event specification from the word designator.
+It may be omitted if the word designator begins with a
+.BR ^ ,
+.BR $ ,
+.BR * ,
+.BR \- ,
+or
+.BR % .
+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.
+.PP
+.PD 0
+.TP
+.B 0 (zero)
+The zeroth word. For the shell, this is the command
+word.
+.TP
+.I n
+The \fIn\fRth word.
+.TP
+.B ^
+The first argument. That is, word 1.
+.TP
+.B $
+The last argument.
+.TP
+.B %
+The word matched by the most recent `?\fIstring\fR?' search.
+.TP
+.I x\fB\-\fPy
+A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
+.TP
+.B *
+All of the words but the zeroth. This is a synonym
+for `\fI1\-$\fP'. It is not an error to use
+.B *
+if there is just one
+word in the event; the empty string is returned in that case.
+.TP
+.B x*
+Abbreviates \fIx\-$\fP.
+.TP
+.B x\-
+Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word.
+.PD
+.PP
+If a word designator is supplied without an event specification, the
+previous command is used as the event.
+.SS Modifiers
+.PP
+After the optional word designator, there may appear a sequence of
+one or more of the following modifiers, each preceded by a `:'.
+.PP
+.PD 0
+.PP
+.TP
+.B h
+Remove a trailing file name component, leaving only the head.
+.TP
+.B t
+Remove all leading file name components, leaving the tail.
+.TP
+.B r
+Remove a trailing suffix of the form \fI.xxx\fP, leaving the
+basename.
+.TP
+.B e
+Remove all but the trailing suffix.
+.TP
+.B p
+Print the new command but do not execute it.
+.TP
+.B q
+Quote the substituted words, escaping further substitutions.
+.TP
+.B x
+Quote the substituted words as with
+.BR q ,
+but break into words at
+.B blanks
+and newlines.
+.TP
+.B s/\fIold\fP/\fInew\fP/
+Substitute
+.I new
+for the first occurrence of
+.I old
+in the event line. Any delimiter can be used in place of /. The
+final delimiter is optional if it is the last character of the
+event line. The delimiter may be quoted in
+.I old
+and
+.I new
+with a single backslash. If & appears in
+.IR new ,
+it is replaced by
+.IR old .
+A single backslash will quote the &. If
+.I old
+is null, it is set to the last
+.I old
+substituted, or, if no previous history substitutions took place,
+the last
+.I string
+in a
+.B !?\fIstring\fR\fB[?]\fR
+search.
+.TP
+.B &
+Repeat the previous substitution.
+.TP
+.B g
+Cause changes to be applied over the entire event line. This is
+used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR')
+or `\fB:&\fP'. If used with
+`\fB:s\fP', any delimiter can be used
+in place of /, and the final delimiter is optional
+if it is the last character of the event line.
+An \fBa\fP may be used as a synonym for \fBg\fP.
+.TP
+.B G
+Apply the following `\fBs\fP' modifier once to each word in the event line.
+.PD
+.SH "PROGRAMMING WITH HISTORY FUNCTIONS"
+This section describes how to use the History library in other programs.
+.SS Introduction to History
+.PP
+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 \fIexpansion\fP function
+is available which provides for a consistent user interface across
+different programs.
+.PP
+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
+identical to
+the history substitution provided by \fBbash\fP.
+.PP
+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.
+.PP
+Before declaring any functions using any functionality the History
+library provides in other code, an application writer should include
+the file
+.FN <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.
+
+.SS History Storage
+.PP
+The history list is an array of history entries. A history entry is
+declared as follows:
+.PP
+.Vb "typedef void *" histdata_t;
+.PP
+.nf
+typedef struct _hist_entry {
+ char *line;
+ char *timestamp;
+ histdata_t data;
+} HIST_ENTRY;
+.fi
+.PP
+The history list itself might therefore be declared as
+.PP
+.Vb "HIST_ENTRY **" the_history_list;
+.PP
+The state of the History library is encapsulated into a single structure:
+.PP
+.nf
+/*
+ * 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;
+.fi
+.PP
+If the flags member includes \fBHS_STIFLED\fP, the history has been
+stifled.
+.SH "History Functions"
+.PP
+This section describes the calling sequence for the various functions
+exported by the GNU History library.
+.SS 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.
+
+.Fn1 void using_history void
+Begin a session in which the history functions might be used. This
+initializes the interactive variables.
+
+.Fn1 "HISTORY_STATE *" history_get_history_state void
+Return a structure describing the current state of the input history.
+
+.Fn1 void history_set_history_state "HISTORY_STATE *state"
+Set the state of the history list according to \fIstate\fP.
+
+.SS History List Management
+
+These functions manage individual entries on the history list, or set
+parameters managing the list itself.
+
+.Fn1 void add_history "const char *string"
+Place \fIstring\fP at the end of the history list. The associated data
+field (if any) is set to \fBNULL\fP.
+
+.Fn1 void add_history_time "const char *string"
+Change the time stamp associated with the most recent history entry to
+\fIstring\fP.
+
+.Fn1 "HIST_ENTRY *" remove_history "int which"
+Remove history entry at offset \fIwhich\fP from the history. The
+removed element is returned so you can free the line, data,
+and containing structure.
+
+.Fn1 "histdata_t" free_history_entry "HIST_ENTRY *histent"
+Free the history entry \fIhistent\fP and any history library private
+data associated with it. Returns the application-specific data
+so the caller can dispose of it.
+
+.Fn3 "HIST_ENTRY *" replace_history_entry "int which" "const char *line" "histdata_t data"
+Make the history entry at offset \fIwhich\fP have \fIline\fP and \fIdata\fP.
+This returns the old entry so the caller can dispose of any
+application-specific data. In the case
+of an invalid \fIwhich\fP, a \fBNULL\fP pointer is returned.
+
+.Fn1 void clear_history "void"
+Clear the history list by deleting all the entries.
+
+.Fn1 void stifle_history "int max"
+Stifle the history list, remembering only the last \fImax\fP entries.
+
+.Fn1 int unstifle_history "void"
+Stop stifling the history. This returns the previously-set
+maximum number of history entries (as set by \fBstifle_history()\fP).
+history was stifled. The value is positive if the history was
+stifled, negative if it wasn't.
+
+.Fn1 int history_is_stifled "void"
+Returns non-zero if the history is stifled, zero if it is not.
+
+.SS Information About the History List
+
+These functions return information about the entire history list or
+individual list entries.
+
+.Fn1 "HIST_ENTRY **" history_list "void"
+Return a \fBNULL\fP terminated array of \fIHIST_ENTRY *\fP which is the
+current input history. Element 0 of this list is the beginning of time.
+If there is no history, return \fBNULL\fP.
+
+.Fn1 int where_history "void"
+Returns the offset of the current history element.
+
+.Fn1 "HIST_ENTRY *" current_history "void"
+Return the history entry at the current position, as determined by
+\fBwhere_history()\fP. If there is no entry there, return a \fBNULL\fP
+pointer.
+
+.Fn1 "HIST_ENTRY *" history_get "int offset"
+Return the history entry at position \fIoffset\fP, starting from
+\fBhistory_base\fP.
+If there is no entry there, or if \fIoffset\fP
+is greater than the history length, return a \fBNULL\fP pointer.
+
+.Fn1 "time_t" history_get_time "HIST_ENTRY *"
+Return the time stamp associated with the history entry passed as the argument.
+
+.Fn1 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.
+
+.SS Moving Around the History List
+
+These functions allow the current index into the history list to be
+set or changed.
+
+.Fn1 int history_set_pos "int pos"
+Set the current history offset to \fIpos\fP, an absolute index
+into the list.
+Returns 1 on success, 0 if \fIpos\fP is less than zero or greater
+than the number of history entries.
+
+.Fn1 "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 \fBNULL\fP pointer.
+
+.Fn1 "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 \fBNULL\fP pointer.
+
+.SS 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 \fIanchored\fP,
+meaning that the string must match at the beginning of the history entry.
+
+.Fn2 int history_search "const char *string" "int direction"
+Search the history for \fIstring\fP, starting at the current history offset.
+If \fIdirection\fP is less than 0, then the search is through
+previous entries, otherwise through subsequent entries.
+If \fIstring\fP 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
+\fIstring\fP was found. Otherwise, nothing is changed, and a -1 is
+returned.
+
+.Fn2 int history_search_prefix "const char *string" "int direction"
+Search the history for \fIstring\fP, starting at the current history
+offset. The search is anchored: matching lines must begin with
+\fIstring\fP. If \fIdirection\fP is less than 0, then the search is
+through previous entries, otherwise through subsequent entries.
+If \fIstring\fP 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.
+
+.Fn3 int history_search_pos "const char *string" "int direction" "int pos"
+Search for \fIstring\fP in the history list, starting at \fIpos\fP, an
+absolute index into the list. If \fIdirection\fP is negative, the search
+proceeds backward from \fIpos\fP, otherwise forward. Returns the absolute
+index of the history element where \fIstring\fP was found, or -1 otherwise.
+
+.SS 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.
+
+.Fn1 int read_history "const char *filename"
+Add the contents of \fIfilename\fP to the history list, a line at a time.
+If \fIfilename\fP is \fBNULL\fP, then read from \fI~/.history\fP.
+Returns 0 if successful, or \fBerrno\fP if not.
+
+.Fn3 int read_history_range "const char *filename" "int from" "int to"
+Read a range of lines from \fIfilename\fP, adding them to the history list.
+Start reading at line \fIfrom\fP and end at \fIto\fP.
+If \fIfrom\fP is zero, start at the beginning. If \fIto\fP is less than
+\fIfrom\fP, then read until the end of the file. If \fIfilename\fP is
+\fBNULL\fP, then read from \fI~/.history\fP. Returns 0 if successful,
+or \fBerrno\fP if not.
+
+.Fn1 int write_history "const char *filename"
+Write the current history to \fIfilename\fP, overwriting \fIfilename\fP
+if necessary.
+If \fIfilename\fP is \fBNULL\fP, then write the history list to \fI~/.history\fP.
+Returns 0 on success, or \fBerrno\fP on a read or write error.
+
+
+.Fn2 int append_history "int nelements" "const char *filename"
+Append the last \fInelements\fP of the history list to \fIfilename\fP.
+If \fIfilename\fP is \fBNULL\fP, then append to \fI~/.history\fP.
+Returns 0 on success, or \fBerrno\fP on a read or write error.
+
+.Fn2 int history_truncate_file "const char *filename" "int nlines"
+Truncate the history file \fIfilename\fP, leaving only the last
+\fInlines\fP lines.
+If \fIfilename\fP is \fBNULL\fP, then \fI~/.history\fP is truncated.
+Returns 0 on success, or \fBerrno\fP on failure.
+
+.SS History Expansion
+
+These functions implement history expansion.
+
+.Fn2 int history_expand "char *string" "char **output"
+Expand \fIstring\fP, placing the result into \fIoutput\fP, a pointer
+to a string. Returns:
+.RS
+.PD 0
+.TP
+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);
+.TP
+1
+if expansions did take place;
+.TP
+-1
+if there was an error in expansion;
+.TP
+2
+if the returned line should be displayed, but not executed,
+as with the \fB:p\fP modifier.
+.PD
+.RE
+If an error ocurred in expansion, then \fIoutput\fP contains a descriptive
+error message.
+
+.Fn3 "char *" get_history_event "const char *string" "int *cindex" "int qchar"
+Returns the text of the history event beginning at \fIstring\fP +
+\fI*cindex\fP. \fI*cindex\fP is modified to point to after the event
+specifier. At function entry, \fIcindex\fP points to the index into
+\fIstring\fP where the history event specification begins. \fIqchar\fP
+is a character that is allowed to end the event specification in addition
+to the ``normal'' terminating characters.
+
+.Fn1 "char **" history_tokenize "const char *string"
+Return an array of tokens parsed out of \fIstring\fP, much as the
+shell might.
+The tokens are split on the characters in the
+\fBhistory_word_delimiters\fP variable,
+and shell quoting conventions are obeyed.
+
+.Fn3 "char *" history_arg_extract "int first" "int last" "const char *string"
+Extract a string segment consisting of the \fIfirst\fP through \fIlast\fP
+arguments present in \fIstring\fP. Arguments are split using
+\fBhistory_tokenize()\fP.
+
+.SS History Variables
+
+This section describes the externally-visible variables exported by
+the GNU History Library.
+
+.Vb int history_base
+The logical offset of the first entry in the history list.
+
+.Vb int history_length
+The number of entries currently stored in the history list.
+
+.Vb int history_max_entries
+The maximum number of history entries. This must be changed using
+\fBstifle_history()\fP.
+
+.Vb int history_write_timestamps
+If non-zero, timestamps are written to the history file, so they can be
+preserved between sessions. The default value is 0, meaning that
+timestamps are not saved.
+
+.Vb char history_expansion_char
+The character that introduces a history event. The default is \fB!\fP.
+Setting this to 0 inhibits history expansion.
+
+.Vb char history_subst_char
+The character that invokes word substitution if found at the start of
+a line. The default is \fB^\fP.
+
+.Vb 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.
+
+.Vb "char *" history_word_delimiters
+The characters that separate tokens for \fBhistory_tokenize()\fP.
+The default value is \fB"\ \et\en()<>;&|"\fP.
+
+.Vb "char *" history_no_expand_chars
+The list of characters which inhibit history expansion if found immediately
+following \fBhistory_expansion_char\fP. The default is space, tab, newline,
+\fB\er\fP, and \fB=\fP.
+
+.Vb "char *" history_search_delimiter_chars
+The list of additional characters which can delimit a history search
+string, in addition to space, tab, \fI:\fP and \fI?\fP in the case of
+a substring search. The default is empty.
+
+.Vb int history_quotes_inhibit_expansion
+If non-zero, single-quoted words are not scanned for the history expansion
+character. The default value is 0.
+
+.Vb "rl_linebuf_func_t *" history_inhibit_expansion_function
+This should be set to the address of a function that takes two arguments:
+a \fBchar *\fP (\fIstring\fP)
+and an \fBint\fP index into that string (\fIi\fP).
+It should return a non-zero value if the history expansion starting at
+\fIstring[i]\fP should not be performed; zero if the expansion should
+be done.
+It is intended for use by applications like \fBbash\fP that use the history
+expansion character for additional purposes.
+By default, this variable is set to \fBNULL\fP.
+.SH FILES
+.PD 0
+.TP
+.FN ~/.history
+Default filename for reading and writing saved history
+.PD
+.SH "SEE ALSO"
+.PD 0
+.TP
+\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIbash\fP(1)
+.TP
+\fIreadline\fP(3)
+.PD
+.SH AUTHORS
+Brian Fox, Free Software Foundation
+.br
+bfox@gnu.org
+.PP
+Chet Ramey, Case Western Reserve University
+.br
+chet@ins.CWRU.Edu
+.SH BUG REPORTS
+If you find a bug in the
+.B history
+library, you should report it. But first, you should
+make sure that it really is a bug, and that it appears in the latest
+version of the
+.B history
+library that you have.
+.PP
+Once you have determined that a bug actually exists, mail a
+bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
+If you have a fix, you are welcome to mail that
+as well! Suggestions and `philosophical' bug reports may be mailed
+to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
+newsgroup
+.BR gnu.bash.bug .
+.PP
+Comments and bug reports concerning
+this manual page should be directed to
+.IR chet@ins.CWRU.Edu .
diff --git a/lib/readline/doc/history.aux b/lib/readline/doc/history.aux
new file mode 100644
index 00000000..c5ee3cbb
--- /dev/null
+++ b/lib/readline/doc/history.aux
@@ -0,0 +1,66 @@
+@xrdef{Using History Interactively-title}{Using History Interactively}
+@xrdef{Using History Interactively-pg}{1}
+@xrdef{Using History Interactively-snt}{Chapter@tie 1}
+@xrdef{History Interaction-title}{History Expansion}
+@xrdef{History Interaction-pg}{1}
+@xrdef{History Interaction-snt}{Section@tie 1.1}
+@xrdef{Event Designators-title}{Event Designators}
+@xrdef{Event Designators-pg}{1}
+@xrdef{Event Designators-snt}{Section@tie 1.1.1}
+@xrdef{Word Designators-title}{Word Designators}
+@xrdef{Word Designators-pg}{2}
+@xrdef{Word Designators-snt}{Section@tie 1.1.2}
+@xrdef{Modifiers-title}{Modifiers}
+@xrdef{Modifiers-pg}{2}
+@xrdef{Modifiers-snt}{Section@tie 1.1.3}
+@xrdef{Programming with GNU History-title}{Programming with GNU History}
+@xrdef{Programming with GNU History-pg}{5}
+@xrdef{Programming with GNU History-snt}{Chapter@tie 2}
+@xrdef{Introduction to History-title}{Introduction to History}
+@xrdef{Introduction to History-pg}{5}
+@xrdef{Introduction to History-snt}{Section@tie 2.1}
+@xrdef{History Storage-title}{History Storage}
+@xrdef{History Storage-pg}{5}
+@xrdef{History Storage-snt}{Section@tie 2.2}
+@xrdef{History Functions-title}{History Functions}
+@xrdef{History Functions-pg}{6}
+@xrdef{History Functions-snt}{Section@tie 2.3}
+@xrdef{Initializing History and State Management-title}{Initializing History and State Management}
+@xrdef{Initializing History and State Management-pg}{6}
+@xrdef{Initializing History and State Management-snt}{Section@tie 2.3.1}
+@xrdef{History List Management-title}{History List Management}
+@xrdef{History List Management-pg}{6}
+@xrdef{History List Management-snt}{Section@tie 2.3.2}
+@xrdef{Information About the History List-title}{Information About the History List}
+@xrdef{Information About the History List-pg}{7}
+@xrdef{Information About the History List-snt}{Section@tie 2.3.3}
+@xrdef{Moving Around the History List-title}{Moving Around the History List}
+@xrdef{Moving Around the History List-pg}{8}
+@xrdef{Moving Around the History List-snt}{Section@tie 2.3.4}
+@xrdef{Searching the History List-title}{Searching the History List}
+@xrdef{Searching the History List-pg}{8}
+@xrdef{Searching the History List-snt}{Section@tie 2.3.5}
+@xrdef{Managing the History File-title}{Managing the History File}
+@xrdef{Managing the History File-pg}{8}
+@xrdef{Managing the History File-snt}{Section@tie 2.3.6}
+@xrdef{History Expansion-title}{History Expansion}
+@xrdef{History Expansion-pg}{9}
+@xrdef{History Expansion-snt}{Section@tie 2.3.7}
+@xrdef{History Variables-title}{History Variables}
+@xrdef{History Variables-pg}{10}
+@xrdef{History Variables-snt}{Section@tie 2.4}
+@xrdef{History Programming Example-title}{History Programming Example}
+@xrdef{History Programming Example-pg}{11}
+@xrdef{History Programming Example-snt}{Section@tie 2.5}
+@xrdef{Copying This Manual-title}{Copying This Manual}
+@xrdef{Copying This Manual-pg}{13}
+@xrdef{Copying This Manual-snt}{Appendix@tie @char65{}}
+@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
+@xrdef{GNU Free Documentation License-pg}{13}
+@xrdef{GNU Free Documentation License-snt}{Section@tie @char65.1}
+@xrdef{Concept Index-title}{Concept Index}
+@xrdef{Concept Index-pg}{21}
+@xrdef{Concept Index-snt}{Appendix@tie @char66{}}
+@xrdef{Function and Variable Index-title}{Function and Variable Index}
+@xrdef{Function and Variable Index-pg}{23}
+@xrdef{Function and Variable Index-snt}{Appendix@tie @char67{}}
diff --git a/lib/readline/doc/history.bt b/lib/readline/doc/history.bt
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/history.bt
diff --git a/lib/readline/doc/history.cp b/lib/readline/doc/history.cp
new file mode 100644
index 00000000..6d950d8b
--- /dev/null
+++ b/lib/readline/doc/history.cp
@@ -0,0 +1,6 @@
+\entry{history expansion}{1}{history expansion}
+\entry{event designators}{1}{event designators}
+\entry{history events}{1}{history events}
+\entry{History Searching}{8}{History Searching}
+\entry{anchored search}{8}{anchored search}
+\entry{FDL, GNU Free Documentation License}{13}{FDL, GNU Free Documentation License}
diff --git a/lib/readline/doc/history.cps b/lib/readline/doc/history.cps
new file mode 100644
index 00000000..58f3c384
--- /dev/null
+++ b/lib/readline/doc/history.cps
@@ -0,0 +1,10 @@
+\initial {A}
+\entry {anchored search}{8}
+\initial {E}
+\entry {event designators}{1}
+\initial {F}
+\entry {FDL, GNU Free Documentation License}{13}
+\initial {H}
+\entry {history events}{1}
+\entry {history expansion}{1}
+\entry {History Searching}{8}
diff --git a/lib/readline/doc/history.dvi b/lib/readline/doc/history.dvi
new file mode 100644
index 00000000..b8fcb0d9
--- /dev/null
+++ b/lib/readline/doc/history.dvi
Binary files differ
diff --git a/lib/readline/doc/history.fn b/lib/readline/doc/history.fn
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/history.fn
diff --git a/lib/readline/doc/history.html b/lib/readline/doc/history.html
new file mode 100644
index 00000000..5da3c58f
--- /dev/null
+++ b/lib/readline/doc/history.html
@@ -0,0 +1,2270 @@
+<HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- Created on September, 22 2003 by texi2html 1.64 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
+
+-->
+<HEAD>
+<TITLE>GNU History Library: </TITLE>
+
+<META NAME="description" CONTENT="GNU History Library: ">
+<META NAME="keywords" CONTENT="GNU History Library: ">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="texi2html 1.64">
+
+</HEAD>
+
+<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
+
+<A NAME="SEC_Top"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>GNU History Library</H1></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>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC1">1. Using History Interactively</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU History User's Manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC6">2. Programming with GNU History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU History Programmer's Manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC19">A. Copying This Manual</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC22">B. Concept Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC23">C. Function and Variable Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions
+ and variables.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<HR SIZE=1>
+<A NAME="SEC1"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<A NAME="Using History Interactively"></A>
+<H1> 1. Using History Interactively </H1>
+<!--docid::SEC1::-->
+<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">2. Programming with GNU History</A>.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC2">1.1 History Expansion</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">What it feels like using History as a user.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="History Interaction"></A>
+<HR SIZE="6">
+<A NAME="SEC2"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.1 History Expansion </H2>
+<!--docid::SEC2::-->
+<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><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to specify which history line to use.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC4">1.1.2 Word Designators</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying which words are of interest.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC5">1.1.3 Modifiers</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Modifying the results of substitution.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Event Designators"></A>
+<HR SIZE="6">
+<A NAME="SEC3"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.1.1 Event Designators </H3>
+<!--docid::SEC3::-->
+<P>
+
+An event designator is a reference to a command line entry in the
+history list.
+<A NAME="IDX1"></A>
+</P><P>
+
+<DL COMPACT>
+
+<DT><CODE>!</CODE>
+<DD>Start a history substitution, except when followed by a space, tab,
+the end of the line, or <SAMP>`='</SAMP>.
+<P>
+
+<DT><CODE>!<VAR>n</VAR></CODE>
+<DD>Refer to command line <VAR>n</VAR>.
+<P>
+
+<DT><CODE>!-<VAR>n</VAR></CODE>
+<DD>Refer to the command <VAR>n</VAR> lines back.
+<P>
+
+<DT><CODE>!!</CODE>
+<DD>Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>.
+<P>
+
+<DT><CODE>!<VAR>string</VAR></CODE>
+<DD>Refer to the most recent command starting with <VAR>string</VAR>.
+<P>
+
+<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.
+<P>
+
+<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>.
+<P>
+
+<DT><CODE>!#</CODE>
+<DD>The entire command line typed so far.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Word Designators"></A>
+<HR SIZE="6">
+<A NAME="SEC4"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC3"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.1.2 Word Designators </H3>
+<!--docid::SEC4::-->
+<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><P>
+
+<DL COMPACT>
+<DT><CODE>!!</CODE>
+<DD>designates the preceding command. When you type this, the preceding
+command is repeated in toto.
+<P>
+
+<DT><CODE>!!:$</CODE>
+<DD>designates the last argument of the preceding command. This may be
+shortened to <CODE>!$</CODE>.
+<P>
+
+<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.
+<P>
+
+<DT><CODE><VAR>n</VAR></CODE>
+<DD>The <VAR>n</VAR>th word.
+<P>
+
+<DT><CODE>^</CODE>
+<DD>The first argument; that is, word 1.
+<P>
+
+<DT><CODE>$</CODE>
+<DD>The last argument.
+<P>
+
+<DT><CODE>%</CODE>
+<DD>The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search.
+<P>
+
+<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>.
+<P>
+
+<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.
+<P>
+
+<DT><CODE><VAR>x</VAR>*</CODE>
+<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP>
+<P>
+
+<DT><CODE><VAR>x</VAR>-</CODE>
+<DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word.
+<P>
+
+</DL>
+<P>
+
+If a word designator is supplied without an event specification, the
+previous command is used as the event.
+</P><P>
+
+<A NAME="Modifiers"></A>
+<HR SIZE="6">
+<A NAME="SEC5"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC4"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC2"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.1.3 Modifiers </H3>
+<!--docid::SEC5::-->
+<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><P>
+
+<DL COMPACT>
+
+<DT><CODE>h</CODE>
+<DD>Remove a trailing pathname component, leaving only the head.
+<P>
+
+<DT><CODE>t</CODE>
+<DD>Remove all leading pathname components, leaving the tail.
+<P>
+
+<DT><CODE>r</CODE>
+<DD>Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving
+the basename.
+<P>
+
+<DT><CODE>e</CODE>
+<DD>Remove all but the trailing suffix.
+<P>
+
+<DT><CODE>p</CODE>
+<DD>Print the new command but do not execute it.
+<P>
+
+<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>`&#38;'</SAMP> appears in <VAR>new</VAR>,
+it is replaced by <VAR>old</VAR>. A single backslash will quote
+the <SAMP>`&#38;'</SAMP>. The final delimiter is optional if it is the last
+character on the input line.
+<P>
+
+<DT><CODE>&#38;</CODE>
+<DD>Repeat the previous substitution.
+<P>
+
+<DT><CODE>g</CODE>
+<DD><DT><CODE>a</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>`&#38;'</SAMP>.
+<P>
+
+<DT><CODE>G</CODE>
+<DD>Apply the following <SAMP>`s'</SAMP> modifier once to each word in the event.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Programming with GNU History"></A>
+<HR SIZE="6">
+<A NAME="SEC6"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC5"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> 2. Programming with GNU History </H1>
+<!--docid::SEC6::-->
+<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">1. Using History Interactively</A>.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC7">2.1 Introduction to History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">What is the GNU History library for?</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC8">2.2 History Storage</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How information is stored.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC9">2.3 History Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that you can use.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC17">2.4 History Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables that control behaviour.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC18">2.5 History Programming Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Example of using the GNU History Library.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Introduction to History"></A>
+<HR SIZE="6">
+<A NAME="SEC7"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.1 Introduction to History </H2>
+<!--docid::SEC7::-->
+<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>&#60;readline/history.h&#62;</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><P>
+
+<A NAME="History Storage"></A>
+<HR SIZE="6">
+<A NAME="SEC8"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC7"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.2 History Storage </H2>
+<!--docid::SEC8::-->
+<P>
+
+The history list is an array of history entries. A history entry is
+declared as follows:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>typedef void *histdata_t;
+
+typedef struct _hist_entry {
+ char *line;
+ char *timestamp;
+ histdata_t data;
+} HIST_ENTRY;
+</pre></td></tr></table></P><P>
+
+The history list itself might therefore be declared as
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>HIST_ENTRY **the_history_list;
+</pre></td></tr></table></P><P>
+
+The state of the History library is encapsulated into a single structure:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><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></td></tr></table></P><P>
+
+If the flags member includes <CODE>HS_STIFLED</CODE>, the history has been
+stifled.
+</P><P>
+
+<A NAME="History Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC9"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC8"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.3 History Functions </H2>
+<!--docid::SEC9::-->
+<P>
+
+This section describes the calling sequence for the various functions
+exported by the GNU History library.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to call when you
+ want to use history in a
+ program.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions used to manage the list
+ of history entries.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions returning information about
+ the history list.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions used to change the position
+ in the history list.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to search the history list
+ for entries containing a string.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that read and write a file
+ containing the history list.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to perform csh-like history
+ expansion.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Initializing History and State Management"></A>
+<HR SIZE="6">
+<A NAME="SEC10"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.1 Initializing History and State Management </H3>
+<!--docid::SEC10::-->
+<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>
+
+<A NAME="IDX2"></A>
+<DL>
+<DT><U>Function:</U> void <B>using_history</B> <I>(void)</I>
+<DD>Begin a session in which the history functions might be used. This
+initializes the interactive variables.
+</DL>
+</P><P>
+
+<A NAME="IDX3"></A>
+<DL>
+<DT><U>Function:</U> HISTORY_STATE * <B>history_get_history_state</B> <I>(void)</I>
+<DD>Return a structure describing the current state of the input history.
+</DL>
+</P><P>
+
+<A NAME="IDX4"></A>
+<DL>
+<DT><U>Function:</U> void <B>history_set_history_state</B> <I>(HISTORY_STATE *state)</I>
+<DD>Set the state of the history list according to <VAR>state</VAR>.
+</DL>
+</P><P>
+
+<A NAME="History List Management"></A>
+<HR SIZE="6">
+<A NAME="SEC11"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC10"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.2 History List Management </H3>
+<!--docid::SEC11::-->
+<P>
+
+These functions manage individual entries on the history list, or set
+parameters managing the list itself.
+</P><P>
+
+<A NAME="IDX5"></A>
+<DL>
+<DT><U>Function:</U> void <B>add_history</B> <I>(const char *string)</I>
+<DD>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>
+
+<A NAME="IDX6"></A>
+<DL>
+<DT><U>Function:</U> void <B>add_history_time</B> <I>(const char *string)</I>
+<DD>Change the time stamp associated with the most recent history entry to
+<VAR>string</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX7"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>remove_history</B> <I>(int which)</I>
+<DD>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>
+
+<A NAME="IDX8"></A>
+<DL>
+<DT><U>Function:</U> histdata_t <B>free_history_entry</B> <I>(HIST_ENTRY *histent)</I>
+<DD>Free the history entry <VAR>histent</VAR> and any history library private
+data associated with it. Returns the application-specific data
+so the caller can dispose of it.
+</DL>
+</P><P>
+
+<A NAME="IDX9"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>replace_history_entry</B> <I>(int which, const char *line, histdata_t data)</I>
+<DD>Make the history entry at offset <VAR>which</VAR> have <VAR>line</VAR> and <VAR>data</VAR>.
+This returns the old entry so the caller can dispose of any
+application-specific data. In the case
+of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned.
+</DL>
+</P><P>
+
+<A NAME="IDX10"></A>
+<DL>
+<DT><U>Function:</U> void <B>clear_history</B> <I>(void)</I>
+<DD>Clear the history list by deleting all the entries.
+</DL>
+</P><P>
+
+<A NAME="IDX11"></A>
+<DL>
+<DT><U>Function:</U> void <B>stifle_history</B> <I>(int max)</I>
+<DD>Stifle the history list, remembering only the last <VAR>max</VAR> entries.
+</DL>
+</P><P>
+
+<A NAME="IDX12"></A>
+<DL>
+<DT><U>Function:</U> int <B>unstifle_history</B> <I>(void)</I>
+<DD>Stop stifling the history. This returns the previously-set
+maximum number of history entries (as set by <CODE>stifle_history()</CODE>).
+The value is positive if the history was
+stifled, negative if it wasn't.
+</DL>
+</P><P>
+
+<A NAME="IDX13"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_is_stifled</B> <I>(void)</I>
+<DD>Returns non-zero if the history is stifled, zero if it is not.
+</DL>
+</P><P>
+
+<A NAME="Information About the History List"></A>
+<HR SIZE="6">
+<A NAME="SEC12"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC11"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.3 Information About the History List </H3>
+<!--docid::SEC12::-->
+<P>
+
+These functions return information about the entire history list or
+individual list entries.
+</P><P>
+
+<A NAME="IDX14"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY ** <B>history_list</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX15"></A>
+<DL>
+<DT><U>Function:</U> int <B>where_history</B> <I>(void)</I>
+<DD>Returns the offset of the current history element.
+</DL>
+</P><P>
+
+<A NAME="IDX16"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>current_history</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX17"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>history_get</B> <I>(int offset)</I>
+<DD>Return the history entry at position <VAR>offset</VAR>, starting from
+<CODE>history_base</CODE> (see section <A HREF="history.html#SEC17">2.4 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>
+
+<A NAME="IDX18"></A>
+<DL>
+<DT><U>Function:</U> time_t <B>history_get_time</B> <I>(HIST_ENTRY *entry)</I>
+<DD>Return the time stamp associated with the history entry <VAR>entry</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX19"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_total_bytes</B> <I>(void)</I>
+<DD>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><P>
+
+<A NAME="Moving Around the History List"></A>
+<HR SIZE="6">
+<A NAME="SEC13"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC12"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.4 Moving Around the History List </H3>
+<!--docid::SEC13::-->
+<P>
+
+These functions allow the current index into the history list to be
+set or changed.
+</P><P>
+
+<A NAME="IDX20"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_set_pos</B> <I>(int pos)</I>
+<DD>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>
+
+<A NAME="IDX21"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>previous_history</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX22"></A>
+<DL>
+<DT><U>Function:</U> HIST_ENTRY * <B>next_history</B> <I>(void)</I>
+<DD>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><P>
+
+<A NAME="Searching the History List"></A>
+<HR SIZE="6">
+<A NAME="SEC14"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC13"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.5 Searching the History List </H3>
+<!--docid::SEC14::-->
+<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>
+
+<A NAME="IDX24"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_search</B> <I>(const char *string, int direction)</I>
+<DD>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>
+
+<A NAME="IDX25"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_search_prefix</B> <I>(const char *string, int direction)</I>
+<DD>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>
+
+<A NAME="IDX26"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_search_pos</B> <I>(const char *string, int direction, int pos)</I>
+<DD>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><P>
+
+<A NAME="Managing the History File"></A>
+<HR SIZE="6">
+<A NAME="SEC15"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC14"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.6 Managing the History File </H3>
+<!--docid::SEC15::-->
+<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>
+
+<A NAME="IDX27"></A>
+<DL>
+<DT><U>Function:</U> int <B>read_history</B> <I>(const char *filename)</I>
+<DD>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>
+
+<A NAME="IDX28"></A>
+<DL>
+<DT><U>Function:</U> int <B>read_history_range</B> <I>(const char *filename, int from, int to)</I>
+<DD>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>
+
+<A NAME="IDX29"></A>
+<DL>
+<DT><U>Function:</U> int <B>write_history</B> <I>(const char *filename)</I>
+<DD>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>
+
+<A NAME="IDX30"></A>
+<DL>
+<DT><U>Function:</U> int <B>append_history</B> <I>(int nelements, const char *filename)</I>
+<DD>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>
+
+<A NAME="IDX31"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_truncate_file</B> <I>(const char *filename, int nlines)</I>
+<DD>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><P>
+
+<A NAME="History Expansion"></A>
+<HR SIZE="6">
+<A NAME="SEC16"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC15"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.3.7 History Expansion </H3>
+<!--docid::SEC16::-->
+<P>
+
+These functions implement history expansion.
+</P><P>
+
+<A NAME="IDX32"></A>
+<DL>
+<DT><U>Function:</U> int <B>history_expand</B> <I>(char *string, char **output)</I>
+<DD>Expand <VAR>string</VAR>, placing the result into <VAR>output</VAR>, a pointer
+to a string (see section <A HREF="history.html#SEC2">1.1 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">1.1.3 Modifiers</A>).
+</DL>
+<P>
+
+If an error ocurred in expansion, then <VAR>output</VAR> contains a descriptive
+error message.
+</DL>
+</P><P>
+
+<A NAME="IDX33"></A>
+<DL>
+<DT><U>Function:</U> char * <B>get_history_event</B> <I>(const char *string, int *cindex, int qchar)</I>
+<DD>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>
+
+<A NAME="IDX34"></A>
+<DL>
+<DT><U>Function:</U> char ** <B>history_tokenize</B> <I>(const char *string)</I>
+<DD>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>
+
+<A NAME="IDX35"></A>
+<DL>
+<DT><U>Function:</U> char * <B>history_arg_extract</B> <I>(int first, int last, const char *string)</I>
+<DD>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><P>
+
+<A NAME="History Variables"></A>
+<HR SIZE="6">
+<A NAME="SEC17"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC16"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.4 History Variables </H2>
+<!--docid::SEC17::-->
+<P>
+
+This section describes the externally-visible variables exported by
+the GNU History Library.
+</P><P>
+
+<A NAME="IDX36"></A>
+<DL>
+<DT><U>Variable:</U> int <B>history_base</B>
+<DD>The logical offset of the first entry in the history list.
+</DL>
+</P><P>
+
+<A NAME="IDX37"></A>
+<DL>
+<DT><U>Variable:</U> int <B>history_length</B>
+<DD>The number of entries currently stored in the history list.
+</DL>
+</P><P>
+
+<A NAME="IDX38"></A>
+<DL>
+<DT><U>Variable:</U> int <B>history_max_entries</B>
+<DD>The maximum number of history entries. This must be changed using
+<CODE>stifle_history()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX39"></A>
+<DL>
+<DT><U>Variable:</U> int <B>history_write_timestamps</B>
+<DD>If non-zero, timestamps are written to the history file, so they can be
+preserved between sessions. The default value is 0, meaning that
+timestamps are not saved.
+</DL>
+</P><P>
+
+<A NAME="IDX40"></A>
+<DL>
+<DT><U>Variable:</U> char <B>history_expansion_char</B>
+<DD>The character that introduces a history event. The default is <SAMP>`!'</SAMP>.
+Setting this to 0 inhibits history expansion.
+</DL>
+</P><P>
+
+<A NAME="IDX41"></A>
+<DL>
+<DT><U>Variable:</U> char <B>history_subst_char</B>
+<DD>The character that invokes word substitution if found at the start of
+a line. The default is <SAMP>`^'</SAMP>.
+</DL>
+</P><P>
+
+<A NAME="IDX42"></A>
+<DL>
+<DT><U>Variable:</U> char <B>history_comment_char</B>
+<DD>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>
+
+<A NAME="IDX43"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>history_word_delimiters</B>
+<DD>The characters that separate tokens for <CODE>history_tokenize()</CODE>.
+The default value is <CODE>" \t\n()<>;&|"</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX44"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>history_search_delimiter_chars</B>
+<DD>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>
+
+<A NAME="IDX45"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>history_no_expand_chars</B>
+<DD>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>
+
+<A NAME="IDX46"></A>
+<DL>
+<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B>
+<DD>If non-zero, single-quoted words are not scanned for the history expansion
+character. The default value is 0.
+</DL>
+</P><P>
+
+<A NAME="IDX47"></A>
+<DL>
+<DT><U>Variable:</U> rl_linebuf_func_t * <B>history_inhibit_expansion_function</B>
+<DD>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><P>
+
+<A NAME="History Programming Example"></A>
+<HR SIZE="6">
+<A NAME="SEC18"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC17"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.5 History Programming Example </H2>
+<!--docid::SEC18::-->
+<P>
+
+The following program demonstrates simple use of the GNU History Library.
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>#include &#60;stdio.h&#62;
+#include &#60;readline/history.h&#62;
+
+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 &#38;&#38; *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, &#38;expansion);
+ if (result)
+ fprintf (stderr, "%s\n", expansion);
+
+ if (result &#60; 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]-&#62;line);
+ }
+ else if (strncmp (line, "delete", 6) == 0)
+ {
+ int which;
+ if ((sscanf (line + 6, "%d", &#38;which)) == 1)
+ {
+ HIST_ENTRY *entry = remove_history (which);
+ if (!entry)
+ fprintf (stderr, "No such entry %d\n", which);
+ else
+ {
+ free (entry-&#62;line);
+ free (entry);
+ }
+ }
+ else
+ {
+ fprintf (stderr, "non-numeric arg given to `delete'\n");
+ }
+ }
+ }
+}
+</FONT></pre></td></tr></table></P><P>
+
+<A NAME="Copying This Manual"></A>
+<HR SIZE="6">
+<A NAME="SEC19"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC18"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC20"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC6"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> A. Copying This Manual </H1>
+<!--docid::SEC19::-->
+<P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="history.html#SEC20">A.1 GNU Free Documentation License</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="GNU Free Documentation License"></A>
+<HR SIZE="6">
+<A NAME="SEC20"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> A.1 GNU Free Documentation License </H2>
+<!--docid::SEC20::-->
+<P>
+
+<A NAME="IDX48"></A>
+<center>
+ Version 1.2, November 2002
+</center>
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</pre></td></tr></table></P><P>
+
+<OL>
+<LI>
+PREAMBLE
+<P>
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document <EM>free</EM> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+</P><P>
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+</P><P>
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+</P><P>
+
+<LI>
+APPLICABILITY AND DEFINITIONS
+<P>
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+</P><P>
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+</P><P>
+
+A "Secondary Section" is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+</P><P>
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+</P><P>
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+</P><P>
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+</P><P>
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input
+format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available
+<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification. Examples
+of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and
+<FONT SIZE="-1">JPG</FONT>. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or
+<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are
+not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for
+output purposes only.
+</P><P>
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+</P><P>
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+</P><P>
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+</P><P>
+
+<LI>
+VERBATIM COPYING
+<P>
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+</P><P>
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+</P><P>
+
+<LI>
+COPYING IN QUANTITY
+<P>
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+</P><P>
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</P><P>
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+</P><P>
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+</P><P>
+
+<LI>
+MODIFICATIONS
+<P>
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+</P><P>
+
+<OL>
+<LI>
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+<P>
+
+<LI>
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+<P>
+
+<LI>
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+<P>
+
+<LI>
+Preserve all the copyright notices of the Document.
+<P>
+
+<LI>
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+<P>
+
+<LI>
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+<P>
+
+<LI>
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+<P>
+
+<LI>
+Include an unaltered copy of this License.
+<P>
+
+<LI>
+Preserve the section Entitled "History", Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled "History" in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+<P>
+
+<LI>
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the "History" section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+<P>
+
+<LI>
+For any section Entitled "Acknowledgements" or "Dedications", Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+<P>
+
+<LI>
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+<P>
+
+<LI>
+Delete any section Entitled "Endorsements". Such a section
+may not be included in the Modified Version.
+<P>
+
+<LI>
+Do not retitle any existing section to be Entitled "Endorsements" or
+to conflict in title with any Invariant Section.
+<P>
+
+<LI>
+Preserve any Warranty Disclaimers.
+</OL>
+<P>
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+</P><P>
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+</P><P>
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+</P><P>
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+</P><P>
+
+<LI>
+COMBINING DOCUMENTS
+<P>
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+</P><P>
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+</P><P>
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all
+sections Entitled "Endorsements."
+</P><P>
+
+<LI>
+COLLECTIONS OF DOCUMENTS
+<P>
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+</P><P>
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</P><P>
+
+<LI>
+AGGREGATION WITH INDEPENDENT WORKS
+<P>
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+</P><P>
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</P><P>
+
+<LI>
+TRANSLATION
+<P>
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+</P><P>
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+</P><P>
+
+<LI>
+TERMINATION
+<P>
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+</P><P>
+
+<LI>
+FUTURE REVISIONS OF THIS LICENSE
+<P>
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>.
+</P><P>
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+</OL>
+<P>
+
+<HR SIZE="6">
+<A NAME="SEC21"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC20"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC19"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC20"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> A.1.1 ADDENDUM: How to use this License for your documents </H3>
+<!--docid::SEC21::-->
+<P>
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> with the Invariant Sections being <VAR>list their titles</VAR>, with
+ the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts
+ being <VAR>list</VAR>.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+</P><P>
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</P><P>
+
+<A NAME="Concept Index"></A>
+<HR SIZE="6">
+<A NAME="SEC22"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC21"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC23"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC23"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> B. Concept Index </H1>
+<!--docid::SEC22::-->
+<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="history.html#cp_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+</td></tr></table><br><P></P>
+<TABLE border=0>
+<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX23">anchored search</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#SEC3">event designators</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_F"></A>F</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX48">FDL, GNU Free Documentation License</A></TD><TD valign=top><A HREF="history.html#SEC20">A.1 GNU Free Documentation License</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_H"></A>H</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX1">history events</A></TD><TD valign=top><A HREF="history.html#SEC3">1.1.1 Event Designators</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#SEC2">history expansion</A></TD><TD valign=top><A HREF="history.html#SEC2">1.1 History Expansion</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#SEC14">History Searching</A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#cp_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="history.html#cp_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="history.html#cp_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="history.html#cp_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+</td></tr></table><br><P>
+
+<A NAME="Function and Variable Index"></A>
+<HR SIZE="6">
+<A NAME="SEC23"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> C. Function and Variable Index </H1>
+<!--docid::SEC23::-->
+<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="history.html#vr_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A>
+ &nbsp;
+<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A>
+ &nbsp;
+<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A>
+ &nbsp;
+<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A>
+ &nbsp;
+<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A>
+ &nbsp;
+</td></tr></table><br><P></P>
+<TABLE border=0>
+<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_A"></A>A</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX5"><CODE>add_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX6"><CODE>add_history_time</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX30"><CODE>append_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_C"></A>C</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX10"><CODE>clear_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX16"><CODE>current_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_F"></A>F</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX8"><CODE>free_history_entry</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_G"></A>G</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX33"><CODE>get_history_event</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_H"></A>H</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX35"><CODE>history_arg_extract</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX36"><CODE>history_base</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX42"><CODE>history_comment_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX32"><CODE>history_expand</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX40"><CODE>history_expansion_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX17"><CODE>history_get</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX3"><CODE>history_get_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX18"><CODE>history_get_time</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX47"><CODE>history_inhibit_expansion_function</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX13"><CODE>history_is_stifled</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX37"><CODE>history_length</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX14"><CODE>history_list</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX38"><CODE>history_max_entries</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX45"><CODE>history_no_expand_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX46"><CODE>history_quotes_inhibit_expansion</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX24"><CODE>history_search</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX44"><CODE>history_search_delimiter_chars</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX26"><CODE>history_search_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX25"><CODE>history_search_prefix</CODE></A></TD><TD valign=top><A HREF="history.html#SEC14">2.3.5 Searching the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX4"><CODE>history_set_history_state</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX20"><CODE>history_set_pos</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX41"><CODE>history_subst_char</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX34"><CODE>history_tokenize</CODE></A></TD><TD valign=top><A HREF="history.html#SEC16">2.3.7 History Expansion</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX19"><CODE>history_total_bytes</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX31"><CODE>history_truncate_file</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX43"><CODE>history_word_delimiters</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX39"><CODE>history_write_timestamps</CODE></A></TD><TD valign=top><A HREF="history.html#SEC17">2.4 History Variables</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_N"></A>N</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX22"><CODE>next_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_P"></A>P</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX21"><CODE>previous_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC13">2.3.4 Moving Around the History List</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_R"></A>R</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX27"><CODE>read_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX28"><CODE>read_history_range</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX7"><CODE>remove_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX9"><CODE>replace_history_entry</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_S"></A>S</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX11"><CODE>stifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_U"></A>U</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX12"><CODE>unstifle_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC11">2.3.2 History List Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX2"><CODE>using_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="vr_W"></A>W</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX15"><CODE>where_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC12">2.3.3 Information About the History List</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="history.html#IDX29"><CODE>write_history</CODE></A></TD><TD valign=top><A HREF="history.html#SEC15">2.3.6 Managing the History File</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="history.html#vr_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="history.html#vr_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="history.html#vr_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="history.html#vr_G" style="text-decoration:none"><b>G</b></A>
+ &nbsp;
+<A HREF="history.html#vr_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+<A HREF="history.html#vr_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="history.html#vr_P" style="text-decoration:none"><b>P</b></A>
+ &nbsp;
+<A HREF="history.html#vr_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="history.html#vr_S" style="text-decoration:none"><b>S</b></A>
+ &nbsp;
+<A HREF="history.html#vr_U" style="text-decoration:none"><b>U</b></A>
+ &nbsp;
+<A HREF="history.html#vr_W" style="text-decoration:none"><b>W</b></A>
+ &nbsp;
+</td></tr></table><br><P>
+
+<HR SIZE="6">
+<A NAME="SEC_Contents"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Table of Contents</H1>
+<UL>
+<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A>
+<BR>
+<UL>
+<A NAME="TOC2" HREF="history.html#SEC2">1.1 History Expansion</A>
+<BR>
+<UL>
+<A NAME="TOC3" HREF="history.html#SEC3">1.1.1 Event Designators</A>
+<BR>
+<A NAME="TOC4" HREF="history.html#SEC4">1.1.2 Word Designators</A>
+<BR>
+<A NAME="TOC5" HREF="history.html#SEC5">1.1.3 Modifiers</A>
+<BR>
+</UL>
+</UL>
+<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A>
+<BR>
+<UL>
+<A NAME="TOC7" HREF="history.html#SEC7">2.1 Introduction to History</A>
+<BR>
+<A NAME="TOC8" HREF="history.html#SEC8">2.2 History Storage</A>
+<BR>
+<A NAME="TOC9" HREF="history.html#SEC9">2.3 History Functions</A>
+<BR>
+<UL>
+<A NAME="TOC10" HREF="history.html#SEC10">2.3.1 Initializing History and State Management</A>
+<BR>
+<A NAME="TOC11" HREF="history.html#SEC11">2.3.2 History List Management</A>
+<BR>
+<A NAME="TOC12" HREF="history.html#SEC12">2.3.3 Information About the History List</A>
+<BR>
+<A NAME="TOC13" HREF="history.html#SEC13">2.3.4 Moving Around the History List</A>
+<BR>
+<A NAME="TOC14" HREF="history.html#SEC14">2.3.5 Searching the History List</A>
+<BR>
+<A NAME="TOC15" HREF="history.html#SEC15">2.3.6 Managing the History File</A>
+<BR>
+<A NAME="TOC16" HREF="history.html#SEC16">2.3.7 History Expansion</A>
+<BR>
+</UL>
+<A NAME="TOC17" HREF="history.html#SEC17">2.4 History Variables</A>
+<BR>
+<A NAME="TOC18" HREF="history.html#SEC18">2.5 History Programming Example</A>
+<BR>
+</UL>
+<A NAME="TOC19" HREF="history.html#SEC19">A. Copying This Manual</A>
+<BR>
+<UL>
+<A NAME="TOC20" HREF="history.html#SEC20">A.1 GNU Free Documentation License</A>
+<BR>
+<UL>
+<A NAME="TOC21" HREF="history.html#SEC21">A.1.1 ADDENDUM: How to use this License for your documents</A>
+<BR>
+</UL>
+</UL>
+<A NAME="TOC22" HREF="history.html#SEC22">B. Concept Index</A>
+<BR>
+<A NAME="TOC23" HREF="history.html#SEC23">C. Function and Variable Index</A>
+<BR>
+</UL>
+<HR SIZE=1>
+<A NAME="SEC_OVERVIEW"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Short Table of Contents</H1>
+<BLOCKQUOTE>
+<A NAME="TOC1" HREF="history.html#SEC1">1. Using History Interactively</A>
+<BR>
+<A NAME="TOC6" HREF="history.html#SEC6">2. Programming with GNU History</A>
+<BR>
+<A NAME="TOC19" HREF="history.html#SEC19">A. Copying This Manual</A>
+<BR>
+<A NAME="TOC22" HREF="history.html#SEC22">B. Concept Index</A>
+<BR>
+<A NAME="TOC23" HREF="history.html#SEC23">C. Function and Variable Index</A>
+<BR>
+
+</BLOCKQUOTE>
+<HR SIZE=1>
+<A NAME="SEC_About"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC22">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="history.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>About this document</H1>
+This document was generated by <I>Chet Ramey</I> on <I>September, 22 2003</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+<P></P>
+The buttons in the navigation panels have the following meaning:
+<P></P>
+<table border = "1">
+<TR>
+<TH> Button </TH>
+<TH> Name </TH>
+<TH> Go to </TH>
+<TH> From 1.2.3 go to</TH>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt; ] </TD>
+<TD ALIGN="CENTER">
+Back
+</TD>
+<TD>
+previous section in reading order
+</TD>
+<TD>
+1.2.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt; ] </TD>
+<TD ALIGN="CENTER">
+Forward
+</TD>
+<TD>
+next section in reading order
+</TD>
+<TD>
+1.2.4
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt;&lt; ] </TD>
+<TD ALIGN="CENTER">
+FastBack
+</TD>
+<TD>
+previous or up-and-previous section
+</TD>
+<TD>
+1.1
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ Up ] </TD>
+<TD ALIGN="CENTER">
+Up
+</TD>
+<TD>
+up section
+</TD>
+<TD>
+1.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt;&gt; ] </TD>
+<TD ALIGN="CENTER">
+FastForward
+</TD>
+<TD>
+next or up-and-next section
+</TD>
+<TD>
+1.3
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Top] </TD>
+<TD ALIGN="CENTER">
+Top
+</TD>
+<TD>
+cover (top) of document
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Contents] </TD>
+<TD ALIGN="CENTER">
+Contents
+</TD>
+<TD>
+table of contents
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Index] </TD>
+<TD ALIGN="CENTER">
+Index
+</TD>
+<TD>
+concept index
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ ? ] </TD>
+<TD ALIGN="CENTER">
+About
+</TD>
+<TD>
+this page
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+</TABLE>
+<P></P>
+where the <STRONG> Example </STRONG> assumes that the current position
+is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
+the following structure:
+<UL>
+<LI> 1. Section One </LI>
+<UL>
+<LI>1.1 Subsection One-One</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.2 Subsection One-Two</LI>
+<UL>
+<LI>1.2.1 Subsubsection One-Two-One
+</LI><LI>1.2.2 Subsubsection One-Two-Two
+</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
+&lt;== Current Position </STRONG>
+</LI><LI>1.2.4 Subsubsection One-Two-Four
+</LI></UL>
+<LI>1.3 Subsection One-Three</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.4 Subsection One-Four</LI>
+</UL>
+</UL>
+
+<HR SIZE=1>
+<BR>
+<FONT SIZE="-1">
+This document was generated
+by <I>Chet Ramey</I> on <I>September, 22 2003</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+
+</BODY>
+</HTML>
diff --git a/lib/readline/doc/history.info b/lib/readline/doc/history.info
new file mode 100644
index 00000000..70bbb622
--- /dev/null
+++ b/lib/readline/doc/history.info
@@ -0,0 +1,1317 @@
+This is history.info, produced by makeinfo version 4.5 from
+./history.texi.
+
+This document describes the GNU History library (version 5.0, 19
+September 2003), a programming tool that provides a consistent user
+interface for recalling lines of previously typed input.
+
+ Copyright (C) 1988-2003 Free Software Foundation, Inc.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.1 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, with the Front-Cover texts
+ being "A GNU Manual," and with the Back-Cover Texts as in (a)
+ below. A copy of the license is included in the section entitled
+ "GNU Free Documentation License."
+
+ (a) The FSF's Back-Cover Text is: "You have freedom to copy and
+ modify this GNU Manual, like GNU software. Copies published by
+ the Free Software Foundation raise funds for GNU development."
+
+INFO-DIR-SECTION Libraries
+START-INFO-DIR-ENTRY
+* History: (history). The GNU history library API.
+END-INFO-DIR-ENTRY
+
+
+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.
+* Copying This Manual:: Copying This 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'
+`a'
+ Cause changes to be applied over the entire event line. Used in
+ conjunction with `s', as in `gs/OLD/NEW/', or with `&'.
+
+`G'
+ Apply the following `s' modifier once to each word in the event.
+
+
+
+File: history.info, Node: Programming with GNU History, Next: Copying This Manual, 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;
+ char *timestamp;
+ 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: void add_history_time (const char *string)
+ Change the time stamp associated with the most recent history
+ entry to STRING.
+
+ - 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: histdata_t free_history_entry (HIST_ENTRY *histent)
+ Free the history entry HISTENT and any history library private
+ data associated with it. Returns the application-specific data so
+ the caller can dispose of it.
+
+ - 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 the caller can dispose of any
+ application-specific 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 previously-set
+ maximum number of history entries (as set by `stifle_history()').
+ 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: time_t history_get_time (HIST_ENTRY *entry)
+ Return the time stamp associated with the history entry ENTRY.
+
+ - 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: int history_write_timestamps
+ If non-zero, timestamps are written to the history file, so they
+ can be preserved between sessions. The default value is 0,
+ meaning that timestamps are not saved.
+
+ - 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 `history_tokenize()'. The
+ default value is `" \t\n()<>;&|"'.
+
+ - 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: 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: 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: Copying This Manual, Next: Concept Index, Prev: Programming with GNU History, Up: Top
+
+Copying This Manual
+*******************
+
+* Menu:
+
+* GNU Free Documentation License:: License for copying this manual.
+
+
+File: history.info, Node: GNU Free Documentation License, Up: Copying This Manual
+
+GNU Free Documentation License
+==============================
+
+ Version 1.2, November 2002
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book.
+ We recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it
+ can be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You
+ accept the license if you copy, modify or distribute the work in a
+ way requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in
+ the notice that says that the Document is released under this
+ License. If a section does not fit the above definition of
+ Secondary then it is not allowed to be designated as Invariant.
+ The Document may contain zero Invariant Sections. If the Document
+ does not identify any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images
+ composed of pixels) generic paint programs or (for drawings) some
+ widely available drawing editor, and that is suitable for input to
+ text formatters or for automatic translation to a variety of
+ formats suitable for input to text formatters. A copy made in an
+ otherwise Transparent file format whose markup, or absence of
+ markup, has been arranged to thwart or discourage subsequent
+ modification by readers is not Transparent. An image format is
+ not Transparent if used for any substantial amount of text. A
+ copy that is not "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML, PostScript or PDF designed for
+ human modification. Examples of transparent image formats include
+ PNG, XCF and JPG. Opaque formats include proprietary formats that
+ can be read and edited only by proprietary word processors, SGML or
+ XML for which the DTD and/or processing tools are not generally
+ available, and the machine-generated HTML, PostScript or PDF
+ produced by some word processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow
+ the conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the
+ title equally prominent and visible. You may add other material
+ on the covers in addition. Copying with changes limited to the
+ covers, as long as they preserve the title of the Document and
+ satisfy these conditions, can be treated as verbatim copying in
+ other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a
+ machine-readable Transparent copy along with each Opaque copy, or
+ state in or with each Opaque copy a computer-network location from
+ which the general network-using public has access to download
+ using public-standard network protocols a complete Transparent
+ copy of the Document, free of added material. If you use the
+ latter option, you must take reasonably prudent steps, when you
+ begin distribution of Opaque copies in quantity, to ensure that
+ this Transparent copy will remain thus accessible at the stated
+ location until at least one year after the last time you
+ distribute an Opaque copy (directly or through your agents or
+ retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of
+ copies, to give them a chance to provide you with an updated
+ version of the Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with
+ the Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version to
+ whoever possesses a copy of it. In addition, you must do these
+ things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of
+ previous versions (which should, if there were any, be listed
+ in the History section of the Document). You may use the
+ same title as a previous version if the original publisher of
+ that version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on
+ the Title Page. If there is no section Entitled "History" in
+ the Document, create one stating the title, year, authors,
+ and publisher of the Document as given on its Title Page,
+ then add an item describing the Modified Version as stated in
+ the previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in
+ the "History" section. You may omit a network location for a
+ work that was published at least four years before the
+ Document itself, or if the original publisher of the version
+ it refers to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the
+ section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section
+ titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option
+ designate some or all of these sections as invariant. To do this,
+ add their titles to the list of Invariant Sections in the Modified
+ Version's license notice. These titles must be distinct from any
+ other section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end
+ of the list of Cover Texts in the Modified Version. Only one
+ passage of Front-Cover Text and one of Back-Cover Text may be
+ added by (or through arrangements made by) any one entity. If the
+ Document already includes a cover text for the same cover,
+ previously added by you or by arrangement made by the same entity
+ you are acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination
+ all of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow
+ this License in all other respects regarding verbatim copying of
+ that document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of
+ a storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided for under this License. Any other
+ attempt to copy, modify, sublicense or distribute the Document is
+ void, and will automatically terminate your rights under this
+ License. However, parties who have received copies, or rights,
+ from you under this License will not have their licenses
+ terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ `http://www.gnu.org/copyleft/'.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by the
+ Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+----------------------------------------------------
+
+ To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+
+File: history.info, Node: Concept Index, Next: Function and Variable Index, Prev: Copying This Manual, Up: Top
+
+Concept Index
+*************
+
+* Menu:
+
+* anchored search: Searching the History List.
+* event designators: Event Designators.
+* FDL, GNU Free Documentation License: GNU Free Documentation License.
+* 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.
+* add_history_time: History List Management.
+* append_history: Managing the History File.
+* clear_history: History List Management.
+* current_history: Information About the History List.
+* free_history_entry: History List Management.
+* 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_get_time: Information About the History List.
+* 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.
+* history_write_timestamps: 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: Top1282
+Node: Using History Interactively1910
+Node: History Interaction2417
+Node: Event Designators3836
+Node: Word Designators4760
+Node: Modifiers6390
+Node: Programming with GNU History7608
+Node: Introduction to History8339
+Node: History Storage10024
+Node: History Functions11159
+Node: Initializing History and State Management12143
+Node: History List Management12943
+Node: Information About the History List14957
+Node: Moving Around the History List16439
+Node: Searching the History List17428
+Node: Managing the History File19346
+Node: History Expansion21152
+Node: History Variables23047
+Node: History Programming Example25836
+Node: Copying This Manual28558
+Node: GNU Free Documentation License28796
+Node: Concept Index51189
+Node: Function and Variable Index51739
+
+End Tag Table
diff --git a/lib/readline/doc/history.ky b/lib/readline/doc/history.ky
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/history.ky
diff --git a/lib/readline/doc/history.log b/lib/readline/doc/history.log
new file mode 100644
index 00000000..8400c260
--- /dev/null
+++ b/lib/readline/doc/history.log
@@ -0,0 +1,172 @@
+This is TeX, Version 3.14159 (Web2C 7.3.1) (format=tex 2001.2.12) 22 SEP 2003 09:04
+**/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/history.
+texi
+
+(/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/history.t
+exi (texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics,
+\bindingoffset=\dimen16
+\normaloffset=\dimen17
+\pagewidth=\dimen18
+\pageheight=\dimen19
+\outerhsize=\dimen20
+\outervsize=\dimen21
+\cornerlong=\dimen22
+\cornerthick=\dimen23
+\topandbottommargin=\dimen24
+\headlinebox=\box16
+\footlinebox=\box17
+\margin=\insert252
+\EMsimple=\toks12
+\groupbox=\box18
+\groupinvalidhelp=\toks13
+\mil=\dimen25
+\exdentamount=\skip18
+\inmarginspacing=\skip19
+ pdf,
+\tempnum=\count26
+\lnkcount=\count27
+\filename=\toks14
+\filenamelength=\count28
+\pgn=\count29
+\toksA=\toks15
+\toksB=\toks16
+\toksC=\toks17
+\toksD=\toks18
+\boxA=\box19
+\countA=\count30
+ fonts,
+\sffam=\fam8
+\textleading=\dimen26
+\mainmagstep=\count31
+\fontdepth=\count32
+
+page headings,
+\titlepagetopglue=\skip20
+\titlepagebottomglue=\skip21
+\evenheadline=\toks19
+\oddheadline=\toks20
+\evenfootline=\toks21
+\oddfootline=\toks22
+ tables,
+\tableindent=\dimen27
+\itemindent=\dimen28
+\itemmargin=\dimen29
+\itemmax=\dimen30
+\itemno=\count33
+\multitableparskip=\skip22
+\multitableparindent=\skip23
+\multitablecolspace=\dimen31
+\multitablelinespace=\skip24
+\colcount=\count34
+\savedfootnotes=\box20
+ conditionals, indexing,
+\secondaryindent=\skip25
+\partialpage=\box21
+\doublecolumnhsize=\dimen32
+ sectioning,
+\chapno=\count35
+\secno=\count36
+\subsecno=\count37
+\subsubsecno=\count38
+\appendixno=\count39
+\absseclevel=\count40
+\secbase=\count41
+\chapheadingskip=\skip26
+\secheadingskip=\skip27
+\subsecheadingskip=\skip28
+ toc,
+\tocfile=\write0
+\contentsrightmargin=\skip29
+\savepageno=\count42
+\lastnegativepageno=\count43
+\shortappendixwidth=\dimen33
+\tocindent=\dimen34
+ environments,
+\errorbox=\box22
+\lispnarrowing=\skip30
+\envskipamount=\skip31
+\circthick=\dimen35
+\cartouter=\dimen36
+\cartinner=\dimen37
+\normbskip=\skip32
+\normpskip=\skip33
+\normlskip=\skip34
+\lskip=\skip35
+\rskip=\skip36
+\tabw=\dimen38
+
+defuns,
+\defbodyindent=\skip37
+\defargsindent=\skip38
+\deflastargmargin=\skip39
+\parencount=\count44
+ macros,
+\macscribble=\write1
+\paramno=\count45
+\macname=\toks23
+ cross references,
+\auxfile=\write2
+\savesfregister=\count46
+\footnoteno=\count47
+
+(/usr/local/share/texmf/tex/plain/dvips/epsf.tex
+\epsffilein=\read0
+\epsfframemargin=\dimen39
+\epsfframethickness=\dimen40
+\epsfrsize=\dimen41
+\epsftmp=\dimen42
+\epsftsize=\dimen43
+\epsfxsize=\dimen44
+\epsfysize=\dimen45
+\pspoints=\dimen46
+\epsfnoopenhelp=\toks24
+)
+\noepsfhelp=\toks25
+ localization,
+\nolanghelp=\toks26
+\defaultparindent=\dimen47
+
+and turning on texinfo input format.) (history.aux)
+@cpindfile=@write3
+@fnindfile=@write4
+@vrindfile=@write5
+@tpindfile=@write6
+@kyindfile=@write7
+@pgindfile=@write8
+ (version.texi) [1
+\openout2 = `history.aux'.
+
+\openout3 = `history.cp'.
+
+\openout4 = `history.fn'.
+
+\openout5 = `history.vr'.
+
+\openout6 = `history.tp'.
+
+\openout7 = `history.ky'.
+
+\openout8 = `history.pg'.
+
+] [2]
+(history.toc) [-1] [-2] (hsuser.texi Chapter 1
+\openout0 = `history.toc'.
+
+@btindfile=@write9
+ [1
+\openout9 = `history.bt'.
+
+] [2]) (hstech.texi Chapter 2
+[3] [4] [5] [6] [7] [8] [9] [10] [11]) Appendix A [12] (fdl.texi [13] [14]
+[15] [16] [17] [18]) Appendix B [19] [20] (history.cps) Appendix C [21]
+[22] (history.vrs) [23] [24] )
+Here is how much of TeX's memory you used:
+ 1399 strings out of 13013
+ 16305 string characters out of 97233
+ 45527 words of memory out of 263001
+ 2271 multiletter control sequences out of 10000+0
+ 31953 words of font info for 111 fonts, out of 400000 for 1000
+ 19 hyphenation exceptions out of 1000
+ 15i,6n,17p,306b,649s stack positions out of 300i,100n,500p,50000b,4000s
+
+Output written on history.dvi (28 pages, 79868 bytes).
diff --git a/lib/readline/doc/history.pg b/lib/readline/doc/history.pg
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/history.pg
diff --git a/lib/readline/doc/history.ps b/lib/readline/doc/history.ps
new file mode 100644
index 00000000..71a748a4
--- /dev/null
+++ b/lib/readline/doc/history.ps
@@ -0,0 +1,2404 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: history.dvi
+%%Pages: 28
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -D 300 -o history.ps history.dvi
+%DVIPSParameters: dpi=300, compressed
+%DVIPSSource: TeX output 2003.09.22:0904
+%%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 39158280 55380996 1000 300 300 (history.dvi)
+@start
+%DVIPSBitmapFont: Fa cmti9 9 1
+/Fa 1 47 df<1230127812F0126005047C830C>46 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fb cmr9 9 34
+/Fb 34 122 df<126012F0A212701210A31220A21240A2040B7D830B>44
+D<EA07E0EA1C38EA381CEA300CEA700EEA6006A2EAE007AAEA6006A2EA700EEA300CEA38
+1CEA1C38EA07E010187F9713>48 D<12035AB4FC1207B3A2EA7FF80D187D9713>I<EA07
+E0EA1838EA201CEA601EEA700EEA201E1200131CA213381370EA07E0EA0038131C130E13
+0FA212E0A212C0EA400EEA601CEA1838EA07E010187F9713>51 D<EA01F8EA0704EA0C06
+EA180E123013001270126012E0EAE3E0EAE418EAE80CEAF00EEAE0061307A31260A2EA70
+06EA300EEA180CEA0C38EA07E010187F9713>54 D<1240EA7FFF13FEA2EA4004EA800813
+10A2EA00201340A21380120113005AA25A1206A2120EA5120410197E9813>I<EA07E0EA
+1818EA300CEA20061260A21270EA780CEA3E18EA1F30EA07C0EA03E0EA0CF8EA307CEA60
+1E130FEAC0071303A3EA6002EA2004EA1818EA07E010187F9713>I<EA07E0EA1C30EA30
+18EA700CEA600EEAE006A21307A31260EA700FEA3017EA1827EA07C7EA00071306130E13
+0C12701318EA6030EA3060EA0F8010187F9713>I<B57E380E00E01470808080A280A215
+80A81500A25C140E5CA2147814E0B51280191A7F991D>68 D<B512F8380E003814181408
+140C1404A3EB0100A35BEA0FFFEA0E037FA390C7FCA8EAFFE0161A7F9919>70
+D<EB3F023801C0C63803002E000E131E48130E14065A007813021270A200F090C7FCA590
+3801FFC03970000E00A2127812387EA27E000313163801C06638003F821A1A7E991E>I<
+39FFE1FFC0390E001C00AB380FFFFC380E001CAC39FFE1FFC01A1A7F991D>I<EAFFE000
+0EC7FCB01408A3141814101430147014F0B5FC151A7F9918>76 D<00FEEB7FC0000FEB0E
+001404EA0B80EA09C0A2EA08E01370A21338131CA2130E1307EB0384A2EB01C4EB00E4A2
+1474143CA2141C140C121C38FF80041A1A7F991D>78 D<EA0FC2EA1836EA200EEA600612
+C01302A3EAE0001270127EEA3FE0EA1FF8EA03FCEA007E130E130713031280A3EAC00213
+06EAE004EAD818EA87E0101A7E9915>83 D<39FFE07FC0390E000E001404B200065B1207
+6C5B6C6C5A3800E0C0013FC7FC1A1A7F991D>85 D<EA1FC0EA38707FEA101C1200A2EA03
+FCEA1E1C1238127012E01480A2133CEA705F381F8F0011107F8F13>97
+D<EA07F8EA1C1C1238EA700813005AA612701304EA3808EA1C18EA07E00E107F8F11>99
+D<133F1307A9EA03E7EA0C17EA180F487E127012E0A6126012706C5AEA1C373807C7E013
+1A7F9915>I<EA07C0EA1C30EA30181270EA600C12E0EAFFFCEAE000A41260EA7004EA38
+08EA1C18EA07E00E107F8F11>I<EA0FCF3818718038303000EA7038A4EA30306C5AEA2F
+C00060C7FCA21270EA3FF013FC6C7EEA600FEAC003A4EA6006EA381CEA07E011187F8F13
+>103 D<12FC121CA9137CEA1D87381E0380A2121CAB38FF9FF0141A809915>I<1218123C
+A212181200A612FC121CAE12FF081A80990A>I<38FC7C1F391D8E6380391E0781C0A200
+1C1301AB39FF9FE7F81D107F8F20>109 D<EAFC7CEA1D87381E0380A2121CAB38FF9FF0
+1410808F15>I<EA07E0EA1C38EA300CEA700EEA6006EAE007A6EA6006EA700EEA381CEA
+1C38EA07E010107F8F13>I<EAFCFCEA1D07381E0380381C01C0A2EB00E0A6EB01C01480
+381E0300EA1D06EA1CF890C7FCA6B47E1317808F15>I<EAFC78EA1D9CEA1E1C1308EA1C
+00ABEAFF800E10808F0F>114 D<EA1F20EA60E0EA402012C0A2EAF000127FEA3FC0EA1F
+E0EA00F0EA8070133012C01320EAF040EA8F800C107F8F0F>I<1208A41218A21238EAFF
+C0EA3800A81320A41218EA1C40EA07800B177F960F>I<38FC1F80EA1C03AB1307120CEA
+0E0B3803F3F01410808F15>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0
+A2EA01C0A36C5A11107F8F14>I<38FE3F80383C1E00EA1C086C5AEA0F306C5A6C5A1201
+7F1203EA0270487E1208EA181CEA381E38FC3FC012107F8F14>120
+D<38FF0F80383C0700EA1C061304A26C5AA26C5AA3EA03A0A2EA01C0A36C5AA248C7FCA2
+12E112E212E4127811177F8F14>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fc cmsltt10 9 13
+/Fc 13 122 df<EA0FE0EA1FF8EA381CEA100E1200A2EA03FEEA1FFCEA3C1C127012E0A2
+133C1378EA7FFFEA1F8F10107D8F14>97 D<EA01F0EA07F8EA0E0CEA1C0E1238EA7006A2
+EAFFFEA2EAE000A21270130CEA381CEA1FF8EA07F00F107D8F14>101
+D<121F7F0007C7FCA5133EEA0EFF380FC3801303120EA3381C0700A6EA380E38FF1FC0A2
+12177F9614>104 D<136013F013E013401300A4EA3FC0A21201A5EA0380A6EA0700EAFF
+F8A20D187C9714>I<EA1FE013F0EA00E0A6EA01C0A6EA0380A6EA0700EAFFFCA20E177D
+9614>108 D<383CE380383FFFC0EA1F7DEA1E79EA1C71A33838E380A63871C70038FDF7
+C0EAFCF312107F8F14>I<EA3E3E13FF380FC3801303120EA3381C0700A6EA380E38FF1F
+C0A212107F8F14>I<EA03F0EA07F8EA1E1CEA3C0E12381270A212E0A3131EEA701C1338
+EA7870EA3FE0EA0F800F107D8F14>I<381F87C0EB9FE0EA03B8EBE040EBC0005BA21207
+90C7FCA5120EEAFFF0A213107F8F14>114 D<EA03FAEA0FFEEA1C0E1230A2EA3800EA1F
+E0EA0FF8EA01FEEA000FEA600312701306EAF80CEAFFF8EA4FE010107E8F14>I<120612
+0EA4EAFFF8A2EA1C00A55AA313301338A21370EA1FE0EA0F800D157C9414>I<EAF83EA2
+EA380EA5EA701CA5133C1378EA3FFFEA1F9F10107D8F14>I<381FCFE0A238070380EB07
+00A2130EEA038EA2139CA213B8A2EA01B013F05BA25BA2485AA200E7C7FC12EE12FC1278
+13187F8F14>121 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fd cmtt9 9 76
+/Fd 76 126 df<126012F0AD12601200A4126012F0A212600417789614>33
+D<EAC060EAE0E0A4EAC060A5EA40400B0B7C9614>I<EA071CA5B51280A27E380E3800A7
+387FFF80B5FCA2381C7000A511177F9614>I<13801201A2EA07E0EA1FF0EA39BCEA619C
+EAC18EA3EAE184EA7180127FEA1FE0EA0FF0EA01F8139C138EEA418612E1A3EA718CEA39
+B8EA1FF0EA0FC0EA0180A212000F1D7E9914>I<EA3806EA7C0E126CEAEE1CA25BA2126C
+EA7C70123812005BA2485AA3485AA248C7FC130E131FEA0E1BEB3B80A2121CA238381B00
+131FEA180E111D7F9914>I<1207487EEA18C0EA38E0A35B3839CF80138F381F1C00121E
+A2EA0E38121EEA37701267EAE3F05B38E1C38013E3EA63F3383F3F00EA1E1E11177F9614
+>I<126012F012F812781218A31230A2126012C01280050C789614>I<EA01801203EA0600
+5A121C121812385AA35AA91270A37E1218121C120C7EEA03801201091D799914>I<1280
+12C01260123012381218121C120EA31207A9120EA3121C121812381230126012C0128008
+1D7C9914>I<EA0380A3EA638CEAF39EEA7FFCEA3FF8EA0FE0A2EA3FF8EA7FFCEAF39EEA
+638CEA0380A30F107E9214>I<EA01C0A7B51280A33801C000A711117F9314>I<127012F8
+12FCA2127C120C1218123012E012C0060A798414>I<EAFFFEA30F037E8C14>I<127012F8
+A312700505798414>I<1306130EA2131CA21338A21370A213E0A2EA01C0A2EA0380A3EA
+0700A2120EA25AA25AA25AA25AA25A0F1D7E9914>I<EA07C0EA0FE0EA1C70EA3838EA30
+18EA701CA2EAE00EA9EA701CA2EA3838A2EA1C70EA0FE0EA07C00F177E9614>I<1203A2
+5A5A123F12F712471207AEEA7FF0A20C177C9614>I<EA0FC0EA1FF0EA3838EA701CEAE0
+0EA312401200131CA213381330137013E0EA01C0EA030012065AEA180E1230EA7FFEA20F
+177E9614>I<137813F8EA01B8A2EA0338A21206120E120C121C12381230127012E0B512
+80A238003800A548B4FCA211177F9614>52 D<EA01F0EA07F8EA0E1C121C1238EA300012
+70A25AEAE7C0EAEFF0EAF838EAF01C130CEAE00EA212601270130CEA381CEA1C38EA0FF0
+EA07C00F177E9614>54 D<127012F8A312701200A6127012F8A312700510798F14>58
+D<127012F8A312701200A6126012F012F8A2127812181230127012E012800515798F14>
+I<1306131E133E13F8EA01F0EA03C0EA0F80EA1F00123C12F85A7E123C121FEA0F80EA03
+C0EA01F0EA00F8133E131E13060F157E9514>I<B51280A27EC8FCA3387FFF80B5FCA211
+097F8F14>I<12C012F07E123E7EEA0780EA03E0EA01F0EA0078133E131E133E1378EA01
+F0EA03E0EA0780EA1F00123E12F85A12C00F157E9514>I<EA01C0487EA21360A2EA0770
+A4EA0630EA0E38A4487EEA1FFCA2EA1C1CA2487EA238FE3F80A211177F9614>65
+D<EAFFF013FCEA381E130E1307A4130E131EEA3FFCA2EA381E130E1307A5130E131EEAFF
+FC13F810177F9614>I<3801F180EA07FFEA0E1FEA1C071238EA7003A348C7FCA7387003
+80A338380700121CEA0E0EEA07FCEA01F011177F9614>I<EAFFE013F8EA383C7F130E7F
+A3EB0380A8EB0700A2130E131E5BEAFFF813E011177F9614>I<B5FCA2EA3807A490C7FC
+A21338A2EA3FF8A2EA3838A290C7FCA3EB0380A4B5FCA211177F9614>I<B51280A2EA38
+03A490C7FCA21338A2EA3FF8A2EA3838A290C7FCA7B4FCA211177F9614>I<EA03C6EA0F
+FEEA1C3EEA181E1238EA700EA21260EAE000A4137FA2130E12601270A2EA381E1218EA1C
+3EEA0FFEEA03CE10177F9614>I<38FE3F80A238380E00A8EA3FFEA2EA380EA938FE3F80
+A211177F9614>I<EAFFF8A2EA0700B3EAFFF8A20D177D9614>I<B4FCA21238AF1307A4B5
+FCA210177E9614>76 D<38FE3F80A2383E0E00123BA4138E1239A213CEA31238A213EE13
+6EA4133E12FEA211177F9614>78 D<EAFFF013FCEA381E130E1307A5130E131EEA3FFC13
+F0EA3800A812FEA210177F9614>80 D<EAFFE013F8EA383C131C7FA45B133CEA3FF85BEA
+38387FA51480EB1DC0A238FE0F80EB070012177F9614>82 D<EA0FCCEA1FFCEA307CEA60
+3CEAE01CA313001270127EEA3FE0EA0FF0EA01F8EA001C131E130E126012E0A2EAF01CEA
+F838EAFFF0EAC7E00F177E9614>I<387FFF80B5FCEAE1C3A43801C000AFEA0FF8A21117
+7F9614>I<38FE0FE0A238380380B0381C0700A2EA0E0EEA07FCEA01F01317809614>I<38
+FC1F80A238380E00A3EA3C1EEA1C1CA46C5AA4EA0630EA0770A3EA0360A213E0A26C5A11
+177F9614>I<38FC1F80A238380E00EA3C1EEA1C1CEA1E3CEA0E38A26C5AA2EA036013E0
+A26C5AA8EA07F0A211177F9614>89 D<EAFFE0A2EAE000B3A7EAFFE0A20B1D799914>91
+D<12C07EA21270A27EA27EA27EA27EA2EA0380A3EA01C0A2EA00E0A21370A21338A2131C
+A2130EA213060F1D7E9914>I<EAFFE0A21200B3A712FFA20B1D7F9914>I<EAFFFEA30F03
+7E7E14>95 D<1208121812301260A212C0A312F012F812781230050C799914>I<EA1FC0
+EA7FF0EA7078EA2018EA001CA2EA07FC121FEA3C1C127012E0A3EA707C383FFF80EA0F8F
+11107E8F14>I<12FCA2121CA513F8EA1DFEEA1F07EA1E03001C1380EB01C0A6EB038000
+1E1300EA1F0EEA1DFCEA0CF81217809614>I<EA03F8EA0FFEEA1C0EEA3804EA70001260
+12E0A412601270EA380EEA1C1EEA0FFCEA03F00F107E8F14>I<137EA2130EA5EA07CEEA
+0FFEEA1C3EEA301EEA700E12E0A61270EA301EEA383E381FEFC0EA07CF12177F9614>I<
+EA07E0EA0FF0EA1C38EA301CEA700CEAE00EA2EAFFFEA2EAE00012601270EA380EEA1C1E
+EA0FFCEA03F00F107E8F14>I<13FCEA01FEEA038EEA07041300A3EA7FFE12FFEA0700AC
+EAFFF8A20F177F9614>I<EA07CF381FFF80EA383B38301800EA701CA3EA3018EA3838EA
+3FF0EA37C00070C7FCA2EA3FF86C7E487EEA700F38E00380A438700700EA3C1EEA1FFCEA
+07F011197F8F14>I<12FCA2121CA51378EA1DFEEA1F86EA1E07121CAA38FF8FE0A21317
+809614>I<1206120FA21206C7FCA4B4FCA21207ACEAFFF8A20D187C9714>I<12FCA2121C
+A5EBFF80A2EB1C005B5B5BEA1DC0EA1FE0A2EA1E70EA1C38133C131C7F38FF1F80A21117
+809614>107 D<EAFF80A21203B3EAFFFEA20F177E9614>I<EAFB8EEAFFDF383CF380A2EA
+38E3AA38FEFBE013791310808F14>I<EAFC78EAFDFEEA1F86EA1E07121CAA38FF8FE0A2
+1310808F14>I<EA07C0EA1FF0EA3C78EA701CA2EAE00EA6EA701CEA783CEA3C78EA1FF0
+EA07C00F107E8F14>I<EAFCF8EAFDFEEA1F07EA1E03001C1380EB01C0A6EB0380001E13
+00EA1F0EEA1DFCEA1CF890C7FCA6B47EA21218808F14>I<EA03E7EA0FF7EA1C1FEA300F
+1270487EA6EA700F1230EA1C3FEA0FF7EA07C7EA0007A6EB3FE0A213187F8F14>I<EAFE
+1FEB7F80EA0EE3380F810090C7FCA2120EA8EAFFF0A211107F8F14>I<EA0FD8EA3FF8EA
+603812C0A2EAF000EA7F80EA3FF0EA07F8EA001CEA600612E012F0EAF81CEAFFF8EACFE0
+0F107E8F14>I<1206120EA4EA7FFC12FFEA0E00A8130EA3131CEA07F8EA01F00F157F94
+14>I<EAFC3FA2EA1C07AB131F380FFFE0EA03E71310808F14>I<38FE3F80A2383C1E00EA
+1C1CA36C5AA3EA0630EA0770A36C5AA311107F8F14>I<38FE3F80A238700700EA380EA3
+EA39CEA3EA1B6C121AA3EA1E7CA2EA0E3811107F8F14>I<EA7E3FA2EA1E3CEA0E78EA07
+705B12036C5A12037FEA0770EA0E781338487E38FE3F80A211107F8F14>I<38FE3F80A2
+381C0E005BA2120E5BA212071330A2EA0370A25B1201A25BA3485A12730077C7FC127E12
+3C11187F8F14>I<EA3FFF5AEA700E131C1338EA007013E0EA01C0EA0380EA0700120EEA
+1C0712381270B5FCA210107F8F14>I<133E13FEEA01E0EA0380AAEA7F0012FE127FEA03
+80AAEA01E0EA00FE133E0F1D7E9914>I<12E0B3AB031D789914>I<127812FE120FEA0380
+AAEA01FCEA00FEEA01FCEA0380AAEA0F0012FE12780F1D7E9914>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fe cmss10 10.95 2
+/Fe 2 42 df<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012F0
+AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40
+D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012
+07A213005AA2121E121C123C12385A5A0B2E7EA112>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Ff cmbx10 12 27
+/Ff 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: Fg cmtt10 12 29
+/Fg 29 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<387CE0E038FFFBF8EA7FFF381F1F1CEA1E1EA2EA1C1CAC387F1F1F39FF9F9F80397F1F
+1F00191580941A>I<EAFE3EEBFF80B512C0EA0FC1EB80E01300120EAC38FFE3FE13E713
+E317157F941A>I<EA01F0EA07FCEA1FFF383E0F80EA3C07387803C0EA700138E000E0A6
+EAF001007013C0EA7803383C0780EA3E0F381FFF00EA07FCEA01F013157D941A>I<387F
+81F838FF8FFC387F9FFE3803FE1EEBF80CEBE000A25B5BAAEA7FFFB5FC7E17157F941A>
+114 D<3807FB80EA1FFF127FEA7807EAE003A30078C7FCEA7FC0EA1FFCEA07FE38003F80
+1307386001C012E0A2EAF00338FC0780B51200EAEFFEEAE3F812157C941A>I<487E1203
+A6387FFFE0B5FCA238038000AA1470A43801C1E013FF6C1380EB3F00141C7F9B1A>I<38
+FE0FE0A3EA0E00AD1301EA0F033807FFFE7EEA00FC17157F941A>I<387FC7FC00FF13FE
+007F13FC380E00E0A3380701C0A338038380A33801C700A3EA00EEA3137CA2133817157F
+941A>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fh cmsltt10 10.95 17
+/Fh 17 122 df<13181338A2137813F81203120F137012041200A413E0A6EA01C0A6EA7F
+FE12FF127F0F1C7B9B18>49 D<EB3F80EBFFE0000313F03807C078EB003C000E131CA212
+1E120EC7FCA21438147814F0EB01E0EB03C0EB0780EB0F00133E5B13F0EA03E0485A380F
+0060003E1370387FFFE0B5FC7E161C7E9B18>I<EB07E0A31300A4EB01C0EA01F1EA07FD
+EA0FFFEA1E0FEA3C0738780380127012E0A4EB0700A25B5B6C5AEA787F383FFFC0381FEF
+E0380F87C0131C7C9B18>100 D<13F8EA07FE487E381F0780EA3C03387801C0127012E0
+A2B5FCA2148000E0C7FCA213033870078038780F00EA3FFE6C5AEA07F012147B9318>I<
+EB01F8EB07FC131FEB1E3CEB38181400A25B381FFFF05A7E38007000A25BA6485AA6EA7F
+FE12FF127F161C7E9B18>I<EB1E1F90387FFF8090B5FC3901E1E3003803C0E01380EA07
+00A3495AA238038780EA07FF49C7FCEA0E7890C8FCA26CB47E4813E0487F383C00784813
+3812705AA2147800705B387C03E0383FFFC0000F90C7FCEA03FC191F809318>I<131813
+3C137C133C131890C7FCA4EA0FF8121F120FEA0038A25BA65BA6EA7FFFB512806C130011
+1D7C9C18>105 D<EA0FFCA3EA001CA45BA65BA65BA6B5128014C01480121C7D9B18>108
+D<381F8F80383FBFE0381FFFF03803F07013E0EA07C013801300A4000E13E0A638FF87F8
+EBCFFCEB87F816147F9318>110 D<13FCEA03FF000F1380EA1F07383C03C0EA78010070
+13E0EAE000A4EB01C0A2EB0380EAF007EB0F00EA7C3EEA3FFC6C5AEA07E013147C9318>
+I<381FE1F8EBE7FCEBEFFE3800FE1EEBFC0C3801F8005B5B5BA3485AA6EAFFFC7F5B1714
+7E9318>114 D<EBFE603807FFE05AEA1F01121C003813C0EA3C00001F1300EA0FF8EA07
+FE3800FF801307383001C01270A238780380EA7C07B51200EAEFFEEA63F813147D9318>
+I<487E7FA3485A387FFFC0B5FC7E38038000A248C7FCA6120E5BEB0380A2EB07005BEA07
+FE5BEA01F012197C9818>I<387E07E0EAFE0FEA7E07EA0E00A2381C01C0A638380380A4
+1307131F383FFFE06C13F03807E3E014147D9318>I<38FF87F8138F1387383800E0EB01
+C0A3148013E3EA39F31233EB7700A212371376EA3666136EEA3C7CA2EA383815147C9318
+>119 D<381FE3FC13E713E33803C3C000011380EBE700EA00EE13FC137C1338137813FC
+EA01DCEA038E12071307120E38FF1FE0EB9FF0EB1FE016147E9318>I<380FF1FE381FF9
+FF380FF1FE3803807013C0000113E0A213C114C0A23800E380A2EBE700A213E6136E136C
+137C1378A21370A25BA2485A12F3EAF780B4C7FC5A1278181E7F9318>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fi cmbx12 13.14 45
+/Fi 45 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<123C127E12FFA4127E123C1200A8123C127E
+12FFA4127E123C08187C9711>58 D<141CA2143EA3147FA24A7EA39038019FC0A2903803
+1FE0140F01077FEB0607A2010C7F1403011C7FEB1801A2496C7EA2017FB5FCA29039E000
+7F8049133FA2484880151F00038190C7120FA2486E7ED8FFF090B51280A229257EA42E>
+65 D<B612E015FC3903F800FFED1FC0ED07E06F7E6F7E82150082A2167FA31780AA1700
+A316FEA24B5A5E4B5A4B5AED1FC0EDFF80B648C7FC15E029257EA42F>68
+D<B7FCA23903F8007FED0F8015071503A21501A3ED00C01406A21600A2140E141EEBFFFE
+A2EBF81E140E1406A21660A291C7FC16C0A415011503A2ED0F80153FB7FCA223257EA428
+>I<B612FEA23803F800151F8181A281A3ED01801403A292C7FCA25C5C90B5FCA2EBF80F
+8080A491C8FCAAB512F0A221257EA427>I<B500E0B512E0A23B03F80003F800AF90B6FC
+A29038F80003B0B500E0B512E0A22B257EA430>72 D<B512E0A23803F800B3AFB512E0A2
+13257EA417>I<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E153E157CEC03FC
+B6FCA220257EA425>76 D<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA36D1406A26D6C
+130CA26D6C1318A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A291387E0300A3
+EC3F06A2EC1F8CA2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A235257EA43A>
+I<D8FFF8903807FFE07FD803FE9038003C006D14187F6D7E6D7E806D7E6D7E13036D7E6D
+7E80EC7F80EC3FC0141FEC0FE015F0EC07F8EC03FC1401EC00FE157F1698ED3FD8ED1FF8
+150F15071503A2150115001678486C1438D8FFFC1418A22B257EA430>I<01FF13800007
+13E3380F80F7381E001F48130F481307140312F81401A27E91C7FCB4FCEA7FE013FE383F
+FFE014F86C13FE00077F6C1480C67E010313C0EB003FEC0FE01407A200C01303A315C07E
+6C13076C14806CEB0F0038FFC03E38E3FFF838803FE01B257DA422>83
+D<B539E00FFFC0A2D803F8C7EA78001630B3A700015D7F00005D137C6D495A6D0107C7FC
+90380FE03E903803FFF89038007FC02A257EA42F>85 D<B53B81FFFE01FFF0A23D07F000
+1FC0000F007013066C6C010F5CA26F7E6C6C5EA26D496C1338000017304B7E017F01195C
+A291388030FE013F5E829139C0607F01011F5E03E0138190280FE0C03F83C7FCA29139F1
+801FC3010715C617E69139FB000FEE010315EC02FF14FC6D486D5AA24A130301005DA24A
+130102785CA202306D5A3C257FA43F>87 D<EA07FF001F13E0383E03F0383F00F880147E
+121EC7FCA3EB1FFE3803FE7EEA0FC0EA1F00123E127E5AA314BEEA7E01383F073E391FFE
+1FE03807F00F1B187E971E>97 D<EAFFC0A2120FACEBC1FCEBCFFF9038FC0FC09038F007
+E09038C003F0A2EC01F8A215FCA815F8A2EC03F013E09038F007E090381C1F80390E0FFF
+00380C03F81E267FA522>I<EB7FE03803FFF83807C07C381F80FC13005A007E13781400
+12FEA8127E127F6C130CEA1F80EBC0183807E0703803FFE038007F0016187E971B>I<EC
+FFC0A2140FAC137F3803FFCF380FE0FF381F803F383F000FA2127EA212FEA8127EA27E14
+1F381F803F380FC0EF3903FFCFFC3800FE0F1E267EA522>I<137F3803FFC03807C1F038
+0F80F8EA1F0048137C127E147E12FEA2B512FEA248C7FCA3127EA214067E6C130C380F80
+183807E0703803FFE038007F8017187E971C>I<EB1FC0EB7FF0EA01F83803E1F8120713
+C1380FC0F01400A7B5FCA2EA0FC0B3A2EAFFFEA215267EA513>I<3901FF07C00007EBDF
+E0380F83F1EA1F01393E00F800007E7FA6003E5B6C485A380F83E0EBFFC0001190C7FC00
+30C8FCA21238123C383FFFE06C13FC806C7F481480383C003F48EB0FC000F81307A4007C
+EB0F806CEB1F00381F807E3807FFF8C613C01B247E971F>I<EAFFC0A2120FAC14FE9038
+C3FF809038CE0FC013D89038D007E013E0A213C0AF39FFFC7FFEA21F267EA522>I<120F
+EA1F80EA3FC0A4EA1F80EA0F00C7FCA7EA7FC0A2120FB3A2EAFFF8A20D277EA611>I<EA
+FFC0A2120FB3B0EAFFFCA20E267EA511>108 D<26FF80FE137F903A83FF81FFC03B0F8E
+0FC707E0019813CC903A9007E803F001A013F0A201C013E0AF3BFFFC7FFE3FFFA230187E
+9733>I<38FF80FE903883FF80390F8E0FC0139890389007E013A0A213C0AF39FFFC7FFE
+A21F187E9722>I<EB7F803803FFF03807C0F8381F807E48487EA2007EEB1F80A200FE14
+C0A8007E1480A26CEB3F00A2381F807E6C6C5A3803FFF038007F801A187E971F>I<38FF
+C1FCEBCFFF390FFC1FC09038F007E001C013F0140315F8140115FCA8EC03F8A215F0EBE0
+079038F00FE09038DC1F809038CFFF00EBC3F801C0C7FCA9EAFFFCA21E237F9722>I<38
+FF83E0EB8FF8380F8C7CEB90FC13B013A01478EBE0005BAEEAFFFEA216187F9719>114
+D<3807F8C0EA1FFFEA3C07EA7001EAF000A300FC1300B47EEA7FFC7F383FFF80000F13C0
+120338001FE01303EAC001A212E014C0EAF00338FC078038EFFF00EAC3FC13187E9718>
+I<13C0A41201A312031207120F121FB512C0A2380FC000AC1460A63807E0C013E13801FF
+8038007E0013237FA218>I<39FFC07FE0A2000F1307B0140FA200071317EBE0673903FF
+C7FE38007F071F187E9722>I<39FFF80FF8A2390FC001C015803907E00300A26D5A0003
+1306EBF80E0001130C13FC00005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21D
+187F9720>I<3BFFF9FFE0FF80A23B1FC03F001C00000F6D13181580D807E05CA29039F0
+3FC07000030137136015E02601F8635BA29038FCE3F1000001C15B15F990267F80FBC7FC
+A215FF90383F007EA2011E133CA3010C131829187F972C>I<39FFF83FF0A2390FC00F00
+3807E00E6C6C5A6D5A6C6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F81361EBE0
+FC3801C07E3803807F3907003F8048131F39FFC07FF8A21D187F9720>I<39FFF80FF8A2
+390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00005B13FEEB7E30
+A26D5AA214E06D5AA26D5AA26DC7FCA21306A25B1230EA781CEAFC185B1370EA68E0EA7F
+C0001FC8FC1D237F9720>I<387FFFF8A2387C03F0EA700738600FE000E013C0EB1F80EA
+C03F1400137EEA00FE5B485A0003130C13F0EA07E0120FEBC01C381F8018003F1338387F
+0078387E01F8B5FCA216187E971B>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fj cmsl10 10.95 29
+/Fj 29 122 df<903803F07C90381E0DC69038380F0FEB701E01E0130EEC0C003801C01C
+A548485A007FB512C03903803800A448485AA6000E5BA648485A001E7F38FF8FFC20207E
+9F1B>11 D<EB03E0EB1C181338EB703C13E014383801C000A5485A387FFFF038038070A4
+380700E0A6380E01C0A6381C0380001E13C038FF0FF016207E9F19>I<13201360A43830
+61C0383C4380380E4E00EA0778EA01E0A2EA07B8EA1C9CEA708FEAE083EA0180A490C7FC
+12147AA117>42 D<13181338EA01F8EA0E701200A513E0A6EA01C0A6EA0380A6EA070013
+80EAFFFC0E1E7B9D17>49 D<EB3F80EBC1E038010070000213785AA2000F137C1380A2EB
+00781206C712F814F0EB01E014C0EB0380EB0700130E5B5B13605B485A38030020120600
+0813405A383FFFC0481380B5FC161E7E9D17>I<13FFEA01FE1380A5EA0300A61206A65A
+A65AA65AA65AA6B4FCA2102D7EA10D>91 D<13FFEA01FEEA0006A5130CA61318A61330A6
+1360A613C0A6EA0180A6EAFF00A2102D82A10D>93 D<EA07F8EA0C0CEA1E061307121C12
+00A313FFEA07C7EA1E07EA3C0E127800F01310A3131EEB2E2038784F40381F878014147D
+9317>97 D<13FEEA0383380E0780121C0038130090C7FC12785AA45AA37E5BEA70026C5A
+EA1C18EA07E011147D9314>99 D<1438EB01F8EB00781438A21470A614E013FCEA0382EA
+0601121CEA3C00383801C0127812F0A438E00380A412F0EA700738380F00381C37803807
+C7E015207D9F19>I<13F8EA070EEA0E07381C038012381278127012F0B5FC00F0C7FCA2
+5AA46C5AEA7002EA3004EA1C18EA07E011147D9314>I<EB07C0EB1C60EB30F01360EBE0
+E0EBC0001201A5485AEA3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<
+140EEB3E11EBE1A33801C1C2380381E0EA07801301120FA3380703C01480EB8700EA04FC
+48C7FCA21218121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0381C0700
+EA07FC181F809417>I<13E0120712011200A2485AA6485AEB8F80EB90E013A0EBC06013
+80000713E01300A5380E01C0A6381C0380001E13C038FF8FF014207E9F19>I<EA01C0EA
+03E0A213C0EA0180C7FCA6EA0380121F12071203A2EA0700A6120EA65A121EEAFF800B1F
+7F9E0C>I<13E0120712011200A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B
+207F9F0C>108 D<390387C07C391F9861863907A072073903C03403EB80380007EB7807
+EB0070A5000EEBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80
+381F90E0EA07A03803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8F
+F014147E9319>I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A2
+14C0130300F0138038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807EC383801
+F01C6C487E140F48487E1580A53903800F00A2140E141E141C5C38074070EB61C0011FC7
+FC90C8FCA3120EA4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E01E0123C
+003813C0127812F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA0007A313
+0EA4131EEBFFC0131D7D9318>I<EA038E381FB380EA07C71203EB8300EA078090C7FCA5
+120EA65A121EEAFFC011147E9312>I<EA01F9EA0607EA080312181301EA3802EA3C0012
+1F13F0EA07FCEA01FEEA001FEA40071303A212601306EAF004EAC818EA87E010147F9312
+>I<1380EA0100A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D
+1C7C9B12>I<381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E
+381F9F8011147B9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12
+075BA25BEA039013A013E05B5B120190C7FC15147C9318>I<39FF9FE1FC393C07807039
+1C030060148015401580EA0E0790380D81001309EB19C21311380F21C4EA0720EB40C814
+E8EB80F0A26C485A1460000213401E147C9321>I<381FF0FF3803C07800011370144038
+00E0C0EBE180EB73001376133CA2131C132E134E1387EA0107380203801204380C01C038
+3C03E038FE07FC18147F9318>I<390FF83F803901E00E00EBC00C140813E000005B1430
+14205C13705CA20171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000
+F1C8FC12E61278191D809318>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fk cmcsc10 10.95 16
+/Fk 16 121 df<1318A2133CA3134EA213CF1387A238010380A2000313C0EA0201A23807
+FFE0EA0400A2481370A2001813380038137838FE01FF18177F961C>97
+D<EB7E083803819838070078000C1338001C13185A00781308127000F01300A700701308
+127812386C1310120C000713603803818038007E0015177E961B>99
+D<EAFFFE381C0780EB01C0EB00E01470A21438A2143CA71438A21478147014E0EB01C0EB
+038038FFFE0016177E961C>I<B512C0EA1C011300144014601420A213081400A21318EA
+1FF8EA1C181308A390C7FCA6EAFFC013177E9618>102 D<EB7E08380381983807007800
+0C1338001C13185A00781308127000F01300A5EB03FEEB00381270127812387E120C1207
+380380D838007F0817177E961D>I<38FF87FC381C00E0AAEA1FFFEA1C00AA38FF87FC16
+177E961C>I<EAFF80EA1C00B3A3EAFF8009177E960E>I<EA1FF0EA01C0B112E1A2EAC180
+EA4300123E0C177E9613>I<EAFFC0001CC7FCAD1440A314C0A2148013011307B5FC1217
+7E9617>108 D<00FCEB07F0001C1480A20016130BA200131313A338118023A23810C043
+A3EB6083A2EB3103A3131AA2130C123800FEEB1FF01C177E9622>I<38FC01FC381E0070
+14201217EA1380A2EA11C0EA10E0A213701338A2131C130E1307A2EB03A0EB01E0A21300
+1460123800FE132016177E961C>I<EAFFFCEA1C07EB03C0130114E0A414C01303EB0700
+EA1FFC001CC7FCAAB47E13177E9619>112 D<EA0FC4EA302CEA601CEA400CEAC004A3EA
+E0001270127FEA3FE0EA0FF8EA01FCEA001C130E13061280A3EAC004EAE008EAD810EA87
+E00F177E9615>115 D<387FFFFC3870381C00401304A200C0130600801302A300001300
+AE3803FF8017177F961B>I<38FF81FC381C00701420B0000C1340120E6C138038018300
+EA007C16177E961C>I<38FF80FE381F0070000E13606C1340EB80803803C100EA01C3EA
+00E213F4137813387F133E134E13C7EB8780380103C0EA0201380600E0000413F0000C13
+70003C137800FE13FF18177F961C>120 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fl cmti10 10.95 1
+/Fl 1 47 df<127012F8A212F012E005057B840E>46 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fm cmbxti10 14.4 1
+/Fm 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fn cmbx12 17.28 37
+/Fn 37 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<B500C00303B5FCA26E5DC61900D9EFF0150EA3D9E7F85D
+A2D9E3FC5DA2D9E1FE5DA2D9E0FF5DA26E6C495AA26E6C495AA36E6C495AA26E6C130EA2
+6E6C5BA26E6C5BA26E6C5BA26E6C5BA392387F81C0A292383FC380A2DB1FE7C7FCA2ED0F
+FEA26F5AA36F5A487EB526E001F090B6FCA26F5A48317EB04D>77
+D<B56C49B512C08080C66D90390003E0006E6E5AEBEFFC13E780EBE3FF01E17F01E07F6E
+7E143F816E7E6E7E6E7E14036E7E16806E13C0ED7FE0ED3FF0151F16F8ED0FFCED07FEED
+03FF6F13818117C1EE7FE1EE3FF1EE1FF9EE0FFD160717FF828282177F173FA2171F170F
+486C1507B500E014031701A23A317EB03F>I<B712E016FEEEFF80C6D9800013E0EE3FF0
+EE0FF8EE07FCA2EE03FEA217FFA717FEA2EE07FC17F8160FEE3FE0EEFFC091B6120016F8
+0280C8FCB3A2B67EA330317EB037>80 D<007FB8FCA39039C00FF801D87E00EC003F007C
+82007882A200708200F01780A3481603A5C792C7FCB3AA017FB6FCA331307DAF38>84
+D<B6D88003B51280A3C60180C73807C000715AB3AE137F4DC7FC80013F150EA26D6C5C6D
+6C5C6D6C5C6D6C495A903A00FF801FC0023FB55A020F49C8FC020013E039317EB03E>I<
+B500FC91B5FCA3000390C8EA03C06C17806E14076C170080017F150EA26E141E013F151C
+6E143C011F153880010F5D8001075DA26E130101035D6E13036D5D15806D4AC7FCA26F5A
+027F130EEDE01E023F131CEDF03C021F133815F8020F5BA2EDFCF002075B15FF6E5BA26E
+5BA26E90C8FCA3157EA2153CA238317EB03D>I<EBFFF0000313FF390F803F809038C00F
+E0486C6C7EA26E7ED80FC07FEA0780C7FCA414FF131FEBFFE33803FC03EA0FF0EA1FC012
+3FEA7F80A2EAFF00A31407A2387F800D393FC01DFE3A1FE078FFF03907FFE07FC6EB803F
+24207E9F27>97 D<EA01F812FFA3120F1207ADEC3FE0ECFFFC9038FBE07F9039FF001F80
+49EB0FC04914E049EB07F016F8A2ED03FCA316FEA816FCA3ED07F8A216F06DEB0FE06D14
+C001E7EB3F809039C3C0FE00903880FFF89038003FC027327EB12D>I<EB0FFF017F13C0
+3901FC01F03803F0033907E007F8120FEA1FC0003FEB03F0EC01E04848C7FCA312FFA812
+7FA36C6C131CA2001F14386C7E000714703903F001E03901FC07C039007FFF00EB0FF81E
+207D9F24>I<ED0FC0EC07FFA3EC007F153FADEB07F8EB3FFF9038FE07BF3903F801FF39
+07E0007F120F4848133F123FA2485AA312FFA8127FA36C7EA2121F6C6C137F000714FF26
+03F00313E03A01FC0F3FFE38007FFEEB0FF027327DB12D>I<EB0FFC90387FFF803901FC
+0FC03903F003E03907E001F0000F14F8391FC000FC003F14FEA24848137E157FA212FFA2
+90B6FCA20180C7FCA4127FA36C6C1307121F150E6C7E6C6C131C6C6C13783900FE03E090
+383FFFC0903807FE0020207E9F25>I<EB01FE90380FFF8090381FC3C090387F07E09038
+FE0FF0120113FC1203EC07E0EC018091C7FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C
+327EB119>I<90391FF007C09039FFFE3FE03A01F83F79F03907E00FC3000F14E19039C0
+07E0E0001FECF000A2003F80A5001F5CA2000F5CEBE00F00075C2603F83FC7FC3806FFFE
+380E1FF090C9FC121EA2121F7F90B57E6C14F015FC6C806C801680000F15C0003FC7127F
+007EEC1FE0007C140F00FC1407A4007EEC0FC0003E1580003F141FD80FC0EB7E003907F8
+03FC0001B512F0D8001F90C7FC242F7E9F28>I<EA01F812FFA3120F1207ADEC07F8EC3F
+FEEC783F02C013809039F9801FC0EBFB0001FE14E05BA35BB3B500C3B5FCA328327DB12D
+>I<EA03C0487E487E487EA46C5A6C5A6C5AC8FCA9EA01F8127FA31207B3A7B51280A311
+337DB217>I<EA01F812FFA3120F1207B3B3A6B512C0A312327DB117>108
+D<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01E0FC02C090388300FE280FF1801F
+C6137F2607F30013CC01F602F8148001FC5CA3495CB3B500C3B5380FFFFCA33E207D9F43
+>I<3903F007F800FFEB3FFEEC783F02C013803A0FF1801FC03807F30001F614E013FCA3
+5BB3B500C3B5FCA328207D9F2D>I<EB07FC90387FFFC03901FC07F03903F001F848486C
+7E4848137E001F147F003F158049133F007F15C0A300FF15E0A8007F15C0A36C6CEB7F80
+A2001F15006C6C13FE00075C3903F803F83901FE0FF039007FFFC0D907FCC7FC23207E9F
+28>I<3901F83FE000FFEBFFFC9038FBE07F9039FF003F80D80FFEEB1FC06C48EB0FE049
+14F0ED07F8A216FC1503A216FEA816FC1507A216F8A2ED0FF06D14E06DEB1FC06DEB3F80
+9039FBC0FE009038F8FFF8EC3FC091C8FCABB512C0A3272E7E9F2D>I<3803F03F00FFEB
+7FC09038F1C3E01487390FF30FF0EA07F6A29038FC07E0EC03C091C7FCA25BB2B512E0A3
+1C207E9F21>114 D<3801FF86000713FEEA1F00003C133E48131E140E12F8A36C90C7FC
+B47E13FC387FFFC06C13F0806C7F00077F00017FEA003F01001380143F0060131F00E013
+0FA27E15007E6C131E6C131C38FF807838F3FFF038C07F8019207D9F20>I<131CA5133C
+A3137CA213FC120112031207381FFFFEB5FCA2D803FCC7FCB0EC0380A71201EC0700EA00
+FEEB7F0EEB3FFCEB07F0192E7FAD1F>I<D801F8EB07E000FFEB03FFA3000FEB003F0007
+141FB3153FA20003147FA26C6CEBDFF03A00FE039FFF90387FFF1FEB0FFC28207D9F2D>
+I<B5EB1FFCA3D80FF8EB03C0000715806D1307000315007F0001140E7F6C5CA2EC803C01
+7F1338ECC078013F1370ECE0F0011F5B14F1010F5B14F9903807FB80A214FF6D90C7FCA2
+6D5AA26D5AA21478A226207E9F2B>I<B53A1FFFE03FF8A33C0FF000FE0007806D150300
+076EEB0700816D5D00039138FF800EA26C6C486D5A15DF01FF153C6C9039038FE038A2D9
+7F876D5A150702C714F0D93FCF6D5AECCE03D91FFEEBF9C09138FC01FD16FF010F5D4A7E
+A26D486DC7FCA20103147E4A133EA26D48131C35207E9F3A>I<3A7FFF807FFCA33A03FC
+000F006C6C131E6C6C5BEC803890387FC078013F5B90381FE1E090380FF3C0ECFF806D90
+C7FC6D5A13016D7E81815B903803DFE09038078FF08190380F07FC90381E03FEEB3C0149
+6C7E4914804848EB7FC00003EC3FE026FFFC01B5FCA328207F9F2B>I<B5EB1FFCA3D80F
+F8EB03C0000715806D1307000315007F0001140E7F6C5CA2EC803C017F1338ECC078013F
+1370ECE0F0011F5B14F1010F5B14F9903807FB80A214FF6D90C7FCA26D5AA26D5AA21478
+A21470A214F05C1301007C5BEAFE035C49C8FC5BEAFC1EEA787CEA3FF0EA0FC0262E7E9F
+2B>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fo cmsy10 10.95 1
+/Fo 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01
+800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15
+306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0
+D900FEC7FC272B7DA02E>13 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fp cmbx12 14.4 48
+/Fp 48 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<B612FCEDFF8016E03A03
+FC001FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0
+A217C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0
+A33903FC001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3
+EBFC0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327
+297EA82C>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A31600
+1403A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387F
+E003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F48488048488048
+4880485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E
+6C7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5
+D8F00FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835
+>I<B512F0A33803FC00B3B1B512F0A314297EA819>I<B512FCA3D803FCC8FCB3A3ED01C0
+A415031680A21507A2150FA2151F157F913801FF00B7FCA322297EA828>76
+D<D8FFFE92383FFF80A26D5D0003EFE000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB03
+8FA3D987F0EB070FA2D983F8130EA2D981FC131CA3D980FE1338A2027F1370A291383F80
+E0A391381FC1C0A291380FE380A2913807F700A3EC03FEA26E5AA26E5AD8FFFE0203B512
+80A2157039297DA840>I<D8FFFCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB
+87FCEB83FEEB81FF01801380147F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E
+1381ED7FC1ED3FE1ED1FF1150F16F9ED07FDED03FF8181167FA2163F161F160F1607D8FF
+FE14031601A230297EA835>I<B612F815FF16C03A03FC003FE0ED07F0ED03F816FC1501
+16FEA716FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FCB0B512F0A327297EA82E
+>80 D<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A65E4B5A1507ED0FE0ED
+3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170EA21503923801FC1CB5
+38F000FEEE7FF8EE0FE02F297EA832>82 D<9038FF80600003EBF0E0000F13F8381F80FD
+383F001F003E1307481303A200FC1301A214007EA26C140013C0EA7FFCEBFFE06C13F86C
+13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E01303A46C14E0A26C
+13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297CA825>I<007FB71280
+A39039807F807FD87C00140F00781507A20070150300F016C0A2481501A5C791C7FCB3A4
+90B612C0A32A287EA72F>I<B500F0EBFFFEA3D803FCC7EA0380B3AA0001ED07007F0000
+150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFCC7FC2F297EA834>I<
+B500F0EB7FFFA3D803FEC7EA01C00001ED0380A26D14076C16006E5B017F140E80013F5C
+A26E133C011F14386E1378010F14708001075CA26D6C485AA2ECFE0301015CECFF076D91
+C7FC1587EC7F8EA215DEEC3FDC15FC6E5AA26E5AA36E5AA26E5AA230297FA833>I<B53C
+E07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160A26D6E13016C604B138002
+801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F011F160E17F09126F01C0F
+131E010F161C033C13F8902707F838075BA2037813FC902703FC70035BA2913AFEE001FE
+F001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA2023E80021E141EA242297FA8
+45>I<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC
+3FEA0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B7E
+9A21>97 D<EAFFE0A3120FACEBE1FE9038EFFF809038FE07E09038F803F09038F001F890
+38E000FCA2157EA2157FA8157EA315FCA29038F001F89038F803F090389C0FE090380FFF
+80390E01FC00202A7EA925>I<EB3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A248
+133E007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380FE00E3803F83C38
+01FFF838003FC0191B7E9A1E>I<EC7FF0A31407ACEB3F873801FFF73807F03F380FC00F
+381F8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F3907E07FFF3801FFE7
+38007F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F7F130048EB0F8012
+7E15C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F8003803907C00700
+3803F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E3801FC7FEA03F813F0
+1207143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<9038FF80F00003
+EBE3F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A6003E133E003F137E6C
+137C380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF6C14C06C14E06C14
+F0121F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E0390FC01F806CB51200
+38007FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E30FC001E413E0EBE8
+0701F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0A3
+EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I<EAFFE0A312
+0FB3B2EAFFFEA30F2A7EA912>108 D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1
+F8D80FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0
+A3331B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013D0
+A213E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E390FC01F80391F80
+0FC0393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A2391F800FC0390F
+C01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038EFFF809038FE0F
+E0390FF803F09038F001F801E013FC140015FEA2157FA8157E15FEA215FC140101F013F8
+9038F807F09038FC0FE09038EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>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: Fq cmtt10 10.95 73
+/Fq 73 127 df<127012F8B012701200A5127012F8A31270051C779B18>33
+D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA0306EA078FA6387FFFC0B5
+12E0A26C13C0380F1E00A6387FFFC0B512E0A26C13C0381E3C00A6EA0C18131C7E9B18>
+I<13C01201A3EA03F0EA0FFCEA3FFEEA7DCFEA71C738E1C38013C7A338F1C0001279123F
+6C7EEA0FF8EA01FC13DE13CF13C73861C38012F1A212E1EBC7001271EA79DEEA3FFEEA1F
+F8EA07E0EA01C0A3120011247D9F18>I<EA3803387C0780A2EAEE0F1400A25B131EA213
+3EEA7C3CA2EA387CEA0078A213F85B12015BA212035BA21207EB8380EB87C0120FEB0EE0
+A2121F121EA2123E383C07C0A23818038013247E9F18>I<EA01C0EA07E0487EEA0E7048
+7EA4EB73F813F313E3380FC1C0EBC38013831303381F0700EA3F87EA7B8EEA71CEEAE1FC
+12E0137CEB7870A2EA70FE387FFFE0EA3FC7380F03C0151C7F9B18>I<137013F0EA01E0
+EA03C0EA0780EA0F00121E121C5AA25AA45AA81270A47EA27E121E7EEA0780EA03C0EA01
+F0120013700C24799F18>40 D<126012F012787E7E7EEA07801203EA01C0A2EA00E0A413
+70A813E0A4EA01C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18>I<EA01C0A4EA
+41C138F1C780EAFDDF387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38FDDF80EAF1C73841C1
+00EA01C0A411147D9718>I<136013F0A7387FFFC0B512E0A26C13C03800F000A7136013
+147E9718>I<121C123E127E127F123F121F1207120E121E127C12F81260080C788518>I<
+387FFFC0B512E0A26C13C013047E8F18>I<1230127812FCA2127812300606778518>I<13
+03EB0780A2130F14005B131EA2133E133C137C1378A213F85B12015B12035BA212075B12
+0F90C7FCA25A121E123E123CA2127C127812F85AA2126011247D9F18>I<EA01F0EA07FC
+487EEA1F1FEA1C0738380380007813C0EA7001A238E000E0A9EAF001007013C0A2EA7803
+00381380381C0700EA1F1FEA0FFE6C5AEA01F0131C7E9B18>I<EA01801203A21207120F
+123F12FF12FB12431203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA03F0EA0FFEEA3FFF
+387C0F80387003C0EAE00138F000E0A21260C7FCA2EB01C0A21303EB0780EB0F00131E5B
+5B5B485AEA07C0485A381E00E05AEA7FFFB5FC7E131C7E9B18>I<1230127812FCA21278
+12301200A81230127812FCA2127812300614779318>58 D<1218123C127EA2123C121812
+00A81218123C127EA2123E121E120E121C123C127812F01260071A789318>I<14C0EB03
+E01307EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FCA2127F6C7EEA0FE06C
+7EEA01FC6C7EEB3F80EB1FC0EB07E01303EB00C013187E9918>I<387FFFC0B512E0A26C
+13C0C8FCA4387FFFC0B512E0A26C13C0130C7E9318>I<126012F87E127F6C7EEA0FE06C
+7EEA01FC6C7EEB3F80EB1FC0EB07E0A2EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048
+C7FC12FC5A126013187E9918>I<EA0FF0EA3FFC48B4FCEA700F38F00380A2EA60073800
+0F00133E5BEA01F05B485AA55BC8FCA5EA0380487EA36C5A111C7D9B18>I<137013F8A2
+13D8A2EA01DCA3138CEA038EA4EA0707A5380FFF80A3EA0E03381C01C0A3387F07F000FF
+13F8007F13F0151C7F9B18>65 D<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E01300A2
+14F01470A814F014E0A2130114C01303EB0F80387FFF00485AEA7FF8141C7F9B18>68
+D<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A315
+1C7F9B18>I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA7EAFFC0
+A3141C7E9B18>I<3801F1C0EA03FDEA0FFFEA1F0FEA1C03123813011270A290C7FC5AA5
+EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FDEA01F1141C7E9B
+18>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8
+387F07F0151C7F9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C
+7D9B18>I<EAFFC0A3001CC7FCB114E0A5B5FCA3131C7E9B18>76
+D<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A213311339A3
+1319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>78 D<EA0FFE383FFF804813C0EA
+7803EA700100F013E0EAE000B0EAF001007013C0EA7C07EA7FFF6C1380380FFE00131C7E
+9B18>I<EAFFFEEBFF8014C0EA1C03EB01E013001470A514E01301EB03C0EA1FFF1480EB
+FE00001CC7FCA8B47EA3141C7F9B18>I<EA7FF8EAFFFE6C7E381C0F80130314C01301A3
+13031480130F381FFF005BA2EA1C0F7FEB0380A5149CA3387F01F8EAFF81387F00F0161C
+7F9B18>82 D<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A390C7FC12701278123FEA1FF0
+EA07FEC67EEB0F80EB03C01301EB00E0A2126012E0130100F013C038F80780B5FCEBFE00
+EAE7F8131C7E9B18>I<387FFFF8B5FCA238E07038A400001300B2EA07FFA3151C7F9B18>
+I<38FF83FEA3381C0070B36C13E0EA0F01380783C03803FF806C1300EA007C171C809B18
+>I<38FE03F8EAFF07EAFE03381C01C0EA1E03000E1380EA0F0700071300A2EA038EA2EA
+01DCA3EA00F8A21370A9EA01FC487E6C5A151C7F9B18>89 D<EAFFF8A3EAE000B3ACEAFF
+F8A30D24779F18>91 D<126012F0A27E1278127C123CA2123E121E121F7EA27F12077F12
+03A27F12017F12007F1378A2137C133C133E131EA2131F7F14801307A2EB030011247D9F
+18>I<EAFFF8A3EA0038B3ACEAFFF8A30D247F9F18>I<EA0180EA07C0EA1FF0EA7EFCEAF8
+3EEAE00E0F067C9B18>I<387FFFC0B512E0A26C13C013047E7F18>I<EA0FF0EA1FFC487E
+EA3C0FEA180738000380A213FF1207121FEA7F03127812E0A3EAF007EA780F383FFFF8EA
+1FFDEA07F015147E9318>97 D<127E12FE127E120EA5133EEBFF80000F13C0EBC1E01380
+EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E138038063E00151C809B18>I<
+EA01FEEA07FF001F1380EA3E073838030048C7FCA25AA61270EB01C01238EA3E03381FFF
+8000071300EA01FC12147D9318>I<EB1F80133F131F1303A5EA03E3EA0FFBEA1FFFEA3C
+1FEA380FEA7007130312E0A6EA7007A2EA380FEA3C1F381FFFF0380FFBF83803E3F0151C
+7E9B18>I<EA01F0EA07FCEA1FFEEA3E0F38380780EA7003A238E001C0A2B5FCA300E0C7
+FC1270EB01C01238EA3E07381FFF8000071300EA01F812147D9318>I<EB1F80EB7FC0EB
+FFE013E13801C0C01400A3387FFFC0B5FCA23801C000AEEA7FFFA3131C7F9B18>I<3801
+E1F03807FFF85A381E1E30381C0E00487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7E
+EA1FFEEBFFC04813E0387801F038700070481338A4007813F0EA7E03381FFFC06C138038
+01FC00151F7F9318>I<127E12FE127E120EA5133EEBFF80000F13C013C1EB80E0130012
+0EAB387FC7FC38FFE7FE387FC7FC171C809B18>I<EA0380EA07C0A3EA0380C7FCA4EA7F
+C012FF127F1201AEB5FCA3101D7C9C18>I<127E12FE127E120EA5EB3FF0A3EB0780EB0F
+00131E5B5B5BEA0FF87F139C130EEA0E0F7FEB038014C0387FC7F812FF127F151C7F9B18
+>107 D<EAFFC0A31201B3A4B51280A3111C7D9B18>I<38F9C1C038FFF7F013FF383E3E38
+EA3C3CA2EA3838AB38FE3E3EEB7E7EEB3E3E1714809318>I<EA7E3E38FEFF80007F13C0
+EA0FC1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC1714809318>I<EA01F0EA0FFE
+487E383E0F80EA3803387001C0A238E000E0A5EAF001007013C0EA7803383C0780EA3E0F
+381FFF006C5AEA01F013147E9318>I<EA7E3E38FEFF80007F13C0380FC1E01380EB0070
+120E1438A6000F1370A2EB80E013C1EBFFC0000E1380EB3E0090C7FCA7EA7FC0487E6C5A
+151E809318>I<3801F380EA07FBEA1FFFEA3E1FEA380FEA7007A2EAE003A6EA7007A2EA
+380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB1FF0EB3FF8EB1FF0151E7E9318>I<38FF
+0FC0EB3FE0EB7FF0EA07F0EBE060EBC0005BA290C7FCA9EAFFFC7F5B14147E9318>I<EA
+07F7EA3FFF5AEA780FEAE007A3007CC7FCEA7FE0EA1FFCEA03FEEA001F38600780EAE003
+A212F038F80F00B5FC13FCEAE7F011147D9318>I<487E1203A4387FFFC0B5FCA2380380
+00A9144014E0A33801C1C013FF6C1380EB3E0013197F9818>I<387E07E0EAFE0FEA7E07
+EA0E00AC1301EA0F033807FFFC6C13FE3801FCFC1714809318>I<387F8FF000FF13F800
+7F13F0381C01C0380E0380A338070700A3138FEA038EA3EA01DCA3EA00F8A2137015147F
+9318>I<38FF07F8138F1307383800E0A4381C01C0137113F9A213D9EA1DDD000D1380A3
+138DEA0F8FA23807070015147F9318>I<387F8FF0139F138F380F0700EA078EEA039EEA
+01DC13F81200137013F07FEA01DCEA039E138EEA0707000E1380387F8FF000FF13F8007F
+13F015147F9318>I<387F8FF000FF13F8007F13F0380E01C0EB0380A21207EB0700A2EA
+0387A2138EEA01CEA213CC120013DC1378A31370A313F05B1279EA7BC0EA7F806CC7FC12
+1E151E7F9318>I<383FFFF05AA2387001E0EB03C0EB078038000F00131E5B13F8485AEA
+03C0485A380F0070121E5A5AB512F0A314147F9318>I<EB07E0131F137FEB780013E0AB
+1201EA7FC0485AA26C7EEA01E01200AB1378EB7FE0131F130713247E9F18>I<126012F0
+B3B012600424769F18>I<127CB4FC13C01203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF000
+5BABEA03C012FF90C7FC127C13247E9F18>I<EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA60
+C00F067C9B18>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fr cmr10 10.95 81
+/Fr 81 125 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<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<3807FF
+C038003E00131EB3A3122012F8A3EAF01CEA403CEA6038EA1070EA0FC012207F9E17>I<
+39FFF007FC390F0003E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21
+E01341EB80F0EB0078A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>
+I<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E1C>I<B4
+6CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D1383A29038
+0E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>
+I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03
+C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D1F7E9E22
+>I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0A2007C14
+F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E06CEB03C0
+6C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80
+EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<EB1F
+E0EB70383801C00E48487E39070003804814C0001EEB01E0003E14F0003C1300007C14F8
+A20078147800F8147CA900781478007C14F8A2003C14F0383E0781391E0841E0390F1023
+C00007148039039017003801D01E3900783804EB1FF8EB001CEC0C0CEC0E1CEC0FF8A214
+0715F0EC01E01E297E9F23>I<B512E0380F80780007131E80EC0780A215C0A41580A2EC
+0F00141E1478EBFFE0EB80601438143C141C141EA3141FA315011581140F390FC0078239
+FFFC03C4C812F820207F9E22>I<3803F040380C0CC0EA1803EA3001EA6000A212E01440
+A36C13007E127CEA7F80EA3FF86CB4FC00071380C613C0EB1FE013031301EB00F014707E
+A46C136014E06C13C038F8018038C60300EA81FC14217E9F19>I<007FB512E038780F01
+0060EB006000401420A200C0143000801410A400001400B3497E3803FFFC1C1F7E9E21>
+I<39FFF00FF8390F0003E0EC0080B3A46CEB01001380120314026C6C5A6C6C5AEB3830EB
+0FC01D207E9E22>I<39FFF003FE391F8000F86CC7126015206C6C1340A36C6C1380A2EB
+E00100011400A23800F002A213F8EB7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA3
+6DC7FC1F207F9E22>I<3BFFF07FF81FF03B1F000FC007C06C903907800180170015C001
+805C00071502EC09E013C000035DEC19F01410D801E05CA2EC2078D800F05CA2EC403C01
+785CA2EC801E017C1460013C144090383D000F133F6D5CA2011E1307010E91C7FCA2010C
+7F010413022C207F9E2F>I<397FF81FF8390FE007C03907C0030000031302EBE0063801
+F00400005BEBF818EB78106D5AEB3E60EB1E406D5AA213076D7E497E1305EB08F0EB18F8
+EB1078EB207CEB603EEB401EEB801F3901000F801407000214C000061303001FEB07E039
+FFC01FFE1F1F7F9E22>I<39FFF001FF391F800078000F146012076D1340000314807F39
+01F001001200EBF802EB7C06EB3C04EB3E08131EEB1F10EB0FB0EB07A014E06D5AACEB3F
+FC201F7F9E22>I<387FFFFE387E003C127800701378006013F814F0384001E0130314C0
+EB07801200EB0F00131EA25B137C13785B1201EBE002EA03C0A2EA0780000F1306130000
+1E1304003E130C123C48133C14FCB5FC171F7E9E1C>I<12FFA212C0B3B3A512FFA2082D
+7CA10D>I<EA0804EA1008EA2010A2EA4020A2EA8040A3EAB85CEAFC7EA2EA7C3EEA381C
+0F0E7A9F17>I<12FFA21203B3B3A512FFA2082D80A10D>I<120812101220A21240A21280
+A312B812FCA2127C1238060E7D9F0D>96 D<EA1FE0EA3030EA7818131CEA300E1200A313
+FEEA0F8EEA1E0E1238127800F01310A3131E127838386720380F83C014147E9317>I<12
+1C12FC121CAA137CEA1D87381E0180EB00C0001C13E01470A21478A6147014F014E0001E
+13C0381A018038198700EA107C15207E9F19>I<EA01FCEA0706EA1C0F123813060078C7
+FC127012F0A61270127800381380A2381C0100EA0706EA01F811147F9314>I<EB01C013
+0F1301AAEA01F1EA070DEA0C03EA180112381278127012F0A61270A21238EA1803120CEA
+070D3801F1F815207F9F19>I<EA03F0EA0E1C487E487EA238700380A212F0B5FC00F0C7
+FCA41270A26C1380A2381C0100EA0706EA01F811147F9314>I<137CEA01C6EA030F1207
+EA0E061300A7EAFFF0EA0E00B2EA7FE01020809F0E>I<14E03803E330EA0E3CEA1C1C38
+380E00EA780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381FFF8014C038
+3001E038600070481330A4006013606C13C0381C03803803FC00141F7F9417>I<121C12
+FC121CAA137C1386EA1D03001E1380A2121CAE38FF8FF014207E9F19>I<1238127CA312
+38C7FCA6121C12FC121CB1EAFF80091F7F9E0C>I<13E0EA01F0A3EA00E01300A61370EA
+07F012001370B3A31260EAF06013C0EA6180EA3F000C28829E0E>I<121C12FC121CAAEB
+1FE0EB0780EB060013045B5B5B136013E0EA1DF0EA1E70EA1C38133C131C7F130F7F1480
+14C038FF9FF014207E9F18>I<121C12FC121CB3ABEAFF8009207F9F0C>I<391C3E03E039
+FCC30C30391D019018001EEBE01CA2001C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7C
+EAFC86EA1D03001E1380A2121CAE38FF8FF014147E9319>I<EA01F8EA070E381C038038
+3801C0A2387000E0A200F013F0A6007013E0A2383801C0A2381C038038070E00EA01F814
+147F9317>I<EA1C7CEAFD87381E018014C0381C00E014F014701478A6147014F014E038
+1E01C0EB0380381D8700EA1C7C90C7FCA8B47E151D7E9319>I<3801F04038070CC0EA0E
+02EA1C03EA38011278127012F0A6127012781238EA1C03EA0C05EA0709EA01F1EA0001A8
+EB0FF8151D7F9318>I<EA1CF0EAFD18EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA
+0FC8EA3038EA6018EAC008A3EAE000127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0
+A21304EAE00CEAD818EA87E00F147F9312>I<1202A31206A2120EA2123EEAFFF8EA0E00
+AB1304A5EA07081203EA01F00E1C7F9B12>I<381C0380EAFC1FEA1C03AE1307120CEA06
+1B3803E3F014147E9319>I<38FF83F8383E00E0001C13C06C1380A338070100A21383EA
+0382A2EA01C4A213E4EA00E8A21370A3132015147F9318>I<39FF9FE1FC393C07807039
+1C030060EC8020000E1440A214C0D80704138014E0A239038861001471A23801D032143A
+143E3800E01CA2EB6018EB40081E147F9321>I<38FF87F8381E03C0380E0180EB0300EA
+0702EA0384EA01C813D8EA00F01370137813F8139CEA010E1202EA060738040380000C13
+C0003C13E038FE07FC16147F9318>I<38FF83F8383E00E0001C13C06C1380A338070100
+A21383EA0382A2EA01C4A213E4EA00E8A21370A31320A25BA3EAF080A200F1C7FC126212
+3C151D7F9318>I<EA7FFFEA700E1260EA401C133813781370EA00E0120113C0EA038012
+071301120E121EEA1C03EA3802EA7006130EEAFFFE10147F9314>I<B812F82D01808C2E>
+124 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fs cmbx12 20.736 13
+/Fs 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
+%%PaperSize: A4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 75 659 a Fs(GNU)33 b(History)f(Library)p 75 709
+1800 17 v 960 757 a Fr(Edition)16 b(5.0,)e(for)h Fq(History)f(Library)g
+Fr(V)l(ersion)i(5.0.)1559 811 y(Septem)o(b)q(er)g(2003)75
+2467 y Fp(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)75 2534 y(Brian)h(F)-6
+b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6 b(oundation)p
+75 2570 1800 9 v eop
+%%Page: 2 2
+2 1 bop 75 1512 a Fr(This)22 b(do)q(cumen)o(t)h(describ)q(es)g(the)f
+(GNU)g(History)f(library)i(\(v)o(ersion)f(5.0,)g(19)f(Septem)o(b)q(er)i
+(2003\),)e(a)75 1567 y(programming)15 b(to)q(ol)h(that)g(pro)o(vides)g
+(a)g(consisten)o(t)g(user)g(in)o(terface)g(for)g(recalling)h(lines)h
+(of)e(previously)75 1621 y(t)o(yp)q(ed)g(input.)75 1689
+y(Cop)o(yrigh)o(t)301 1688 y(c)289 1689 y Fo(\015)e Fr(1988-2003)f(F)l
+(ree)i(Soft)o(w)o(are)f(F)l(oundation,)h(Inc.)75 1756
+y(P)o(ermission)i(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
+1811 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.)195 1878 y(P)o(ermission)i(is)
+g(gran)o(ted)f(to)g(cop)o(y)l(,)h(distribute)h(and/or)e(mo)q(dify)h
+(this)g(do)q(cumen)o(t)g(under)195 1933 y(the)h(terms)f(of)h(the)g(GNU)
+g(F)l(ree)g(Do)q(cumen)o(tation)g(License,)i(V)l(ersion)f(1.1)e(or)g
+(an)o(y)h(later)195 1988 y(v)o(ersion)14 b(published)i(b)o(y)e(the)g(F)
+l(ree)f(Soft)o(w)o(are)g(F)l(oundation;)h(with)g(no)f(In)o(v)m(arian)o
+(t)i(Sections,)195 2042 y(with)h(the)f(F)l(ron)o(t-Co)o(v)o(er)e(texts)
+i(b)q(eing)i(\\A)e(GNU)g(Man)o(ual,")g(and)g(with)h(the)f(Bac)o(k-Co)o
+(v)o(er)195 2097 y(T)l(exts)h(as)g(in)h(\(a\))e(b)q(elo)o(w.)24
+b(A)16 b(cop)o(y)g(of)g(the)g(license)i(is)f(included)i(in)e(the)f
+(section)h(en)o(titled)195 2152 y(\\GNU)e(F)l(ree)g(Do)q(cumen)o
+(tation)g(License.")195 2219 y(\(a\))j(The)h(FSF's)f(Bac)o(k-Co)o(v)o
+(er)g(T)l(ext)h(is:)28 b(\\Y)l(ou)19 b(ha)o(v)o(e)g(freedom)g(to)f(cop)
+o(y)h(and)g(mo)q(dify)195 2274 y(this)e(GNU)f(Man)o(ual,)g(lik)o(e)h
+(GNU)f(soft)o(w)o(are.)22 b(Copies)17 b(published)h(b)o(y)f(the)f(F)l
+(ree)g(Soft)o(w)o(are)195 2329 y(F)l(oundation)g(raise)f(funds)h(for)e
+(GNU)h(dev)o(elopmen)o(t.")75 2451 y(Published)i(b)o(y)f(the)f(F)l(ree)
+g(Soft)o(w)o(are)f(F)l(oundation)75 2506 y(59)h(T)l(emple)h(Place,)f
+(Suite)i(330,)75 2560 y(Boston,)d(MA)h(02111-1307)75
+2615 y(USA)p eop
+%%Page: -1 3
+-1 2 bop 1862 -58 a Fr(i)75 149 y Fn(T)-7 b(able)27 b(of)f(Con)n(ten)n
+(ts)75 320 y Fp(1)67 b(Using)22 b(History)h(In)n(teractiv)n(ely)9
+b Fm(.)k(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)
+31 b Fp(1)224 389 y Fr(1.1)45 b(History)15 b(Expansion)5
+b Fl(.)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 Fr(1)374 444 y(1.1.1)44 b(Ev)o(en)o(t)14
+b(Designators)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(.)h(.)26
+b Fr(1)374 499 y(1.1.2)44 b(W)l(ord)15 b(Designators)5
+b Fl(.)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 Fr(1)374 553 y(1.1.3)44 b(Mo)q(di\014ers)t Fl(.)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 Fr(2)75 675 y Fp(2)67 b(Programming)23 b(with)g(GNU)f(History)16
+b Fm(.)10 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)38
+b Fp(5)224 743 y Fr(2.1)45 b(In)o(tro)q(duction)16 b(to)f(History)10
+b Fl(.)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 Fr(5)224 798 y(2.2)45 b(History)15 b(Storage)c Fl(.)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 Fr(5)224 853 y(2.3)45 b(History)15 b(F)l(unctions)d
+Fl(.)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 Fr(6)374 907 y(2.3.1)44 b(Initializing)18
+b(History)d(and)h(State)e(Managemen)o(t)g Fl(.)7 b(.)h(.)g(.)f(.)h(.)f
+(.)29 b Fr(6)374 962 y(2.3.2)44 b(History)15 b(List)h(Managemen)o(t)d
+Fl(.)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 Fr(6)374 1017 y(2.3.3)44
+b(Information)15 b(Ab)q(out)g(the)h(History)f(List)c
+Fl(.)d(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)26
+b Fr(7)374 1072 y(2.3.4)44 b(Mo)o(ving)15 b(Around)g(the)g(History)g
+(List)c Fl(.)d(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)25 b Fr(7)374 1127 y(2.3.5)44 b(Searc)o(hing)16
+b(the)f(History)g(List)7 b Fl(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)22
+b Fr(8)374 1181 y(2.3.6)44 b(Managing)15 b(the)g(History)g(File)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(.)20 b Fr(8)374 1236 y(2.3.7)44
+b(History)15 b(Expansion)9 b Fl(.)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 Fr(9)224 1291 y(2.4)45 b(History)15 b(V)l(ariables)6
+b Fl(.)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 Fr(10)224 1346 y(2.5)45 b(History)15
+b(Programming)f(Example)7 b Fl(.)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 Fr(11)75 1467 y Fp(App)r(endix)i(A)50 b(Cop)n(ying)23
+b(This)g(Man)n(ual)15 b Fm(.)c(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)37
+b Fp(13)224 1535 y Fr(A.1)45 b(GNU)15 b(F)l(ree)h(Do)q(cumen)o(tation)f
+(License)g Fl(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)28 b Fr(13)374 1590 y(A.1.1)44
+b(ADDENDUM:)14 b(Ho)o(w)g(to)h(use)h(this)f(License)i(for)e(y)o(our)465
+1645 y(do)q(cumen)o(ts)f 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(.)f(.)29 b Fr(19)75
+1766 y Fp(App)r(endix)24 b(B)53 b(Concept)22 b(Index)8
+b Fm(.)k(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
+g(.)31 b Fp(21)75 1901 y(App)r(endix)24 b(C)52 b(F)-6
+b(unction)25 b(and)e(V)-6 b(ariable)23 b(Index)6 b Fm(.)12
+b(.)e(.)g(.)h(.)29 b Fp(23)p eop
+%%Page: -2 4
+-2 3 bop 75 -58 a Fr(ii)1346 b(GNU)15 b(History)g(Library)p
+eop
+%%Page: 1 5
+1 4 bop 75 -58 a Fr(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o
+(ely)1007 b(1)75 149 y Fn(1)41 b(Using)26 b(History)h(In)n(teractiv)n
+(ely)137 281 y Fr(This)17 b(c)o(hapter)g(describ)q(es)h(ho)o(w)e(to)g
+(use)h(the)g Fk(gnu)f Fr(History)g(Library)h(in)o(teractiv)o(ely)l(,)h
+(from)e(a)g(user's)75 336 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
+391 y Fr(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
+445 y(page)e(5.)75 586 y Fp(1.1)33 b(History)22 b(Expansion)137
+713 y Fr(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
+768 y(expansion)12 b(pro)o(vided)g(b)o(y)f Fq(csh)p Fr(.)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 823 y(information.)137
+895 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
+949 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
+1004 y(input)h(line,)h(or)d(\014x)i(errors)e(in)i(previous)g(commands)f
+(quic)o(kly)l(.)137 1076 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 1131 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 1186 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 1241 y Fj(ev)o(en)o(t)p
+Fr(,)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 Fr(.)i(V)l(arious)c
+Fj(mo)q(di\014ers)75 1296 y Fr(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 1350 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 1405 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 1460
+y(whic)o(h)d(is)g(`)p Fq(!)p Fr(')e(b)o(y)h(default.)75
+1582 y Fi(1.1.1)30 b(Ev)n(en)n(t)21 b(Designators)137
+1709 y Fr(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
+1795 y Fq(!)216 b Fr(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
+1850 y(the)e(line,)i(or)d(`)p Fq(=)p Fr('.)75 1935 y
+Fq(!)p Fh(n)192 b Fr(Refer)15 b(to)f(command)h(line)i
+Fj(n)p Fr(.)75 2019 y Fq(!-)p Fh(n)168 b Fr(Refer)15
+b(to)f(the)i(command)f Fj(n)g Fr(lines)i(bac)o(k.)75
+2104 y Fq(!!)192 b Fr(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 Fq(!-1)p Fr('.)75
+2188 y Fq(!)p Fh(string)72 b Fr(Refer)15 b(to)f(the)i(most)e(recen)o(t)
+h(command)g(starting)g(with)g Fj(string)p Fr(.)75 2273
+y Fq(!?)p Fh(string)5 b Fq([?])315 2328 y Fr(Refer)16
+b(to)g(the)h(most)f(recen)o(t)h(command)g(con)o(taining)g
+Fj(string)p Fr(.)25 b(The)17 b(trailing)g(`)p Fq(?)p
+Fr(')f(ma)o(y)g(b)q(e)315 2382 y(omitted)f(if)h(the)f
+Fj(string)k Fr(is)d(follo)o(w)o(ed)f(immediately)i(b)o(y)e(a)g
+(newline.)75 2467 y Fq(^)p Fh(string1)5 b Fq(^)p Fh(string2)g
+Fq(^)315 2522 y Fr(Quic)o(k)17 b(Substitution.)23 b(Rep)q(eat)16
+b(the)g(last)f(command,)h(replacing)h Fj(string1)i Fr(with)e
+Fj(string2)p Fr(.)315 2577 y(Equiv)m(alen)o(t)g(to)d
+Fq(!!:s/)p Fh(string1)5 b Fq(/)p Fh(string2)g Fq(/)p
+Fr(.)75 2661 y Fq(!#)192 b Fr(The)15 b(en)o(tire)h(command)f(line)i(t)o
+(yp)q(ed)f(so)e(far.)p eop
+%%Page: 2 6
+2 5 bop 75 -58 a Fr(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 271
+y Fr(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 Fq(:)p
+Fr(')e(separates)h(the)75 326 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 381 y(b)q(egins)f(with)g
+(a)e(`)p Fq(^)p Fr(',)h(`)p Fq($)p Fr(',)f(`)p Fq(*)p
+Fr(',)g(`)p Fq(-)p Fr(',)g(or)h(`)p Fq(\045)p Fr('.)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 435 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 490 y(separated)c(b)o(y)g(single)
+i(spaces.)137 557 y(F)l(or)e(example,)75 636 y Fq(!!)192
+b Fr(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
+691 y(mand)c(is)h(rep)q(eated)g(in)g(toto.)75 769 y Fq(!!:$)144
+b Fr(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
+824 y(to)j Fq(!$)p Fr(.)75 903 y Fq(!fi:2)120 b Fr(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 958 y(letters)g Fq(fi)p Fr(.)137
+1037 y(Here)h(are)f(the)g(w)o(ord)f(designators:)75 1115
+y Fq(0)h(\(zero\))57 b Fr(The)15 b Fq(0)p Fr(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 1194 y Fh(n)216 b Fr(The)15 b Fj(n)p Fr(th)h(w)o(ord.)75
+1273 y Fq(^)216 b Fr(The)15 b(\014rst)g(argumen)o(t;)f(that)h(is,)g(w)o
+(ord)g(1.)75 1352 y Fq($)216 b Fr(The)15 b(last)h(argumen)o(t.)75
+1431 y Fq(\045)216 b Fr(The)15 b(w)o(ord)g(matc)o(hed)g(b)o(y)g(the)g
+(most)g(recen)o(t)g(`)p Fq(?)p Fh(string)5 b Fq(?)p Fr(')14
+b(searc)o(h.)75 1509 y Fh(x)p Fq(-)p Fh(y)168 b Fr(A)15
+b(range)g(of)g(w)o(ords;)f(`)p Fq(-)p Fh(y)5 b Fr(')14
+b(abbreviates)i(`)p Fq(0-)p Fh(y)5 b Fr('.)75 1588 y
+Fq(*)216 b Fr(All)15 b(of)f(the)f(w)o(ords,)g(except)i(the)f
+Fq(0)p Fr(th.)19 b(This)14 b(is)h(a)e(synon)o(ym)h(for)f(`)p
+Fq(1-$)p Fr('.)18 b(It)c(is)g(not)g(an)g(error)315 1643
+y(to)g(use)h(`)p Fq(*)p Fr(')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 1698 y(that)f(case.)75 1777 y Fh(x)5 b Fq(*)187
+b Fr(Abbreviates)16 b(`)p Fh(x)p Fq(-$)p Fr(')75 1855
+y Fh(x)p Fq(-)192 b Fr(Abbreviates)16 b(`)p Fh(x)p Fq(-$)p
+Fr(')e(lik)o(e)i(`)p Fh(x)5 b Fq(*)p Fr(',)14 b(but)i(omits)f(the)g
+(last)g(w)o(ord.)137 1934 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 1989 y(is)e(used)f(as)g(the)h(ev)o(en)o(t.)75
+2100 y Fi(1.1.3)30 b(Mo)r(di\014ers)137 2221 y Fr(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
+2276 y(mo)q(di\014ers,)16 b(eac)o(h)f(preceded)i(b)o(y)e(a)g(`)p
+Fq(:)p Fr('.)75 2355 y Fq(h)216 b Fr(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 2434 y Fq(t)216 b Fr(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
+2512 y Fq(r)216 b Fr(Remo)o(v)o(e)14 b(a)h(trailing)h(su\016x)f(of)g
+(the)g(form)g(`)p Fq(.)p Fh(suffix)5 b Fr(',)13 b(lea)o(ving)j(the)g
+(basename.)75 2591 y Fq(e)216 b Fr(Remo)o(v)o(e)14 b(all)i(but)g(the)f
+(trailing)h(su\016x.)75 2670 y Fq(p)216 b Fr(Prin)o(t)15
+b(the)g(new)h(command)f(but)g(do)g(not)g(execute)h(it.)p
+eop
+%%Page: 3 7
+3 6 bop 75 -58 a Fr(Chapter)15 b(1:)k(Using)d(History)f(In)o(teractiv)o
+(ely)1007 b(3)75 149 y Fq(s/)p Fh(old)5 b Fq(/)p Fh(new)g
+Fq(/)315 204 y Fr(Substitute)17 b Fj(new)j Fr(for)c(the)h(\014rst)e(o)q
+(ccurrence)j(of)e Fj(old)i Fr(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 Fq(/)p Fr('.)18 b(The)13 b(delimiter)h(ma)o(y)e(b)q(e)h
+(quoted)f(in)i Fj(old)g Fr(and)f Fj(new)k Fr(with)12
+b(a)315 314 y(single)j(bac)o(kslash.)20 b(If)15 b(`)p
+Fq(&)p Fr(')e(app)q(ears)h(in)h Fj(new)p Fr(,)f(it)g(is)h(replaced)g(b)
+o(y)f Fj(old)p Fr(.)20 b(A)14 b(single)i(bac)o(kslash)315
+369 y(will)j(quote)e(the)h(`)p Fq(&)p Fr('.)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
+Fq(&)216 b Fr(Rep)q(eat)15 b(the)g(previous)h(substitution.)75
+583 y Fq(g)75 638 y(a)216 b Fr(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 692 y(with)c(`)p Fq(s)p
+Fr(',)d(as)i(in)h Fq(gs/)p Fh(old)5 b Fq(/)p Fh(new)g
+Fq(/)p Fr(,)14 b(or)h(with)g(`)p Fq(&)p Fr('.)75 772
+y Fq(G)216 b Fr(Apply)16 b(the)g(follo)o(wing)g(`)p Fq(s)p
+Fr(')e(mo)q(di\014er)i(once)g(to)e(eac)o(h)h(w)o(ord)g(in)h(the)f(ev)o
+(en)o(t.)p eop
+%%Page: 4 8
+4 7 bop 75 -58 a Fr(4)1347 b(GNU)15 b(History)g(Library)p
+eop
+%%Page: 5 9
+5 8 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(History)889 b(5)75 149 y Fn(2)41 b(Programming)28 b(with)e(GNU)i
+(History)137 262 y Fr(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 Fr(History)75 317 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
+372 y(of)e Fk(gnu)g Fr(History)l(,)g(see)g(Chapter)g(1)g([Using)g
+(History)g(In)o(teractiv)o(ely],)h(page)f(1.)75 498 y
+Fp(2.1)33 b(In)n(tro)r(duction)24 b(to)e(History)137
+619 y Fr(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 Fr(History)g(library)h
+(is)g(able)75 674 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 729 y(from)d(previous)i(lines)h(in)f(comp)q
+(osing)g(new)f(ones.)137 795 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 850 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 905 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 960 y(the)c(list)i(directly)l(.)22
+b(In)16 b(addition,)g(a)f(history)g Fj(expansion)h Fr(function)h(is)e
+(a)o(v)m(ailable)i(whic)o(h)g(pro)o(vides)f(for)e(a)75
+1015 y(consisten)o(t)h(user)h(in)o(terface)f(across)g(di\013eren)o(t)g
+(programs.)137 1081 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 1136 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 1191 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 1245 y(similar)j(to)f(the)g(history)g(substitution)h(pro)o
+(vided)g(b)o(y)g Fq(csh)p Fr(.)137 1312 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 1367 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 1433 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 1488 y(other)14 b(co)q(de,)h(an)f(application)i(writer)e(should)
+i(include)g(the)f(\014le)g Fq(<readline/history.h>)d
+Fr(in)j(an)o(y)f(\014le)75 1543 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 1597 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 1724 y Fp(2.2)33 b(History)22
+b(Storage)137 1845 y Fr(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 1911 y Fq(typedef)23
+b(void)g(*histdata_t;)195 2021 y(typedef)g(struct)g(_hist_entry)f({)243
+2076 y(char)h(*line;)243 2130 y(char)g(*timestamp;)243
+2185 y(histdata_t)f(data;)195 2240 y(})i(HIST_ENTRY;)137
+2306 y Fr(The)16 b(history)f(list)h(itself)g(migh)o(t)f(therefore)g(b)q
+(e)h(declared)g(as)195 2373 y Fq(HIST_ENTRY)22 b(**the_history_list;)
+137 2439 y Fr(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
+2506 y Fq(/*)219 2560 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
+2615 y(*/)195 2670 y(typedef)f(struct)g(_hist_state)f({)p
+eop
+%%Page: 6 10
+6 9 bop 75 -58 a Fr(6)1347 b(GNU)15 b(History)g(Library)243
+149 y Fq(HIST_ENTRY)22 b(**entries;)h(/*)g(Pointer)g(to)h(the)f
+(entries)g(themselves.)g(*/)243 204 y(int)g(offset;)262
+b(/*)23 b(The)h(location)f(pointer)f(within)h(this)h(array.)f(*/)243
+259 y(int)g(length;)262 b(/*)23 b(Number)g(of)h(elements)f(within)g
+(this)g(array.)g(*/)243 314 y(int)g(size;)310 b(/*)23
+b(Number)g(of)h(slots)f(allocated)g(to)g(this)h(array.)f(*/)243
+369 y(int)g(flags;)195 423 y(})h(HISTORY_STATE;)137 493
+y Fr(If)16 b(the)f(\015ags)g(mem)o(b)q(er)g(includes)j
+Fq(HS_STIFLED)p Fr(,)13 b(the)i(history)h(has)f(b)q(een)h(sti\015ed.)75
+626 y Fp(2.3)33 b(History)22 b(F)-6 b(unctions)137 750
+y Fr(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 805 y Fr(History)j(library)l(.)75 921 y Fi(2.3.1)30
+b(Initializing)20 b(History)h(and)f(State)g(Managemen)n(t)137
+1045 y Fr(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
+1100 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.)1675 1196 y([F)l(unction])-1800
+b Fg(void)20 b Ff(using)p 334 1196 18 3 v 25 w(history)j
+Fe(\()p Fq(void)p Fe(\))195 1251 y Fr(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 1306 y(in)o(teractiv)o(e)16
+b(v)m(ariables.)1675 1402 y([F)l(unction])-1800 b Fg(HISTORY_STATE)21
+b(*)e Ff(history)p 658 1402 V 26 w(get)p 761 1402 V 25
+w(history)p 961 1402 V 25 w(state)k Fe(\()p Fq(void)p
+Fe(\))195 1456 y Fr(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(.)1675
+1552 y([F)l(unction])-1800 b Fg(void)20 b Ff(history)p
+378 1552 V 25 w(set)p 474 1552 V 25 w(history)p 674 1552
+V 26 w(state)j Fe(\()p Fq(HISTORY_STATE)13 b(*state)p
+Fe(\))195 1607 y Fr(Set)i(the)h(state)e(of)h(the)g(history)g(list)h
+(according)g(to)e Fj(state)p Fr(.)75 1723 y Fi(2.3.2)30
+b(History)20 b(List)h(Managemen)n(t)137 1847 y Fr(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 1902 y(the)15
+b(list)h(itself.)1675 1998 y([F)l(unction])-1800 b Fg(void)20
+b Ff(add)p 295 1998 V 24 w(history)j Fe(\()p Fq(const)14
+b(char)h(*string)p Fe(\))195 2053 y Fr(Place)h Fj(string)i
+Fr(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
+2108 y Fq(NULL)p Fr(.)1675 2204 y([F)l(unction])-1800
+b Fg(void)20 b Ff(add)p 295 2204 V 24 w(history)p 494
+2204 V 26 w(time)j Fe(\()p Fq(const)14 b(char)g(*string)p
+Fe(\))195 2259 y Fr(Change)h(the)g(time)h(stamp)f(asso)q(ciated)g(with)
+h(the)f(most)f(recen)o(t)h(history)h(en)o(try)e(to)h
+Fj(string)p Fr(.)1675 2355 y([F)l(unction])-1800 b Fg(HIST_ENTRY)21
+b(*)e Ff(remo)n(v)n(e)p 585 2355 V 25 w(history)j Fe(\()p
+Fq(int)15 b(which)p Fe(\))195 2410 y Fr(Remo)o(v)o(e)22
+b(history)g(en)o(try)h(at)f(o\013set)g Fj(whic)o(h)h
+Fr(from)f(the)h(history)l(.)43 b(The)23 b(remo)o(v)o(ed)f(elemen)o(t)h
+(is)195 2464 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.)1675 2560 y([F)l(unction])
+-1800 b Fg(histdata_t)21 b Ff(free)p 454 2560 V 24 w(history)p
+653 2560 V 26 w(en)n(try)i Fe(\()p Fq(HIST_ENTRY)13 b(*histent)p
+Fe(\))195 2615 y Fr(F)l(ree)h(the)g(history)g(en)o(try)g
+Fj(histen)o(t)h Fr(and)f(an)o(y)g(history)g(library)h(priv)m(ate)f
+(data)g(asso)q(ciated)g(with)g(it.)195 2670 y(Returns)h(the)g
+(application-sp)q(eci\014)q(c)j(data)c(so)h(the)h(caller)g(can)f(disp)q
+(ose)i(of)d(it.)p eop
+%%Page: 7 11
+7 10 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(History)889 b(7)1675 149 y([F)l(unction])-1800 b Fg(HIST_ENTRY)21
+b(*)e Ff(replace)p 581 149 18 3 v 26 w(history)p 782
+149 V 25 w(en)n(try)24 b Fe(\()p Fq(int)14 b(which,)h(const)f(char)283
+204 y(*line,)g(histdata_t)g(data)p Fe(\))195 259 y Fr(Mak)o(e)f(the)h
+(history)g(en)o(try)f(at)g(o\013set)g Fj(whic)o(h)i Fr(ha)o(v)o(e)e
+Fj(line)18 b Fr(and)c Fj(data)p Fr(.)19 b(This)14 b(returns)g(the)g
+(old)g(en)o(try)195 314 y(so)k(the)h(caller)g(can)g(disp)q(ose)h(of)e
+(an)o(y)g(application-sp)q(eci\014)q(c)j(data.)30 b(In)19
+b(the)g(case)f(of)g(an)h(in)o(v)m(alid)195 369 y Fj(whic)o(h)p
+Fr(,)d(a)f Fq(NULL)f Fr(p)q(oin)o(ter)i(is)g(returned.)1675
+479 y([F)l(unction])-1800 b Fg(void)20 b Ff(clear)p 321
+479 V 26 w(history)j Fe(\()p Fq(void)p Fe(\))195 533
+y Fr(Clear)15 b(the)h(history)f(list)h(b)o(y)f(deleting)i(all)f(the)f
+(en)o(tries.)1675 643 y([F)l(unction])-1800 b Fg(void)20
+b Ff(sti\015e)p 321 643 V 26 w(history)j Fe(\()p Fq(int)14
+b(max)p Fe(\))195 698 y Fr(Sti\015e)i(the)f(history)h(list,)f(remem)o
+(b)q(ering)h(only)g(the)f(last)g Fj(max)j Fr(en)o(tries.)1675
+808 y([F)l(unction])-1800 b Fg(int)20 b Ff(unsti\015e)p
+359 808 V 25 w(history)j Fe(\()p Fq(void)p Fe(\))195
+863 y Fr(Stop)14 b(sti\015ing)g(the)g(history)l(.)20
+b(This)14 b(returns)f(the)h(previously-set)h(maxim)o(um)f(n)o(um)o(b)q
+(er)g(of)f(history)195 918 y(en)o(tries)h(\(as)e(set)i(b)o(y)f
+Fq(stifle_history\(\))p Fr(\).)k(The)c(v)m(alue)i(is)f(p)q(ositiv)o(e)g
+(if)g(the)g(history)f(w)o(as)f(sti\015ed,)195 973 y(negativ)o(e)j(if)h
+(it)f(w)o(asn't.)1675 1083 y([F)l(unction])-1800 b Fg(int)20
+b Ff(history)p 352 1083 V 25 w(is)p 415 1083 V 26 w(sti\015ed)j
+Fe(\()p Fq(void)p Fe(\))195 1137 y Fr(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
+1267 y Fi(2.3.3)30 b(Information)19 b(Ab)r(out)i(the)f(History)h(List)
+137 1398 y Fr(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.)1675 1508 y([F)l(unction])-1800 b Fg(HIST_ENTRY)21
+b(**)e Ff(history)p 606 1508 V 25 w(list)25 b Fe(\()p
+Fq(void)p Fe(\))195 1563 y Fr(Return)15 b(a)g Fq(NULL)f
+Fr(terminated)i(arra)o(y)e(of)h Fq(HIST_ENTRY)f(*)h Fr(whic)o(h)h(is)f
+(the)h(curren)o(t)f(input)h(history)l(.)195 1618 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 Fq(NULL)p
+Fr(.)1675 1728 y([F)l(unction])-1800 b Fg(int)20 b Ff(where)p
+326 1728 V 25 w(history)j Fe(\()p Fq(void)p Fe(\))195
+1783 y Fr(Returns)15 b(the)g(o\013set)f(of)h(the)g(curren)o(t)g
+(history)g(elemen)o(t.)1675 1893 y([F)l(unction])-1800
+b Fg(HIST_ENTRY)21 b(*)e Ff(curren)n(t)p 588 1893 V 25
+w(history)k Fe(\()p Fq(void)p Fe(\))195 1948 y Fr(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 Fq(where_history\(\))p Fr(.)195
+2002 y(If)j(there)h(is)f(no)h(en)o(try)e(there,)h(return)g(a)g
+Fq(NULL)g Fr(p)q(oin)o(ter.)1675 2112 y([F)l(unction])-1800
+b Fg(HIST_ENTRY)21 b(*)e Ff(history)p 580 2112 V 25 w(get)k
+Fe(\()p Fq(int)14 b(offset)p Fe(\))195 2167 y Fr(Return)20
+b(the)h(history)g(en)o(try)f(at)h(p)q(osition)g Fj(o\013set)p
+Fr(,)g(starting)f(from)g Fq(history_base)f Fr(\(see)i(Sec-)195
+2222 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
+Fr(is)g(greater)195 2277 y(than)g(the)g(history)g(length,)h(return)f(a)
+g Fq(NULL)g Fr(p)q(oin)o(ter.)1675 2387 y([F)l(unction])-1800
+b Fg(time_t)20 b Ff(history)p 430 2387 V 25 w(get)p 532
+2387 V 26 w(time)j Fe(\()p Fq(HIST_ENTRY)13 b(*entry)p
+Fe(\))195 2442 y Fr(Return)i(the)g(time)h(stamp)e(asso)q(ciated)i(with)
+f(the)g(history)h(en)o(try)e Fj(en)o(try)p Fr(.)1675
+2552 y([F)l(unction])-1800 b Fg(int)20 b Ff(history)p
+352 2552 V 25 w(total)p 493 2552 V 26 w(b)n(ytes)j Fe(\()p
+Fq(void)p Fe(\))195 2606 y Fr(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 2661 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(.)p
+eop
+%%Page: 8 12
+8 11 bop 75 -58 a Fr(8)1347 b(GNU)15 b(History)g(Library)75
+149 y Fi(2.3.4)30 b(Mo)n(ving)21 b(Around)f(the)h(History)g(List)137
+272 y Fr(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.)
+1675 365 y([F)l(unction])-1800 b Fg(int)20 b Ff(history)p
+352 365 18 3 v 25 w(set)p 448 365 V 25 w(p)r(os)i Fe(\()p
+Fq(int)14 b(pos)p Fe(\))195 420 y Fr(Set)k(the)h(curren)o(t)f(history)g
+(o\013set)g(to)f Fj(p)q(os)p Fr(,)i(an)f(absolute)h(index)h(in)o(to)e
+(the)g(list.)30 b(Returns)18 b(1)g(on)195 474 y(success,)d(0)g(if)h
+Fj(p)q(os)h Fr(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.)1675 567 y([F)l(unction])
+-1800 b Fg(HIST_ENTRY)21 b(*)e Ff(previous)p 616 567
+V 25 w(history)k Fe(\()p Fq(void)p Fe(\))195 622 y Fr(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
+677 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 Fq(NULL)g Fr(p)q(oin)o(ter.)1675
+770 y([F)l(unction])-1800 b Fg(HIST_ENTRY)21 b(*)e Ff(next)p
+515 770 V 26 w(history)j Fe(\()p Fq(void)p Fe(\))195
+825 y Fr(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 879 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 Fq(NULL)g
+Fr(p)q(oin)o(ter.)75 992 y Fi(2.3.5)30 b(Searc)n(hing)21
+b(the)f(History)h(List)137 1115 y Fr(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 1170 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
+1224 y(The)j(searc)o(h)f(ma)o(y)g(b)q(e)i Fj(anc)o(hored)p
+Fr(,)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 1279 y(history)g(en)o(try)l(.)1675
+1372 y([F)l(unction])-1800 b Fg(int)20 b Ff(history)p
+352 1372 V 25 w(searc)n(h)j Fe(\()p Fq(const)14 b(char)g(*string,)g
+(int)h(direction)p Fe(\))195 1427 y Fr(Searc)o(h)g(the)f(history)g(for)
+g Fj(string)p Fr(,)g(starting)g(at)g(the)h(curren)o(t)f(history)g
+(o\013set.)19 b(If)c Fj(direction)g Fr(is)g(less)195
+1482 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
+1536 y(en)o(tries.)h(If)c Fj(string)j Fr(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 1591 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 Fr(w)o(as)c(found.)195 1646 y(Otherwise,)g(nothing)f(is)h
+(c)o(hanged,)f(and)h(a)e(-1)h(is)h(returned.)1675 1739
+y([F)l(unction])-1800 b Fg(int)20 b Ff(history)p 352
+1739 V 25 w(searc)n(h)p 533 1739 V 25 w(pre\014x)i Fe(\()p
+Fq(const)15 b(char)f(*string,)g(int)h(direction)p Fe(\))195
+1794 y Fr(Searc)o(h)20 b(the)h(history)f(for)g Fj(string)p
+Fr(,)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 1849 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 Fr(.)20
+b(If)15 b Fj(direction)h Fr(is)f(less)g(than)g(0,)f(then)h(the)195
+1903 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
+Fr(is)195 1958 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 2013 y(Otherwise,)f(nothing)f(is)h(c)o(hanged,)f(and)h(a)e
+(-1)h(is)h(returned.)1675 2106 y([F)l(unction])-1800
+b Fg(int)20 b Ff(history)p 352 2106 V 25 w(searc)n(h)p
+533 2106 V 25 w(p)r(os)h Fe(\()p Fq(const)15 b(char)f(*string,)g(int)h
+(direction,)f(int)283 2161 y(pos)p Fe(\))195 2216 y Fr(Searc)o(h)j(for)
+g Fj(string)k Fr(in)d(the)f(history)g(list,)h(starting)e(at)h
+Fj(p)q(os)p Fr(,)g(an)g(absolute)h(index)g(in)o(to)f(the)h(list.)195
+2270 y(If)g Fj(direction)i Fr(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 Fr(,)h(otherwise)h
+(forw)o(ard.)195 2325 y(Returns)j(the)g(absolute)g(index)h(of)f(the)g
+(history)g(elemen)o(t)h(where)f Fj(string)k Fr(w)o(as)21
+b(found,)j(or)d(-1)195 2380 y(otherwise.)75 2493 y Fi(2.3.6)30
+b(Managing)20 b(the)g(History)h(File)137 2615 y Fr(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
+2670 y(men)o(ts)f(the)g(functions)h(for)f(managing)g(a)g(history)g
+(\014le.)p eop
+%%Page: 9 13
+9 12 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(History)889 b(9)1675 149 y([F)l(unction])-1800 b Fg(int)20
+b Ff(read)p 287 149 18 3 v 24 w(history)j Fe(\()p Fq(const)14
+b(char)h(*filename)p Fe(\))195 204 y Fr(Add)g(the)g(con)o(ten)o(ts)f
+(of)h Fj(\014lename)j Fr(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 Fr(is)c Fq(NULL)p
+Fr(,)195 259 y(then)h(read)f(from)f(`)p Fq(~/.history)p
+Fr('.)k(Returns)d(0)f(if)i(successful,)g(or)f Fq(errno)f
+Fr(if)i(not.)1675 358 y([F)l(unction])-1800 b Fg(int)20
+b Ff(read)p 287 358 V 24 w(history)p 486 358 V 26 w(range)h
+Fe(\()p Fq(const)15 b(char)f(*filename,)g(int)h(from,)f(int)h(to)p
+Fe(\))195 413 y Fr(Read)f(a)f(range)h(of)f(lines)j(from)d
+Fj(\014lename)p Fr(,)i(adding)g(them)f(to)f(the)h(history)g(list.)20
+b(Start)13 b(reading)i(at)195 468 y(line)g Fj(from)d
+Fr(and)h(end)h(at)f Fj(to)p Fr(.)18 b(If)c Fj(from)e
+Fr(is)i(zero,)f(start)f(at)g(the)h(b)q(eginning.)22 b(If)13
+b Fj(to)i Fr(is)e(less)h(than)f Fj(from)p Fr(,)195 523
+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 Fr(is)d Fq(NULL)p Fr(,)e(then)h(read)g(from)f
+(`)p Fq(~/.history)p Fr('.)195 577 y(Returns)h(0)g(if)g(successful,)h
+(or)f Fq(errno)g Fr(if)g(not.)1675 677 y([F)l(unction])-1800
+b Fg(int)20 b Ff(write)p 305 677 V 26 w(history)j Fe(\()p
+Fq(const)14 b(char)h(*filename)p Fe(\))195 732 y Fr(W)l(rite)j(the)f
+(curren)o(t)g(history)h(to)f Fj(\014lename)p Fr(,)h(o)o(v)o(erwriting)f
+Fj(\014lename)k Fr(if)d(necessary)l(.)27 b(If)18 b Fj(\014lename)195
+786 y Fr(is)f Fq(NULL)p Fr(,)e(then)h(write)h(the)f(history)g(list)h
+(to)e(`)p Fq(~/.history)p Fr('.)21 b(Returns)16 b(0)f(on)h(success,)h
+(or)f Fq(errno)195 841 y Fr(on)f(a)g(read)g(or)g(write)g(error.)1675
+940 y([F)l(unction])-1800 b Fg(int)20 b Ff(app)r(end)p
+361 940 V 24 w(history)j Fe(\()p Fq(int)14 b(nelements,)g(const)g(char)
+h(*filename)p Fe(\))195 995 y Fr(App)q(end)k(the)e(last)g
+Fj(nelemen)o(ts)k Fr(of)16 b(the)i(history)f(list)h(to)f
+Fj(\014lename)p Fr(.)27 b(If)18 b Fj(\014lename)j Fr(is)d
+Fq(NULL)p Fr(,)f(then)195 1050 y(app)q(end)f(to)f(`)p
+Fq(~/.history)p Fr('.)j(Returns)c(0)h(on)g(success,)h(or)e
+Fq(errno)h Fr(on)g(a)g(read)g(or)g(write)g(error.)1675
+1149 y([F)l(unction])-1800 b Fg(int)20 b Ff(history)p
+352 1149 V 25 w(truncate)p 588 1149 V 25 w(\014le)k Fe(\()p
+Fq(const)14 b(char)h(*filename,)f(int)g(nlines)p Fe(\))195
+1204 y Fr(T)l(runcate)19 b(the)h(history)f(\014le)h Fj(\014lename)p
+Fr(,)h(lea)o(ving)f(only)g(the)f(last)g Fj(nlines)k Fr(lines.)34
+b(If)20 b Fj(\014lename)i Fr(is)195 1259 y Fq(NULL)p
+Fr(,)14 b(then)i(`)p Fq(~/.history)p Fr(')d(is)j(truncated.)j(Returns)c
+(0)g(on)g(success,)h(or)e Fq(errno)h Fr(on)g(failure.)75
+1378 y Fi(2.3.7)30 b(History)20 b(Expansion)137 1504
+y Fr(These)c(functions)g(implemen)o(t)g(history)f(expansion.)1675
+1603 y([F)l(unction])-1800 b Fg(int)20 b Ff(history)p
+352 1603 V 25 w(expand)i Fe(\()p Fq(char)15 b(*string,)f(char)g
+(**output)p Fe(\))195 1658 y Fr(Expand)k Fj(string)p
+Fr(,)f(placing)h(the)g(result)f(in)o(to)g Fj(output)p
+Fr(,)h(a)e(p)q(oin)o(ter)i(to)f(a)g(string)g(\(see)g(Section)h(1.1)195
+1713 y([History)d(In)o(teraction],)f(page)h(1\).)20 b(Returns:)195
+1798 y Fq(0)216 b Fr(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
+1852 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 1936
+y Fq(1)216 b Fr(if)16 b(expansions)g(did)g(tak)o(e)e(place;)195
+2019 y Fq(-1)192 b Fr(if)16 b(there)f(w)o(as)f(an)h(error)g(in)h
+(expansion;)195 2102 y Fq(2)216 b Fr(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 Fq(:p)435 2157 y Fr(mo)q(di\014er)i(\(see)f(Section)h(1.1.3)e
+([Mo)q(di\014ers],)h(page)g(2\).)195 2242 y(If)g(an)h(error)e(o)q
+(curred)i(in)g(expansion,)f(then)h Fj(output)g Fr(con)o(tains)f(a)g
+(descriptiv)o(e)i(error)d(message.)1675 2341 y([F)l(unction])-1800
+b Fg(char)20 b(*)f Ff(get)p 325 2341 V 25 w(history)p
+525 2341 V 26 w(ev)n(en)n(t)24 b Fe(\()p Fq(const)14
+b(char)h(*string,)f(int)h(*cindex,)f(int)283 2396 y(qchar)p
+Fe(\))195 2451 y Fr(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 Fq(+)d Fj(*cindex)p
+Fr(.)43 b Fj(*cindex)27 b Fr(is)195 2506 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
+Fr(p)q(oin)o(ts)c(to)f(the)195 2560 y(index)19 b(in)o(to)f
+Fj(string)k Fr(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 Fr(is)d(a)g(c)o
+(haracter)195 2615 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 2670 y(c)o(haracters.)p
+eop
+%%Page: 10 14
+10 13 bop 75 -58 a Fr(10)1324 b(GNU)15 b(History)g(Library)1675
+149 y([F)l(unction])-1800 b Fg(char)20 b(**)f Ff(history)p
+449 149 18 3 v 25 w(tok)n(enize)25 b Fe(\()p Fq(const)15
+b(char)f(*string)p Fe(\))195 204 y Fr(Return)h(an)g(arra)o(y)g(of)g
+(tok)o(ens)g(parsed)g(out)g(of)g Fj(string)p Fr(,)g(m)o(uc)o(h)h(as)f
+(the)g(shell)i(migh)o(t.)k(The)15 b(tok)o(ens)195 259
+y(are)g(split)h(on)g(the)f(c)o(haracters)f(in)i(the)g
+Fj(history)p 1003 259 14 2 v 20 w(w)o(ord)p 1121 259
+V 19 w(delimiters)j Fr(v)m(ariable,)d(and)g(shell)h(quoting)195
+314 y(con)o(v)o(en)o(tions)e(are)g(ob)q(ey)o(ed.)1675
+409 y([F)l(unction])-1800 b Fg(char)20 b(*)f Ff(history)p
+423 409 18 3 v 25 w(arg)p 529 409 V 25 w(extract)k Fe(\()p
+Fq(int)15 b(first,)f(int)h(last,)f(const)h(char)283 464
+y(*string)p Fe(\))195 518 y Fr(Extract)k(a)h(string)g(segmen)o(t)g
+(consisting)h(of)f(the)g Fj(\014rst)h Fr(through)f Fj(last)h
+Fr(argumen)o(ts)e(presen)o(t)h(in)195 573 y Fj(string)p
+Fr(.)g(Argumen)o(ts)15 b(are)f(split)j(using)f Fq(history_tokenize)p
+Fr(.)75 705 y Fp(2.4)33 b(History)22 b(V)-6 b(ariables)137
+829 y Fr(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
+Fr(History)g(Li-)75 884 y(brary)l(.)1685 979 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(history)p 352 979 V 25 w(base)195 1033
+y Fr(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.)1685 1128 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(history)p 352 1128 V 25 w(length)195
+1183 y Fr(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.)1685 1278 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(history)p 352 1278 V 25 w(max)p 484
+1278 V 24 w(en)n(tries)195 1333 y Fr(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 Fq(stifle_)195 1388 y(history\(\))p
+Fr(.)1685 1483 y([V)l(ariable])-1799 b Fg(int)20 b Ff(history)p
+352 1483 V 25 w(write)p 505 1483 V 26 w(timestamps)195
+1538 y Fr(If)j(non-zero,)h(timestamps)e(are)g(written)g(to)g(the)g
+(history)g(\014le,)j(so)d(they)g(can)h(b)q(e)g(preserv)o(ed)195
+1592 y(b)q(et)o(w)o(een)16 b(sessions.)k(The)15 b(default)h(v)m(alue)g
+(is)g(0,)f(meaning)h(that)e(timestamps)h(are)g(not)g(sa)o(v)o(ed.)1685
+1687 y([V)l(ariable])-1799 b Fg(char)20 b Ff(history)p
+378 1687 V 25 w(expansion)p 650 1687 V 25 w(c)n(har)195
+1742 y Fr(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 Fq(!)p
+Fr('.)26 b(Setting)18 b(this)g(to)f(0)195 1797 y(inhibits)g(history)f
+(expansion.)1685 1892 y([V)l(ariable])-1799 b Fg(char)20
+b Ff(history)p 378 1892 V 25 w(subst)p 535 1892 V 24
+w(c)n(har)195 1947 y Fr(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 2001 y(default)16 b(is)f(`)p Fq(^)p
+Fr('.)1685 2096 y([V)l(ariable])-1799 b Fg(char)20 b
+Ff(history)p 378 2096 V 25 w(commen)n(t)p 633 2096 V
+24 w(c)n(har)195 2151 y Fr(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 2206 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 2261 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.)1685
+2356 y([V)l(ariable])-1799 b Fg(char)20 b(*)f Ff(history)p
+423 2356 V 25 w(w)n(ord)p 572 2356 V 25 w(delimiters)195
+2411 y Fr(The)14 b(c)o(haracters)f(that)g(separate)g(tok)o(ens)h(for)f
+Fq(history_tokenize\(\))p Fr(.)k(The)d(default)g(v)m(alue)h(is)f
+Fq(")195 2465 y(\\t\\n\(\)<>;&|")p Fr(.)1685 2560 y([V)l(ariable])-1799
+b Fg(char)20 b(*)f Ff(history)p 423 2560 V 25 w(searc)n(h)p
+604 2560 V 25 w(delimiter)p 853 2560 V 27 w(c)n(hars)195
+2615 y Fr(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
+2670 y(to)h(space,)g(T)l(AB,)g(`)p Fq(:)p Fr(')f(and)h(`)p
+Fq(?)p Fr(')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(.)p eop
+%%Page: 11 15
+11 14 bop 75 -58 a Fr(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(History)867 b(11)1685 149 y([V)l(ariable])-1799 b Fg(char)20
+b(*)f Ff(history)p 423 149 18 3 v 25 w(no)p 509 149 V
+25 w(expand)p 714 149 V 25 w(c)n(hars)195 204 y Fr(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 259 y Fj(history)p 336
+259 14 2 v 20 w(expansion)p 551 259 V 21 w(c)o(har)p
+Fr(.)k(The)15 b(default)h(is)f(space,)h(tab,)e(newline,)j(carriage)e
+(return,)f(and)i(`)p Fq(=)p Fr('.)1685 354 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(history)p 352 354 18 3 v 25 w(quotes)p
+539 354 V 25 w(inhibit)p 727 354 V 28 w(expansion)195
+409 y Fr(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
+463 y(The)g(default)h(v)m(alue)h(is)e(0.)1685 558 y([V)l(ariable])-1799
+b Fg(rl_linebuf_func_t)22 b(*)d Ff(history)p 763 558
+V 25 w(inhibit)p 951 558 V 28 w(expansion)p 1226 558
+V 25 w(function)195 613 y Fr(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 Fq(char)d(*)195 668 y Fr(\()p Fj(string)t
+Fr(\))e(and)i(an)f Fq(int)g Fr(index)i(in)o(to)e(that)f(string)i(\()p
+Fj(i)r Fr(\).)19 b(It)14 b(should)g(return)f(a)g(non-zero)h(v)m(alue)g
+(if)g(the)195 722 y(history)h(expansion)g(starting)f(at)g
+Fj(string[i])i Fr(should)g(not)e(b)q(e)h(p)q(erformed;)g(zero)f(if)h
+(the)g(expansion)195 777 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 832 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 Fq(NULL)p Fr(.)75 964 y Fp(2.5)33
+b(History)22 b(Programming)h(Example)137 1087 y Fr(The)16
+b(follo)o(wing)g(program)e(demonstrates)g(simple)j(use)e(of)g(the)g
+Fk(gnu)g Fr(History)g(Library)l(.)195 1144 y Fd(#include)i(<stdio.h)o
+(>)195 1188 y(#include)g(<readlin)o(e/h)o(is)o(tor)o(y.h)o(>)195
+1275 y(main)h(\(argc,)f(argv\))293 1319 y(int)i(argc;)293
+1362 y(char)f(**argv;)195 1406 y({)234 1450 y(char)g(line[1024])o(,)f
+(*t;)234 1493 y(int)i(len,)f(done)g(=)h(0;)234 1580 y(line[0])e(=)i(0;)
+234 1667 y(using_hist)o(ory)d(\(\);)234 1711 y(while)i(\(!done\))273
+1755 y({)313 1798 y(printf)f(\("history)o($)g("\);)313
+1842 y(fflush)g(\(stdout\);)313 1885 y(t)i(=)g(fgets)f(\(line,)f
+(sizeof)g(\(line\))h(-)h(1,)g(stdin\);)313 1929 y(if)g(\(t)f(&&)h(*t\))
+352 1973 y({)391 2016 y(len)g(=)g(strlen)e(\(t\);)391
+2060 y(if)i(\(t[len)e(-)i(1])g(==)g('\\n'\))430 2103
+y(t[len)f(-)h(1])g(=)g('\\0';)352 2147 y(})313 2234 y(if)g(\(!t\))352
+2278 y(strcpy)e(\(line,)g("quit"\);)313 2365 y(if)i(\(line[0])o(\))352
+2408 y({)391 2452 y(char)f(*expansion)o(;)391 2496 y(int)h(result;)391
+2583 y(result)e(=)j(history_e)o(xp)o(and)c(\(line,)h(&expansion)o(\);)
+391 2626 y(if)i(\(result\))430 2670 y(fprintf)e(\(stderr,)g
+("\045s\\n",)g(expansion)o(\);)p eop
+%%Page: 12 16
+12 15 bop 75 -58 a Fr(12)1324 b(GNU)15 b(History)g(Library)391
+193 y Fd(if)k(\(result)e(<)i(0)g(||)g(result)e(==)i(2\))430
+237 y({)470 280 y(free)f(\(expansio)o(n\))o(;)470 324
+y(continue)o(;)430 367 y(})391 455 y(add_histor)o(y)e(\(expansion\))o
+(;)391 498 y(strncpy)h(\(line,)g(expansion,)f(sizeof)h(\(line\))h(-)h
+(1\);)391 542 y(free)f(\(expansion)o(\);)352 585 y(})313
+672 y(if)h(\(strcmp)d(\(line,)i("quit"\))f(==)h(0\))352
+716 y(done)g(=)h(1;)313 760 y(else)f(if)h(\(strcmp)d(\(line,)i
+("save"\))f(==)i(0\))352 803 y(write_his)o(tor)o(y)d(\("history_f)o(il)
+o(e"\))o(;)313 847 y(else)i(if)h(\(strcmp)d(\(line,)i("read"\))f(==)i
+(0\))352 890 y(read_hist)o(ory)d(\("history)o(_fi)o(le)o("\);)313
+934 y(else)i(if)h(\(strcmp)d(\(line,)i("list"\))f(==)i(0\))352
+978 y({)391 1021 y(register)e(HIST_ENTR)o(Y)f(**the_list;)391
+1065 y(register)h(int)h(i;)391 1152 y(the_list)f(=)i(history_l)o(ist)d
+(\(\);)391 1196 y(if)j(\(the_list)o(\))430 1239 y(for)g(\(i)g(=)g(0;)g
+(the_list[)o(i])o(;)e(i++\))470 1283 y(printf)g(\("\045d:)h(\045s\\n",)
+f(i)i(+)g(history_ba)o(se,)d(the_list[)o(i]-)o(>li)o(ne)o(\);)352
+1326 y(})313 1370 y(else)i(if)h(\(strncmp)d(\(line,)h("delete",)g(6\))h
+(==)h(0\))352 1413 y({)391 1457 y(int)g(which;)391 1501
+y(if)g(\(\(sscanf)d(\(line)i(+)h(6,)g("\045d",)f(&which\)\))e(==)j(1\))
+430 1544 y({)470 1588 y(HIST_ENT)o(RY)d(*entry)i(=)h(remove_hi)o(sto)o
+(ry)d(\(which\);)470 1631 y(if)i(\(!entry\))509 1675
+y(fprintf)f(\(stderr,)f("No)j(such)f(entry)f(\045d\\n",)h(which\);)470
+1719 y(else)509 1762 y({)548 1806 y(free)g(\(entry->li)o(ne)o(\);)548
+1849 y(free)g(\(entry\);)509 1893 y(})430 1936 y(})391
+1980 y(else)430 2024 y({)470 2067 y(fprintf)e(\(stderr,)h("non-numer)o
+(ic)f(arg)i(given)g(to)h(`delete'\\n)o("\))o(;)430 2111
+y(})352 2154 y(})273 2198 y(})195 2242 y(})p eop
+%%Page: 13 17
+13 16 bop 75 -58 a Fr(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(13)75 149 y Fn(App)r(endix)25 b(A)20 b(Cop)n(ying)26
+b(This)g(Man)n(ual)75 345 y Fp(A.1)33 b(GNU)21 b(F)-6
+b(ree)23 b(Do)r(cumen)n(tation)g(License)698 455 y Fr(V)l(ersion)16
+b(1.2,)e(No)o(v)o(em)o(b)q(er)h(2002)195 526 y(Cop)o(yrigh)o(t)421
+525 y(c)409 526 y Fo(\015)f Fr(2000,2001,200)o(2)e(F)l(ree)j(Soft)o(w)o
+(are)f(F)l(oundation,)h(Inc.)195 581 y(59)g(T)l(emple)h(Place,)f(Suite)
+i(330,)d(Boston,)g(MA)30 b(02111-1307,)12 b(USA)195 690
+y(Ev)o(ery)o(one)j(is)g(p)q(ermitted)h(to)f(cop)o(y)g(and)g(distribute)
+i(v)o(erbatim)e(copies)195 745 y(of)g(this)g(license)j(do)q(cumen)o(t,)
+d(but)g(c)o(hanging)h(it)f(is)h(not)f(allo)o(w)o(ed.)100
+816 y(0.)29 b(PREAMBLE)165 885 y(The)19 b(purp)q(ose)g(of)f(this)h
+(License)i(is)e(to)f(mak)o(e)g(a)g(man)o(ual,)h(textb)q(o)q(ok,)g(or)f
+(other)g(functional)i(and)165 940 y(useful)c(do)q(cumen)o(t)g
+Fj(free)h Fr(in)f(the)f(sense)h(of)f(freedom:)k(to)c(assure)g(ev)o(ery)
+o(one)f(the)i(e\013ectiv)o(e)f(freedom)165 995 y(to)g(cop)o(y)h(and)g
+(redistribute)h(it,)e(with)h(or)f(without)h(mo)q(difying)h(it,)f
+(either)g(commercially)h(or)f(non-)165 1050 y(commercially)l(.)28
+b(Secondarily)l(,)19 b(this)f(License)h(preserv)o(es)e(for)g(the)g
+(author)g(and)h(publisher)h(a)e(w)o(a)o(y)165 1104 y(to)g(get)h(credit)
+h(for)e(their)i(w)o(ork,)e(while)j(not)e(b)q(eing)h(considered)g(resp)q
+(onsible)h(for)e(mo)q(di\014cations)165 1159 y(made)d(b)o(y)g(others.)
+165 1228 y(This)d(License)i(is)e(a)f(kind)i(of)e(\\cop)o(yleft",)g
+(whic)o(h)i(means)e(that)g(deriv)m(ativ)o(e)i(w)o(orks)e(of)g(the)h(do)
+q(cumen)o(t)165 1283 y(m)o(ust)k(themselv)o(es)i(b)q(e)g(free)e(in)i
+(the)f(same)g(sense.)26 b(It)16 b(complemen)o(ts)i(the)f(GNU)g(General)
+g(Public)165 1338 y(License,)g(whic)o(h)f(is)f(a)g(cop)o(yleft)h
+(license)h(designed)f(for)f(free)g(soft)o(w)o(are.)165
+1407 y(W)l(e)g(ha)o(v)o(e)f(designed)i(this)g(License)g(in)g(order)e
+(to)g(use)h(it)g(for)g(man)o(uals)f(for)g(free)h(soft)o(w)o(are,)e(b)q
+(ecause)165 1462 y(free)21 b(soft)o(w)o(are)e(needs)j(free)f(do)q
+(cumen)o(tation:)32 b(a)21 b(free)g(program)f(should)i(come)f(with)h
+(man)o(uals)165 1517 y(pro)o(viding)15 b(the)g(same)f(freedoms)g(that)g
+(the)g(soft)o(w)o(are)f(do)q(es.)20 b(But)14 b(this)h(License)h(is)f
+(not)f(limited)j(to)165 1571 y(soft)o(w)o(are)d(man)o(uals;)h(it)g(can)
+h(b)q(e)g(used)g(for)e(an)o(y)h(textual)h(w)o(ork,)e(regardless)h(of)g
+(sub)s(ject)g(matter)f(or)165 1626 y(whether)i(it)g(is)g(published)i
+(as)e(a)f(prin)o(ted)i(b)q(o)q(ok.)k(W)l(e)16 b(recommend)g(this)g
+(License)i(principally)h(for)165 1681 y(w)o(orks)14 b(whose)h(purp)q
+(ose)h(is)g(instruction)g(or)f(reference.)100 1750 y(1.)29
+b(APPLICABILITY)17 b(AND)e(DEFINITIONS)165 1819 y(This)21
+b(License)g(applies)h(to)d(an)o(y)h(man)o(ual)g(or)f(other)h(w)o(ork,)g
+(in)h(an)o(y)e(medium,)j(that)d(con)o(tains)h(a)165 1874
+y(notice)h(placed)h(b)o(y)f(the)g(cop)o(yrigh)o(t)f(holder)i(sa)o(ying)
+f(it)g(can)g(b)q(e)g(distributed)h(under)g(the)f(terms)165
+1929 y(of)d(this)h(License.)33 b(Suc)o(h)19 b(a)g(notice)g(gran)o(ts)e
+(a)i(w)o(orld-wide,)h(ro)o(y)o(alt)o(y-free)e(license,)j(unlimited)g
+(in)165 1984 y(duration,)j(to)e(use)h(that)f(w)o(ork)g(under)h(the)g
+(conditions)h(stated)e(herein.)43 b(The)23 b(\\Do)q(cumen)o(t",)165
+2039 y(b)q(elo)o(w,)15 b(refers)f(to)f(an)o(y)h(suc)o(h)g(man)o(ual)h
+(or)e(w)o(ork.)19 b(An)o(y)14 b(mem)o(b)q(er)h(of)e(the)i(public)h(is)f
+(a)f(licensee,)i(and)165 2093 y(is)d(addressed)g(as)f(\\y)o(ou".)18
+b(Y)l(ou)13 b(accept)g(the)f(license)j(if)e(y)o(ou)f(cop)o(y)l(,)h(mo)q
+(dify)g(or)f(distribute)h(the)g(w)o(ork)165 2148 y(in)j(a)f(w)o(a)o(y)f
+(requiring)j(p)q(ermission)f(under)g(cop)o(yrigh)o(t)f(la)o(w.)165
+2217 y(A)i(\\Mo)q(di\014ed)h(V)l(ersion")f(of)f(the)h(Do)q(cumen)o(t)g
+(means)g(an)o(y)f(w)o(ork)g(con)o(taining)i(the)f(Do)q(cumen)o(t)f(or)
+165 2272 y(a)i(p)q(ortion)h(of)g(it,)g(either)h(copied)g(v)o(erbatim,)f
+(or)f(with)h(mo)q(di\014cations)h(and/or)e(translated)h(in)o(to)165
+2327 y(another)c(language.)165 2396 y(A)e(\\Secondary)g(Section")h(is)f
+(a)g(named)g(app)q(endix)i(or)d(a)h(fron)o(t-matter)e(section)i(of)g
+(the)g(Do)q(cumen)o(t)165 2451 y(that)d(deals)h(exclusiv)o(ely)i(with)e
+(the)g(relationship)h(of)f(the)f(publishers)j(or)d(authors)g(of)g(the)h
+(Do)q(cumen)o(t)165 2506 y(to)18 b(the)h(Do)q(cumen)o(t's)f(o)o(v)o
+(erall)h(sub)s(ject)f(\(or)g(to)g(related)h(matters\))e(and)i(con)o
+(tains)g(nothing)g(that)165 2560 y(could)i(fall)g(directly)h(within)f
+(that)e(o)o(v)o(erall)i(sub)s(ject.)34 b(\(Th)o(us,)21
+b(if)g(the)f(Do)q(cumen)o(t)g(is)h(in)g(part)e(a)165
+2615 y(textb)q(o)q(ok)12 b(of)f(mathematics,)h(a)f(Secondary)h(Section)
+h(ma)o(y)e(not)h(explain)h(an)o(y)f(mathematics.\))18
+b(The)165 2670 y(relationship)d(could)g(b)q(e)f(a)g(matter)e(of)i
+(historical)g(connection)h(with)f(the)g(sub)s(ject)f(or)h(with)g
+(related)p eop
+%%Page: 14 18
+14 17 bop 75 -58 a Fr(14)1324 b(GNU)15 b(History)g(Library)165
+149 y(matters,)i(or)g(of)g(legal,)i(commercial,)g(philosophical,)i
+(ethical)e(or)e(p)q(olitical)j(p)q(osition)f(regarding)165
+204 y(them.)165 275 y(The)13 b(\\In)o(v)m(arian)o(t)g(Sections")g(are)g
+(certain)g(Secondary)g(Sections)h(whose)f(titles)g(are)g(designated,)g
+(as)165 329 y(b)q(eing)i(those)e(of)g(In)o(v)m(arian)o(t)g(Sections,)h
+(in)h(the)e(notice)h(that)e(sa)o(ys)h(that)g(the)g(Do)q(cumen)o(t)g(is)
+h(released)165 384 y(under)h(this)f(License.)21 b(If)14
+b(a)g(section)g(do)q(es)g(not)g(\014t)f(the)h(ab)q(o)o(v)o(e)g
+(de\014nition)i(of)d(Secondary)h(then)g(it)g(is)165 439
+y(not)i(allo)o(w)o(ed)g(to)f(b)q(e)i(designated)g(as)e(In)o(v)m(arian)o
+(t.)22 b(The)17 b(Do)q(cumen)o(t)e(ma)o(y)h(con)o(tain)g(zero)g(In)o(v)
+m(arian)o(t)165 494 y(Sections.)k(If)12 b(the)h(Do)q(cumen)o(t)f(do)q
+(es)h(not)f(iden)o(tify)h(an)o(y)f(In)o(v)m(arian)o(t)h(Sections)g
+(then)g(there)f(are)g(none.)165 564 y(The)19 b(\\Co)o(v)o(er)e(T)l
+(exts")g(are)h(certain)h(short)f(passages)g(of)f(text)h(that)g(are)g
+(listed,)i(as)e(F)l(ron)o(t-Co)o(v)o(er)165 619 y(T)l(exts)12
+b(or)g(Bac)o(k-Co)o(v)o(er)g(T)l(exts,)g(in)i(the)e(notice)h(that)f(sa)
+o(ys)g(that)g(the)g(Do)q(cumen)o(t)h(is)g(released)g(under)165
+674 y(this)g(License.)21 b(A)13 b(F)l(ron)o(t-Co)o(v)o(er)e(T)l(ext)i
+(ma)o(y)f(b)q(e)i(at)e(most)g(5)h(w)o(ords,)f(and)h(a)g(Bac)o(k-Co)o(v)
+o(er)f(T)l(ext)h(ma)o(y)165 729 y(b)q(e)j(at)e(most)h(25)f(w)o(ords.)
+165 799 y(A)k(\\T)l(ransparen)o(t")e(cop)o(y)i(of)f(the)h(Do)q(cumen)o
+(t)g(means)f(a)h(mac)o(hine-readable)h(cop)o(y)l(,)f(represen)o(ted)165
+854 y(in)h(a)e(format)g(whose)g(sp)q(eci\014cation)j(is)f(a)o(v)m
+(ailable)g(to)e(the)h(general)h(public,)h(that)d(is)h(suitable)i(for)
+165 909 y(revising)d(the)f(do)q(cumen)o(t)g(straigh)o(tforw)o(ardly)f
+(with)h(generic)h(text)e(editors)h(or)f(\(for)g(images)h(com-)165
+964 y(p)q(osed)c(of)g(pixels\))h(generic)g(pain)o(t)f(programs)f(or)g
+(\(for)g(dra)o(wings\))h(some)f(widely)i(a)o(v)m(ailable)h(dra)o(wing)
+165 1018 y(editor,)h(and)f(that)g(is)h(suitable)h(for)e(input)h(to)f
+(text)g(formatters)f(or)h(for)g(automatic)g(translation)h(to)165
+1073 y(a)e(v)m(ariet)o(y)h(of)f(formats)f(suitable)i(for)f(input)i(to)d
+(text)h(formatters.)18 b(A)13 b(cop)o(y)h(made)f(in)h(an)g(otherwise)
+165 1128 y(T)l(ransparen)o(t)k(\014le)i(format)d(whose)i(markup,)g(or)g
+(absence)g(of)g(markup,)g(has)f(b)q(een)i(arranged)f(to)165
+1183 y(th)o(w)o(art)12 b(or)g(discourage)i(subsequen)o(t)g(mo)q
+(di\014cation)h(b)o(y)e(readers)g(is)h(not)f(T)l(ransparen)o(t.)18
+b(An)c(image)165 1238 y(format)i(is)i(not)e(T)l(ransparen)o(t)h(if)h
+(used)f(for)g(an)o(y)g(substan)o(tial)g(amoun)o(t)g(of)f(text.)26
+b(A)17 b(cop)o(y)g(that)f(is)165 1292 y(not)f(\\T)l(ransparen)o(t")f
+(is)i(called)g(\\Opaque".)165 1363 y(Examples)27 b(of)f(suitable)i
+(formats)d(for)h(T)l(ransparen)o(t)g(copies)h(include)i(plain)f
+Fk(asci)q(i)e Fr(without)165 1418 y(markup,)20 b(T)l(exinfo)h(input)g
+(format,)e(LaT)887 1427 y(E)913 1418 y(X)h(input)h(format,)e
+Fk(sgml)h Fr(or)f Fk(xml)h Fr(using)h(a)e(publicly)165
+1472 y(a)o(v)m(ailable)e Fk(dtd)p Fr(,)g(and)f(standard-conforming)f
+(simple)i Fk(html)p Fr(,)f(P)o(ostScript)f(or)h Fk(pdf)g
+Fr(designed)i(for)165 1527 y(h)o(uman)h(mo)q(di\014cation.)33
+b(Examples)19 b(of)g(transparen)o(t)f(image)h(formats)f(include)k
+Fk(png)p Fr(,)e Fk(x)o(cf)f Fr(and)165 1582 y Fk(jpg)p
+Fr(.)32 b(Opaque)20 b(formats)e(include)j(proprietary)e(formats)f(that)
+g(can)h(b)q(e)h(read)f(and)g(edited)h(only)165 1637 y(b)o(y)g
+(proprietary)f(w)o(ord)g(pro)q(cessors,)h Fk(sgml)g Fr(or)f
+Fk(xml)h Fr(for)f(whic)o(h)i(the)f Fk(dtd)g Fr(and/or)f(pro)q(cessing)
+165 1692 y(to)q(ols)c(are)h(not)f(generally)h(a)o(v)m(ailable,)h(and)f
+(the)f(mac)o(hine-generated)i Fk(html)p Fr(,)e(P)o(ostScript)g(or)g
+Fk(pdf)165 1746 y Fr(pro)q(duced)h(b)o(y)f(some)g(w)o(ord)g(pro)q
+(cessors)g(for)f(output)h(purp)q(oses)h(only)l(.)165
+1817 y(The)h(\\Title)h(P)o(age")e(means,)i(for)e(a)h(prin)o(ted)h(b)q
+(o)q(ok,)f(the)g(title)h(page)f(itself,)i(plus)f(suc)o(h)f(follo)o
+(wing)165 1872 y(pages)d(as)f(are)h(needed)h(to)e(hold,)i(legibly)l(,)g
+(the)f(material)g(this)h(License)g(requires)g(to)e(app)q(ear)h(in)h
+(the)165 1926 y(title)f(page.)19 b(F)l(or)13 b(w)o(orks)f(in)i(formats)
+e(whic)o(h)i(do)f(not)g(ha)o(v)o(e)g(an)o(y)g(title)h(page)f(as)g(suc)o
+(h,)h(\\Title)g(P)o(age")165 1981 y(means)h(the)h(text)e(near)i(the)f
+(most)g(prominen)o(t)g(app)q(earance)h(of)f(the)g(w)o(ork's)f(title,)i
+(preceding)h(the)165 2036 y(b)q(eginning)g(of)e(the)g(b)q(o)q(dy)h(of)f
+(the)g(text.)165 2106 y(A)g(section)g(\\En)o(titled)h(XYZ")e(means)h(a)
+g(named)g(subunit)h(of)e(the)h(Do)q(cumen)o(t)g(whose)g(title)g(either)
+165 2161 y(is)f(precisely)i(XYZ)e(or)f(con)o(tains)h(XYZ)g(in)h(paren)o
+(theses)f(follo)o(wing)g(text)g(that)f(translates)g(XYZ)h(in)165
+2216 y(another)e(language.)19 b(\(Here)13 b(XYZ)f(stands)g(for)g(a)g
+(sp)q(eci\014c)j(section)e(name)f(men)o(tioned)h(b)q(elo)o(w,)h(suc)o
+(h)165 2271 y(as)g(\\Ac)o(kno)o(wledgemen)o(ts",)f(\\Dedications",)i
+(\\Endorsemen)o(ts",)e(or)g(\\History".\))19 b(T)l(o)13
+b(\\Preserv)o(e)165 2326 y(the)k(Title")g(of)g(suc)o(h)g(a)f(section)i
+(when)f(y)o(ou)f(mo)q(dify)i(the)f(Do)q(cumen)o(t)f(means)h(that)f(it)h
+(remains)g(a)165 2380 y(section)f(\\En)o(titled)g(XYZ")e(according)i
+(to)f(this)g(de\014nition.)165 2451 y(The)f(Do)q(cumen)o(t)g(ma)o(y)f
+(include)j(W)l(arran)o(t)o(y)c(Disclaimers)j(next)f(to)g(the)g(notice)g
+(whic)o(h)h(states)e(that)165 2506 y(this)k(License)i(applies)g(to)d
+(the)h(Do)q(cumen)o(t.)25 b(These)17 b(W)l(arran)o(t)o(y)e(Disclaimers)
+k(are)d(considered)j(to)165 2560 y(b)q(e)g(included)j(b)o(y)d
+(reference)g(in)h(this)f(License,)i(but)e(only)g(as)g(regards)f
+(disclaiming)j(w)o(arran)o(ties:)165 2615 y(an)o(y)d(other)g
+(implication)j(that)d(these)g(W)l(arran)o(t)o(y)f(Disclaimers)j(ma)o(y)
+d(ha)o(v)o(e)h(is)h(v)o(oid)g(and)g(has)f(no)165 2670
+y(e\013ect)d(on)g(the)g(meaning)h(of)f(this)h(License.)p
+eop
+%%Page: 15 19
+15 18 bop 75 -58 a Fr(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(15)100 149 y(2.)29 b(VERBA)l(TIM)15 b(COPYING)165
+222 y(Y)l(ou)k(ma)o(y)g(cop)o(y)f(and)i(distribute)g(the)f(Do)q(cumen)o
+(t)g(in)h(an)o(y)f(medium,)h(either)g(commercially)g(or)165
+277 y(noncommercially)l(,)k(pro)o(vided)e(that)f(this)h(License,)i(the)
+d(cop)o(yrigh)o(t)g(notices,)i(and)f(the)f(license)165
+332 y(notice)e(sa)o(ying)e(this)i(License)g(applies)h(to)d(the)h(Do)q
+(cumen)o(t)g(are)f(repro)q(duced)i(in)g(all)g(copies,)g(and)165
+387 y(that)13 b(y)o(ou)g(add)g(no)g(other)g(conditions)i(whatso)q(ev)o
+(er)d(to)h(those)g(of)g(this)h(License.)21 b(Y)l(ou)13
+b(ma)o(y)g(not)g(use)165 442 y(tec)o(hnical)18 b(measures)e(to)g
+(obstruct)g(or)g(con)o(trol)g(the)g(reading)h(or)f(further)h(cop)o
+(ying)g(of)f(the)g(copies)165 496 y(y)o(ou)c(mak)o(e)g(or)f
+(distribute.)21 b(Ho)o(w)o(ev)o(er,)11 b(y)o(ou)h(ma)o(y)g(accept)g
+(comp)q(ensation)h(in)g(exc)o(hange)g(for)e(copies.)165
+551 y(If)16 b(y)o(ou)g(distribute)h(a)f(large)g(enough)h(n)o(um)o(b)q
+(er)f(of)g(copies)h(y)o(ou)f(m)o(ust)f(also)h(follo)o(w)h(the)f
+(conditions)165 606 y(in)g(section)g(3.)165 679 y(Y)l(ou)11
+b(ma)o(y)e(also)i(lend)g(copies,)h(under)f(the)g(same)f(conditions)h
+(stated)f(ab)q(o)o(v)o(e,)h(and)f(y)o(ou)g(ma)o(y)g(publicly)165
+734 y(displa)o(y)16 b(copies.)100 807 y(3.)29 b(COPYING)16
+b(IN)f(QUANTITY)165 880 y(If)e(y)o(ou)f(publish)j(prin)o(ted)e(copies)h
+(\(or)d(copies)j(in)f(media)h(that)d(commonly)i(ha)o(v)o(e)f(prin)o
+(ted)i(co)o(v)o(ers\))d(of)165 935 y(the)16 b(Do)q(cumen)o(t,)g(n)o(um)
+o(b)q(ering)g(more)g(than)g(100,)e(and)i(the)g(Do)q(cumen)o(t's)g
+(license)i(notice)e(requires)165 990 y(Co)o(v)o(er)g(T)l(exts,)h(y)o
+(ou)g(m)o(ust)g(enclose)h(the)f(copies)h(in)g(co)o(v)o(ers)f(that)f
+(carry)l(,)h(clearly)h(and)g(legibly)l(,)h(all)165 1044
+y(these)h(Co)o(v)o(er)e(T)l(exts:)29 b(F)l(ron)o(t-Co)o(v)o(er)18
+b(T)l(exts)h(on)g(the)h(fron)o(t)f(co)o(v)o(er,)g(and)h(Bac)o(k-Co)o(v)
+o(er)f(T)l(exts)g(on)165 1099 y(the)c(bac)o(k)f(co)o(v)o(er.)19
+b(Both)14 b(co)o(v)o(ers)g(m)o(ust)g(also)h(clearly)h(and)e(legibly)j
+(iden)o(tify)f(y)o(ou)e(as)g(the)h(publisher)165 1154
+y(of)i(these)g(copies.)27 b(The)17 b(fron)o(t)f(co)o(v)o(er)h(m)o(ust)f
+(presen)o(t)i(the)f(full)h(title)g(with)g(all)g(w)o(ords)e(of)h(the)g
+(title)165 1209 y(equally)g(prominen)o(t)f(and)f(visible.)23
+b(Y)l(ou)16 b(ma)o(y)e(add)i(other)f(material)g(on)h(the)f(co)o(v)o
+(ers)g(in)h(addition.)165 1264 y(Cop)o(ying)i(with)h(c)o(hanges)f
+(limited)i(to)d(the)h(co)o(v)o(ers,)g(as)g(long)g(as)g(they)g(preserv)o
+(e)g(the)g(title)h(of)f(the)165 1318 y(Do)q(cumen)o(t)g(and)h(satisfy)f
+(these)h(conditions,)h(can)f(b)q(e)g(treated)f(as)h(v)o(erbatim)f(cop)o
+(ying)h(in)g(other)165 1373 y(resp)q(ects.)165 1446 y(If)e(the)f
+(required)i(texts)d(for)h(either)h(co)o(v)o(er)f(are)g(to)q(o)g(v)o
+(oluminous)h(to)f(\014t)g(legibly)l(,)i(y)o(ou)e(should)i(put)165
+1501 y(the)f(\014rst)f(ones)g(listed)i(\(as)d(man)o(y)h(as)g(\014t)h
+(reasonably\))f(on)g(the)h(actual)g(co)o(v)o(er,)e(and)i(con)o(tin)o
+(ue)g(the)165 1556 y(rest)e(on)o(to)f(adjacen)o(t)h(pages.)165
+1629 y(If)f(y)o(ou)f(publish)j(or)d(distribute)h(Opaque)h(copies)f(of)f
+(the)h(Do)q(cumen)o(t)f(n)o(um)o(b)q(ering)i(more)e(than)g(100,)165
+1684 y(y)o(ou)h(m)o(ust)f(either)i(include)h(a)e(mac)o(hine-readable)i
+(T)l(ransparen)o(t)d(cop)o(y)h(along)g(with)g(eac)o(h)g(Opaque)165
+1738 y(cop)o(y)l(,)k(or)f(state)g(in)h(or)f(with)h(eac)o(h)f(Opaque)i
+(cop)o(y)e(a)g(computer-net)o(w)o(ork)g(lo)q(cation)h(from)f(whic)o(h)
+165 1793 y(the)12 b(general)h(net)o(w)o(ork-using)f(public)i(has)e
+(access)g(to)g(do)o(wnload)g(using)h(public-standard)h(net)o(w)o(ork)
+165 1848 y(proto)q(cols)19 b(a)g(complete)i(T)l(ransparen)o(t)d(cop)o
+(y)i(of)f(the)g(Do)q(cumen)o(t,)h(free)g(of)f(added)h(material.)33
+b(If)165 1903 y(y)o(ou)19 b(use)h(the)f(latter)g(option,)i(y)o(ou)e(m)o
+(ust)g(tak)o(e)f(reasonably)i(pruden)o(t)g(steps,)g(when)g(y)o(ou)f(b)q
+(egin)165 1958 y(distribution)i(of)d(Opaque)i(copies)g(in)g(quan)o(tit)
+o(y)l(,)g(to)e(ensure)i(that)e(this)i(T)l(ransparen)o(t)e(cop)o(y)h
+(will)165 2012 y(remain)d(th)o(us)e(accessible)j(at)e(the)g(stated)g
+(lo)q(cation)g(un)o(til)i(at)d(least)h(one)h(y)o(ear)e(after)g(the)i
+(last)f(time)165 2067 y(y)o(ou)j(distribute)i(an)e(Opaque)h(cop)o(y)f
+(\(directly)i(or)e(through)g(y)o(our)g(agen)o(ts)f(or)h(retailers\))h
+(of)f(that)165 2122 y(edition)f(to)d(the)h(public.)165
+2195 y(It)i(is)h(requested,)g(but)f(not)g(required,)i(that)d(y)o(ou)h
+(con)o(tact)g(the)g(authors)g(of)f(the)i(Do)q(cumen)o(t)f(w)o(ell)165
+2250 y(b)q(efore)e(redistributing)h(an)o(y)e(large)g(n)o(um)o(b)q(er)h
+(of)e(copies,)i(to)f(giv)o(e)h(them)f(a)g(c)o(hance)h(to)e(pro)o(vide)i
+(y)o(ou)165 2305 y(with)h(an)f(up)q(dated)h(v)o(ersion)f(of)g(the)g(Do)
+q(cumen)o(t.)100 2378 y(4.)29 b(MODIFICA)l(TIONS)165
+2451 y(Y)l(ou)13 b(ma)o(y)f(cop)o(y)h(and)g(distribute)h(a)e(Mo)q
+(di\014ed)i(V)l(ersion)g(of)e(the)h(Do)q(cumen)o(t)f(under)i(the)f
+(conditions)165 2506 y(of)d(sections)h(2)f(and)h(3)f(ab)q(o)o(v)o(e,)h
+(pro)o(vided)g(that)f(y)o(ou)g(release)h(the)g(Mo)q(di\014ed)h(V)l
+(ersion)f(under)g(precisely)165 2560 y(this)k(License,)h(with)f(the)f
+(Mo)q(di\014ed)i(V)l(ersion)f(\014lling)i(the)e(role)f(of)h(the)f(Do)q
+(cumen)o(t,)g(th)o(us)h(licensing)165 2615 y(distribution)k(and)e(mo)q
+(di\014cation)h(of)f(the)g(Mo)q(di\014ed)h(V)l(ersion)g(to)e(who)q(ev)o
+(er)h(p)q(ossesses)h(a)e(cop)o(y)h(of)165 2670 y(it.)j(In)c(addition,)g
+(y)o(ou)f(m)o(ust)f(do)h(these)h(things)g(in)g(the)f(Mo)q(di\014ed)h(V)
+l(ersion:)p eop
+%%Page: 16 20
+16 19 bop 75 -58 a Fr(16)1324 b(GNU)15 b(History)g(Library)178
+149 y(A.)30 b(Use)17 b(in)g(the)f(Title)h(P)o(age)f(\(and)g(on)h(the)f
+(co)o(v)o(ers,)g(if)g(an)o(y\))g(a)g(title)h(distinct)h(from)d(that)h
+(of)g(the)255 204 y(Do)q(cumen)o(t,)h(and)g(from)f(those)h(of)f
+(previous)i(v)o(ersions)f(\(whic)o(h)g(should,)h(if)g(there)f(w)o(ere)f
+(an)o(y)l(,)255 259 y(b)q(e)g(listed)h(in)g(the)f(History)f(section)h
+(of)f(the)h(Do)q(cumen)o(t\).)21 b(Y)l(ou)16 b(ma)o(y)f(use)h(the)g
+(same)f(title)h(as)255 314 y(a)f(previous)h(v)o(ersion)f(if)h(the)f
+(original)h(publisher)i(of)d(that)f(v)o(ersion)h(giv)o(es)h(p)q
+(ermission.)180 379 y(B.)30 b(List)16 b(on)f(the)g(Title)i(P)o(age,)d
+(as)h(authors,)f(one)h(or)g(more)g(p)q(ersons)g(or)g(en)o(tities)h
+(resp)q(onsible)i(for)255 434 y(authorship)c(of)e(the)h(mo)q
+(di\014cations)h(in)g(the)f(Mo)q(di\014ed)i(V)l(ersion,)f(together)e
+(with)h(at)g(least)g(\014v)o(e)255 488 y(of)f(the)g(principal)i
+(authors)d(of)h(the)g(Do)q(cumen)o(t)g(\(all)g(of)g(its)g(principal)i
+(authors,)e(if)g(it)g(has)g(few)o(er)255 543 y(than)j(\014v)o(e\),)g
+(unless)h(they)f(release)h(y)o(ou)f(from)f(this)i(requiremen)o(t.)180
+608 y(C.)29 b(State)15 b(on)g(the)h(Title)g(page)f(the)h(name)f(of)g
+(the)g(publisher)j(of)d(the)g(Mo)q(di\014ed)i(V)l(ersion,)f(as)f(the)
+255 663 y(publisher.)178 728 y(D.)29 b(Preserv)o(e)15
+b(all)h(the)f(cop)o(yrigh)o(t)g(notices)h(of)f(the)g(Do)q(cumen)o(t.)
+181 793 y(E.)30 b(Add)16 b(an)g(appropriate)g(cop)o(yrigh)o(t)f(notice)
+h(for)f(y)o(our)g(mo)q(di\014cations)i(adjacen)o(t)f(to)f(the)g(other)
+255 848 y(cop)o(yrigh)o(t)g(notices.)183 913 y(F.)29
+b(Include,)16 b(immediately)g(after)d(the)h(cop)o(yrigh)o(t)f(notices,)
+i(a)e(license)j(notice)f(giving)g(the)f(public)255 968
+y(p)q(ermission)g(to)d(use)i(the)f(Mo)q(di\014ed)i(V)l(ersion)f(under)g
+(the)f(terms)g(of)f(this)i(License,)h(in)f(the)g(form)255
+1023 y(sho)o(wn)i(in)h(the)f(Addendum)i(b)q(elo)o(w.)177
+1088 y(G.)29 b(Preserv)o(e)11 b(in)h(that)f(license)i(notice)g(the)e
+(full)i(lists)f(of)f(In)o(v)m(arian)o(t)h(Sections)g(and)f(required)i
+(Co)o(v)o(er)255 1143 y(T)l(exts)i(giv)o(en)h(in)g(the)f(Do)q(cumen)o
+(t's)g(license)i(notice.)178 1208 y(H.)30 b(Include)17
+b(an)e(unaltered)i(cop)o(y)e(of)f(this)i(License.)196
+1273 y(I.)30 b(Preserv)o(e)16 b(the)g(section)h(En)o(titled)g
+(\\History",)e(Preserv)o(e)g(its)i(Title,)f(and)h(add)f(to)f(it)i(an)f
+(item)255 1328 y(stating)e(at)f(least)h(the)g(title,)h(y)o(ear,)e(new)i
+(authors,)e(and)h(publisher)i(of)e(the)g(Mo)q(di\014ed)h(V)l(ersion)255
+1382 y(as)g(giv)o(en)h(on)g(the)g(Title)g(P)o(age.)21
+b(If)16 b(there)g(is)g(no)g(section)g(En)o(titled)g(\\History")f(in)i
+(the)f(Do)q(cu-)255 1437 y(men)o(t,)h(create)g(one)h(stating)f(the)g
+(title,)i(y)o(ear,)e(authors,)g(and)g(publisher)j(of)d(the)g(Do)q
+(cumen)o(t)255 1492 y(as)h(giv)o(en)g(on)g(its)g(Title)h(P)o(age,)f
+(then)h(add)f(an)g(item)g(describing)i(the)e(Mo)q(di\014ed)h(V)l
+(ersion)g(as)255 1547 y(stated)c(in)h(the)f(previous)h(sen)o(tence.)189
+1612 y(J.)30 b(Preserv)o(e)16 b(the)g(net)o(w)o(ork)f(lo)q(cation,)i
+(if)g(an)o(y)l(,)f(giv)o(en)h(in)g(the)f(Do)q(cumen)o(t)g(for)g(public)
+i(access)f(to)255 1667 y(a)e(T)l(ransparen)o(t)g(cop)o(y)h(of)f(the)g
+(Do)q(cumen)o(t,)h(and)f(lik)o(ewise)j(the)d(net)o(w)o(ork)g(lo)q
+(cations)h(giv)o(en)g(in)255 1721 y(the)g(Do)q(cumen)o(t)g(for)f
+(previous)h(v)o(ersions)g(it)g(w)o(as)f(based)i(on.)k(These)c(ma)o(y)e
+(b)q(e)h(placed)h(in)g(the)255 1776 y(\\History")12 b(section.)19
+b(Y)l(ou)13 b(ma)o(y)f(omit)g(a)g(net)o(w)o(ork)g(lo)q(cation)h(for)f
+(a)g(w)o(ork)g(that)g(w)o(as)f(published)255 1831 y(at)17
+b(least)h(four)g(y)o(ears)f(b)q(efore)h(the)g(Do)q(cumen)o(t)g(itself,)
+h(or)e(if)i(the)e(original)i(publisher)h(of)e(the)255
+1886 y(v)o(ersion)d(it)h(refers)f(to)f(giv)o(es)i(p)q(ermission.)177
+1951 y(K.)30 b(F)l(or)11 b(an)o(y)h(section)g(En)o(titled)h(\\Ac)o(kno)
+o(wledgemen)o(ts")f(or)f(\\Dedications",)h(Preserv)o(e)g(the)g(Title)
+255 2006 y(of)h(the)g(section,)h(and)f(preserv)o(e)h(in)g(the)f
+(section)h(all)g(the)g(substance)f(and)h(tone)f(of)g(eac)o(h)g(of)g
+(the)255 2060 y(con)o(tributor)i(ac)o(kno)o(wledgemen)o(ts)g(and/or)g
+(dedications)h(giv)o(en)g(therein.)184 2125 y(L.)30 b(Preserv)o(e)17
+b(all)i(the)f(In)o(v)m(arian)o(t)g(Sections)g(of)g(the)f(Do)q(cumen)o
+(t,)h(unaltered)h(in)f(their)h(text)e(and)255 2180 y(in)i(their)f
+(titles.)29 b(Section)19 b(n)o(um)o(b)q(ers)f(or)g(the)g(equiv)m(alen)o
+(t)h(are)f(not)g(considered)h(part)e(of)h(the)255 2235
+y(section)e(titles.)171 2300 y(M.)29 b(Delete)16 b(an)o(y)f(section)h
+(En)o(titled)g(\\Endorsemen)o(ts".)k(Suc)o(h)c(a)f(section)h(ma)o(y)e
+(not)h(b)q(e)h(included)255 2355 y(in)g(the)f(Mo)q(di\014ed)i(V)l
+(ersion.)178 2420 y(N.)30 b(Do)14 b(not)f(retitle)i(an)o(y)f(existing)h
+(section)g(to)f(b)q(e)g(En)o(titled)i(\\Endorsemen)o(ts")d(or)h(to)f
+(con\015ict)i(in)255 2475 y(title)h(with)f(an)o(y)g(In)o(v)m(arian)o(t)
+h(Section.)177 2540 y(O.)30 b(Preserv)o(e)15 b(an)o(y)g(W)l(arran)o(t)o
+(y)e(Disclaimers.)165 2615 y(If)k(the)g(Mo)q(di\014ed)h(V)l(ersion)f
+(includes)i(new)e(fron)o(t-matter)e(sections)i(or)f(app)q(endices)j
+(that)d(qualify)165 2670 y(as)e(Secondary)g(Sections)h(and)f(con)o
+(tain)g(no)g(material)g(copied)h(from)e(the)h(Do)q(cumen)o(t,)g(y)o(ou)
+f(ma)o(y)h(at)p eop
+%%Page: 17 21
+17 20 bop 75 -58 a Fr(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(17)165 149 y(y)o(our)16 b(option)g(designate)h(some)f(or)f
+(all)i(of)f(these)h(sections)f(as)g(in)o(v)m(arian)o(t.)24
+b(T)l(o)15 b(do)i(this,)f(add)g(their)165 204 y(titles)i(to)f(the)h
+(list)h(of)e(In)o(v)m(arian)o(t)h(Sections)h(in)f(the)g(Mo)q(di\014ed)h
+(V)l(ersion's)f(license)i(notice.)28 b(These)165 259
+y(titles)16 b(m)o(ust)f(b)q(e)g(distinct)i(from)d(an)o(y)h(other)g
+(section)h(titles.)165 325 y(Y)l(ou)21 b(ma)o(y)g(add)g(a)g(section)h
+(En)o(titled)g(\\Endorsemen)o(ts",)f(pro)o(vided)h(it)g(con)o(tains)f
+(nothing)h(but)165 380 y(endorsemen)o(ts)15 b(of)f(y)o(our)h(Mo)q
+(di\014ed)h(V)l(ersion)f(b)o(y)g(v)m(arious)g(parties|for)f(example,)i
+(statemen)o(ts)d(of)165 434 y(p)q(eer)h(review)g(or)g(that)e(the)i
+(text)f(has)h(b)q(een)g(appro)o(v)o(ed)g(b)o(y)f(an)h(organization)f
+(as)h(the)f(authoritativ)o(e)165 489 y(de\014nition)k(of)e(a)g
+(standard.)165 555 y(Y)l(ou)f(ma)o(y)g(add)g(a)g(passage)g(of)f(up)i
+(to)e(\014v)o(e)i(w)o(ords)e(as)h(a)g(F)l(ron)o(t-Co)o(v)o(er)e(T)l
+(ext,)i(and)g(a)g(passage)g(of)f(up)165 610 y(to)g(25)g(w)o(ords)g(as)g
+(a)g(Bac)o(k-Co)o(v)o(er)g(T)l(ext,)g(to)g(the)g(end)i(of)e(the)g(list)
+i(of)e(Co)o(v)o(er)f(T)l(exts)i(in)g(the)g(Mo)q(di\014ed)165
+665 y(V)l(ersion.)29 b(Only)19 b(one)f(passage)f(of)h(F)l(ron)o(t-Co)o
+(v)o(er)e(T)l(ext)i(and)g(one)g(of)f(Bac)o(k-Co)o(v)o(er)g(T)l(ext)h
+(ma)o(y)f(b)q(e)165 719 y(added)d(b)o(y)g(\(or)f(through)g(arrangemen)o
+(ts)g(made)h(b)o(y\))f(an)o(y)h(one)g(en)o(tit)o(y)l(.)19
+b(If)14 b(the)g(Do)q(cumen)o(t)g(already)165 774 y(includes)19
+b(a)e(co)o(v)o(er)f(text)h(for)f(the)h(same)g(co)o(v)o(er,)f
+(previously)i(added)g(b)o(y)f(y)o(ou)g(or)f(b)o(y)h(arrangemen)o(t)165
+829 y(made)h(b)o(y)f(the)h(same)f(en)o(tit)o(y)h(y)o(ou)f(are)g(acting)
+h(on)f(b)q(ehalf)i(of,)f(y)o(ou)f(ma)o(y)g(not)g(add)h(another;)g(but)
+165 884 y(y)o(ou)f(ma)o(y)f(replace)i(the)f(old)h(one,)f(on)g(explicit)
+i(p)q(ermission)f(from)f(the)g(previous)h(publisher)h(that)165
+938 y(added)d(the)f(old)h(one.)165 1004 y(The)d(author\(s\))e(and)i
+(publisher\(s\))h(of)f(the)g(Do)q(cumen)o(t)f(do)h(not)f(b)o(y)h(this)g
+(License)i(giv)o(e)e(p)q(ermission)165 1059 y(to)i(use)g(their)h(names)
+f(for)f(publicit)o(y)k(for)c(or)h(to)f(assert)h(or)f(imply)j
+(endorsemen)o(t)e(of)g(an)o(y)g(Mo)q(di\014ed)165 1114
+y(V)l(ersion.)100 1180 y(5.)29 b(COMBINING)16 b(DOCUMENTS)165
+1245 y(Y)l(ou)k(ma)o(y)e(com)o(bine)i(the)g(Do)q(cumen)o(t)f(with)h
+(other)f(do)q(cumen)o(ts)g(released)i(under)f(this)g(License,)165
+1300 y(under)g(the)f(terms)g(de\014ned)h(in)g(section)g(4)e(ab)q(o)o(v)
+o(e)h(for)g(mo)q(di\014ed)h(v)o(ersions,)g(pro)o(vided)g(that)e(y)o(ou)
+165 1355 y(include)d(in)e(the)g(com)o(bination)h(all)f(of)f(the)h(In)o
+(v)m(arian)o(t)g(Sections)h(of)e(all)h(of)g(the)f(original)i(do)q
+(cumen)o(ts,)165 1410 y(unmo)q(di\014ed,)h(and)f(list)g(them)f(all)i
+(as)e(In)o(v)m(arian)o(t)g(Sections)i(of)e(y)o(our)f(com)o(bined)j(w)o
+(ork)d(in)i(its)g(license)165 1465 y(notice,)h(and)h(that)e(y)o(ou)h
+(preserv)o(e)g(all)i(their)e(W)l(arran)o(t)o(y)f(Disclaimers.)165
+1530 y(The)h(com)o(bined)i(w)o(ork)d(need)i(only)f(con)o(tain)h(one)f
+(cop)o(y)g(of)g(this)g(License,)i(and)e(m)o(ultiple)i(iden)o(tical)165
+1585 y(In)o(v)m(arian)o(t)g(Sections)g(ma)o(y)e(b)q(e)i(replaced)h
+(with)e(a)g(single)i(cop)o(y)l(.)23 b(If)16 b(there)h(are)f(m)o
+(ultiple)i(In)o(v)m(arian)o(t)165 1640 y(Sections)c(with)g(the)f(same)g
+(name)h(but)f(di\013eren)o(t)h(con)o(ten)o(ts,)f(mak)o(e)g(the)g(title)
+h(of)f(eac)o(h)h(suc)o(h)f(section)165 1695 y(unique)19
+b(b)o(y)d(adding)i(at)f(the)g(end)g(of)g(it,)g(in)h(paren)o(theses,)f
+(the)g(name)g(of)g(the)g(original)h(author)e(or)165 1749
+y(publisher)f(of)d(that)g(section)h(if)g(kno)o(wn,)f(or)g(else)h(a)g
+(unique)h(n)o(um)o(b)q(er.)19 b(Mak)o(e)12 b(the)g(same)h(adjustmen)o
+(t)165 1804 y(to)f(the)g(section)h(titles)g(in)g(the)f(list)h(of)f(In)o
+(v)m(arian)o(t)g(Sections)h(in)g(the)g(license)h(notice)f(of)f(the)g
+(com)o(bined)165 1859 y(w)o(ork.)165 1925 y(In)21 b(the)g(com)o
+(bination,)h(y)o(ou)f(m)o(ust)f(com)o(bine)h(an)o(y)f(sections)i(En)o
+(titled)f(\\History")f(in)h(the)g(v)m(ari-)165 1980 y(ous)16
+b(original)h(do)q(cumen)o(ts,)f(forming)g(one)h(section)f(En)o(titled)h
+(\\History";)f(lik)o(ewise)h(com)o(bine)g(an)o(y)165
+2034 y(sections)f(En)o(titled)h(\\Ac)o(kno)o(wledgemen)o(ts",)f(and)g
+(an)o(y)f(sections)i(En)o(titled)f(\\Dedications".)23
+b(Y)l(ou)165 2089 y(m)o(ust)15 b(delete)h(all)g(sections)g(En)o(titled)
+g(\\Endorsemen)o(ts.")100 2155 y(6.)29 b(COLLECTIONS)17
+b(OF)e(DOCUMENTS)165 2221 y(Y)l(ou)h(ma)o(y)f(mak)o(e)h(a)f(collection)
+j(consisting)f(of)e(the)h(Do)q(cumen)o(t)g(and)g(other)g(do)q(cumen)o
+(ts)g(released)165 2275 y(under)22 b(this)g(License,)i(and)d(replace)h
+(the)f(individual)k(copies)d(of)f(this)g(License)i(in)f(the)f(v)m
+(arious)165 2330 y(do)q(cumen)o(ts)h(with)f(a)g(single)i(cop)o(y)e
+(that)f(is)i(included)i(in)e(the)f(collection,)k(pro)o(vided)d(that)e
+(y)o(ou)165 2385 y(follo)o(w)f(the)f(rules)i(of)e(this)h(License)h(for)
+e(v)o(erbatim)g(cop)o(ying)h(of)f(eac)o(h)h(of)f(the)h(do)q(cumen)o(ts)
+g(in)g(all)165 2440 y(other)c(resp)q(ects.)165 2506 y(Y)l(ou)h(ma)o(y)f
+(extract)g(a)g(single)i(do)q(cumen)o(t)f(from)f(suc)o(h)h(a)g
+(collection,)h(and)f(distribute)h(it)f(individu-)165
+2560 y(ally)i(under)h(this)f(License,)h(pro)o(vided)f(y)o(ou)f(insert)h
+(a)g(cop)o(y)f(of)g(this)h(License)h(in)o(to)f(the)f(extracted)165
+2615 y(do)q(cumen)o(t,)g(and)f(follo)o(w)g(this)h(License)h(in)f(all)h
+(other)d(resp)q(ects)i(regarding)g(v)o(erbatim)f(cop)o(ying)g(of)165
+2670 y(that)e(do)q(cumen)o(t.)p eop
+%%Page: 18 22
+18 21 bop 75 -58 a Fr(18)1324 b(GNU)15 b(History)g(Library)100
+149 y(7.)29 b(A)o(GGREGA)l(TION)14 b(WITH)i(INDEPENDENT)e(W)o(ORKS)165
+214 y(A)g(compilation)h(of)f(the)g(Do)q(cumen)o(t)g(or)f(its)i(deriv)m
+(ativ)o(es)g(with)f(other)g(separate)f(and)i(indep)q(enden)o(t)165
+269 y(do)q(cumen)o(ts)i(or)f(w)o(orks,)g(in)h(or)f(on)h(a)f(v)o(olume)h
+(of)f(a)h(storage)e(or)h(distribution)j(medium,)e(is)g(called)165
+324 y(an)e(\\aggregate")e(if)i(the)h(cop)o(yrigh)o(t)e(resulting)i
+(from)f(the)g(compilation)h(is)g(not)e(used)i(to)e(limit)j(the)165
+379 y(legal)d(righ)o(ts)f(of)g(the)g(compilation's)i(users)e(b)q(ey)o
+(ond)h(what)f(the)g(individual)j(w)o(orks)d(p)q(ermit.)20
+b(When)165 433 y(the)14 b(Do)q(cumen)o(t)g(is)g(included)i(an)e
+(aggregate,)e(this)j(License)g(do)q(es)f(not)g(apply)g(to)g(the)g
+(other)f(w)o(orks)165 488 y(in)j(the)f(aggregate)f(whic)o(h)i(are)f
+(not)g(themselv)o(es)h(deriv)m(ativ)o(e)g(w)o(orks)e(of)h(the)g(Do)q
+(cumen)o(t.)165 553 y(If)d(the)f(Co)o(v)o(er)f(T)l(ext)i(requiremen)o
+(t)g(of)f(section)h(3)f(is)h(applicable)h(to)e(these)h(copies)g(of)f
+(the)g(Do)q(cumen)o(t,)165 608 y(then)h(if)f(the)h(Do)q(cumen)o(t)f(is)
+g(less)h(than)f(one)h(half)f(of)g(the)g(en)o(tire)h(aggregate,)e(the)h
+(Do)q(cumen)o(t's)g(Co)o(v)o(er)165 663 y(T)l(exts)i(ma)o(y)g(b)q(e)h
+(placed)g(on)f(co)o(v)o(ers)g(that)f(brac)o(k)o(et)h(the)g(Do)q(cumen)o
+(t)g(within)i(the)e(aggregate,)f(or)h(the)165 717 y(electronic)19
+b(equiv)m(alen)o(t)g(of)e(co)o(v)o(ers)g(if)h(the)g(Do)q(cumen)o(t)f
+(is)h(in)g(electronic)h(form.)27 b(Otherwise)18 b(they)165
+772 y(m)o(ust)d(app)q(ear)g(on)g(prin)o(ted)h(co)o(v)o(ers)f(that)f
+(brac)o(k)o(et)h(the)g(whole)h(aggregate.)100 837 y(8.)29
+b(TRANSLA)l(TION)165 902 y(T)l(ranslation)20 b(is)h(considered)g(a)f
+(kind)h(of)e(mo)q(di\014cation,)j(so)e(y)o(ou)g(ma)o(y)f(distribute)i
+(translations)165 956 y(of)h(the)g(Do)q(cumen)o(t)g(under)h(the)f
+(terms)g(of)g(section)g(4.)41 b(Replacing)23 b(In)o(v)m(arian)o(t)g
+(Sections)g(with)165 1011 y(translations)g(requires)g(sp)q(ecial)i(p)q
+(ermission)f(from)e(their)h(cop)o(yrigh)o(t)f(holders,)j(but)e(y)o(ou)g
+(ma)o(y)165 1066 y(include)15 b(translations)d(of)g(some)g(or)f(all)i
+(In)o(v)m(arian)o(t)g(Sections)g(in)g(addition)h(to)d(the)h(original)i
+(v)o(ersions)165 1121 y(of)h(these)h(In)o(v)m(arian)o(t)g(Sections.)23
+b(Y)l(ou)15 b(ma)o(y)g(include)k(a)c(translation)h(of)f(this)h
+(License,)h(and)f(all)h(the)165 1176 y(license)23 b(notices)e(in)g(the)
+g(Do)q(cumen)o(t,)g(and)g(an)o(y)f(W)l(arran)o(t)o(y)f(Disclaimers,)k
+(pro)o(vided)e(that)f(y)o(ou)165 1230 y(also)g(include)i(the)e
+(original)i(English)f(v)o(ersion)f(of)g(this)g(License)i(and)e(the)g
+(original)h(v)o(ersions)f(of)165 1285 y(those)d(notices)g(and)h
+(disclaimers.)27 b(In)18 b(case)f(of)f(a)h(disagreemen)o(t)g(b)q(et)o
+(w)o(een)h(the)f(translation)g(and)165 1340 y(the)h(original)g(v)o
+(ersion)g(of)f(this)h(License)i(or)d(a)g(notice)h(or)f(disclaimer,)j
+(the)e(original)g(v)o(ersion)g(will)165 1395 y(prev)m(ail.)165
+1460 y(If)d(a)f(section)g(in)i(the)e(Do)q(cumen)o(t)g(is)h(En)o(titled)
+g(\\Ac)o(kno)o(wledgemen)o(ts",)f(\\Dedications",)h(or)e(\\His-)165
+1514 y(tory",)f(the)h(requiremen)o(t)h(\(section)f(4\))g(to)f(Preserv)o
+(e)h(its)h(Title)g(\(section)f(1\))g(will)i(t)o(ypically)f(require)165
+1569 y(c)o(hanging)i(the)f(actual)g(title.)100 1634 y(9.)29
+b(TERMINA)l(TION)165 1699 y(Y)l(ou)15 b(ma)o(y)f(not)h(cop)o(y)l(,)f
+(mo)q(dify)l(,)i(sublicense,)h(or)d(distribute)i(the)f(Do)q(cumen)o(t)g
+(except)h(as)e(expressly)165 1753 y(pro)o(vided)22 b(for)e(under)i
+(this)f(License.)39 b(An)o(y)21 b(other)f(attempt)g(to)g(cop)o(y)l(,)i
+(mo)q(dify)l(,)h(sublicense)g(or)165 1808 y(distribute)d(the)e(Do)q
+(cumen)o(t)g(is)h(v)o(oid,)g(and)f(will)i(automatically)f(terminate)f
+(y)o(our)g(righ)o(ts)g(under)165 1863 y(this)c(License.)22
+b(Ho)o(w)o(ev)o(er,)12 b(parties)i(who)g(ha)o(v)o(e)g(receiv)o(ed)h
+(copies,)f(or)g(righ)o(ts,)f(from)g(y)o(ou)h(under)h(this)165
+1918 y(License)20 b(will)g(not)e(ha)o(v)o(e)g(their)h(licenses)h
+(terminated)f(so)f(long)g(as)g(suc)o(h)h(parties)g(remain)f(in)i(full)
+165 1973 y(compliance.)77 2037 y(10.)29 b(FUTURE)14 b(REVISIONS)j(OF)e
+(THIS)h(LICENSE)165 2102 y(The)21 b(F)l(ree)g(Soft)o(w)o(are)e(F)l
+(oundation)i(ma)o(y)f(publish)j(new,)f(revised)g(v)o(ersions)f(of)f
+(the)h(GNU)g(F)l(ree)165 2157 y(Do)q(cumen)o(tation)16
+b(License)i(from)d(time)h(to)g(time.)22 b(Suc)o(h)17
+b(new)f(v)o(ersions)h(will)g(b)q(e)g(similar)g(in)g(spirit)165
+2212 y(to)g(the)g(presen)o(t)g(v)o(ersion,)h(but)f(ma)o(y)f(di\013er)i
+(in)g(detail)g(to)f(address)g(new)g(problems)h(or)f(concerns.)165
+2266 y(See)f Fq(http://www.gnu.org/copyle)o(ft/)p Fr(.)165
+2331 y(Eac)o(h)f(v)o(ersion)f(of)h(the)g(License)h(is)f(giv)o(en)g(a)g
+(distinguishing)i(v)o(ersion)e(n)o(um)o(b)q(er.)20 b(If)15
+b(the)g(Do)q(cumen)o(t)165 2386 y(sp)q(eci\014es)24 b(that)e(a)h
+(particular)g(n)o(um)o(b)q(ered)h(v)o(ersion)e(of)h(this)g(License)h
+(\\or)e(an)o(y)g(later)h(v)o(ersion")165 2441 y(applies)18
+b(to)d(it,)i(y)o(ou)f(ha)o(v)o(e)g(the)g(option)g(of)g(follo)o(wing)h
+(the)f(terms)g(and)g(conditions)i(either)f(of)f(that)165
+2496 y(sp)q(eci\014ed)21 b(v)o(ersion)e(or)g(of)f(an)o(y)h(later)g(v)o
+(ersion)g(that)f(has)h(b)q(een)h(published)i(\(not)c(as)g(a)h(draft\))f
+(b)o(y)165 2550 y(the)e(F)l(ree)h(Soft)o(w)o(are)e(F)l(oundation.)23
+b(If)17 b(the)g(Do)q(cumen)o(t)f(do)q(es)g(not)g(sp)q(ecify)i(a)e(v)o
+(ersion)h(n)o(um)o(b)q(er)f(of)165 2605 y(this)i(License,)h(y)o(ou)e
+(ma)o(y)f(c)o(ho)q(ose)i(an)o(y)e(v)o(ersion)i(ev)o(er)f(published)j
+(\(not)c(as)h(a)g(draft\))f(b)o(y)i(the)f(F)l(ree)165
+2660 y(Soft)o(w)o(are)d(F)l(oundation.)p eop
+%%Page: 19 23
+19 22 bop 75 -58 a Fr(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(19)75 149 y Fi(A.1.1)30 b(ADDENDUM:)22 b(Ho)n(w)f(to)f(use)
+h(this)f(License)h(for)f(y)n(our)h(do)r(cumen)n(ts)137
+271 y Fr(T)l(o)14 b(use)g(this)g(License)h(in)g(a)e(do)q(cumen)o(t)h(y)
+o(ou)f(ha)o(v)o(e)h(written,)f(include)j(a)d(cop)o(y)h(of)f(the)h
+(License)h(in)g(the)75 326 y(do)q(cumen)o(t)h(and)f(put)g(the)h(follo)o
+(wing)g(cop)o(yrigh)o(t)e(and)i(license)h(notices)f(just)f(after)f(the)
+h(title)h(page:)234 382 y Fd(Copyright)g(\(C\))38 b Fc(year)k(your)19
+b(name)p Fd(.)234 426 y(Permission)d(is)j(granted)e(to)i(copy,)e
+(distribute)f(and/or)h(modify)h(this)g(document)234 469
+y(under)g(the)g(terms)g(of)h(the)f(GNU)h(Free)f(Documenta)o(tio)o(n)e
+(License,)h(Version)g(1.2)234 513 y(or)i(any)g(later)e(version)g
+(published)f(by)j(the)g(Free)f(Software)e(Foundation)o(;)234
+557 y(with)i(no)h(Invariant)d(Sections,)g(no)j(Front-Cove)o(r)e(Texts,)
+g(and)h(no)h(Back-Cover)d(Texts.)234 600 y(A)j(copy)g(of)f(the)h
+(license)e(is)i(included)d(in)j(the)f(section)f(entitled)g(``GNU)234
+644 y(Free)h(Documentat)o(ion)e(License'')o(.)137 705
+y Fr(If)k(y)o(ou)g(ha)o(v)o(e)g(In)o(v)m(arian)o(t)g(Sections,)h(F)l
+(ron)o(t-Co)o(v)o(er)e(T)l(exts)g(and)h(Bac)o(k-Co)o(v)o(er)f(T)l
+(exts,)i(replace)g(the)75 760 y(\\with...T)l(exts.")d(line)f(with)f
+(this:)273 816 y Fd(with)j(the)f(Invariant)e(Sections)h(being)g
+Fc(list)h(their)g(titles)p Fd(,)f(with)273 860 y(the)i(Front-Cov)o(er)d
+(Texts)i(being)g Fc(list)p Fd(,)f(and)i(with)f(the)g(Back-Cover)e
+(Texts)273 903 y(being)i Fc(list)p Fd(.)137 964 y Fr(If)g(y)o(ou)f(ha)o
+(v)o(e)h(In)o(v)m(arian)o(t)g(Sections)g(without)g(Co)o(v)o(er)e(T)l
+(exts,)i(or)f(some)g(other)g(com)o(bination)i(of)e(the)75
+1019 y(three,)e(merge)g(those)g(t)o(w)o(o)f(alternativ)o(es)h(to)g
+(suit)g(the)g(situation.)137 1086 y(If)d(y)o(our)g(do)q(cumen)o(t)g
+(con)o(tains)g(non)o(trivial)h(examples)g(of)e(program)g(co)q(de,)i(w)o
+(e)f(recommend)g(releasing)75 1141 y(these)22 b(examples)g(in)g
+(parallel)i(under)e(y)o(our)f(c)o(hoice)h(of)f(free)h(soft)o(w)o(are)e
+(license,)k(suc)o(h)e(as)g(the)f(GNU)75 1196 y(General)16
+b(Public)h(License,)f(to)f(p)q(ermit)h(their)f(use)h(in)g(free)f(soft)o
+(w)o(are.)p eop
+%%Page: 20 24
+20 23 bop 75 -58 a Fr(20)1324 b(GNU)15 b(History)g(Library)p
+eop
+%%Page: 21 25
+21 24 bop 75 -58 a Fr(App)q(endix)17 b(B:)e(Concept)h(Index)1197
+b(21)75 149 y Fn(App)r(endix)25 b(B)f(Concept)j(Index)75
+319 y Fp(A)75 398 y Fb(anc)o(hored)14 b(searc)o(h)s Fa(.)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 Fb(8)75 569 y Fp(E)75 648 y Fb(ev)o(en)o(t)d(designators)g
+Fa(.)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
+Fb(1)1012 319 y Fp(F)1012 377 y Fb(FDL,)13 b(GNU)g(F)m(ree)g(Do)q
+(cumen)o(tation)i(License)6 b Fa(.)h(.)f(.)g(.)h(.)f(.)g(.)19
+b Fb(13)1012 502 y Fp(H)1012 561 y Fb(history)c(ev)o(en)o(ts)d
+Fa(.)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 Fb(1)1012 604 y(history)15 b(expansion)8 b Fa(.)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 Fb(1)1012 648 y(History)14 b(Searc)o(hing)6
+b Fa(.)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
+Fb(8)p eop
+%%Page: 22 26
+22 25 bop 75 -58 a Fr(22)1324 b(GNU)15 b(History)g(Library)p
+eop
+%%Page: 23 27
+23 26 bop 75 -58 a Fr(App)q(endix)17 b(C:)e(F)l(unction)h(and)f(V)l
+(ariable)i(Index)918 b(23)75 149 y Fn(App)r(endix)25
+b(C)e(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26 b(Index)75
+319 y Fp(A)75 377 y Fd(add_histor)o(y)8 b Fa(.)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 Fb(6)75 421 y
+Fd(add_histor)o(y_)o(tim)o(e)7 b Fa(.)s(.)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(.)20 b Fb(6)75 465 y Fd(append_his)o(to)o(ry)8 b Fa(.)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 Fb(9)75 591 y Fp(C)75
+649 y Fd(clear_hist)o(or)o(y)6 b Fa(.)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 Fb(7)75 693 y Fd(current_hi)o(st)o(ory)7
+b Fa(.)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
+Fb(7)75 819 y Fp(F)75 878 y Fd(free_histo)o(ry)o(_en)o(tr)o(y)6
+b Fa(.)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 Fb(6)75 1004
+y Fp(G)75 1062 y Fd(get_histor)o(y_)o(eve)o(nt)5 b Fa(.)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 Fb(9)75 1189 y Fp(H)75 1247
+y Fd(history_ar)o(g_)o(ext)o(ra)o(ct)t Fa(.)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 Fb(10)75 1291 y Fd(history_ba)o(se)6 b Fa(.)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 Fb(10)75 1334 y Fd(history_co)o(mm)o(ent)o
+(_c)o(har)s Fa(.)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 Fb(10)75 1378
+y Fd(history_ex)o(pa)o(nd)8 b Fa(.)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 Fb(9)75 1422 y Fd(history_ex)o(pa)o(nsi)o(on)o(_ch)o
+(ar)8 b Fa(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)24 b Fb(10)75 1465 y Fd(history_ge)o(t)8
+b Fa(.)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 Fb(7)75 1509 y Fd(history_ge)o(t_)o(his)o(to)o(ry_)o(sta)o(te)6
+b Fa(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)22 b Fb(6)75 1553 y Fd(history_ge)o(t_)o(tim)o(e)7
+b Fa(.)s(.)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(.)20 b Fb(7)75
+1597 y Fd(history_in)o(hi)o(bit)o(_e)o(xpa)o(nsi)o(on)o(_fu)o(nc)o(tio)
+o(n)9 b Fa(.)d(.)g(.)g(.)g(.)g(.)h(.)24 b Fb(11)75 1640
+y Fd(history_is)o(_s)o(tif)o(le)o(d)6 b Fa(.)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 Fb(7)75 1684 y Fd(history_le)o(ng)o(th)8 b Fa(.)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 Fb(10)75 1728 y Fd(history_li)o(st)6
+b Fa(.)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 Fb(7)75 1771 y Fd(history_ma)o(x_)o(ent)o(ri)o(es)t
+Fa(.)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 Fb(10)75 1815 y Fd(history_no)o(_e)o
+(xpa)o(nd)o(_ch)o(ars)7 b Fa(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(11)75 1859 y
+Fd(history_qu)o(ot)o(es_)o(in)o(hib)o(it_)o(ex)o(pan)o(si)o(on)t
+Fa(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 b Fb(11)75
+1902 y Fd(history_se)o(ar)o(ch)8 b Fa(.)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 Fb(8)75 1946 y Fd(history_se)o(ar)o(ch_)o(de)o
+(lim)o(ite)o(r_)o(cha)o(rs)5 b Fa(.)s(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)18 b Fb(10)75 1990 y Fd(history_se)o(ar)o(ch_)o(po)o(s)6
+b Fa(.)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 Fb(8)1012 319
+y Fd(history_sea)o(rc)o(h_p)o(re)o(fix)s Fa(.)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 Fb(8)1012 363 y Fd(history_set)o(_h)o(ist)o(or)o(y_s)o(ta)o(te)6
+b Fa(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)23 b Fb(6)1012 406 y Fd(history_set)o(_p)o(os)7 b
+Fa(.)t(.)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(.)21 b Fb(8)1012
+450 y Fd(history_sub)o(st)o(_ch)o(ar)t Fa(.)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 Fb(10)1012 494 y Fd(history_tok)o(en)o(ize)6 b Fa(.)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 Fb(10)1012 537 y Fd(history_tot)o(al)o(_by)o
+(te)o(s)5 b Fa(.)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 Fb(7)1012
+581 y Fd(history_tru)o(nc)o(ate)o(_f)o(ile)s Fa(.)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 Fb(9)1012 624 y Fd(history_wor)o(d_)o(del)o(im)o
+(ite)o(rs)7 b Fa(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)24 b Fb(10)1012 668 y Fd(history_wri)o(te)o(_ti)o
+(me)o(sta)o(mp)o(s)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)f(.)23 b Fb(10)1012 794 y Fp(N)1012
+852 y Fd(next_histor)o(y)7 b Fa(.)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 Fb(8)1012 978 y Fp(P)1012 1036 y
+Fd(previous_hi)o(st)o(ory)6 b Fa(.)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 Fb(8)1012 1162 y Fp(R)1012 1220 y Fd(read_histor)o(y)7
+b Fa(.)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 Fb(9)1012 1264 y Fd(read_histor)o(y_)o(ran)o(ge)5 b
+Fa(.)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 Fb(9)1012 1307
+y Fd(remove_hist)o(or)o(y)9 b Fa(.)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 Fb(6)1012 1351 y Fd(replace_his)o(to)o(ry_)o(en)o(try)s
+Fa(.)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 Fb(7)1012 1477 y Fp(S)1012
+1535 y Fd(stifle_hist)o(or)o(y)9 b Fa(.)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 Fb(7)1012 1661 y Fp(U)1012 1719
+y Fd(unstifle_hi)o(st)o(ory)6 b Fa(.)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 Fb(7)1012 1762 y Fd(using_histo)o(ry)6 b Fa(.)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 Fb(6)1012 1888
+y Fp(W)1012 1946 y Fd(where_histo)o(ry)6 b Fa(.)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 Fb(7)1012 1990 y Fd(write_histo)o(ry)6
+b Fa(.)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 Fb(9)p eop
+%%Page: 24 28
+24 27 bop 75 -58 a Fr(24)1324 b(GNU)15 b(History)g(Library)p
+eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/lib/readline/doc/history.toc b/lib/readline/doc/history.toc
new file mode 100644
index 00000000..c87b11d3
--- /dev/null
+++ b/lib/readline/doc/history.toc
@@ -0,0 +1,23 @@
+\chapentry{Using History Interactively}{1}{1}
+\secentry{History Expansion}{1}{1}{1}
+\subsecentry{Event Designators}{1}{1}{1}{1}
+\subsecentry{Word Designators}{1}{1}{2}{1}
+\subsecentry{Modifiers}{1}{1}{3}{2}
+\chapentry{Programming with GNU History}{2}{5}
+\secentry{Introduction to History}{2}{1}{5}
+\secentry{History Storage}{2}{2}{5}
+\secentry{History Functions}{2}{3}{6}
+\subsecentry{Initializing History and State Management}{2}{3}{1}{6}
+\subsecentry{History List Management}{2}{3}{2}{6}
+\subsecentry{Information About the History List}{2}{3}{3}{7}
+\subsecentry{Moving Around the History List}{2}{3}{4}{7}
+\subsecentry{Searching the History List}{2}{3}{5}{8}
+\subsecentry{Managing the History File}{2}{3}{6}{8}
+\subsecentry{History Expansion}{2}{3}{7}{9}
+\secentry{History Variables}{2}{4}{10}
+\secentry{History Programming Example}{2}{5}{11}
+\appendixentry{Copying This Manual}{A}{13}
+\secentry{GNU Free Documentation License}{A}{1}{13}
+\subsecentry{ADDENDUM: How to use this License for your documents}{A}{1}{1}{19}
+\appendixentry{Concept Index}{B}{21}
+\appendixentry{Function and Variable Index}{C}{23}
diff --git a/lib/readline/doc/history.tp b/lib/readline/doc/history.tp
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/history.tp
diff --git a/lib/readline/doc/history.vr b/lib/readline/doc/history.vr
new file mode 100644
index 00000000..bafc1d57
--- /dev/null
+++ b/lib/readline/doc/history.vr
@@ -0,0 +1,45 @@
+\entry{using_history}{6}{\code {using_history}}
+\entry{history_get_history_state}{6}{\code {history_get_history_state}}
+\entry{history_set_history_state}{6}{\code {history_set_history_state}}
+\entry{add_history}{6}{\code {add_history}}
+\entry{add_history_time}{6}{\code {add_history_time}}
+\entry{remove_history}{6}{\code {remove_history}}
+\entry{free_history_entry}{6}{\code {free_history_entry}}
+\entry{replace_history_entry}{7}{\code {replace_history_entry}}
+\entry{clear_history}{7}{\code {clear_history}}
+\entry{stifle_history}{7}{\code {stifle_history}}
+\entry{unstifle_history}{7}{\code {unstifle_history}}
+\entry{history_is_stifled}{7}{\code {history_is_stifled}}
+\entry{history_list}{7}{\code {history_list}}
+\entry{where_history}{7}{\code {where_history}}
+\entry{current_history}{7}{\code {current_history}}
+\entry{history_get}{7}{\code {history_get}}
+\entry{history_get_time}{7}{\code {history_get_time}}
+\entry{history_total_bytes}{7}{\code {history_total_bytes}}
+\entry{history_set_pos}{8}{\code {history_set_pos}}
+\entry{previous_history}{8}{\code {previous_history}}
+\entry{next_history}{8}{\code {next_history}}
+\entry{history_search}{8}{\code {history_search}}
+\entry{history_search_prefix}{8}{\code {history_search_prefix}}
+\entry{history_search_pos}{8}{\code {history_search_pos}}
+\entry{read_history}{9}{\code {read_history}}
+\entry{read_history_range}{9}{\code {read_history_range}}
+\entry{write_history}{9}{\code {write_history}}
+\entry{append_history}{9}{\code {append_history}}
+\entry{history_truncate_file}{9}{\code {history_truncate_file}}
+\entry{history_expand}{9}{\code {history_expand}}
+\entry{get_history_event}{9}{\code {get_history_event}}
+\entry{history_tokenize}{10}{\code {history_tokenize}}
+\entry{history_arg_extract}{10}{\code {history_arg_extract}}
+\entry{history_base}{10}{\code {history_base}}
+\entry{history_length}{10}{\code {history_length}}
+\entry{history_max_entries}{10}{\code {history_max_entries}}
+\entry{history_write_timestamps}{10}{\code {history_write_timestamps}}
+\entry{history_expansion_char}{10}{\code {history_expansion_char}}
+\entry{history_subst_char}{10}{\code {history_subst_char}}
+\entry{history_comment_char}{10}{\code {history_comment_char}}
+\entry{history_word_delimiters}{10}{\code {history_word_delimiters}}
+\entry{history_search_delimiter_chars}{10}{\code {history_search_delimiter_chars}}
+\entry{history_no_expand_chars}{11}{\code {history_no_expand_chars}}
+\entry{history_quotes_inhibit_expansion}{11}{\code {history_quotes_inhibit_expansion}}
+\entry{history_inhibit_expansion_function}{11}{\code {history_inhibit_expansion_function}}
diff --git a/lib/readline/doc/history.vrs b/lib/readline/doc/history.vrs
new file mode 100644
index 00000000..9fa28d0a
--- /dev/null
+++ b/lib/readline/doc/history.vrs
@@ -0,0 +1,56 @@
+\initial {A}
+\entry {\code {add_history}}{6}
+\entry {\code {add_history_time}}{6}
+\entry {\code {append_history}}{9}
+\initial {C}
+\entry {\code {clear_history}}{7}
+\entry {\code {current_history}}{7}
+\initial {F}
+\entry {\code {free_history_entry}}{6}
+\initial {G}
+\entry {\code {get_history_event}}{9}
+\initial {H}
+\entry {\code {history_arg_extract}}{10}
+\entry {\code {history_base}}{10}
+\entry {\code {history_comment_char}}{10}
+\entry {\code {history_expand}}{9}
+\entry {\code {history_expansion_char}}{10}
+\entry {\code {history_get}}{7}
+\entry {\code {history_get_history_state}}{6}
+\entry {\code {history_get_time}}{7}
+\entry {\code {history_inhibit_expansion_function}}{11}
+\entry {\code {history_is_stifled}}{7}
+\entry {\code {history_length}}{10}
+\entry {\code {history_list}}{7}
+\entry {\code {history_max_entries}}{10}
+\entry {\code {history_no_expand_chars}}{11}
+\entry {\code {history_quotes_inhibit_expansion}}{11}
+\entry {\code {history_search}}{8}
+\entry {\code {history_search_delimiter_chars}}{10}
+\entry {\code {history_search_pos}}{8}
+\entry {\code {history_search_prefix}}{8}
+\entry {\code {history_set_history_state}}{6}
+\entry {\code {history_set_pos}}{8}
+\entry {\code {history_subst_char}}{10}
+\entry {\code {history_tokenize}}{10}
+\entry {\code {history_total_bytes}}{7}
+\entry {\code {history_truncate_file}}{9}
+\entry {\code {history_word_delimiters}}{10}
+\entry {\code {history_write_timestamps}}{10}
+\initial {N}
+\entry {\code {next_history}}{8}
+\initial {P}
+\entry {\code {previous_history}}{8}
+\initial {R}
+\entry {\code {read_history}}{9}
+\entry {\code {read_history_range}}{9}
+\entry {\code {remove_history}}{6}
+\entry {\code {replace_history_entry}}{7}
+\initial {S}
+\entry {\code {stifle_history}}{7}
+\initial {U}
+\entry {\code {unstifle_history}}{7}
+\entry {\code {using_history}}{6}
+\initial {W}
+\entry {\code {where_history}}{7}
+\entry {\code {write_history}}{9}
diff --git a/lib/readline/doc/readline.3 b/lib/readline/doc/readline.3
new file mode 100644
index 00000000..6f0847a6
--- /dev/null
+++ b/lib/readline/doc/readline.3
@@ -0,0 +1,1282 @@
+.\"
+.\" MAN PAGE COMMENTS to
+.\"
+.\" Chet Ramey
+.\" Information Network Services
+.\" Case Western Reserve University
+.\" chet@ins.CWRU.Edu
+.\"
+.\" Last Change: Mon Jun 9 17:37:22 EDT 2003
+.\"
+.TH READLINE 3 "2003 December 9" "GNU Readline 5.0"
+.\"
+.\" File Name macro. This used to be `.PN', for Path Name,
+.\" but Sun doesn't seem to like that very much.
+.\"
+.de FN
+\fI\|\\$1\|\fP
+..
+.SH NAME
+readline \- get a line from a user with editing
+.SH SYNOPSIS
+.LP
+.nf
+.ft B
+#include <stdio.h>
+#include <readline/readline.h>
+#include <readline/history.h>
+.ft
+.fi
+.LP
+.nf
+\fIchar *\fP
+.br
+\fBreadline\fP (\fIconst char *prompt\fP);
+.fi
+.SH COPYRIGHT
+.if n Readline is Copyright (C) 1989\-2002 by the Free Software Foundation, Inc.
+.if t Readline is Copyright \(co 1989\-2002 by the Free Software Foundation, Inc.
+.SH DESCRIPTION
+.LP
+.B readline
+will read a line from the terminal
+and return it, using
+.B prompt
+as a prompt. If
+.B prompt
+is \fBNULL\fP or the empty string, no prompt is issued.
+The line returned is allocated with
+.IR malloc (3);
+the caller must free it when finished. The line returned
+has the final newline removed, so only the text of the line
+remains.
+.LP
+.B readline
+offers editing capabilities while the user is entering the
+line.
+By default, the line editing commands
+are similar to those of emacs.
+A vi\-style line editing interface is also available.
+.LP
+This manual page describes only the most basic use of \fBreadline\fP.
+Much more functionality is available; see
+\fIThe GNU Readline Library\fP and \fIThe GNU History Library\fP
+for additional information.
+.SH RETURN VALUE
+.LP
+.B readline
+returns the text of the line read. A blank line
+returns the empty string. If
+.B EOF
+is encountered while reading a line, and the line is empty,
+.B NULL
+is returned. If an
+.B EOF
+is read with a non\-empty line, it is
+treated as a newline.
+.SH NOTATION
+.LP
+An emacs-style notation is used to denote
+keystrokes. Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
+means Control\-N. Similarly,
+.I meta
+keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X. (On keyboards
+without a
+.I meta
+key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key
+then the
+.I x
+key. This makes ESC the \fImeta prefix\fP.
+The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP,
+or press the Escape key
+then hold the Control key while pressing the
+.I x
+key.)
+.PP
+Readline commands may be given numeric
+.IR arguments ,
+which normally act as a repeat count. Sometimes, however, it is the
+sign of the argument that is significant. Passing a negative argument
+to a command that acts in the forward direction (e.g., \fBkill\-line\fP)
+causes that command to act in a backward direction. Commands whose
+behavior with arguments deviates from this are noted.
+.PP
+When a command is described as \fIkilling\fP text, the text
+deleted is saved for possible future retrieval
+(\fIyanking\fP). The killed text is saved in a
+\fIkill ring\fP. Consecutive kills cause the text to be
+accumulated into one unit, which can be yanked all at once.
+Commands which do not kill text separate the chunks of text
+on the kill ring.
+.SH INITIALIZATION FILE
+.LP
+Readline is customized by putting commands in an initialization
+file (the \fIinputrc\fP file).
+The name of this file is taken from the value of the
+.B INPUTRC
+environment variable. If that variable is unset, the default is
+.IR ~/.inputrc .
+When a program which uses the readline library starts up, the
+init file is read, and the key bindings and variables are set.
+There are only a few basic constructs allowed in the
+readline init file. Blank lines are ignored.
+Lines beginning with a \fB#\fP are comments.
+Lines beginning with a \fB$\fP indicate conditional constructs.
+Other lines denote key bindings and variable settings.
+Each program using this library may add its own commands
+and bindings.
+.PP
+For example, placing
+.RS
+.PP
+M\-Control\-u: universal\-argument
+.RE
+or
+.RS
+C\-Meta\-u: universal\-argument
+.RE
+.sp
+into the
+.I inputrc
+would make M\-C\-u execute the readline command
+.IR universal\-argument .
+.PP
+The following symbolic character names are recognized while
+processing key bindings:
+.IR DEL ,
+.IR ESC ,
+.IR ESCAPE ,
+.IR LFD ,
+.IR NEWLINE ,
+.IR RET ,
+.IR RETURN ,
+.IR RUBOUT ,
+.IR SPACE ,
+.IR SPC ,
+and
+.IR TAB .
+.PP
+In addition to command names, readline allows keys to be bound
+to a string that is inserted when the key is pressed (a \fImacro\fP).
+.PP
+.SS Key Bindings
+.PP
+The syntax for controlling key bindings in the
+.I inputrc
+file is simple. All that is required is the name of the
+command or the text of a macro and a key sequence to which
+it should be bound. The name may be specified in one of two ways:
+as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP
+prefixes, or as a key sequence.
+.PP
+When using the form \fBkeyname\fP:\^\fIfunction-name\fP or \fImacro\fP,
+.I keyname
+is the name of a key spelled out in English. For example:
+.sp
+.RS
+Control\-u: universal\-argument
+.br
+Meta\-Rubout: backward\-kill\-word
+.br
+Control\-o: "> output"
+.RE
+.LP
+In the above example,
+.I C\-u
+is bound to the function
+.BR universal\-argument ,
+.I M-DEL
+is bound to the function
+.BR backward\-kill\-word ,
+and
+.I C\-o
+is bound to run the macro
+expressed on the right hand side (that is, to insert the text
+.if t \f(CW> output\fP
+.if n ``> output''
+into the line).
+.PP
+In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP,
+.B keyseq
+differs from
+.B keyname
+above in that strings denoting
+an entire key sequence may be specified by placing the sequence
+within double quotes. Some GNU Emacs style key escapes can be
+used, as in the following example, but the symbolic character names
+are not recognized.
+.sp
+.RS
+"\eC\-u": universal\-argument
+.br
+"\eC\-x\eC\-r": re\-read\-init\-file
+.br
+"\ee[11~": "Function Key 1"
+.RE
+.PP
+In this example,
+.I C-u
+is again bound to the function
+.BR universal\-argument .
+.I "C-x C-r"
+is bound to the function
+.BR re\-read\-init\-file ,
+and
+.I "ESC [ 1 1 ~"
+is bound to insert the text
+.if t \f(CWFunction Key 1\fP.
+.if n ``Function Key 1''.
+.PP
+The full set of GNU Emacs style escape sequences available when specifying
+key sequences is
+.RS
+.PD 0
+.TP
+.B \eC\-
+control prefix
+.TP
+.B \eM\-
+meta prefix
+.TP
+.B \ee
+an escape character
+.TP
+.B \e\e
+backslash
+.TP
+.B \e"
+literal ", a double quote
+.TP
+.B \e'
+literal ', a single quote
+.RE
+.PD
+.PP
+In addition to the GNU Emacs style escape sequences, a second
+set of backslash escapes is available:
+.RS
+.PD 0
+.TP
+.B \ea
+alert (bell)
+.TP
+.B \eb
+backspace
+.TP
+.B \ed
+delete
+.TP
+.B \ef
+form feed
+.TP
+.B \en
+newline
+.TP
+.B \er
+carriage return
+.TP
+.B \et
+horizontal tab
+.TP
+.B \ev
+vertical tab
+.TP
+.B \e\fInnn\fP
+the eight-bit character whose value is the octal value \fInnn\fP
+(one to three digits)
+.TP
+.B \ex\fIHH\fP
+the eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits)
+.RE
+.PD
+.PP
+When entering the text of a macro, single or double quotes should
+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 '.
+.PP
+.B Bash
+allows the current readline key bindings to be displayed or modified
+with the
+.B bind
+builtin command. The editing mode may be switched during interactive
+use by using the
+.B \-o
+option to the
+.B set
+builtin command. Other programs using this library provide
+similar mechanisms. The
+.I inputrc
+file may be edited and re-read if a program does not provide
+any other means to incorporate new bindings.
+.SS Variables
+.PP
+Readline has variables that can be used to further customize its
+behavior. A variable may be set in the
+.I inputrc
+file with a statement of the form
+.RS
+.PP
+\fBset\fP \fIvariable\-name\fP \fIvalue\fP
+.RE
+.PP
+Except where noted, readline variables can take the values
+.B On
+or
+.B Off
+(without regard to case).
+The variables and their default values are:
+.PP
+.PD 0
+.TP
+.B bell\-style (audible)
+Controls what happens when readline wants to ring the terminal bell.
+If set to \fBnone\fP, readline never rings the bell. If set to
+\fBvisible\fP, readline uses a visible bell if one is available.
+If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
+.TP
+.B comment\-begin (``#'')
+The string that is inserted in \fBvi\fP mode when the
+.B insert\-comment
+command is executed.
+This command is bound to
+.B M\-#
+in emacs mode and to
+.B #
+in vi command mode.
+.TP
+.B completion\-ignore\-case (Off)
+If set to \fBOn\fP, readline performs filename matching and completion
+in a case\-insensitive fashion.
+.TP
+.B completion\-query\-items (100)
+This determines when the user is queried about viewing
+the number of possible completions
+generated by the \fBpossible\-completions\fP command.
+It may be set to any integer value greater than or equal to
+zero. If the number of possible completions is greater than
+or equal to the value of this variable, the user is asked whether
+or not he wishes to view them; otherwise they are simply listed
+on the terminal.
+.TP
+.B convert\-meta (On)
+If set to \fBOn\fP, readline will convert characters with the
+eighth bit set to an ASCII key sequence
+by stripping the eighth bit and prefixing it with an
+escape character (in effect, using escape as the \fImeta prefix\fP).
+.TP
+.B disable\-completion (Off)
+If set to \fBOn\fP, readline will inhibit word completion. Completion
+characters will be inserted into the line as if they had been
+mapped to \fBself-insert\fP.
+.TP
+.B editing\-mode (emacs)
+Controls whether readline begins with a set of key bindings similar
+to emacs or vi.
+.B editing\-mode
+can be set to either
+.B emacs
+or
+.BR vi .
+.TP
+.B enable\-keypad (Off)
+When set to \fBOn\fP, readline will try to enable the application
+keypad when it is called. Some systems need this to enable the
+arrow keys.
+.TP
+.B expand\-tilde (Off)
+If set to \fBon\fP, tilde expansion is performed when readline
+attempts word completion.
+.TP
+.B history-preserve-point
+If set to \fBon\fP, the history code attempts to place point at the
+same location on each history line retrived with \fBprevious-history\fP
+or \fBnext-history\fP.
+.TP
+.B horizontal\-scroll\-mode (Off)
+When set to \fBOn\fP, makes readline use a single line for display,
+scrolling the input horizontally on a single screen line when it
+becomes longer than the screen width rather than wrapping to a new line.
+.TP
+.B input\-meta (Off)
+If set to \fBOn\fP, readline will enable eight-bit input (that is,
+it will not clear the eighth bit in the characters it reads),
+regardless of what the terminal claims it can support. The name
+.B meta\-flag
+is a synonym for this variable.
+.TP
+.B isearch\-terminators (``C\-[ C\-J'')
+The string of characters that should terminate an incremental
+search without subsequently executing the character as a command.
+If this variable has not been given a value, the characters
+\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
+.TP
+.B keymap (emacs)
+Set the current readline keymap. The set of legal keymap names is
+\fIemacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,
+vi-command\fP, and
+.IR vi-insert .
+\fIvi\fP is equivalent to \fIvi-command\fP; \fIemacs\fP is
+equivalent to \fIemacs-standard\fP. The default value is
+.IR emacs .
+The value of
+.B editing\-mode
+also affects the default keymap.
+.TP
+.B mark\-directories (On)
+If set to \fBOn\fP, completed directory names have a slash
+appended.
+.TP
+.B mark\-modified\-lines (Off)
+If set to \fBOn\fP, history lines that have been modified are displayed
+with a preceding asterisk (\fB*\fP).
+.TP
+.B mark\-symlinked\-directories (Off)
+If set to \fBOn\fP, completed names which are symbolic links to directories
+have a slash appended (subject to the value of
+\fBmark\-directories\fP).
+.TP
+.B match\-hidden\-files (On)
+This variable, when set to \fBOn\fP, causes readline to match files whose
+names begin with a `.' (hidden files) when performing filename
+completion, unless the leading `.' is
+supplied by the user in the filename to be completed.
+.TP
+.B output\-meta (Off)
+If set to \fBOn\fP, readline will display characters with the
+eighth bit set directly rather than as a meta-prefixed escape
+sequence.
+.TP
+.B page\-completions (On)
+If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager
+to display a screenful of possible completions at a time.
+.TP
+.B print\-completions\-horizontally (Off)
+If set to \fBOn\fP, readline will display completions with matches
+sorted horizontally in alphabetical order, rather than down the screen.
+.TP
+.B show\-all\-if\-ambiguous (Off)
+This alters the default behavior of the completion functions. If
+set to
+.BR on ,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+.TP
+.B show\-all\-if\-unmodified (Off)
+This alters the default behavior of the completion functions in
+a fashion similar to \fBshow\-all\-if\-ambiguous\fP.
+If set to
+.BR on ,
+words which have more than one possible completion without any
+possible partial completion (the possible completions don't share
+a common prefix) cause the matches to be listed immediately instead
+of ringing the bell.
+.TP
+.B visible\-stats (Off)
+If set to \fBOn\fP, a character denoting a file's type as reported
+by \fIstat\fP(2) is appended to the filename when listing possible
+completions.
+.PD
+.SS Conditional Constructs
+.PP
+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.
+.IP \fB$if\fP
+The
+.B $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.
+.RS
+.IP \fBmode\fP
+The \fBmode=\fP form of the \fB$if\fP directive is used to test
+whether readline is in emacs or vi mode.
+This may be used in conjunction
+with the \fBset keymap\fP command, for instance, to set bindings in
+the \fIemacs-standard\fP and \fIemacs-ctlx\fP keymaps only if
+readline is starting out in emacs mode.
+.IP \fBterm\fP
+The \fBterm=\fP 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
+.B =
+is tested against the full name of the terminal and the portion
+of the terminal name before the first \fB\-\fP. This allows
+.I sun
+to match both
+.I sun
+and
+.IR sun\-cmd ,
+for instance.
+.IP \fBapplication\fP
+The \fBapplication\fP construct is used to include
+application-specific settings. Each program using the readline
+library sets the \fIapplication name\fP, and an initialization
+file 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:
+.sp 1
+.RS
+.nf
+\fB$if\fP Bash
+# Quote the current or previous word
+"\eC-xq": "\eeb\e"\eef\e""
+\fB$endif\fP
+.fi
+.RE
+.RE
+.IP \fB$endif\fP
+This command, as seen in the previous example, terminates an
+\fB$if\fP command.
+.IP \fB$else\fP
+Commands in this branch of the \fB$if\fP directive are executed if
+the test fails.
+.IP \fB$include\fP
+This directive takes a single filename as an argument and reads commands
+and bindings from that file. For example, the following directive
+would read \fI/etc/inputrc\fP:
+.sp 1
+.RS
+.nf
+\fB$include\fP \^ \fI/etc/inputrc\fP
+.fi
+.RE
+.SH SEARCHING
+.PP
+Readline provides commands for searching through the command history
+for lines containing a specified string.
+There are two search modes:
+.I incremental
+and
+.IR non-incremental .
+.PP
+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
+\fBC\-r\fP. Typing \fBC\-s\fP searches forward through the history.
+The characters present in the value of the \fBisearch-terminators\fP
+variable are used to terminate an incremental search.
+If that variable has not been assigned a value the \fIEscape\fP and
+\fBC\-J\fP characters will terminate an incremental search.
+\fBC\-G\fP 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.
+.PP
+To find other matching entries in the history list, type \fBC\-s\fP or
+\fBC\-r\fP as appropriate.
+This will search backward or forward in the history for the next
+line 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 newline 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.
+.PP
+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.
+.SH EDITING COMMANDS
+.PP
+The following is a list of the names of the commands and the default
+key sequences to which they are bound.
+Command names without an accompanying key sequence are unbound by default.
+.PP
+In the following descriptions, \fIpoint\fP refers to the current cursor
+position, and \fImark\fP refers to a cursor position saved by the
+\fBset\-mark\fP command.
+The text between the point and mark is referred to as the \fIregion\fP.
+.SS Commands for Moving
+.PP
+.PD 0
+.TP
+.B beginning\-of\-line (C\-a)
+Move to the start of the current line.
+.TP
+.B end\-of\-line (C\-e)
+Move to the end of the line.
+.TP
+.B forward\-char (C\-f)
+Move forward a character.
+.TP
+.B backward\-char (C\-b)
+Move back a character.
+.TP
+.B forward\-word (M\-f)
+Move forward to the end of the next word. Words are composed of
+alphanumeric characters (letters and digits).
+.TP
+.B backward\-word (M\-b)
+Move back to the start of the current or previous word. Words are
+composed of alphanumeric characters (letters and digits).
+.TP
+.B clear\-screen (C\-l)
+Clear the screen leaving the current line at the top of the screen.
+With an argument, refresh the current line without clearing the
+screen.
+.TP
+.B redraw\-current\-line
+Refresh the current line.
+.PD
+.SS Commands for Manipulating the History
+.PP
+.PD 0
+.TP
+.B accept\-line (Newline, 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
+\fBadd_history()\fP.
+If the line is a modified history line, the history line is restored to its original state.
+.TP
+.B previous\-history (C\-p)
+Fetch the previous command from the history list, moving back in
+the list.
+.TP
+.B next\-history (C\-n)
+Fetch the next command from the history list, moving forward in the
+list.
+.TP
+.B beginning\-of\-history (M\-<)
+Move to the first line in the history.
+.TP
+.B end\-of\-history (M\->)
+Move to the end of the input history, i.e., the line currently being
+entered.
+.TP
+.B 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.
+.TP
+.B forward\-search\-history (C\-s)
+Search forward starting at the current line and moving `down' through
+the history as necessary. This is an incremental search.
+.TP
+.B non\-incremental\-reverse\-search\-history (M\-p)
+Search backward through the history starting at the current line
+using a non-incremental search for a string supplied by the user.
+.TP
+.B non\-incremental\-forward\-search\-history (M\-n)
+Search forward through the history using a non-incremental search
+for a string supplied by the user.
+.TP
+.B history\-search\-forward
+Search forward through the history for the string of characters
+between the start of the current line and the current cursor
+position (the \fIpoint\fP).
+This is a non-incremental search.
+.TP
+.B 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.
+.TP
+.B 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
+.IR n ,
+insert the \fIn\fPth word from the previous command (the words
+in the previous command begin with word 0). A negative argument
+inserts the \fIn\fPth word from the end of the previous command.
+.TP
+.B
+yank\-last\-arg (M\-.\^, M\-_\^)
+Insert the last argument to the previous command (the last word of
+the previous history entry). With an argument,
+behave exactly like \fByank\-nth\-arg\fP.
+Successive calls to \fByank\-last\-arg\fP move back through the history
+list, inserting the last argument of each line in turn.
+.PD
+.SS Commands for Changing Text
+.PP
+.PD 0
+.TP
+.B 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 \fBdelete\-char\fP, then return
+.SM
+.BR EOF .
+.TP
+.B backward\-delete\-char (Rubout)
+Delete the character behind the cursor. When given a numeric argument,
+save the deleted text on the kill ring.
+.TP
+.B 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.
+.TP
+.B quoted\-insert (C\-q, C\-v)
+Add the next character that you type to the line verbatim. This is
+how to insert characters like \fBC\-q\fP, for example.
+.TP
+.B tab\-insert (M-TAB)
+Insert a tab character.
+.TP
+.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
+Insert the character typed.
+.TP
+.B transpose\-chars (C\-t)
+Drag the character before point forward over the character at point,
+moving point forward as well.
+If point is at the end of the line, then this transposes
+the two characters before point.
+Negative arguments have no effect.
+.TP
+.B transpose\-words (M\-t)
+Drag the word before point past the word after point,
+moving point over that word as well.
+If point is at the end of the line, this transposes
+the last two words on the line.
+.TP
+.B upcase\-word (M\-u)
+Uppercase the current (or following) word. With a negative argument,
+uppercase the previous word, but do not move point.
+.TP
+.B downcase\-word (M\-l)
+Lowercase the current (or following) word. With a negative argument,
+lowercase the previous word, but do not move point.
+.TP
+.B capitalize\-word (M\-c)
+Capitalize the current (or following) word. With a negative argument,
+capitalize the previous word, but do not move point.
+.TP
+.B overwrite\-mode
+Toggle overwrite mode. With an explicit positive numeric argument,
+switches to overwrite mode. With an explicit non-positive numeric
+argument, switches to insert mode. This command affects only
+\fBemacs\fP mode; \fBvi\fP mode does overwrite differently.
+Each call to \fIreadline()\fP starts in insert mode.
+In overwrite mode, characters bound to \fBself\-insert\fP replace
+the text at point rather than pushing the text to the right.
+Characters bound to \fBbackward\-delete\-char\fP replace the character
+before point with a space. By default, this command is unbound.
+.PD
+.SS Killing and Yanking
+.PP
+.PD 0
+.TP
+.B kill\-line (C\-k)
+Kill the text from point to the end of the line.
+.TP
+.B backward\-kill\-line (C\-x Rubout)
+Kill backward to the beginning of the line.
+.TP
+.B unix\-line\-discard (C\-u)
+Kill backward from point to the beginning of the line.
+The killed text is saved on the kill-ring.
+.\" There is no real difference between this and backward-kill-line
+.TP
+.B kill\-whole\-line
+Kill all characters on the current line, no matter where point is.
+.TP
+.B kill\-word (M\-d)
+Kill from point 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 \fBforward\-word\fP.
+.TP
+.B backward\-kill\-word (M\-Rubout)
+Kill the word behind point.
+Word boundaries are the same as those used by \fBbackward\-word\fP.
+.TP
+.B 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.
+.TP
+.B delete\-horizontal\-space (M\-\e)
+Delete all spaces and tabs around point.
+.TP
+.B kill\-region
+Kill the text between the point and \fImark\fP (saved cursor position).
+This text is referred to as the \fIregion\fP.
+.TP
+.B copy\-region\-as\-kill
+Copy the text in the region to the kill buffer.
+.TP
+.B copy\-backward\-word
+Copy the word before point to the kill buffer.
+The word boundaries are the same as \fBbackward\-word\fP.
+.TP
+.B copy\-forward\-word
+Copy the word following point to the kill buffer.
+The word boundaries are the same as \fBforward\-word\fP.
+.TP
+.B yank (C\-y)
+Yank the top of the kill ring into the buffer at point.
+.TP
+.B yank\-pop (M\-y)
+Rotate the kill ring, and yank the new top. Only works following
+.B yank
+or
+.BR yank\-pop .
+.PD
+.SS Numeric Arguments
+.PP
+.PD 0
+.TP
+.B 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.
+.TP
+.B 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
+.B 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.
+.PD
+.SS Completing
+.PP
+.PD 0
+.TP
+.B complete (TAB)
+Attempt to perform completion on the text before point.
+The actual completion performed is application-specific.
+.BR Bash ,
+for instance, attempts completion treating the text as a variable
+(if the text begins with \fB$\fP), username (if the text begins with
+\fB~\fP), hostname (if the text begins with \fB@\fP), or
+command (including aliases and functions) in turn. If none
+of these produces a match, filename completion is attempted.
+.BR Gdb ,
+on the other hand,
+allows completion of program functions and variables, and
+only attempts filename completion under certain circumstances.
+.TP
+.B possible\-completions (M\-?)
+List the possible completions of the text before point.
+.TP
+.B insert\-completions (M\-*)
+Insert all completions of the text before point
+that would have been generated by
+\fBpossible\-completions\fP.
+.TP
+.B menu\-complete
+Similar to \fBcomplete\fP, but replaces the word to be completed
+with a single match from the list of possible completions.
+Repeated execution of \fBmenu\-complete\fP 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 \fBbell\-style\fP)
+and the original text is restored.
+An argument of \fIn\fP moves \fIn\fP 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 \fBTAB\fP, but is unbound
+by default.
+.TP
+.B delete\-char\-or\-list
+Deletes the character under the cursor if not at the beginning or
+end of the line (like \fBdelete-char\fP).
+If at the end of the line, behaves identically to
+\fBpossible-completions\fP.
+.PD
+.SS Keyboard Macros
+.PP
+.PD 0
+.TP
+.B start\-kbd\-macro (C\-x (\^)
+Begin saving the characters typed into the current keyboard macro.
+.TP
+.B end\-kbd\-macro (C\-x )\^)
+Stop saving the characters typed into the current keyboard macro
+and store the definition.
+.TP
+.B 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.
+.PD
+.SS Miscellaneous
+.PP
+.PD 0
+.TP
+.B re\-read\-init\-file (C\-x C\-r)
+Read in the contents of the \fIinputrc\fP file, and incorporate
+any bindings or variable assignments found there.
+.TP
+.B abort (C\-g)
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+.BR bell\-style ).
+.TP
+.B do\-uppercase\-version (M\-a, M\-b, M\-\fIx\fP, ...)
+If the metafied character \fIx\fP is lowercase, run the command
+that is bound to the corresponding uppercase character.
+.TP
+.B prefix\-meta (ESC)
+Metafy the next character typed.
+.SM
+.B ESC
+.B f
+is equivalent to
+.BR Meta\-f .
+.TP
+.B undo (C\-_, C\-x C\-u)
+Incremental undo, separately remembered for each line.
+.TP
+.B revert\-line (M\-r)
+Undo all changes made to this line. This is like executing the
+.B undo
+command enough times to return the line to its initial state.
+.TP
+.B tilde\-expand (M\-&)
+Perform tilde expansion on the current word.
+.TP
+.B set\-mark (C\-@, M\-<space>)
+Set the mark to the point. If a
+numeric argument is supplied, the mark is set to that position.
+.TP
+.B 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.
+.TP
+.B 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.
+.TP
+.B 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.
+.TP
+.B insert\-comment (M\-#)
+Without a numeric argument, the value of the readline
+.B comment\-begin
+variable is inserted at the beginning of the current line.
+If a numeric argument is supplied, this command acts as a toggle: if
+the characters at the beginning of the line do not match the value
+of \fBcomment\-begin\fP, the value is inserted, otherwise
+the characters in \fBcomment-begin\fP are deleted from the beginning of
+the line.
+In either case, the line is accepted as if a newline had been typed.
+The default value of
+.B comment\-begin
+makes the current line a shell comment.
+If a numeric argument causes the comment character to be removed, the line
+will be executed by the shell.
+.TP
+.B 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 \fIinputrc\fP file.
+.TP
+.B 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 \fIinputrc\fP file.
+.TP
+.B 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 \fIinputrc\fP file.
+.TP
+.B emacs\-editing\-mode (C\-e)
+When in
+.B vi
+command mode, this causes a switch to
+.B emacs
+editing mode.
+.TP
+.B vi\-editing\-mode (M\-C\-j)
+When in
+.B emacs
+editing mode, this causes a switch to
+.B vi
+editing mode.
+.PD
+.SH DEFAULT KEY BINDINGS
+.LP
+The following is a list of the default emacs and vi bindings.
+Characters with the eighth bit set are written as M\-<character>, and
+are referred to as
+.I metafied
+characters.
+The printable ASCII characters not mentioned in the list of emacs
+standard bindings are bound to the
+.B self\-insert
+function, which just inserts the given character into the input line.
+In vi insertion mode, all characters not specifically mentioned are
+bound to
+.BR self\-insert .
+Characters assigned to signal generation by
+.IR stty (1)
+or the terminal driver, such as C-Z or C-C,
+retain that function.
+Upper and lower case metafied characters are bound to the same function in
+the emacs mode meta keymap.
+The remaining characters are unbound, which causes readline
+to ring the bell (subject to the setting of the
+.B bell\-style
+variable).
+.SS Emacs Mode
+.RS +.6i
+.nf
+.ta 2.5i
+.sp
+Emacs Standard bindings
+.sp
+"C-@" set-mark
+"C-A" beginning-of-line
+"C-B" backward-char
+"C-D" delete-char
+"C-E" end-of-line
+"C-F" forward-char
+"C-G" abort
+"C-H" backward-delete-char
+"C-I" complete
+"C-J" accept-line
+"C-K" kill-line
+"C-L" clear-screen
+"C-M" accept-line
+"C-N" next-history
+"C-P" previous-history
+"C-Q" quoted-insert
+"C-R" reverse-search-history
+"C-S" forward-search-history
+"C-T" transpose-chars
+"C-U" unix-line-discard
+"C-V" quoted-insert
+"C-W" unix-word-rubout
+"C-Y" yank
+"C-]" character-search
+"C-_" undo
+"\^ " to "/" self-insert
+"0" to "9" self-insert
+":" to "~" self-insert
+"C-?" backward-delete-char
+.PP
+Emacs Meta bindings
+.sp
+"M-C-G" abort
+"M-C-H" backward-kill-word
+"M-C-I" tab-insert
+"M-C-J" vi-editing-mode
+"M-C-M" vi-editing-mode
+"M-C-R" revert-line
+"M-C-Y" yank-nth-arg
+"M-C-[" complete
+"M-C-]" character-search-backward
+"M-space" set-mark
+"M-#" insert-comment
+"M-&" tilde-expand
+"M-*" insert-completions
+"M--" digit-argument
+"M-." yank-last-arg
+"M-0" digit-argument
+"M-1" digit-argument
+"M-2" digit-argument
+"M-3" digit-argument
+"M-4" digit-argument
+"M-5" digit-argument
+"M-6" digit-argument
+"M-7" digit-argument
+"M-8" digit-argument
+"M-9" digit-argument
+"M-<" beginning-of-history
+"M-=" possible-completions
+"M->" end-of-history
+"M-?" possible-completions
+"M-B" backward-word
+"M-C" capitalize-word
+"M-D" kill-word
+"M-F" forward-word
+"M-L" downcase-word
+"M-N" non-incremental-forward-search-history
+"M-P" non-incremental-reverse-search-history
+"M-R" revert-line
+"M-T" transpose-words
+"M-U" upcase-word
+"M-Y" yank-pop
+"M-\e" delete-horizontal-space
+"M-~" tilde-expand
+"M-C-?" backward-kill-word
+"M-_" yank-last-arg
+.PP
+Emacs Control-X bindings
+.sp
+"C-XC-G" abort
+"C-XC-R" re-read-init-file
+"C-XC-U" undo
+"C-XC-X" exchange-point-and-mark
+"C-X(" start-kbd-macro
+"C-X)" end-kbd-macro
+"C-XE" call-last-kbd-macro
+"C-XC-?" backward-kill-line
+.sp
+.RE
+.SS VI Mode bindings
+.RS +.6i
+.nf
+.ta 2.5i
+.sp
+.PP
+VI Insert Mode functions
+.sp
+"C-D" vi-eof-maybe
+"C-H" backward-delete-char
+"C-I" complete
+"C-J" accept-line
+"C-M" accept-line
+"C-R" reverse-search-history
+"C-S" forward-search-history
+"C-T" transpose-chars
+"C-U" unix-line-discard
+"C-V" quoted-insert
+"C-W" unix-word-rubout
+"C-Y" yank
+"C-[" vi-movement-mode
+"C-_" undo
+"\^ " to "~" self-insert
+"C-?" backward-delete-char
+.PP
+VI Command Mode functions
+.sp
+"C-D" vi-eof-maybe
+"C-E" emacs-editing-mode
+"C-G" abort
+"C-H" backward-char
+"C-J" accept-line
+"C-K" kill-line
+"C-L" clear-screen
+"C-M" accept-line
+"C-N" next-history
+"C-P" previous-history
+"C-Q" quoted-insert
+"C-R" reverse-search-history
+"C-S" forward-search-history
+"C-T" transpose-chars
+"C-U" unix-line-discard
+"C-V" quoted-insert
+"C-W" unix-word-rubout
+"C-Y" yank
+"C-_" vi-undo
+"\^ " forward-char
+"#" insert-comment
+"$" end-of-line
+"%" vi-match
+"&" vi-tilde-expand
+"*" vi-complete
+"+" next-history
+"," vi-char-search
+"-" previous-history
+"." vi-redo
+"/" vi-search
+"0" beginning-of-line
+"1" to "9" vi-arg-digit
+";" vi-char-search
+"=" vi-complete
+"?" vi-search
+"A" vi-append-eol
+"B" vi-prev-word
+"C" vi-change-to
+"D" vi-delete-to
+"E" vi-end-word
+"F" vi-char-search
+"G" vi-fetch-history
+"I" vi-insert-beg
+"N" vi-search-again
+"P" vi-put
+"R" vi-replace
+"S" vi-subst
+"T" vi-char-search
+"U" revert-line
+"W" vi-next-word
+"X" backward-delete-char
+"Y" vi-yank-to
+"\e" vi-complete
+"^" vi-first-print
+"_" vi-yank-arg
+"`" vi-goto-mark
+"a" vi-append-mode
+"b" vi-prev-word
+"c" vi-change-to
+"d" vi-delete-to
+"e" vi-end-word
+"f" vi-char-search
+"h" backward-char
+"i" vi-insertion-mode
+"j" next-history
+"k" prev-history
+"l" forward-char
+"m" vi-set-mark
+"n" vi-search-again
+"p" vi-put
+"r" vi-change-char
+"s" vi-subst
+"t" vi-char-search
+"u" vi-undo
+"w" vi-next-word
+"x" vi-delete
+"y" vi-yank-to
+"|" vi-column
+"~" vi-change-case
+.RE
+.SH "SEE ALSO"
+.PD 0
+.TP
+\fIThe Gnu Readline Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIThe Gnu History Library\fP, Brian Fox and Chet Ramey
+.TP
+\fIbash\fP(1)
+.PD
+.SH FILES
+.PD 0
+.TP
+.FN ~/.inputrc
+Individual \fBreadline\fP initialization file
+.PD
+.SH AUTHORS
+Brian Fox, Free Software Foundation
+.br
+bfox@gnu.org
+.PP
+Chet Ramey, Case Western Reserve University
+.br
+chet@ins.CWRU.Edu
+.SH BUG REPORTS
+If you find a bug in
+.B readline,
+you should report it. But first, you should
+make sure that it really is a bug, and that it appears in the latest
+version of the
+.B readline
+library that you have.
+.PP
+Once you have determined that a bug actually exists, mail a
+bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
+If you have a fix, you are welcome to mail that
+as well! Suggestions and `philosophical' bug reports may be mailed
+to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
+newsgroup
+.BR gnu.bash.bug .
+.PP
+Comments and bug reports concerning
+this manual page should be directed to
+.IR chet@ins.CWRU.Edu .
+.SH BUGS
+.PP
+It's too big and too slow.
diff --git a/lib/readline/doc/readline.dvi b/lib/readline/doc/readline.dvi
new file mode 100644
index 00000000..4b8e4f58
--- /dev/null
+++ b/lib/readline/doc/readline.dvi
Binary files differ
diff --git a/lib/readline/doc/readline.html b/lib/readline/doc/readline.html
new file mode 100644
index 00000000..1b96d958
--- /dev/null
+++ b/lib/readline/doc/readline.html
@@ -0,0 +1,6595 @@
+<HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- Created on September, 22 2003 by texi2html 1.64 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
+
+-->
+<HEAD>
+<TITLE>GNU Readline Library: </TITLE>
+
+<META NAME="description" CONTENT="GNU Readline Library: ">
+<META NAME="keywords" CONTENT="GNU Readline Library: ">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="texi2html 1.64">
+
+</HEAD>
+
+<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
+
+<A NAME="SEC_Top"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>GNU Readline Library</H1></P><P>
+
+This document describes the GNU Readline Library, a utility which aids
+in the consistency of user interface across discrete programs which
+provide a command line interface.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC1">1. Command Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC23">2. Programming with GNU Readline</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline Programmer's Manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC49">A. Copying This Manual</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Copying this manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC52">Concept Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of concepts described in this manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC53">Function and Variable Index</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Index of externally visible functions
+ and variables.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<HR SIZE=1>
+<A NAME="SEC1"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<A NAME="Command Line Editing"></A>
+<H1> 1. Command Line Editing </H1>
+<!--docid::SEC1::-->
+<P>
+
+This chapter describes the basic features of the GNU
+command line editing interface.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC3">1.2 Readline Interaction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC9">1.3 Readline Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands
+ available for binding</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC22">1.5 Readline vi Mode</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline
+ behave like the vi editor.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Introduction and Notation"></A>
+<HR SIZE="6">
+<A NAME="SEC2"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.1 Introduction to Line Editing </H2>
+<!--docid::SEC2::-->
+<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">1.3 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><P>
+
+<A NAME="Readline Interaction"></A>
+<HR SIZE="6">
+<A NAME="SEC3"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC2"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.2 Readline Interaction </H2>
+<!--docid::SEC3::-->
+<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><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC7">1.2.4 Readline Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Readline Bare Essentials"></A>
+<HR SIZE="6">
+<A NAME="SEC4"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.1 Readline Bare Essentials </H3>
+<!--docid::SEC4::-->
+<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><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><P>
+
+<A NAME="Readline Movement Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC5"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC4"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.2 Readline Movement Commands </H3>
+<!--docid::SEC5::-->
+<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><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><P>
+
+<A NAME="Readline Killing Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC6"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC5"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.3 Readline Killing Commands </H3>
+<!--docid::SEC6::-->
+<P>
+
+<A NAME="IDX1"></A>
+<A NAME="IDX2"></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="IDX3"></A>
+</P><P>
+
+Here is the list of commands for killing text.
+</P><P>
+
+<DL COMPACT>
+<DT><KBD>C-k</KBD>
+<DD>Kill the text from the current cursor position to the end of the line.
+<P>
+
+<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>.
+<P>
+
+<DT><KBD>M-<KBD>DEL</KBD></KBD>
+<DD>Kill from the cursor the start of the current 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>.
+<P>
+
+<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.
+<P>
+
+</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><P>
+
+<DL COMPACT>
+<DT><KBD>C-y</KBD>
+<DD>Yank the most recently killed text back into the buffer at the cursor.
+<P>
+
+<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>
+<P>
+
+<A NAME="Readline Arguments"></A>
+<HR SIZE="6">
+<A NAME="SEC7"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC6"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.4 Readline Arguments </H3>
+<!--docid::SEC7::-->
+<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><P>
+
+<A NAME="Searching"></A>
+<HR SIZE="6">
+<A NAME="SEC8"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC7"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.5 Searching for Commands in the History </H3>
+<!--docid::SEC8::-->
+<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>
+
+Readline remembers the last incremental search string. If two
+<KBD>C-r</KBD>s are typed without any intervening characters defining a new
+search string, any remembered search string is used.
+</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><P>
+
+<A NAME="Readline Init File"></A>
+<HR SIZE="6">
+<A NAME="SEC9"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC8"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.3 Readline Init File </H2>
+<!--docid::SEC9::-->
+<P>
+
+Although the Readline library comes with a set of Emacs-like
+keybindings installed by default, it is possible to use a different set
+of keybindings.
+Any user can customize programs that use Readline by putting
+commands in an <EM>inputrc</EM> file, conventionally in his home directory.
+The name of this
+file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If
+that variable is unset, the default is <TT>`~/.inputrc'</TT>.
+</P><P>
+
+When a program which uses the Readline library starts up, the
+init file is read, and the key bindings are set.
+</P><P>
+
+In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
+</TABLE>
+
+<br>
+<TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
+</TABLE>
+
+<br>
+<TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC12">1.3.3 Sample Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Readline Init File Syntax"></A>
+<HR SIZE="6">
+<A NAME="SEC10"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.1 Readline Init File Syntax </H3>
+<!--docid::SEC10::-->
+<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">1.3.2 Conditional Init Constructs</A>). Other lines
+denote variable settings and key bindings.
+</P><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:
+<P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR>
+</pre></td></tr></table></P><P>
+
+Here, for example, is how to
+change from the default Emacs-like key binding to use
+<CODE>vi</CODE> line editing commands:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>set editing-mode vi
+</pre></td></tr></table></P><P>
+
+Variable names and values, where appropriate, are recognized without regard
+to case.
+</P><P>
+
+A great deal of run-time behavior is changeable with the following
+variables.
+</P><P>
+
+<A NAME="IDX4"></A>
+<DL COMPACT>
+
+<DT><CODE>bell-style</CODE>
+<DD><A NAME="IDX5"></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.
+<P>
+
+<DT><CODE>comment-begin</CODE>
+<DD><A NAME="IDX6"></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>.
+<P>
+
+<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>.
+<P>
+
+<DT><CODE>completion-query-items</CODE>
+<DD><A NAME="IDX7"></A>
+The number of possible completions that determines when the user is
+asked whether the list of possibilities should be displayed.
+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>.
+<P>
+
+<DT><CODE>convert-meta</CODE>
+<DD><A NAME="IDX8"></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>.
+<P>
+
+<DT><CODE>disable-completion</CODE>
+<DD><A NAME="IDX9"></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>.
+<P>
+
+<DT><CODE>editing-mode</CODE>
+<DD><A NAME="IDX10"></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>.
+<P>
+
+<DT><CODE>enable-keypad</CODE>
+<DD><A NAME="IDX11"></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>.
+<P>
+
+<DT><CODE>expand-tilde</CODE>
+<DD><A NAME="IDX12"></A>
+If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
+attempts word completion. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<A NAME="IDX13"></A>
+If set to <SAMP>`on'</SAMP>, the history code attempts to place point at the
+same location on each history line retrieved with <CODE>previous-history</CODE>
+or <CODE>next-history</CODE>.
+</P><P>
+
+<DT><CODE>horizontal-scroll-mode</CODE>
+<DD><A NAME="IDX14"></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>.
+<P>
+
+<DT><CODE>input-meta</CODE>
+<DD><A NAME="IDX15"></A>
+<A NAME="IDX16"></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.
+<P>
+
+<DT><CODE>isearch-terminators</CODE>
+<DD><A NAME="IDX17"></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">1.2.5 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.
+<P>
+
+<DT><CODE>keymap</CODE>
+<DD><A NAME="IDX18"></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.
+<P>
+
+<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>.
+<P>
+
+<DT><CODE>mark-modified-lines</CODE>
+<DD><A NAME="IDX19"></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.
+<P>
+
+<DT><CODE>mark-symlinked-directories</CODE>
+<DD><A NAME="IDX20"></A>
+If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
+to directories have a slash appended (subject to the value of
+<CODE>mark-directories</CODE>).
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>match-hidden-files</CODE>
+<DD><A NAME="IDX21"></A>
+This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
+names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
+completion, unless the leading <SAMP>`.'</SAMP> is
+supplied by the user in the filename to be completed.
+This variable is <SAMP>`on'</SAMP> by default.
+<P>
+
+<DT><CODE>output-meta</CODE>
+<DD><A NAME="IDX22"></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>.
+<P>
+
+<DT><CODE>page-completions</CODE>
+<DD><A NAME="IDX23"></A>
+If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
+to display a screenful of possible completions at a time.
+This variable is <SAMP>`on'</SAMP> by default.
+<P>
+
+<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>.
+<P>
+
+<DT><CODE>show-all-if-ambiguous</CODE>
+<DD><A NAME="IDX24"></A>
+This alters the default behavior of the completion functions. If
+set to <SAMP>`on'</SAMP>,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>show-all-if-unmodified</CODE>
+<DD><A NAME="IDX25"></A>
+This alters the default behavior of the completion functions in
+a fashion similar to <VAR>show-all-if-ambiguous</VAR>.
+If set to <SAMP>`on'</SAMP>,
+words which have more than one possible completion without any
+possible partial completion (the possible completions don't share
+a common prefix) cause the matches to be listed immediately instead
+of ringing the bell.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<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>.
+<P>
+
+</DL>
+<P>
+
+<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.
+<P>
+
+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.
+</P><P>
+
+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>).
+</P><P>
+
+<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:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>Control-u: universal-argument
+Meta-Rubout: backward-kill-word
+Control-o: "&#62; output"
+</pre></td></tr></table><P>
+
+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>`&#62; output'</SAMP> into the line).
+</P><P>
+
+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>.
+</P><P>
+
+<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.
+<P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-u": universal-argument
+"\C-x\C-r": re-read-init-file
+"\e[11~": "Function Key 1"
+</pre></td></tr></table></P><P>
+
+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>.
+</P><P>
+
+</DL>
+<P>
+
+The following GNU Emacs style escape sequences are available when
+specifying key sequences:
+</P><P>
+
+<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>
+<P>
+
+In addition to the GNU Emacs style escape sequences, a second
+set of backslash escapes is available:
+</P><P>
+
+<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 eight-bit character whose value is the octal value <VAR>nnn</VAR>
+(one to three digits)
+<DT><CODE>\x<VAR>HH</VAR></CODE>
+<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
+(one or two hex digits)
+</DL>
+<P>
+
+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:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
+</pre></td></tr></table></P><P>
+
+</DL>
+<P>
+
+<A NAME="Conditional Init Constructs"></A>
+<HR SIZE="6">
+<A NAME="SEC11"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC10"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.2 Conditional Init Constructs </H3>
+<!--docid::SEC11::-->
+<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><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.
+<P>
+
+<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.
+<P>
+
+<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.
+<P>
+
+<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:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+$endif
+</pre></td></tr></table></DL>
+<P>
+
+<DT><CODE>$endif</CODE>
+<DD>This command, as seen in the previous example, terminates an
+<CODE>$if</CODE> command.
+<P>
+
+<DT><CODE>$else</CODE>
+<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
+the test fails.
+<P>
+
+<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>:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$include /etc/inputrc
+</pre></td></tr></table></DL>
+<P>
+
+<A NAME="Sample Init File"></A>
+<HR SIZE="6">
+<A NAME="SEC12"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC11"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.3 Sample Init File </H3>
+<!--docid::SEC12::-->
+<P>
+
+Here is an example of an <VAR>inputrc</VAR> file. This illustrates key
+binding, variable assignment, and conditional syntax.
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><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></td></tr></table></P><P>
+
+<A NAME="Bindable Readline Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC13"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC12"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.4 Bindable Readline Commands </H2>
+<!--docid::SEC13::-->
+<P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<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><P>
+
+<A NAME="Commands For Moving"></A>
+<HR SIZE="6">
+<A NAME="SEC14"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.1 Commands For Moving </H3>
+<!--docid::SEC14::-->
+<DL COMPACT>
+<A NAME="IDX27"></A>
+<DT><CODE>beginning-of-line (C-a)</CODE>
+<DD><A NAME="IDX28"></A>
+Move to the start of the current line.
+<P>
+
+<A NAME="IDX29"></A>
+<DT><CODE>end-of-line (C-e)</CODE>
+<DD><A NAME="IDX30"></A>
+Move to the end of the line.
+<P>
+
+<A NAME="IDX31"></A>
+<DT><CODE>forward-char (C-f)</CODE>
+<DD><A NAME="IDX32"></A>
+Move forward a character.
+<P>
+
+<A NAME="IDX33"></A>
+<DT><CODE>backward-char (C-b)</CODE>
+<DD><A NAME="IDX34"></A>
+Move back a character.
+<P>
+
+<A NAME="IDX35"></A>
+<DT><CODE>forward-word (M-f)</CODE>
+<DD><A NAME="IDX36"></A>
+Move forward to the end of the next word. Words are composed of
+letters and digits.
+<P>
+
+<A NAME="IDX37"></A>
+<DT><CODE>backward-word (M-b)</CODE>
+<DD><A NAME="IDX38"></A>
+Move back to the start of the current or previous word. Words are
+composed of letters and digits.
+<P>
+
+<A NAME="IDX39"></A>
+<DT><CODE>clear-screen (C-l)</CODE>
+<DD><A NAME="IDX40"></A>
+Clear the screen and redraw the current line,
+leaving the current line at the top of the screen.
+<P>
+
+<A NAME="IDX41"></A>
+<DT><CODE>redraw-current-line ()</CODE>
+<DD><A NAME="IDX42"></A>
+Refresh the current line. By default, this is unbound.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Commands For History"></A>
+<HR SIZE="6">
+<A NAME="SEC15"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC14"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.2 Commands For Manipulating The History </H3>
+<!--docid::SEC15::-->
+<P>
+
+<DL COMPACT>
+<A NAME="IDX43"></A>
+<DT><CODE>accept-line (Newline or Return)</CODE>
+<DD><A NAME="IDX44"></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.
+<P>
+
+<A NAME="IDX45"></A>
+<DT><CODE>previous-history (C-p)</CODE>
+<DD><A NAME="IDX46"></A>
+Move `back' through the history list, fetching the previous command.
+<P>
+
+<A NAME="IDX47"></A>
+<DT><CODE>next-history (C-n)</CODE>
+<DD><A NAME="IDX48"></A>
+Move `forward' through the history list, fetching the next command.
+<P>
+
+<A NAME="IDX49"></A>
+<DT><CODE>beginning-of-history (M-&#60;)</CODE>
+<DD><A NAME="IDX50"></A>
+Move to the first line in the history.
+<P>
+
+<A NAME="IDX51"></A>
+<DT><CODE>end-of-history (M-&#62;)</CODE>
+<DD><A NAME="IDX52"></A>
+Move to the end of the input history, i.e., the line currently
+being entered.
+<P>
+
+<A NAME="IDX53"></A>
+<DT><CODE>reverse-search-history (C-r)</CODE>
+<DD><A NAME="IDX54"></A>
+Search backward starting at the current line and moving `up' through
+the history as necessary. This is an incremental search.
+<P>
+
+<A NAME="IDX55"></A>
+<DT><CODE>forward-search-history (C-s)</CODE>
+<DD><A NAME="IDX56"></A>
+Search forward starting at the current line and moving `down' through
+the the history as necessary. This is an incremental search.
+<P>
+
+<A NAME="IDX57"></A>
+<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
+<DD><A NAME="IDX58"></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.
+<P>
+
+<A NAME="IDX59"></A>
+<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
+<DD><A NAME="IDX60"></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.
+<P>
+
+<A NAME="IDX61"></A>
+<DT><CODE>history-search-forward ()</CODE>
+<DD><A NAME="IDX62"></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.
+<P>
+
+<A NAME="IDX63"></A>
+<DT><CODE>history-search-backward ()</CODE>
+<DD><A NAME="IDX64"></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.
+<P>
+
+<A NAME="IDX65"></A>
+<DT><CODE>yank-nth-arg (M-C-y)</CODE>
+<DD><A NAME="IDX66"></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.
+<P>
+
+<A NAME="IDX67"></A>
+<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
+<DD><A NAME="IDX68"></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.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Commands For Text"></A>
+<HR SIZE="6">
+<A NAME="SEC16"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC15"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.3 Commands For Changing Text </H3>
+<!--docid::SEC16::-->
+<P>
+
+<DL COMPACT>
+<A NAME="IDX69"></A>
+<DT><CODE>delete-char (C-d)</CODE>
+<DD><A NAME="IDX70"></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.
+<P>
+
+<A NAME="IDX71"></A>
+<DT><CODE>backward-delete-char (Rubout)</CODE>
+<DD><A NAME="IDX72"></A>
+Delete the character behind the cursor. A numeric argument means
+to kill the characters instead of deleting them.
+<P>
+
+<A NAME="IDX73"></A>
+<DT><CODE>forward-backward-delete-char ()</CODE>
+<DD><A NAME="IDX74"></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.
+<P>
+
+<A NAME="IDX75"></A>
+<DT><CODE>quoted-insert (C-q or C-v)</CODE>
+<DD><A NAME="IDX76"></A>
+Add the next character typed to the line verbatim. This is
+how to insert key sequences like <KBD>C-q</KBD>, for example.
+<P>
+
+<A NAME="IDX77"></A>
+<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
+<DD><A NAME="IDX78"></A>
+Insert a tab character.
+<P>
+
+<A NAME="IDX79"></A>
+<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
+<DD><A NAME="IDX80"></A>
+Insert yourself.
+<P>
+
+<A NAME="IDX81"></A>
+<DT><CODE>transpose-chars (C-t)</CODE>
+<DD><A NAME="IDX82"></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.
+<P>
+
+<A NAME="IDX83"></A>
+<DT><CODE>transpose-words (M-t)</CODE>
+<DD><A NAME="IDX84"></A>
+Drag the word before point past the word after point,
+moving point past that word as well.
+If the insertion point is at the end of the line, this transposes
+the last two words on the line.
+<P>
+
+<A NAME="IDX85"></A>
+<DT><CODE>upcase-word (M-u)</CODE>
+<DD><A NAME="IDX86"></A>
+Uppercase the current (or following) word. With a negative argument,
+uppercase the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX87"></A>
+<DT><CODE>downcase-word (M-l)</CODE>
+<DD><A NAME="IDX88"></A>
+Lowercase the current (or following) word. With a negative argument,
+lowercase the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX89"></A>
+<DT><CODE>capitalize-word (M-c)</CODE>
+<DD><A NAME="IDX90"></A>
+Capitalize the current (or following) word. With a negative argument,
+capitalize the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX91"></A>
+<DT><CODE>overwrite-mode ()</CODE>
+<DD><A NAME="IDX92"></A>
+Toggle overwrite mode. With an explicit positive numeric argument,
+switches to overwrite mode. With an explicit non-positive numeric
+argument, switches to insert mode. This command affects only
+<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
+Each call to <CODE>readline()</CODE> starts in insert mode.
+<P>
+
+In overwrite mode, characters bound to <CODE>self-insert</CODE> replace
+the text at point rather than pushing the text to the right.
+Characters bound to <CODE>backward-delete-char</CODE> replace the character
+before point with a space.
+</P><P>
+
+By default, this command is unbound.
+</P><P>
+
+</DL>
+<P>
+
+<A NAME="Commands For Killing"></A>
+<HR SIZE="6">
+<A NAME="SEC17"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC16"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.4 Killing And Yanking </H3>
+<!--docid::SEC17::-->
+<P>
+
+<DL COMPACT>
+
+<A NAME="IDX93"></A>
+<DT><CODE>kill-line (C-k)</CODE>
+<DD><A NAME="IDX94"></A>
+Kill the text from point to the end of the line.
+<P>
+
+<A NAME="IDX95"></A>
+<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
+<DD><A NAME="IDX96"></A>
+Kill backward to the beginning of the line.
+<P>
+
+<A NAME="IDX97"></A>
+<DT><CODE>unix-line-discard (C-u)</CODE>
+<DD><A NAME="IDX98"></A>
+Kill backward from the cursor to the beginning of the current line.
+<P>
+
+<A NAME="IDX99"></A>
+<DT><CODE>kill-whole-line ()</CODE>
+<DD><A NAME="IDX100"></A>
+Kill all characters on the current line, no matter where point is.
+By default, this is unbound.
+<P>
+
+<A NAME="IDX101"></A>
+<DT><CODE>kill-word (M-d)</CODE>
+<DD><A NAME="IDX102"></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>.
+<P>
+
+<A NAME="IDX103"></A>
+<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
+<DD><A NAME="IDX104"></A>
+Kill the word behind point.
+Word boundaries are the same as <CODE>backward-word</CODE>.
+<P>
+
+<A NAME="IDX105"></A>
+<DT><CODE>unix-word-rubout (C-w)</CODE>
+<DD><A NAME="IDX106"></A>
+Kill the word behind point, using white space as a word boundary.
+The killed text is saved on the kill-ring.
+<P>
+
+<A NAME="IDX107"></A>
+<DT><CODE>delete-horizontal-space ()</CODE>
+<DD><A NAME="IDX108"></A>
+Delete all spaces and tabs around point. By default, this is unbound.
+<P>
+
+<A NAME="IDX109"></A>
+<DT><CODE>kill-region ()</CODE>
+<DD><A NAME="IDX110"></A>
+Kill the text in the current region.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX111"></A>
+<DT><CODE>copy-region-as-kill ()</CODE>
+<DD><A NAME="IDX112"></A>
+Copy the text in the region to the kill buffer, so it can be yanked
+right away. By default, this command is unbound.
+<P>
+
+<A NAME="IDX113"></A>
+<DT><CODE>copy-backward-word ()</CODE>
+<DD><A NAME="IDX114"></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.
+<P>
+
+<A NAME="IDX115"></A>
+<DT><CODE>copy-forward-word ()</CODE>
+<DD><A NAME="IDX116"></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.
+<P>
+
+<A NAME="IDX117"></A>
+<DT><CODE>yank (C-y)</CODE>
+<DD><A NAME="IDX118"></A>
+Yank the top of the kill ring into the buffer at point.
+<P>
+
+<A NAME="IDX119"></A>
+<DT><CODE>yank-pop (M-y)</CODE>
+<DD><A NAME="IDX120"></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>
+<P>
+
+<A NAME="Numeric Arguments"></A>
+<HR SIZE="6">
+<A NAME="SEC18"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC17"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.5 Specifying Numeric Arguments </H3>
+<!--docid::SEC18::-->
+<DL COMPACT>
+
+<A NAME="IDX121"></A>
+<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
+<DD><A NAME="IDX122"></A>
+Add this digit to the argument already accumulating, or start a new
+argument. <KBD>M--</KBD> starts a negative argument.
+<P>
+
+<A NAME="IDX123"></A>
+<DT><CODE>universal-argument ()</CODE>
+<DD><A NAME="IDX124"></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>
+<P>
+
+<A NAME="Commands For Completion"></A>
+<HR SIZE="6">
+<A NAME="SEC19"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC18"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.6 Letting Readline Type For You </H3>
+<!--docid::SEC19::-->
+<P>
+
+<DL COMPACT>
+<A NAME="IDX125"></A>
+<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
+<DD><A NAME="IDX126"></A>
+Attempt to perform completion on the text before point.
+The actual completion performed is application-specific.
+The default is filename completion.
+<P>
+
+<A NAME="IDX127"></A>
+<DT><CODE>possible-completions (M-?)</CODE>
+<DD><A NAME="IDX128"></A>
+List the possible completions of the text before point.
+<P>
+
+<A NAME="IDX129"></A>
+<DT><CODE>insert-completions (M-*)</CODE>
+<DD><A NAME="IDX130"></A>
+Insert all completions of the text before point that would have
+been generated by <CODE>possible-completions</CODE>.
+<P>
+
+<A NAME="IDX131"></A>
+<DT><CODE>menu-complete ()</CODE>
+<DD><A NAME="IDX132"></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.
+<P>
+
+<A NAME="IDX133"></A>
+<DT><CODE>delete-char-or-list ()</CODE>
+<DD><A NAME="IDX134"></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.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Keyboard Macros"></A>
+<HR SIZE="6">
+<A NAME="SEC20"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC19"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.7 Keyboard Macros </H3>
+<!--docid::SEC20::-->
+<DL COMPACT>
+
+<A NAME="IDX135"></A>
+<DT><CODE>start-kbd-macro (C-x ()</CODE>
+<DD><A NAME="IDX136"></A>
+Begin saving the characters typed into the current keyboard macro.
+<P>
+
+<A NAME="IDX137"></A>
+<DT><CODE>end-kbd-macro (C-x ))</CODE>
+<DD><A NAME="IDX138"></A>
+Stop saving the characters typed into the current keyboard macro
+and save the definition.
+<P>
+
+<A NAME="IDX139"></A>
+<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
+<DD><A NAME="IDX140"></A>
+Re-execute the last keyboard macro defined, by making the characters
+in the macro appear as if typed at the keyboard.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Miscellaneous Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC21"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC20"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.8 Some Miscellaneous Commands </H3>
+<!--docid::SEC21::-->
+<DL COMPACT>
+
+<A NAME="IDX141"></A>
+<DT><CODE>re-read-init-file (C-x C-r)</CODE>
+<DD><A NAME="IDX142"></A>
+Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
+any bindings or variable assignments found there.
+<P>
+
+<A NAME="IDX143"></A>
+<DT><CODE>abort (C-g)</CODE>
+<DD><A NAME="IDX144"></A>
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+<CODE>bell-style</CODE>).
+<P>
+
+<A NAME="IDX145"></A>
+<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
+<DD><A NAME="IDX146"></A>
+If the metafied character <VAR>x</VAR> is lowercase, run the command
+that is bound to the corresponding uppercase character.
+<P>
+
+<A NAME="IDX147"></A>
+<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
+<DD><A NAME="IDX148"></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>.
+<P>
+
+<A NAME="IDX149"></A>
+<DT><CODE>undo (C-_ or C-x C-u)</CODE>
+<DD><A NAME="IDX150"></A>
+Incremental undo, separately remembered for each line.
+<P>
+
+<A NAME="IDX151"></A>
+<DT><CODE>revert-line (M-r)</CODE>
+<DD><A NAME="IDX152"></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.
+<P>
+
+<A NAME="IDX153"></A>
+<DT><CODE>tilde-expand (M-~)</CODE>
+<DD><A NAME="IDX154"></A>
+Perform tilde expansion on the current word.
+<P>
+
+<A NAME="IDX155"></A>
+<DT><CODE>set-mark (C-@)</CODE>
+<DD><A NAME="IDX156"></A>
+Set the mark to the point. If a
+numeric argument is supplied, the mark is set to that position.
+<P>
+
+<A NAME="IDX157"></A>
+<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
+<DD><A NAME="IDX158"></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.
+<P>
+
+<A NAME="IDX159"></A>
+<DT><CODE>character-search (C-])</CODE>
+<DD><A NAME="IDX160"></A>
+A character is read and point is moved to the next occurrence of that
+character. A negative count searches for previous occurrences.
+<P>
+
+<A NAME="IDX161"></A>
+<DT><CODE>character-search-backward (M-C-])</CODE>
+<DD><A NAME="IDX162"></A>
+A character is read and point is moved to the previous occurrence
+of that character. A negative count searches for subsequent
+occurrences.
+<P>
+
+<A NAME="IDX163"></A>
+<DT><CODE>insert-comment (M-#)</CODE>
+<DD><A NAME="IDX164"></A>
+Without a numeric argument, the value of the <CODE>comment-begin</CODE>
+variable is inserted at the beginning of the current line.
+If a numeric argument is supplied, this command acts as a toggle: if
+the characters at the beginning of the line do not match the value
+of <CODE>comment-begin</CODE>, the value is inserted, otherwise
+the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
+the line.
+In either case, the line is accepted as if a newline had been typed.
+<P>
+
+<A NAME="IDX165"></A>
+<DT><CODE>dump-functions ()</CODE>
+<DD><A NAME="IDX166"></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.
+<P>
+
+<A NAME="IDX167"></A>
+<DT><CODE>dump-variables ()</CODE>
+<DD><A NAME="IDX168"></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.
+<P>
+
+<A NAME="IDX169"></A>
+<DT><CODE>dump-macros ()</CODE>
+<DD><A NAME="IDX170"></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.
+<P>
+
+<A NAME="IDX171"></A>
+<DT><CODE>emacs-editing-mode (C-e)</CODE>
+<DD><A NAME="IDX172"></A>
+When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
+editing mode.
+<P>
+
+<A NAME="IDX173"></A>
+<DT><CODE>vi-editing-mode (M-C-j)</CODE>
+<DD><A NAME="IDX174"></A>
+When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
+editing mode.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Readline vi Mode"></A>
+<HR SIZE="6">
+<A NAME="SEC22"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC21"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.5 Readline vi Mode </H2>
+<!--docid::SEC22::-->
+<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>
+
+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.
+</P><P>
+
+Copyright (C) 1988-2002 Free Software Foundation, Inc.
+</P><P>
+
+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.
+</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 Foundation.
+</P><P>
+
+<A NAME="Programming with GNU Readline"></A>
+<HR SIZE="6">
+<A NAME="SEC23"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC22"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> 2. Programming with GNU Readline </H1>
+<!--docid::SEC23::-->
+<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><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Using the default behavior of Readline.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC25">2.2 Custom Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Adding your own functions to Readline.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables accessible to custom
+ functions.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions which Readline supplies to
+ aid in writing your own custom
+ functions.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC43">2.5 Readline Signal Handling</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How Readline behaves when it receives signals.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC44">2.6 Custom Completers</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Supplanting or supplementing Readline's
+ completion functions.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Basic Behavior"></A>
+<HR SIZE="6">
+<A NAME="SEC24"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.1 Basic Behavior </H2>
+<!--docid::SEC24::-->
+<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="IDX175"></A>
+<A NAME="IDX176"></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><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>char *readline (const char *<VAR>prompt</VAR>);</CODE>
+</pre></td></tr></table></P><P>
+
+So, one might say
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>char *line = readline ("Enter a line: ");</CODE>
+</pre></td></tr></table>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><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>add_history (line)</CODE>;
+</pre></td></tr></table></P><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><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><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 &#38;&#38; *line_read)
+ add_history (line_read);
+
+ return (line_read);
+}
+</pre></td></tr></table></P><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><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>int rl_bind_key (int <VAR>key</VAR>, rl_command_func_t *<VAR>function</VAR>);</CODE>
+</pre></td></tr></table></P><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:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>rl_bind_key ('\t', rl_insert);</CODE>
+</pre></td></tr></table></P><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">2.6 Custom Completers</A>).
+</P><P>
+
+<A NAME="Custom Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC25"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC24"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.2 Custom Functions </H2>
+<!--docid::SEC25::-->
+<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>&#60;readline/readline.h&#62;</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>&#60;stdio.h&#62;</CODE> should be included before <CODE>readline.h</CODE>.
+</P><P>
+
+<CODE>readline.h</CODE> defines a C preprocessor variable that should
+be treated as an integer, <CODE>RL_READLINE_VERSION</CODE>, which may
+be used to conditionally compile application code depending on
+the installed Readline version. The value is a hexadecimal
+encoding of the major and minor version numbers of the library,
+of the form 0x<VAR>MMmm</VAR>. <VAR>MM</VAR> is the two-digit major
+version number; <VAR>mm</VAR> is the two-digit minor version number.
+For Readline 4.2, for example, the value of
+<CODE>RL_READLINE_VERSION</CODE> would be <CODE>0x0402</CODE>.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">C declarations to make code readable.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC27">2.2.2 Writing a New Function</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables and calling conventions.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Readline Typedefs"></A>
+<HR SIZE="6">
+<A NAME="SEC26"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.2.1 Readline Typedefs </H3>
+<!--docid::SEC26::-->
+<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><P>
+
+<DL COMPACT>
+<DT><CODE>typedef int rl_command_func_t (int, int);</CODE>
+<DD><P>
+
+<DT><CODE>typedef char *rl_compentry_func_t (const char *, int);</CODE>
+<DD><P>
+
+<DT><CODE>typedef char **rl_completion_func_t (const char *, int, int);</CODE>
+<DD><P>
+
+<DT><CODE>typedef char *rl_quote_func_t (char *, int, char *);</CODE>
+<DD><P>
+
+<DT><CODE>typedef char *rl_dequote_func_t (char *, int);</CODE>
+<DD><P>
+
+<DT><CODE>typedef int rl_compignore_func_t (char **);</CODE>
+<DD><P>
+
+<DT><CODE>typedef void rl_compdisp_func_t (char **, int, int);</CODE>
+<DD><P>
+
+<DT><CODE>typedef int rl_hook_func_t (void);</CODE>
+<DD><P>
+
+<DT><CODE>typedef int rl_getc_func_t (FILE *);</CODE>
+<DD><P>
+
+<DT><CODE>typedef int rl_linebuf_func_t (char *, int);</CODE>
+<DD><P>
+
+<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><P>
+
+<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><P>
+
+</DL>
+<P>
+
+<A NAME="Function Writing"></A>
+<HR SIZE="6">
+<A NAME="SEC27"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC26"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC25"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.2.2 Writing a New Function </H3>
+<!--docid::SEC27::-->
+<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><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre><CODE>int foo (int count, int key)</CODE>
+</pre></td></tr></table></P><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><P>
+
+A command function should return 0 if its action completes successfully,
+and a non-zero value if some error occurs.
+</P><P>
+
+<A NAME="Readline Variables"></A>
+<HR SIZE="6">
+<A NAME="SEC28"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC27"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.3 Readline Variables </H2>
+<!--docid::SEC28::-->
+<P>
+
+These variables are available to function writers.
+</P><P>
+
+<A NAME="IDX177"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_line_buffer</B>
+<DD>This is the line gathered so far. You are welcome to modify the
+contents of the line, but see <A HREF="readline.html#SEC34">2.4.5 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>
+
+<A NAME="IDX178"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_point</B>
+<DD>The offset of the current cursor position in <CODE>rl_line_buffer</CODE>
+(the <EM>point</EM>).
+</DL>
+</P><P>
+
+<A NAME="IDX179"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_end</B>
+<DD>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>
+
+<A NAME="IDX180"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_mark</B>
+<DD>The <VAR>mark</VAR> (saved position) in the current line. If set, the mark
+and point define a <EM>region</EM>.
+</DL>
+</P><P>
+
+<A NAME="IDX181"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_done</B>
+<DD>Setting this to a non-zero value causes Readline to return the current
+line immediately.
+</DL>
+</P><P>
+
+<A NAME="IDX182"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_num_chars_to_read</B>
+<DD>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>
+
+<A NAME="IDX183"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_pending_input</B>
+<DD>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>
+
+<A NAME="IDX184"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_dispatching</B>
+<DD>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>
+
+<A NAME="IDX185"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_erase_empty_line</B>
+<DD>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>
+
+<A NAME="IDX186"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_prompt</B>
+<DD>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">2.4.6 Redisplay</A>) may
+be used to modify the prompt string after calling <CODE>readline()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX187"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_already_prompted</B>
+<DD>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>
+
+<A NAME="IDX188"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_library_version</B>
+<DD>The version number of this revision of the library.
+</DL>
+</P><P>
+
+<A NAME="IDX189"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_readline_version</B>
+<DD>An integer encoding the current version of the library. The encoding is
+of the form 0x<VAR>MMmm</VAR>, where <VAR>MM</VAR> is the two-digit major version
+number, and <VAR>mm</VAR> is the two-digit minor version number.
+For example, for Readline-4.2, <CODE>rl_readline_version</CODE> would have the
+value 0x0402.
+</DL>
+</P><P>
+
+<A NAME="IDX190"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_gnu_readline_p</B>
+<DD>Always set to 1, denoting that this is GNU readline rather than some
+emulation.
+</DL>
+</P><P>
+
+<A NAME="IDX191"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_terminal_name</B>
+<DD>The terminal type, used for initialization. If not set by the application,
+Readline sets this to the value of the <CODE>TERM</CODE> environment variable
+the first time it is called.
+</DL>
+</P><P>
+
+<A NAME="IDX192"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_readline_name</B>
+<DD>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">1.3.2 Conditional Init Constructs</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX193"></A>
+<DL>
+<DT><U>Variable:</U> FILE * <B>rl_instream</B>
+<DD>The stdio stream from which Readline reads input.
+If <CODE>NULL</CODE>, Readline defaults to <VAR>stdin</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX194"></A>
+<DL>
+<DT><U>Variable:</U> FILE * <B>rl_outstream</B>
+<DD>The stdio stream to which Readline performs output.
+If <CODE>NULL</CODE>, Readline defaults to <VAR>stdout</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX195"></A>
+<DL>
+<DT><U>Variable:</U> rl_command_func_t * <B>rl_last_func</B>
+<DD>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>
+
+<A NAME="IDX196"></A>
+<DL>
+<DT><U>Variable:</U> rl_hook_func_t * <B>rl_startup_hook</B>
+<DD>If non-zero, this is the address of a function to call just
+before <CODE>readline</CODE> prints the first prompt.
+</DL>
+</P><P>
+
+<A NAME="IDX197"></A>
+<DL>
+<DT><U>Variable:</U> rl_hook_func_t * <B>rl_pre_input_hook</B>
+<DD>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>
+
+<A NAME="IDX198"></A>
+<DL>
+<DT><U>Variable:</U> rl_hook_func_t * <B>rl_event_hook</B>
+<DD>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>
+
+<A NAME="IDX199"></A>
+<DL>
+<DT><U>Variable:</U> rl_getc_func_t * <B>rl_getc_function</B>
+<DD>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">2.4.8 Character Input</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX200"></A>
+<DL>
+<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_redisplay_function</B>
+<DD>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">2.4.6 Redisplay</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX201"></A>
+<DL>
+<DT><U>Variable:</U> rl_vintfunc_t * <B>rl_prep_term_function</B>
+<DD>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">2.4.9 Terminal Management</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX202"></A>
+<DL>
+<DT><U>Variable:</U> rl_voidfunc_t * <B>rl_deprep_term_function</B>
+<DD>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">2.4.9 Terminal Management</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX203"></A>
+<DL>
+<DT><U>Variable:</U> Keymap <B>rl_executing_keymap</B>
+<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
+currently executing readline function was found.
+</DL>
+</P><P>
+
+<A NAME="IDX204"></A>
+<DL>
+<DT><U>Variable:</U> Keymap <B>rl_binding_keymap</B>
+<DD>This variable is set to the keymap (see section <A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>) in which the
+last key binding occurred.
+</DL>
+</P><P>
+
+<A NAME="IDX205"></A>
+<DL>
+<DT><U>Variable:</U> char * <B>rl_executing_macro</B>
+<DD>This variable is set to the text of any currently-executing macro.
+</DL>
+</P><P>
+
+<A NAME="IDX206"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_readline_state</B>
+<DD>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><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>
+<P>
+
+</DL>
+</P><P>
+
+<A NAME="IDX207"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_explicit_arg</B>
+<DD>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>
+
+<A NAME="IDX208"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_numeric_arg</B>
+<DD>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>
+
+<A NAME="IDX209"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_editing_mode</B>
+<DD>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><P>
+
+<A NAME="Readline Convenience Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC29"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC28"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.4 Readline Convenience Functions </H2>
+<!--docid::SEC29::-->
+<P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to give a function you write a name.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Making keymaps.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Changing Keymaps.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Translate function names to
+ key sequences.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to make your functions undoable.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to control line display.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to modify <CODE>rl_line_buffer</CODE>.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to read keyboard input.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions to manage terminal settings.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Generally useful functions and hooks.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions that don't fall into any category.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Using Readline in a `callback' fashion.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC42">2.4.13 A Readline Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example Readline function.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Function Naming"></A>
+<HR SIZE="6">
+<A NAME="SEC30"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.1 Naming a Function </H3>
+<!--docid::SEC30::-->
+<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><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>Meta-Rubout: backward-kill-word
+</pre></td></tr></table></P><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>
+
+<A NAME="IDX210"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_add_defun</B> <I>(const char *name, rl_command_func_t *function, int key)</I>
+<DD>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><P>
+
+<A NAME="Keymaps"></A>
+<HR SIZE="6">
+<A NAME="SEC31"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC30"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.2 Selecting a Keymap </H3>
+<!--docid::SEC31::-->
+<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>
+
+<A NAME="IDX211"></A>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_make_bare_keymap</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX212"></A>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_copy_keymap</B> <I>(Keymap map)</I>
+<DD>Return a new keymap which is a copy of <VAR>map</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX213"></A>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_make_keymap</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX214"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I>
+<DD>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>
+
+<A NAME="IDX215"></A>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_get_keymap</B> <I>(void)</I>
+<DD>Returns the currently active keymap.
+</DL>
+</P><P>
+
+<A NAME="IDX216"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_set_keymap</B> <I>(Keymap keymap)</I>
+<DD>Makes <VAR>keymap</VAR> the currently active keymap.
+</DL>
+</P><P>
+
+<A NAME="IDX217"></A>
+<DL>
+<DT><U>Function:</U> Keymap <B>rl_get_keymap_by_name</B> <I>(const char *name)</I>
+<DD>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">1.3 Readline Init File</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX218"></A>
+<DL>
+<DT><U>Function:</U> char * <B>rl_get_keymap_name</B> <I>(Keymap keymap)</I>
+<DD>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">1.3 Readline Init File</A>).
+</DL>
+</P><P>
+
+<A NAME="Binding Keys"></A>
+<HR SIZE="6">
+<A NAME="SEC32"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.3 Binding Keys </H3>
+<!--docid::SEC32::-->
+<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">2.3 Readline Variables</A>).
+</P><P>
+
+These functions manage key bindings.
+</P><P>
+
+<A NAME="IDX219"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_key</B> <I>(int key, rl_command_func_t *function)</I>
+<DD>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>
+
+<A NAME="IDX220"></A>
+<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>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>
+
+<A NAME="IDX221"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_key_if_unbound</B> <I>(int key, rl_command_func_t *function)</I>
+<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in the
+currently active keymap.
+Returns non-zero in the case of an invalid <VAR>key</VAR> or if <VAR>key</VAR> is
+already bound.
+</DL>
+</P><P>
+
+<A NAME="IDX222"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_key_if_unbound_in_map</B> <I>(int key, rl_command_func_t *function, Keymap map)</I>
+<DD>Binds <VAR>key</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>.
+Returns non-zero in the case of an invalid <VAR>key</VAR> or if <VAR>key</VAR> is
+already bound.
+</DL>
+</P><P>
+
+<A NAME="IDX223"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_unbind_key</B> <I>(int key)</I>
+<DD>Bind <VAR>key</VAR> to the null function in the currently active keymap.
+Returns non-zero in case of error.
+</DL>
+</P><P>
+
+<A NAME="IDX224"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_unbind_key_in_map</B> <I>(int key, Keymap map)</I>
+<DD>Bind <VAR>key</VAR> to the null function in <VAR>map</VAR>.
+Returns non-zero in case of error.
+</DL>
+</P><P>
+
+<A NAME="IDX225"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_unbind_function_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
+<DD>Unbind all keys that execute <VAR>function</VAR> in <VAR>map</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX226"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_unbind_command_in_map</B> <I>(const char *command, Keymap map)</I>
+<DD>Unbind all keys that are bound to <VAR>command</VAR> in <VAR>map</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX227"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_keyseq</B> <I>(const char *keyseq, rl_command_func_t *function)</I>
+<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
+<VAR>function</VAR>, beginning in the current keymap.
+This makes new keymaps as necessary.
+The return value is non-zero if <VAR>keyseq</VAR> is invalid.
+</DL>
+</P><P>
+
+<A NAME="IDX228"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_keyseq_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
+<DD>Bind the key sequence represented by the string <VAR>keyseq</VAR> to the function
+<VAR>function</VAR>. This makes new keymaps as necessary.
+Initial bindings are performed in <VAR>map</VAR>.
+The return value is non-zero if <VAR>keyseq</VAR> is invalid.
+</DL>
+</P><P>
+
+<A NAME="IDX229"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_key</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
+<DD>Equivalent to <CODE>rl_bind_keyseq_in_map</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX230"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound</B> <I>(const char *keyseq, rl_command_func_t *function)</I>
+<DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in the
+currently active keymap.
+Returns non-zero in the case of an invalid <VAR>keyseq</VAR> or if <VAR>keyseq</VAR> is
+already bound.
+</DL>
+</P><P>
+
+<A NAME="IDX231"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_bind_keyseq_if_unbound_in_map</B> <I>(const char *keyseq, rl_command_func_t *function, Keymap map)</I>
+<DD>Binds <VAR>keyseq</VAR> to <VAR>function</VAR> if it is not already bound in <VAR>map</VAR>.
+Returns non-zero in the case of an invalid <VAR>keyseq</VAR> or if <VAR>keyseq</VAR> is
+already bound.
+</DL>
+</P><P>
+
+<A NAME="IDX232"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_generic_bind</B> <I>(int type, const char *keyseq, char *data, Keymap map)</I>
+<DD>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>
+
+<A NAME="IDX233"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_parse_and_bind</B> <I>(char *line)</I>
+<DD>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">1.3 Readline Init File</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX234"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_read_init_file</B> <I>(const char *filename)</I>
+<DD>Read keybindings and variable assignments from <VAR>filename</VAR>
+(see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+</DL>
+</P><P>
+
+<A NAME="Associating Function Names and Bindings"></A>
+<HR SIZE="6">
+<A NAME="SEC33"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC32"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.4 Associating Function Names and Bindings </H3>
+<!--docid::SEC33::-->
+<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>
+
+<A NAME="IDX235"></A>
+<DL>
+<DT><U>Function:</U> rl_command_func_t * <B>rl_named_function</B> <I>(const char *name)</I>
+<DD>Return the function with name <VAR>name</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX236"></A>
+<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>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>
+
+<A NAME="IDX237"></A>
+<DL>
+<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs</B> <I>(rl_command_func_t *function)</I>
+<DD>Return an array of strings representing the key sequences used to
+invoke <VAR>function</VAR> in the current keymap.
+</DL>
+</P><P>
+
+<A NAME="IDX238"></A>
+<DL>
+<DT><U>Function:</U> char ** <B>rl_invoking_keyseqs_in_map</B> <I>(rl_command_func_t *function, Keymap map)</I>
+<DD>Return an array of strings representing the key sequences used to
+invoke <VAR>function</VAR> in the keymap <VAR>map</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX239"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_function_dumper</B> <I>(int readable)</I>
+<DD>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>
+
+<A NAME="IDX240"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_list_funmap_names</B> <I>(void)</I>
+<DD>Print the names of all bindable Readline functions to <CODE>rl_outstream</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX241"></A>
+<DL>
+<DT><U>Function:</U> const char ** <B>rl_funmap_names</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX242"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_add_funmap_entry</B> <I>(const char *name, rl_command_func_t *function)</I>
+<DD>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><P>
+
+<A NAME="Allowing Undoing"></A>
+<HR SIZE="6">
+<A NAME="SEC34"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC33"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.5 Allowing Undoing </H3>
+<!--docid::SEC34::-->
+<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><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre>enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
+</FONT></pre></td></tr></table></P><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>
+
+<A NAME="IDX243"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_begin_undo_group</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX244"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_end_undo_group</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX245"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_add_undo</B> <I>(enum undo_code what, int start, int end, char *text)</I>
+<DD>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>
+
+<A NAME="IDX246"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_free_undo_list</B> <I>(void)</I>
+<DD>Free the existing undo list.
+</DL>
+</P><P>
+
+<A NAME="IDX247"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_do_undo</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX248"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_modifying</B> <I>(int start, int end)</I>
+<DD>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><P>
+
+<A NAME="Redisplay"></A>
+<HR SIZE="6">
+<A NAME="SEC35"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC34"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.6 Redisplay </H3>
+<!--docid::SEC35::-->
+<P>
+
+<A NAME="IDX249"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_redisplay</B> <I>(void)</I>
+<DD>Change what's displayed on the screen to reflect the current contents
+of <CODE>rl_line_buffer</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX250"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_forced_update_display</B> <I>(void)</I>
+<DD>Force the line to be updated and redisplayed, whether or not
+Readline thinks the screen display is correct.
+</DL>
+</P><P>
+
+<A NAME="IDX251"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_on_new_line</B> <I>(void)</I>
+<DD>Tell the update functions that we have moved onto a new (empty) line,
+usually after ouputting a newline.
+</DL>
+</P><P>
+
+<A NAME="IDX252"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_on_new_line_with_prompt</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX253"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_reset_line_state</B> <I>(void)</I>
+<DD>Reset the display state to a clean state and redisplay the current line
+starting on a new line.
+</DL>
+</P><P>
+
+<A NAME="IDX254"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_crlf</B> <I>(void)</I>
+<DD>Move the cursor to the start of the next screen line.
+</DL>
+</P><P>
+
+<A NAME="IDX255"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_show_char</B> <I>(int c)</I>
+<DD>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>
+
+<A NAME="IDX256"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_message</B> <I>(const char *, <small>...</small>)</I>
+<DD>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>
+
+<A NAME="IDX257"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_clear_message</B> <I>(void)</I>
+<DD>Clear the message in the echo area.
+</DL>
+</P><P>
+
+<A NAME="IDX258"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_save_prompt</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX259"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_restore_prompt</B> <I>(void)</I>
+<DD>Restore the local Readline prompt display state saved by the most
+recent call to <CODE>rl_save_prompt</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX260"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_expand_prompt</B> <I>(char *prompt)</I>
+<DD>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>
+
+<A NAME="IDX261"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_prompt</B> <I>(const char *prompt)</I>
+<DD>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><P>
+
+<A NAME="Modifying Text"></A>
+<HR SIZE="6">
+<A NAME="SEC36"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC35"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.7 Modifying Text </H3>
+<!--docid::SEC36::-->
+<P>
+
+<A NAME="IDX262"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_insert_text</B> <I>(const char *text)</I>
+<DD>Insert <VAR>text</VAR> into the line at the current cursor position.
+Returns the number of characters inserted.
+</DL>
+</P><P>
+
+<A NAME="IDX263"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_delete_text</B> <I>(int start, int end)</I>
+<DD>Delete the text between <VAR>start</VAR> and <VAR>end</VAR> in the current line.
+Returns the number of characters deleted.
+</DL>
+</P><P>
+
+<A NAME="IDX264"></A>
+<DL>
+<DT><U>Function:</U> char * <B>rl_copy_text</B> <I>(int start, int end)</I>
+<DD>Return a copy of the text between <VAR>start</VAR> and <VAR>end</VAR> in
+the current line.
+</DL>
+</P><P>
+
+<A NAME="IDX265"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_kill_text</B> <I>(int start, int end)</I>
+<DD>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>
+
+<A NAME="IDX266"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_push_macro_input</B> <I>(char *macro)</I>
+<DD>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><P>
+
+<A NAME="Character Input"></A>
+<HR SIZE="6">
+<A NAME="SEC37"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC36"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.8 Character Input </H3>
+<!--docid::SEC37::-->
+<P>
+
+<A NAME="IDX267"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_read_key</B> <I>(void)</I>
+<DD>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">2.3 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>
+
+<A NAME="IDX268"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_getc</B> <I>(FILE *stream)</I>
+<DD>Return the next character available from <VAR>stream</VAR>, which is assumed to
+be the keyboard.
+</DL>
+</P><P>
+
+<A NAME="IDX269"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_stuff_char</B> <I>(int c)</I>
+<DD>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>. Up to 512 characters may be pushed back.
+<CODE>rl_stuff_char</CODE> returns 1 if the character was successfully inserted;
+0 otherwise.
+</DL>
+</P><P>
+
+<A NAME="IDX270"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_execute_next</B> <I>(int c)</I>
+<DD>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>
+
+<A NAME="IDX271"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_clear_pending_input</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX272"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_keyboard_input_timeout</B> <I>(int u)</I>
+<DD>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><P>
+
+<A NAME="Terminal Management"></A>
+<HR SIZE="6">
+<A NAME="SEC38"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC37"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.9 Terminal Management </H3>
+<!--docid::SEC38::-->
+<P>
+
+<A NAME="IDX273"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_prep_terminal</B> <I>(int meta_flag)</I>
+<DD>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>
+
+<A NAME="IDX274"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_deprep_terminal</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX275"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_tty_set_default_bindings</B> <I>(Keymap kmap)</I>
+<DD>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>
+
+<A NAME="IDX276"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_tty_unset_default_bindings</B> <I>(Keymap kmap)</I>
+<DD>Reset the bindings manipulated by <CODE>rl_tty_set_default_bindings</CODE> so
+that the terminal editing characters are bound to <CODE>rl_insert</CODE>.
+The bindings are performed in <VAR>kmap</VAR>.
+</DL>
+</P><P>
+
+<A NAME="IDX277"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_reset_terminal</B> <I>(const char *terminal_name)</I>
+<DD>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><P>
+
+<A NAME="Utility Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC39"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC38"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.10 Utility Functions </H3>
+<!--docid::SEC39::-->
+<P>
+
+<A NAME="IDX278"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_replace_line</B> <I>(const char *text, int clear_undo)</I>
+<DD>Replace the contents of <CODE>rl_line_buffer</CODE> with <VAR>text</VAR>.
+The point and mark are preserved, if possible.
+If <VAR>clear_undo</VAR> is non-zero, the undo list associated with the
+current line is cleared.
+</DL>
+</P><P>
+
+<A NAME="IDX279"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_extend_line_buffer</B> <I>(int len)</I>
+<DD>Ensure that <CODE>rl_line_buffer</CODE> has enough space to hold <VAR>len</VAR>
+characters, possibly reallocating it if necessary.
+</DL>
+</P><P>
+
+<A NAME="IDX280"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_initialize</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX281"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_ding</B> <I>(void)</I>
+<DD>Ring the terminal bell, obeying the setting of <CODE>bell-style</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX282"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_alphabetic</B> <I>(int c)</I>
+<DD>Return 1 if <VAR>c</VAR> is an alphabetic character.
+</DL>
+</P><P>
+
+<A NAME="IDX283"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_display_match_list</B> <I>(char **matches, int len, int max)</I>
+<DD>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">1.3.1 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>
+
+<A NAME="IDX284"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_uppercase_p</B> <I>(int c)</I>
+<DD>Return 1 if <VAR>c</VAR> is an uppercase alphabetic character.
+</DL>
+</P><P>
+
+<A NAME="IDX285"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_lowercase_p</B> <I>(int c)</I>
+<DD>Return 1 if <VAR>c</VAR> is a lowercase alphabetic character.
+</DL>
+</P><P>
+
+<A NAME="IDX286"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_digit_p</B> <I>(int c)</I>
+<DD>Return 1 if <VAR>c</VAR> is a numeric character.
+</DL>
+</P><P>
+
+<A NAME="IDX287"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_to_upper</B> <I>(int c)</I>
+<DD>If <VAR>c</VAR> is a lowercase alphabetic character, return the corresponding
+uppercase character.
+</DL>
+</P><P>
+
+<A NAME="IDX288"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_to_lower</B> <I>(int c)</I>
+<DD>If <VAR>c</VAR> is an uppercase alphabetic character, return the corresponding
+lowercase character.
+</DL>
+</P><P>
+
+<A NAME="IDX289"></A>
+<DL>
+<DT><U>Function:</U> int <B>_rl_digit_value</B> <I>(int c)</I>
+<DD>If <VAR>c</VAR> is a number, return the value it represents.
+</DL>
+</P><P>
+
+<A NAME="Miscellaneous Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC40"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC39"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.11 Miscellaneous Functions </H3>
+<!--docid::SEC40::-->
+<P>
+
+<A NAME="IDX290"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_macro_bind</B> <I>(const char *keyseq, const char *macro, Keymap map)</I>
+<DD>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>
+
+<A NAME="IDX291"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_macro_dumper</B> <I>(int readable)</I>
+<DD>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>
+
+<A NAME="IDX292"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_variable_bind</B> <I>(const char *variable, const char *value)</I>
+<DD>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">1.3.1 Readline Init File Syntax</A>).
+</DL>
+</P><P>
+
+<A NAME="IDX293"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_variable_dumper</B> <I>(int readable)</I>
+<DD>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>
+
+<A NAME="IDX294"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_paren_blink_timeout</B> <I>(int u)</I>
+<DD>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><P>
+
+<A NAME="IDX295"></A>
+<DL>
+<DT><U>Function:</U> char * <B>rl_get_termcap</B> <I>(const char *cap)</I>
+<DD>Retrieve the string value of the termcap capability <VAR>cap</VAR>.
+Readline fetches the termcap entry for the current terminal name and
+uses those capabilities to move around the screen line and perform other
+terminal-specific operations, like erasing a line. Readline does not
+use all of a terminal's capabilities, and this function will return
+values for only those capabilities Readline uses.
+</DL>
+</P><P>
+
+<A NAME="Alternate Interface"></A>
+<HR SIZE="6">
+<A NAME="SEC41"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC40"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.12 Alternate Interface </H3>
+<!--docid::SEC41::-->
+<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>
+
+<A NAME="IDX296"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_callback_handler_install</B> <I>(const char *prompt, rl_vcpfunc_t *lhandler)</I>
+<DD>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>
+
+<A NAME="IDX297"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_callback_read_char</B> <I>(void)</I>
+<DD>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.
+Before calling the <VAR>lhandler</VAR> function, the terminal settings are
+reset to the values they had before calling
+<CODE>rl_callback_handler_install</CODE>.
+If the <VAR>lhandler</VAR> function returns,
+the terminal settings are modified for Readline's use again.
+<CODE>EOF</CODE> is indicated by calling <VAR>lhandler</VAR> with a
+<CODE>NULL</CODE> line.
+</DL>
+</P><P>
+
+<A NAME="IDX298"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_callback_handler_remove</B> <I>(void)</I>
+<DD>Restore the terminal to its initial state and remove the line handler.
+This may be called from within a callback as well as independently.
+If the <VAR>lhandler</VAR> installed by <CODE>rl_callback_handler_install</CODE>
+does not exit the program, either this function or the function referred
+to by the value of <CODE>rl_deprep_term_function</CODE> should be called before
+the program exits to reset the terminal settings.
+</DL>
+</P><P>
+
+<A NAME="A Readline Example"></A>
+<HR SIZE="6">
+<A NAME="SEC42"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC41"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC31"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC29"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.4.13 A Readline Example </H3>
+<!--docid::SEC42::-->
+<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><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><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 &#62;= rl_end)
+ return (0);
+
+ if (count &#60; 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 &#62; rl_end)
+ end = rl_end;
+ else if (end &#60; 0)
+ end = 0;
+
+ if (start == end)
+ return (0);
+
+ if (start &#62; 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></td></tr></table></P><P>
+
+<A NAME="Readline Signal Handling"></A>
+<HR SIZE="6">
+<A NAME="SEC43"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC42"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.5 Readline Signal Handling </H2>
+<!--docid::SEC43::-->
+<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>
+
+<A NAME="IDX299"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_catch_signals</B>
+<DD>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>
+
+<A NAME="IDX300"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_catch_sigwinch</B>
+<DD>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>
+
+<A NAME="IDX301"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_cleanup_after_signal</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX302"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_free_line_state</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX303"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_reset_after_signal</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX304"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_resize_terminal</B> <I>(void)</I>
+<DD>Update Readline's internal screen size by reading values from the kernel.
+</DL>
+</P><P>
+
+<A NAME="IDX305"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_set_screen_size</B> <I>(int rows, int cols)</I>
+<DD>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>
+
+<A NAME="IDX306"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_get_screen_size</B> <I>(int *rows, int *cols)</I>
+<DD>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>
+
+<A NAME="IDX307"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_signals</B> <I>(void)</I>
+<DD>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>
+
+<A NAME="IDX308"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_clear_signals</B> <I>(void)</I>
+<DD>Remove all of the Readline signal handlers installed by
+<CODE>rl_set_signals()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="Custom Completers"></A>
+<HR SIZE="6">
+<A NAME="SEC44"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC43"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 2.6 Custom Completers </H2>
+<!--docid::SEC44::-->
+<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><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC45">2.6.1 How Completing Works</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The logic used to do completion.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC46">2.6.2 Completion Functions</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Functions provided by Readline.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC47">2.6.3 Completion Variables</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Variables which control completion.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC48">2.6.4 A Short Completion Example</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example of writing completer subroutines.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="How Completing Works"></A>
+<HR SIZE="6">
+<A NAME="SEC45"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.6.1 How Completing Works </H3>
+<!--docid::SEC45::-->
+<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><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.
+<P>
+
+<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>.
+<P>
+
+<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.
+Such a generator function is referred to as an
+<EM>application-specific completion function</EM>.
+<P>
+
+</OL>
+<P>
+
+<A NAME="IDX309"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
+<DD>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>
+
+<A NAME="IDX310"></A>
+<DL>
+<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
+<DD>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.
+An <EM>application-specific completion function</EM> is a function whose
+address is assigned to <CODE>rl_completion_entry_function</CODE> and whose
+return values are used to generate possible completions.
+</DL>
+</P><P>
+
+<A NAME="Completion Functions"></A>
+<HR SIZE="6">
+<A NAME="SEC46"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC45"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.6.2 Completion Functions </H3>
+<!--docid::SEC46::-->
+<P>
+
+Here is the complete list of callable completion functions present in
+Readline.
+</P><P>
+
+<A NAME="IDX311"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_complete_internal</B> <I>(int what_to_do)</I>
+<DD>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. <SAMP>`@'</SAMP> is similar to <SAMP>`!'</SAMP>, but
+possible completions are not listed if the possible completions share
+a common prefix.
+</DL>
+</P><P>
+
+<A NAME="IDX312"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_complete</B> <I>(int ignore, int invoking_key)</I>
+<DD>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>
+
+<A NAME="IDX313"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_possible_completions</B> <I>(int count, int invoking_key)</I>
+<DD>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>
+
+<A NAME="IDX314"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_insert_completions</B> <I>(int count, int invoking_key)</I>
+<DD>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>
+
+<A NAME="IDX315"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_completion_mode</B> <I>(rl_command_func_t *cfunc)</I>
+<DD>Returns the apppriate value to pass to <CODE>rl_complete_internal()</CODE>
+depending on whether <VAR>cfunc</VAR> was called twice in succession and
+the values of the <CODE>show-all-if-ambiguous</CODE> and
+<CODE>show-all-if-unmodified</CODE> variables.
+Application-specific completion functions may use this function to present
+the same interface as <CODE>rl_complete()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX316"></A>
+<DL>
+<DT><U>Function:</U> char ** <B>rl_completion_matches</B> <I>(const char *text, rl_compentry_func_t *entry_func)</I>
+<DD>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>
+
+<A NAME="IDX317"></A>
+<DL>
+<DT><U>Function:</U> char * <B>rl_filename_completion_function</B> <I>(const char *text, int state)</I>
+<DD>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 application-specific
+completion functions (the Bash completion functions call this and other
+Readline functions).
+</DL>
+</P><P>
+
+<A NAME="IDX318"></A>
+<DL>
+<DT><U>Function:</U> char * <B>rl_username_completion_function</B> <I>(const char *text, int state)</I>
+<DD>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><P>
+
+<A NAME="Completion Variables"></A>
+<HR SIZE="6">
+<A NAME="SEC47"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC46"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.6.3 Completion Variables </H3>
+<!--docid::SEC47::-->
+<P>
+
+<A NAME="IDX319"></A>
+<DL>
+<DT><U>Variable:</U> rl_compentry_func_t * <B>rl_completion_entry_function</B>
+<DD>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>
+
+<A NAME="IDX320"></A>
+<DL>
+<DT><U>Variable:</U> rl_completion_func_t * <B>rl_attempted_completion_function</B>
+<DD>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>
+
+<A NAME="IDX321"></A>
+<DL>
+<DT><U>Variable:</U> rl_quote_func_t * <B>rl_filename_quoting_function</B>
+<DD>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>
+
+<A NAME="IDX322"></A>
+<DL>
+<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_dequoting_function</B>
+<DD>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>
+
+<A NAME="IDX323"></A>
+<DL>
+<DT><U>Variable:</U> rl_linebuf_func_t * <B>rl_char_is_quoted_p</B>
+<DD>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>
+
+<A NAME="IDX324"></A>
+<DL>
+<DT><U>Variable:</U> rl_compignore_func_t * <B>rl_ignore_some_completions_function</B>
+<DD>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>
+
+<A NAME="IDX325"></A>
+<DL>
+<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_completion_hook</B>
+<DD>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>
+
+<A NAME="IDX326"></A>
+<DL>
+<DT><U>Variable:</U> rl_compdisp_func_t * <B>rl_completion_display_matches_hook</B>
+<DD>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><P>
+
+<A NAME="IDX327"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_basic_word_break_characters</B>
+<DD>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\"\\'`@$>&#60;=;|&#38;{("</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX328"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_basic_quote_characters</B>
+<DD>A list of quote characters which can cause a word break.
+</DL>
+</P><P>
+
+<A NAME="IDX329"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_completer_word_break_characters</B>
+<DD>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>
+
+<A NAME="IDX330"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_completer_quote_characters</B>
+<DD>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>
+
+<A NAME="IDX331"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_filename_quote_characters</B>
+<DD>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>
+
+<A NAME="IDX332"></A>
+<DL>
+<DT><U>Variable:</U> const char * <B>rl_special_prefixes</B>
+<DD>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>
+
+<A NAME="IDX333"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_query_items</B>
+<DD>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>
+
+<A NAME="IDX334"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_append_character</B>
+<DD>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 application-specific completion functions to
+provide the "most sensible word separator character" according to
+an application-specific command line syntax specification.
+</DL>
+</P><P>
+
+<A NAME="IDX335"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_suppress_append</B>
+<DD>If non-zero, <VAR>rl_completion_append_character</VAR> is not appended to
+matches at the end of the command line, as described above. It is
+set to 0 before any application-specific completion function is called,
+and may only be changed within such a function.
+</DL>
+</P><P>
+
+<A NAME="IDX336"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_mark_symlink_dirs</B>
+<DD>If non-zero, a slash will be appended to completed filenames that are
+symbolic links to directory names, subject to the value of the
+user-settable <VAR>mark-directories</VAR> variable.
+This variable exists so that application-specific completion functions
+can override the user's global preference (set via the
+<VAR>mark-symlinked-directories</VAR> Readline variable) if appropriate.
+This variable is set to the user's preference before any
+application-specific completion function is called, so unless that
+function modifies the value, the user's preferences are honored.
+</DL>
+</P><P>
+
+<A NAME="IDX337"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B>
+<DD>If non-zero, then duplicates in the matches are removed.
+The default is 1.
+</DL>
+</P><P>
+
+<A NAME="IDX338"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_filename_completion_desired</B>
+<DD>Non-zero means that the results of the matches are to be treated as
+filenames. This is <EM>always</EM> zero when completion is attempted,
+and can only be changed
+within an application-specific completion function. If it is set to a
+non-zero value by such a function, 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>
+
+<A NAME="IDX339"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_filename_quoting_desired</B>
+<DD>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
+when completion is attempted, and can only be changed within an
+application-specific completion function.
+The quoting is effected via a call to the function pointed to
+by <CODE>rl_filename_quoting_function</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX340"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_attempted_completion_over</B>
+<DD>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>
+
+<A NAME="IDX341"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_completion_type</B>
+<DD>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">2.6.2 Completion Functions</A>) for the list of characters.
+This is set to the appropriate value before any application-specific
+completion function is called, allowing such functions to present
+the same interface as <CODE>rl_complete()</CODE>.
+</DL>
+</P><P>
+
+<A NAME="IDX342"></A>
+<DL>
+<DT><U>Variable:</U> int <B>rl_inhibit_completion</B>
+<DD>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>
+
+<A NAME="A Short Completion Example"></A>
+<HR SIZE="6">
+<A NAME="SEC48"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC47"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC44"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 2.6.4 A Short Completion Example </H3>
+<!--docid::SEC48::-->
+<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><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><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 &#60;stdio.h&#62;
+#include &#60;sys/types.h&#62;
+#include &#60;sys/file.h&#62;
+#include &#60;sys/stat.h&#62;
+#include &#60;sys/errno.h&#62;
+
+#include &#60;readline/readline.h&#62;
+#include &#60;readline/history.h&#62;
+
+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] &#38;&#38; whitespace (line[i]))
+ i++;
+ word = line + i;
+
+ while (line[i] &#38;&#38; !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-&#62;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 (&#38;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 &#62; s &#38;&#38; 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, &#38;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 (&#38;finfo.st_ctime));
+ printf (" Last access at: %s", ctime (&#38;finfo.st_atime));
+ printf (" Last modified at: %s", ctime (&#38;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.\n"
+ caller);
+ fprintf (stderr, "Write it yourself.\n");
+}
+
+/* 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);
+}
+</FONT></pre></td></tr></table></P><P>
+
+<A NAME="Copying This Manual"></A>
+<HR SIZE="6">
+<A NAME="SEC49"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC48"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC23"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> A. Copying This Manual </H1>
+<!--docid::SEC49::-->
+<P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="readline.html#SEC50">A.1 GNU Free Documentation License</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="GNU Free Documentation License"></A>
+<HR SIZE="6">
+<A NAME="SEC50"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC51"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> A.1 GNU Free Documentation License </H2>
+<!--docid::SEC50::-->
+<P>
+
+<A NAME="IDX343"></A>
+<center>
+ Version 1.2, November 2002
+</center>
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</pre></td></tr></table></P><P>
+
+<OL>
+<LI>
+PREAMBLE
+<P>
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document <EM>free</EM> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+</P><P>
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+</P><P>
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+</P><P>
+
+<LI>
+APPLICABILITY AND DEFINITIONS
+<P>
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+</P><P>
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+</P><P>
+
+A "Secondary Section" is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+</P><P>
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+</P><P>
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+</P><P>
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+</P><P>
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input
+format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available
+<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification. Examples
+of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and
+<FONT SIZE="-1">JPG</FONT>. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or
+<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are
+not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for
+output purposes only.
+</P><P>
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+</P><P>
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+</P><P>
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+</P><P>
+
+<LI>
+VERBATIM COPYING
+<P>
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+</P><P>
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+</P><P>
+
+<LI>
+COPYING IN QUANTITY
+<P>
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+</P><P>
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</P><P>
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+</P><P>
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+</P><P>
+
+<LI>
+MODIFICATIONS
+<P>
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+</P><P>
+
+<OL>
+<LI>
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+<P>
+
+<LI>
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+<P>
+
+<LI>
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+<P>
+
+<LI>
+Preserve all the copyright notices of the Document.
+<P>
+
+<LI>
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+<P>
+
+<LI>
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+<P>
+
+<LI>
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+<P>
+
+<LI>
+Include an unaltered copy of this License.
+<P>
+
+<LI>
+Preserve the section Entitled "History", Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled "History" in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+<P>
+
+<LI>
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the "History" section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+<P>
+
+<LI>
+For any section Entitled "Acknowledgements" or "Dedications", Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+<P>
+
+<LI>
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+<P>
+
+<LI>
+Delete any section Entitled "Endorsements". Such a section
+may not be included in the Modified Version.
+<P>
+
+<LI>
+Do not retitle any existing section to be Entitled "Endorsements" or
+to conflict in title with any Invariant Section.
+<P>
+
+<LI>
+Preserve any Warranty Disclaimers.
+</OL>
+<P>
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+</P><P>
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+</P><P>
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+</P><P>
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+</P><P>
+
+<LI>
+COMBINING DOCUMENTS
+<P>
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+</P><P>
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+</P><P>
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all
+sections Entitled "Endorsements."
+</P><P>
+
+<LI>
+COLLECTIONS OF DOCUMENTS
+<P>
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+</P><P>
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</P><P>
+
+<LI>
+AGGREGATION WITH INDEPENDENT WORKS
+<P>
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+</P><P>
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</P><P>
+
+<LI>
+TRANSLATION
+<P>
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+</P><P>
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+</P><P>
+
+<LI>
+TERMINATION
+<P>
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+</P><P>
+
+<LI>
+FUTURE REVISIONS OF THIS LICENSE
+<P>
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>.
+</P><P>
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+</OL>
+<P>
+
+<HR SIZE="6">
+<A NAME="SEC51"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC49"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC50"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> A.1.1 ADDENDUM: How to use this License for your documents </H3>
+<!--docid::SEC51::-->
+<P>
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> with the Invariant Sections being <VAR>list their titles</VAR>, with
+ the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts
+ being <VAR>list</VAR>.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+</P><P>
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</P><P>
+
+<A NAME="Concept Index"></A>
+<HR SIZE="6">
+<A NAME="SEC52"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC51"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC53"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> Concept Index </H1>
+<!--docid::SEC52::-->
+<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#cp_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
+ &nbsp;
+</td></tr></table><br><P></P>
+<TABLE border=0>
+<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC44">application-specific completion functions</A></TD><TD valign=top><A HREF="rlman.html#SEC44">2.6 Custom Completers</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">command editing</A></TD><TD valign=top><A HREF="rlman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">editing command lines</A></TD><TD valign=top><A HREF="rlman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_F"></A>F</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX343">FDL, GNU Free Documentation License</A></TD><TD valign=top><A HREF="rlman.html#SEC50">A.1 GNU Free Documentation License</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC9">initialization file, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC9">1.3 Readline Init File</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC3">interaction, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC3">1.2 Readline Interaction</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_K"></A>K</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX3">kill ring</A></TD><TD valign=top><A HREF="rlman.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX1">killing text</A></TD><TD valign=top><A HREF="rlman.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_N"></A>N</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">notation, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176">readline, function</A></TD><TD valign=top><A HREF="rlman.html#SEC24">2.1 Basic Behavior</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX4">variables, readline</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="cp_Y"></A>Y</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX2">yanking text</A></TD><TD valign=top><A HREF="rlman.html#SEC6">1.2.3 Readline Killing Commands</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#cp_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_I" style="text-decoration:none"><b>I</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_K" style="text-decoration:none"><b>K</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_V" style="text-decoration:none"><b>V</b></A>
+ &nbsp;
+<A HREF="readline.html#cp_Y" style="text-decoration:none"><b>Y</b></A>
+ &nbsp;
+</td></tr></table><br><P>
+
+<A NAME="Function and Variable Index"></A>
+<HR SIZE="6">
+<A NAME="SEC53"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> Function and Variable Index </H1>
+<!--docid::SEC53::-->
+<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
+ &nbsp;
+<BR>
+<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
+ &nbsp;
+</td></tr></table><br><P></P>
+<TABLE border=0>
+<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn__"></A>_</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_A"></A>A</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX43"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX44"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_B"></A>B</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX33"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX34"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX71"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX72"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX95"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX96"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX103"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX104"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX37"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX38"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX49"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX50"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX27"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX28"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX5">bell-style</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_C"></A>C</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX39"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX40"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX6">comment-begin</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX7">completion-query-items</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX8">convert-meta</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_D"></A>D</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX70"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, &#60;small&#62;...&#60;/small&#62; <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX9">disable-completion</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_E"></A>E</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX10">editing-mode</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX11">enable-keypad</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX51"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX52"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX29"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX30"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX12">expand-tilde</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_F"></A>F</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX73"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX74"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX31"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX32"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX55"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX56"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX35"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX36"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_H"></A>H</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX13">history-preserve-point</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX63"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX64"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX61"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX62"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX14">horizontal-scroll-mode</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_I"></A>I</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX15">input-meta</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX17">isearch-terminators</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_K"></A>K</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX18">keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX93"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX99"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX101"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX102"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_M"></A>M</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX19">mark-modified-lines</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX20">mark-symlinked-directories</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX21">match-hidden-files</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX16">meta-flag</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_N"></A>N</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX47"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX48"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX59"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX60"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX57"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX58"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_O"></A>O</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX22">output-meta</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX91"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX92"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_P"></A>P</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX23">page-completions</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX45"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX46"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_Q"></A>Q</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX75"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX76"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_R"></A>R</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC24">2.1 Basic Behavior</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX41"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX42"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX53"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX54"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187">rl_already_prompted</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX340">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221"><CODE>rl_bind_key_if_unbound</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222"><CODE>rl_bind_key_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227"><CODE>rl_bind_keyseq</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230"><CODE>rl_bind_keyseq_if_unbound</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231"><CODE>rl_bind_keyseq_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228"><CODE>rl_bind_keyseq_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204">rl_binding_keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299">rl_catch_signals</A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334">rl_completion_append_character</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310">rl_completion_entry_function</A></TD><TD valign=top><A HREF="rlman.html#SEC45">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319">rl_completion_entry_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX336">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX333">rl_completion_query_items</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX335">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX341">rl_completion_type</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202">rl_deprep_term_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184">rl_dispatching</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181">rl_done</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209">rl_editing_mode</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179">rl_end</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185">rl_erase_empty_line</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198">rl_event_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203">rl_executing_keymap</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205">rl_executing_macro</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207">rl_explicit_arg</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX338">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX339">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199">rl_getc_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX337">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX342">rl_inhibit_completion</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193">rl_instream</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195">rl_last_func</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188">rl_library_version</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177">rl_line_buffer</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180">rl_mark</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208">rl_numeric_arg</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194">rl_outstream</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183">rl_pending_input</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178">rl_point</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197">rl_pre_input_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201">rl_prep_term_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186">rl_prompt</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192">rl_readline_name</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206">rl_readline_state</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189">rl_readline_version</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200">rl_redisplay_function</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC43">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332">rl_special_prefixes</A></TD><TD valign=top><A HREF="rlman.html#SEC47">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196">rl_startup_hook</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191">rl_terminal_name</A></TD><TD valign=top><A HREF="rlman.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>rl_tty_unset_default_bindings</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC46">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_S"></A>S</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX24">show-all-if-ambiguous</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX25">show-all-if-unmodified</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_T"></A>T</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_U"></A>U</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX97"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX106"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX85"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_V"></A>V</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX26">visible-stats</A></TD><TD valign=top><A HREF="rlman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+<TR><TH><A NAME="fn_Y"></A>Y</TH><TD></TD><TD></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX68"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX65"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX66"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="rlman.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD COLSPAN=3> <HR></TD></TR>
+</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="readline.html#fn__" style="text-decoration:none"><b>_</b></A>
+ &nbsp;
+<BR>
+<A HREF="readline.html#fn_A" style="text-decoration:none"><b>A</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_B" style="text-decoration:none"><b>B</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_C" style="text-decoration:none"><b>C</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_D" style="text-decoration:none"><b>D</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_E" style="text-decoration:none"><b>E</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_F" style="text-decoration:none"><b>F</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_H" style="text-decoration:none"><b>H</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_I" style="text-decoration:none"><b>I</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_K" style="text-decoration:none"><b>K</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_M" style="text-decoration:none"><b>M</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_N" style="text-decoration:none"><b>N</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_O" style="text-decoration:none"><b>O</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_P" style="text-decoration:none"><b>P</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_Q" style="text-decoration:none"><b>Q</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_R" style="text-decoration:none"><b>R</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_S" style="text-decoration:none"><b>S</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_T" style="text-decoration:none"><b>T</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_U" style="text-decoration:none"><b>U</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_V" style="text-decoration:none"><b>V</b></A>
+ &nbsp;
+<A HREF="readline.html#fn_Y" style="text-decoration:none"><b>Y</b></A>
+ &nbsp;
+</td></tr></table><br><P>
+
+<HR SIZE="6">
+<A NAME="SEC_Contents"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Table of Contents</H1>
+<UL>
+<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A>
+<BR>
+<UL>
+<A NAME="TOC2" HREF="readline.html#SEC2">1.1 Introduction to Line Editing</A>
+<BR>
+<A NAME="TOC3" HREF="readline.html#SEC3">1.2 Readline Interaction</A>
+<BR>
+<UL>
+<A NAME="TOC4" HREF="readline.html#SEC4">1.2.1 Readline Bare Essentials</A>
+<BR>
+<A NAME="TOC5" HREF="readline.html#SEC5">1.2.2 Readline Movement Commands</A>
+<BR>
+<A NAME="TOC6" HREF="readline.html#SEC6">1.2.3 Readline Killing Commands</A>
+<BR>
+<A NAME="TOC7" HREF="readline.html#SEC7">1.2.4 Readline Arguments</A>
+<BR>
+<A NAME="TOC8" HREF="readline.html#SEC8">1.2.5 Searching for Commands in the History</A>
+<BR>
+</UL>
+<A NAME="TOC9" HREF="readline.html#SEC9">1.3 Readline Init File</A>
+<BR>
+<UL>
+<A NAME="TOC10" HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A>
+<BR>
+<A NAME="TOC11" HREF="readline.html#SEC11">1.3.2 Conditional Init Constructs</A>
+<BR>
+<A NAME="TOC12" HREF="readline.html#SEC12">1.3.3 Sample Init File</A>
+<BR>
+</UL>
+<A NAME="TOC13" HREF="readline.html#SEC13">1.4 Bindable Readline Commands</A>
+<BR>
+<UL>
+<A NAME="TOC14" HREF="readline.html#SEC14">1.4.1 Commands For Moving</A>
+<BR>
+<A NAME="TOC15" HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A>
+<BR>
+<A NAME="TOC16" HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A>
+<BR>
+<A NAME="TOC17" HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A>
+<BR>
+<A NAME="TOC18" HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A>
+<BR>
+<A NAME="TOC19" HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A>
+<BR>
+<A NAME="TOC20" HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A>
+<BR>
+<A NAME="TOC21" HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A>
+<BR>
+</UL>
+<A NAME="TOC22" HREF="readline.html#SEC22">1.5 Readline vi Mode</A>
+<BR>
+</UL>
+<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A>
+<BR>
+<UL>
+<A NAME="TOC24" HREF="readline.html#SEC24">2.1 Basic Behavior</A>
+<BR>
+<A NAME="TOC25" HREF="readline.html#SEC25">2.2 Custom Functions</A>
+<BR>
+<UL>
+<A NAME="TOC26" HREF="readline.html#SEC26">2.2.1 Readline Typedefs</A>
+<BR>
+<A NAME="TOC27" HREF="readline.html#SEC27">2.2.2 Writing a New Function</A>
+<BR>
+</UL>
+<A NAME="TOC28" HREF="readline.html#SEC28">2.3 Readline Variables</A>
+<BR>
+<A NAME="TOC29" HREF="readline.html#SEC29">2.4 Readline Convenience Functions</A>
+<BR>
+<UL>
+<A NAME="TOC30" HREF="readline.html#SEC30">2.4.1 Naming a Function</A>
+<BR>
+<A NAME="TOC31" HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A>
+<BR>
+<A NAME="TOC32" HREF="readline.html#SEC32">2.4.3 Binding Keys</A>
+<BR>
+<A NAME="TOC33" HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A>
+<BR>
+<A NAME="TOC34" HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A>
+<BR>
+<A NAME="TOC35" HREF="readline.html#SEC35">2.4.6 Redisplay</A>
+<BR>
+<A NAME="TOC36" HREF="readline.html#SEC36">2.4.7 Modifying Text</A>
+<BR>
+<A NAME="TOC37" HREF="readline.html#SEC37">2.4.8 Character Input</A>
+<BR>
+<A NAME="TOC38" HREF="readline.html#SEC38">2.4.9 Terminal Management</A>
+<BR>
+<A NAME="TOC39" HREF="readline.html#SEC39">2.4.10 Utility Functions</A>
+<BR>
+<A NAME="TOC40" HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A>
+<BR>
+<A NAME="TOC41" HREF="readline.html#SEC41">2.4.12 Alternate Interface</A>
+<BR>
+<A NAME="TOC42" HREF="readline.html#SEC42">2.4.13 A Readline Example</A>
+<BR>
+</UL>
+<A NAME="TOC43" HREF="readline.html#SEC43">2.5 Readline Signal Handling</A>
+<BR>
+<A NAME="TOC44" HREF="readline.html#SEC44">2.6 Custom Completers</A>
+<BR>
+<UL>
+<A NAME="TOC45" HREF="readline.html#SEC45">2.6.1 How Completing Works</A>
+<BR>
+<A NAME="TOC46" HREF="readline.html#SEC46">2.6.2 Completion Functions</A>
+<BR>
+<A NAME="TOC47" HREF="readline.html#SEC47">2.6.3 Completion Variables</A>
+<BR>
+<A NAME="TOC48" HREF="readline.html#SEC48">2.6.4 A Short Completion Example</A>
+<BR>
+</UL>
+</UL>
+<A NAME="TOC49" HREF="readline.html#SEC49">A. Copying This Manual</A>
+<BR>
+<UL>
+<A NAME="TOC50" HREF="readline.html#SEC50">A.1 GNU Free Documentation License</A>
+<BR>
+<UL>
+<A NAME="TOC51" HREF="readline.html#SEC51">A.1.1 ADDENDUM: How to use this License for your documents</A>
+<BR>
+</UL>
+</UL>
+<A NAME="TOC52" HREF="readline.html#SEC52">Concept Index</A>
+<BR>
+<A NAME="TOC53" HREF="readline.html#SEC53">Function and Variable Index</A>
+<BR>
+</UL>
+<HR SIZE=1>
+<A NAME="SEC_OVERVIEW"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Short Table of Contents</H1>
+<BLOCKQUOTE>
+<A NAME="TOC1" HREF="readline.html#SEC1">1. Command Line Editing</A>
+<BR>
+<A NAME="TOC23" HREF="readline.html#SEC23">2. Programming with GNU Readline</A>
+<BR>
+<A NAME="TOC49" HREF="readline.html#SEC49">A. Copying This Manual</A>
+<BR>
+<A NAME="TOC52" HREF="readline.html#SEC52">Concept Index</A>
+<BR>
+<A NAME="TOC53" HREF="readline.html#SEC53">Function and Variable Index</A>
+<BR>
+
+</BLOCKQUOTE>
+<HR SIZE=1>
+<A NAME="SEC_About"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC52">Index</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="readline.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>About this document</H1>
+This document was generated by <I>Chet Ramey</I> on <I>September, 22 2003</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+<P></P>
+The buttons in the navigation panels have the following meaning:
+<P></P>
+<table border = "1">
+<TR>
+<TH> Button </TH>
+<TH> Name </TH>
+<TH> Go to </TH>
+<TH> From 1.2.3 go to</TH>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt; ] </TD>
+<TD ALIGN="CENTER">
+Back
+</TD>
+<TD>
+previous section in reading order
+</TD>
+<TD>
+1.2.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt; ] </TD>
+<TD ALIGN="CENTER">
+Forward
+</TD>
+<TD>
+next section in reading order
+</TD>
+<TD>
+1.2.4
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt;&lt; ] </TD>
+<TD ALIGN="CENTER">
+FastBack
+</TD>
+<TD>
+previous or up-and-previous section
+</TD>
+<TD>
+1.1
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ Up ] </TD>
+<TD ALIGN="CENTER">
+Up
+</TD>
+<TD>
+up section
+</TD>
+<TD>
+1.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt;&gt; ] </TD>
+<TD ALIGN="CENTER">
+FastForward
+</TD>
+<TD>
+next or up-and-next section
+</TD>
+<TD>
+1.3
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Top] </TD>
+<TD ALIGN="CENTER">
+Top
+</TD>
+<TD>
+cover (top) of document
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Contents] </TD>
+<TD ALIGN="CENTER">
+Contents
+</TD>
+<TD>
+table of contents
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Index] </TD>
+<TD ALIGN="CENTER">
+Index
+</TD>
+<TD>
+concept index
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ ? ] </TD>
+<TD ALIGN="CENTER">
+About
+</TD>
+<TD>
+this page
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+</TABLE>
+<P></P>
+where the <STRONG> Example </STRONG> assumes that the current position
+is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
+the following structure:
+<UL>
+<LI> 1. Section One </LI>
+<UL>
+<LI>1.1 Subsection One-One</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.2 Subsection One-Two</LI>
+<UL>
+<LI>1.2.1 Subsubsection One-Two-One
+</LI><LI>1.2.2 Subsubsection One-Two-Two
+</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
+&lt;== Current Position </STRONG>
+</LI><LI>1.2.4 Subsubsection One-Two-Four
+</LI></UL>
+<LI>1.3 Subsection One-Three</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.4 Subsection One-Four</LI>
+</UL>
+</UL>
+
+<HR SIZE=1>
+<BR>
+<FONT SIZE="-1">
+This document was generated
+by <I>Chet Ramey</I> on <I>September, 22 2003</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+
+</BODY>
+</HTML>
diff --git a/lib/readline/doc/readline.info b/lib/readline/doc/readline.info
new file mode 100644
index 00000000..264ebdfb
--- /dev/null
+++ b/lib/readline/doc/readline.info
@@ -0,0 +1,4167 @@
+This is readline.info, produced by makeinfo version 4.5 from
+./rlman.texi.
+
+This manual describes the GNU Readline Library (version 5.0, 19
+September 2003), a library which aids in the consistency of user
+interface across discrete programs which provide a command line
+interface.
+
+ Copyright (C) 1988-2003 Free Software Foundation, Inc.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.1 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, with the Front-Cover texts
+ being "A GNU Manual," and with the Back-Cover Texts as in (a)
+ below. A copy of the license is included in the section entitled
+ "GNU Free Documentation License."
+
+ (a) The FSF's Back-Cover Text is: "You have freedom to copy and
+ modify this GNU Manual, like GNU software. Copies published by
+ the Free Software Foundation raise funds for GNU development."
+
+INFO-DIR-SECTION Libraries
+START-INFO-DIR-ENTRY
+* Readline: (readline). The GNU readline library API.
+END-INFO-DIR-ENTRY
+
+
+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 which
+provide a command line interface.
+
+* Menu:
+
+* Command Line Editing:: GNU Readline User's Manual.
+* Programming with GNU Readline:: GNU Readline Programmer's Manual.
+* Copying This Manual:: Copying this 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 current 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.
+
+ Readline remembers the last incremental search string. If two
+`C-r's are typed without any intervening characters defining a new
+search string, any remembered search string is used.
+
+ 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 the list of possibilities should be
+ displayed. 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'.
+
+ If set to `on', the history code attempts to place point at
+ the same location on each history line retrieved with
+ `previous-history' or `next-history'.
+
+ `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.
+
+ `mark-symlinked-directories'
+ If set to `on', completed names which are symbolic links to
+ directories have a slash appended (subject to the value of
+ `mark-directories'). The default is `off'.
+
+ `match-hidden-files'
+ This variable, when set to `on', causes Readline to match
+ files whose names begin with a `.' (hidden files) when
+ performing filename completion, unless the leading `.' is
+ supplied by the user in the filename to be completed. This
+ variable is `on' 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'.
+
+ `page-completions'
+ If set to `on', Readline uses an internal `more'-like pager
+ to display a screenful of possible completions at a time.
+ This variable is `on' by default.
+
+ `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'.
+
+ `show-all-if-unmodified'
+ This alters the default behavior of the completion functions
+ in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to
+ `on', words which have more than one possible completion
+ without any possible partial completion (the possible
+ completions don't share a common prefix) 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 eight-bit character whose value is the octal value NNN
+ (one to three digits)
+
+ `\xHH'
+ the eight-bit character whose value is the hexadecimal value
+ HH (one or two hex 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. If the insertion point is at the end of
+ the line, this transposes the last two words on the line.
+
+`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.
+
+`overwrite-mode ()'
+ Toggle overwrite mode. With an explicit positive numeric argument,
+ switches to overwrite mode. With an explicit non-positive numeric
+ argument, switches to insert mode. This command affects only
+ `emacs' mode; `vi' mode does overwrite differently. Each call to
+ `readline()' starts in insert mode.
+
+ In overwrite mode, characters bound to `self-insert' replace the
+ text at point rather than pushing the text to the right.
+ Characters bound to `backward-delete-char' replace the character
+ before point with a space.
+
+ By default, this command is unbound.
+
+
+
+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-#)'
+ Without a numeric argument, the value of the `comment-begin'
+ variable is inserted at the beginning of the current line. If a
+ numeric argument is supplied, this command acts as a toggle: if
+ the characters at the beginning of the line do not match the value
+ of `comment-begin', the value is inserted, otherwise the
+ characters in `comment-begin' are deleted from the beginning of
+ the line. In either case, 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.
+
+`emacs-editing-mode (C-e)'
+ When in `vi' command mode, this causes a switch to `emacs' editing
+ mode.
+
+`vi-editing-mode (M-C-j)'
+ When in `emacs' editing mode, this causes a switch to `vi' editing
+ mode.
+
+
+
+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-2002 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: Copying This Manual, 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'.
+
+ `readline.h' defines a C preprocessor variable that should be
+treated as an integer, `RL_READLINE_VERSION', which may be used to
+conditionally compile application code depending on the installed
+Readline version. The value is a hexadecimal encoding of the major and
+minor version numbers of the library, of the form 0xMMMM. MM is the
+two-digit major version number; MM is the two-digit minor version
+number. For Readline 4.2, for example, the value of
+`RL_READLINE_VERSION' would be `0x0402'.
+
+* 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
+
+ `int 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.
+
+ A command function should return 0 if its action completes
+successfully, and a non-zero value if some error occurs.
+
+
+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_readline_version
+ An integer encoding the current version of the library. The
+ encoding is of the form 0xMMMM, where MM is the two-digit major
+ version number, and MM is the two-digit minor version number. For
+ example, for Readline-4.2, `rl_readline_version' would have the
+ value 0x0402.
+
+ - 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. If `NULL',
+ Readline defaults to STDIN.
+
+ - Variable: FILE * rl_outstream
+ The stdio stream to which Readline performs output. If `NULL',
+ Readline defaults to STDOUT.
+
+ - 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_bind_key_if_unbound (int key, rl_command_func_t
+ *function)
+ Binds KEY to FUNCTION if it is not already bound in the currently
+ active keymap. Returns non-zero in the case of an invalid KEY or
+ if KEY is already bound.
+
+ - Function: int rl_bind_key_if_unbound_in_map (int key,
+ rl_command_func_t *function, Keymap map)
+ Binds KEY to FUNCTION if it is not already bound in MAP. Returns
+ non-zero in the case of an invalid KEY or if KEY is already bound.
+
+ - 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_bind_keyseq (const char *keyseq, rl_command_func_t
+ *function)
+ Bind the key sequence represented by the string KEYSEQ to the
+ function FUNCTION, beginning in the current keymap. This makes
+ new keymaps as necessary. The return value is non-zero if KEYSEQ
+ is invalid.
+
+ - Function: int rl_bind_keyseq_in_map (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. Initial
+ bindings are performed in MAP. The return value is non-zero if
+ KEYSEQ is invalid.
+
+ - Function: int rl_set_key (const char *keyseq, rl_command_func_t
+ *function, Keymap map)
+ Equivalent to `rl_bind_keyseq_in_map'.
+
+ - Function: int rl_bind_keyseq_if_unbound (const char *keyseq,
+ rl_command_func_t *function)
+ Binds KEYSEQ to FUNCTION if it is not already bound in the
+ currently active keymap. Returns non-zero in the case of an
+ invalid KEYSEQ or if KEYSEQ is already bound.
+
+ - Function: int rl_bind_keyseq_if_unbound_in_map (const char *keyseq,
+ rl_command_func_t *function, Keymap map)
+ Binds KEYSEQ to FUNCTION if it is not already bound in MAP.
+ Returns non-zero in the case of an invalid KEYSEQ or if KEYSEQ is
+ already bound.
+
+ - 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. Returns
+ the number of characters inserted.
+
+ - Function: int rl_delete_text (int start, int end)
+ Delete the text between START and END in the current line.
+ Returns the number of characters deleted.
+
+ - 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()'. Up to 512 characters may be pushed back.
+ `rl_stuff_char' returns 1 if the character was successfully
+ inserted; 0 otherwise.
+
+ - 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: void rl_tty_unset_default_bindings (Keymap kmap)
+ Reset the bindings manipulated by `rl_tty_set_default_bindings' so
+ that the terminal editing characters are bound to `rl_insert'.
+ 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: void rl_replace_line (const char *text, int clear_undo)
+ Replace the contents of `rl_line_buffer' with TEXT. The point and
+ mark are preserved, if possible. If CLEAR_UNDO is non-zero, the
+ undo list associated with the current line is cleared.
+
+ - 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.
+
+ - Function: char * rl_get_termcap (const char *cap)
+ Retrieve the string value of the termcap capability CAP. Readline
+ fetches the termcap entry for the current terminal name and uses
+ those capabilities to move around the screen line and perform other
+ terminal-specific operations, like erasing a line. Readline does
+ not use all of a terminal's capabilities, and this function will
+ return values for only those capabilities Readline uses.
+
+
+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. Before calling the LHANDLER function, the
+ terminal settings are reset to the values they had before calling
+ `rl_callback_handler_install'. If the LHANDLER function returns,
+ the terminal settings are modified for Readline's use again.
+ `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. If the LHANDLER installed by
+ `rl_callback_handler_install' does not exit the program, either
+ this function or the function referred to by the value of
+ `rl_deprep_term_function' should be called before the program
+ exits to reset the terminal settings.
+
+
+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. Such a
+ generator function is referred to as an "application-specific
+ completion function".
+
+
+ - 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.
+ An "application-specific completion function" is a function whose
+ address is assigned to `rl_completion_entry_function' and whose
+ return values are used to generate possible completions.
+
+
+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. `@' is similar to `!', but
+ possible completions are not listed if the possible completions
+ share a common prefix.
+
+ - 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: int rl_completion_mode (rl_command_func_t *cfunc)
+ Returns the apppriate value to pass to `rl_complete_internal()'
+ depending on whether CFUNC was called twice in succession and the
+ values of the `show-all-if-ambiguous' and `show-all-if-unmodified'
+ variables. Application-specific completion functions may use this
+ function to present the same interface as `rl_complete()'.
+
+ - 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 application-specific 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: 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.
+
+ - 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_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: 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 application-specific
+ completion functions to provide the "most sensible word separator
+ character" according to an application-specific command line
+ syntax specification.
+
+ - Variable: int rl_completion_suppress_append
+ If non-zero, RL_COMPLETION_APPEND_CHARACTER is not appended to
+ matches at the end of the command line, as described above. It is
+ set to 0 before any application-specific completion function is
+ called, and may only be changed within such a function.
+
+ - Variable: int rl_completion_mark_symlink_dirs
+ If non-zero, a slash will be appended to completed filenames that
+ are symbolic links to directory names, subject to the value of the
+ user-settable MARK-DIRECTORIES variable. This variable exists so
+ that application-specific completion functions can override the
+ user's global preference (set via the MARK-SYMLINKED-DIRECTORIES
+ Readline variable) if appropriate. This variable is set to the
+ user's preference before any application-specific completion
+ function is called, so unless that function modifies the value,
+ the user's preferences are honored.
+
+ - 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 when completion is attempted,
+ and can only be changed within an application-specific completion
+ function. If it is set to a non-zero value by such a function,
+ 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 when
+ completion is attempted, and can only be changed within an
+ application-specific completion 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. This is set to the appropriate value before
+ any application-specific completion function is called, allowing
+ such functions to present the same interface as `rl_complete()'.
+
+ - 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'.
+
+
+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.\n"
+ caller);
+ fprintf (stderr, "Write it yourself.\n");
+ }
+
+ /* 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: Copying This Manual, Next: Concept Index, Prev: Programming with GNU Readline, Up: Top
+
+Copying This Manual
+*******************
+
+* Menu:
+
+* GNU Free Documentation License:: License for copying this manual.
+
+
+File: readline.info, Node: GNU Free Documentation License, Up: Copying This Manual
+
+GNU Free Documentation License
+==============================
+
+ Version 1.2, November 2002
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book.
+ We recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it
+ can be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You
+ accept the license if you copy, modify or distribute the work in a
+ way requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in
+ the notice that says that the Document is released under this
+ License. If a section does not fit the above definition of
+ Secondary then it is not allowed to be designated as Invariant.
+ The Document may contain zero Invariant Sections. If the Document
+ does not identify any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images
+ composed of pixels) generic paint programs or (for drawings) some
+ widely available drawing editor, and that is suitable for input to
+ text formatters or for automatic translation to a variety of
+ formats suitable for input to text formatters. A copy made in an
+ otherwise Transparent file format whose markup, or absence of
+ markup, has been arranged to thwart or discourage subsequent
+ modification by readers is not Transparent. An image format is
+ not Transparent if used for any substantial amount of text. A
+ copy that is not "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML, PostScript or PDF designed for
+ human modification. Examples of transparent image formats include
+ PNG, XCF and JPG. Opaque formats include proprietary formats that
+ can be read and edited only by proprietary word processors, SGML or
+ XML for which the DTD and/or processing tools are not generally
+ available, and the machine-generated HTML, PostScript or PDF
+ produced by some word processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow
+ the conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the
+ title equally prominent and visible. You may add other material
+ on the covers in addition. Copying with changes limited to the
+ covers, as long as they preserve the title of the Document and
+ satisfy these conditions, can be treated as verbatim copying in
+ other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a
+ machine-readable Transparent copy along with each Opaque copy, or
+ state in or with each Opaque copy a computer-network location from
+ which the general network-using public has access to download
+ using public-standard network protocols a complete Transparent
+ copy of the Document, free of added material. If you use the
+ latter option, you must take reasonably prudent steps, when you
+ begin distribution of Opaque copies in quantity, to ensure that
+ this Transparent copy will remain thus accessible at the stated
+ location until at least one year after the last time you
+ distribute an Opaque copy (directly or through your agents or
+ retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of
+ copies, to give them a chance to provide you with an updated
+ version of the Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with
+ the Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version to
+ whoever possesses a copy of it. In addition, you must do these
+ things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of
+ previous versions (which should, if there were any, be listed
+ in the History section of the Document). You may use the
+ same title as a previous version if the original publisher of
+ that version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on
+ the Title Page. If there is no section Entitled "History" in
+ the Document, create one stating the title, year, authors,
+ and publisher of the Document as given on its Title Page,
+ then add an item describing the Modified Version as stated in
+ the previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in
+ the "History" section. You may omit a network location for a
+ work that was published at least four years before the
+ Document itself, or if the original publisher of the version
+ it refers to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the
+ section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section
+ titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option
+ designate some or all of these sections as invariant. To do this,
+ add their titles to the list of Invariant Sections in the Modified
+ Version's license notice. These titles must be distinct from any
+ other section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end
+ of the list of Cover Texts in the Modified Version. Only one
+ passage of Front-Cover Text and one of Back-Cover Text may be
+ added by (or through arrangements made by) any one entity. If the
+ Document already includes a cover text for the same cover,
+ previously added by you or by arrangement made by the same entity
+ you are acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination
+ all of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow
+ this License in all other respects regarding verbatim copying of
+ that document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of
+ a storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided for under this License. Any other
+ attempt to copy, modify, sublicense or distribute the Document is
+ void, and will automatically terminate your rights under this
+ License. However, parties who have received copies, or rights,
+ from you under this License will not have their licenses
+ terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ `http://www.gnu.org/copyleft/'.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by the
+ Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+----------------------------------------------------
+
+ To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+
+File: readline.info, Node: Concept Index, Next: Function and Variable Index, Prev: Copying This Manual, Up: Top
+
+Concept Index
+*************
+
+* Menu:
+
+* application-specific completion functions: Custom Completers.
+* command editing: Readline Bare Essentials.
+* editing command lines: Readline Bare Essentials.
+* FDL, GNU Free Documentation License: GNU Free Documentation License.
+* 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-preserve-point: Readline Init File Syntax.
+* 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.
+* mark-symlinked-directories: Readline Init File Syntax.
+* match-hidden-files: 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.
+* overwrite-mode (): Commands For Text.
+* page-completions: 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_if_unbound: Binding Keys.
+* rl_bind_key_if_unbound_in_map: Binding Keys.
+* rl_bind_key_in_map: Binding Keys.
+* rl_bind_keyseq: Binding Keys.
+* rl_bind_keyseq_if_unbound: Binding Keys.
+* rl_bind_keyseq_if_unbound_in_map: Binding Keys.
+* rl_bind_keyseq_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>: How Completing Works.
+* rl_completion_entry_function: Completion Variables.
+* rl_completion_mark_symlink_dirs: Completion Variables.
+* rl_completion_matches: Completion Functions.
+* rl_completion_mode: Completion Functions.
+* rl_completion_query_items: Completion Variables.
+* rl_completion_suppress_append: 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_get_termcap: Miscellaneous Functions.
+* 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_readline_version: Readline Variables.
+* rl_redisplay: Redisplay.
+* rl_redisplay_function: Readline Variables.
+* rl_replace_line: Utility Functions.
+* 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_tty_unset_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.
+* show-all-if-unmodified: 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: Top1298
+Node: Command Line Editing1939
+Node: Introduction and Notation2590
+Node: Readline Interaction4208
+Node: Readline Bare Essentials5395
+Node: Readline Movement Commands7176
+Node: Readline Killing Commands8133
+Node: Readline Arguments10043
+Node: Searching11079
+Node: Readline Init File13222
+Node: Readline Init File Syntax14283
+Node: Conditional Init Constructs25646
+Node: Sample Init File28171
+Node: Bindable Readline Commands31355
+Node: Commands For Moving32405
+Node: Commands For History33255
+Node: Commands For Text36114
+Node: Commands For Killing38829
+Node: Numeric Arguments40780
+Node: Commands For Completion41908
+Node: Keyboard Macros43441
+Node: Miscellaneous Commands44001
+Node: Readline vi Mode47351
+Node: Programming with GNU Readline49169
+Node: Basic Behavior50143
+Node: Custom Functions53573
+Node: Readline Typedefs55051
+Node: Function Writing56681
+Node: Readline Variables57889
+Node: Readline Convenience Functions67312
+Node: Function Naming68294
+Node: Keymaps69546
+Node: Binding Keys71302
+Node: Associating Function Names and Bindings75824
+Node: Allowing Undoing78069
+Node: Redisplay80604
+Node: Modifying Text83675
+Node: Character Input84904
+Node: Terminal Management86684
+Node: Utility Functions88103
+Node: Miscellaneous Functions90442
+Node: Alternate Interface92506
+Node: A Readline Example94651
+Node: Readline Signal Handling96588
+Node: Custom Completers102191
+Node: How Completing Works102906
+Node: Completion Functions106209
+Node: Completion Variables109764
+Node: A Short Completion Example120386
+Node: Copying This Manual132939
+Node: GNU Free Documentation License133179
+Node: Concept Index155573
+Node: Function and Variable Index156522
+
+End Tag Table
diff --git a/lib/readline/doc/readline.ps b/lib/readline/doc/readline.ps
new file mode 100644
index 00000000..d3718386
--- /dev/null
+++ b/lib/readline/doc/readline.ps
@@ -0,0 +1,5957 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: readline.dvi
+%%Pages: 72
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -D 300 -o readline.ps readline.dvi
+%DVIPSParameters: dpi=300, compressed
+%DVIPSSource: TeX output 2003.09.22:0904
+%%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 39158280 55380996 1000 300 300 (readline.dvi)
+@start
+%DVIPSBitmapFont: Fa cmti9 9 1
+/Fa 1 47 df<1230127812F0126005047C830C>46 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fb cmr9 9 45
+/Fb 45 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<B57E380E00E01470808080A280A21580A8
+1500A25C140E5CA2147814E0B51280191A7F991D>68 D<B512F8380E003814181408140C
+1404A3EB0100A35BEA0FFFEA0E037FA390C7FCA8EAFFE0161A7F9919>70
+D<EB3F023801C0C63803002E000E131E48130E14065A007813021270A200F090C7FCA590
+3801FFC03970000E00A2127812387EA27E000313163801C06638003F821A1A7E991E>I<
+EAFFE0000EC7FCB01408A3141814101430147014F0B5FC151A7F9918>76
+D<00FEEB7FC0000FEB0E001404EA0B80EA09C0A2EA08E01370A21338131CA2130E1307EB
+0384A2EB01C4EB00E4A21474143CA2141C140C121C38FF80041A1A7F991D>78
+D<39FFE07FC0390E000E001404B200065B12076C5B6C6C5A3800E0C0013FC7FC1A1A7F99
+1D>85 D<EA1FC0EA38707FEA101C1200A2EA03FCEA1E1C1238127012E01480A2133CEA70
+5F381F8F0011107F8F13>97 D<12FC121CA913FCEA1D07381E0380381C01C0130014E0A6
+EB01C01480381E0300EA1906EA10F8131A809915>I<EA07F8EA1C1C1238EA700813005A
+A612701304EA3808EA1C18EA07E00E107F8F11>I<133F1307A9EA03E7EA0C17EA180F48
+7E127012E0A6126012706C5AEA1C373807C7E0131A7F9915>I<EA07C0EA1C30EA301812
+70EA600C12E0EAFFFCEAE000A41260EA7004EA3808EA1C18EA07E00E107F8F11>I<EA01
+F0EA0718EA0E38EA1C101300A6EAFFC0EA1C00AEEAFF800D1A80990C>I<EA0FCF381871
+8038303000EA7038A4EA30306C5AEA2FC00060C7FCA21270EA3FF013FC6C7EEA600FEAC0
+03A4EA6006EA381CEA07E011187F8F13>I<12FC121CA9137CEA1D87381E0380A2121CAB
+38FF9FF0141A809915>I<1218123CA212181200A612FC121CAE12FF081A80990A>I<12FC
+121CA9EB1FC0EB0F00130C5B13205B13E0121DEA1E70EA1C7813387F131E7F148038FF9F
+E0131A809914>107 D<12FC121CB3A6EAFF80091A80990A>I<38FC7C1F391D8E6380391E
+0781C0A2001C1301AB39FF9FE7F81D107F8F20>I<EAFC7CEA1D87381E0380A2121CAB38
+FF9FF01410808F15>I<EA07E0EA1C38EA300CEA700EEA6006EAE007A6EA6006EA700EEA
+381CEA1C38EA07E010107F8F13>I<EAFCFCEA1D07381E0380381C01C0A2EB00E0A6EB01
+C01480381E0300EA1D06EA1CF890C7FCA6B47E1317808F15>I<EA03E1EA0C13EA180BEA
+300FEA700712E0A61270A26C5AEA1C37EA07C7EA0007A6EB3FE013177F8F14>I<EAFC78
+EA1D9CEA1E1C1308EA1C00ABEAFF800E10808F0F>I<EA1F20EA60E0EA402012C0A2EAF0
+00127FEA3FC0EA1FE0EA00F0EA8070133012C01320EAF040EA8F800C107F8F0F>I<1208
+A41218A21238EAFFC0EA3800A81320A41218EA1C40EA07800B177F960F>I<38FC1F80EA
+1C03AB1307120CEA0E0B3803F3F01410808F15>I<38FF0F80383C0700EA1C061304A26C
+5AA26C5AA3EA03A0A2EA01C0A36C5A11107F8F14>I<39FE7F1F8039381C0700003C1306
+381C0C04130E380E16081317A238072310149013A33803C1A014E0380180C0A319107F8F
+1C>I<38FE3F80383C1E00EA1C086C5AEA0F306C5A6C5A12017F1203EA0270487E1208EA
+181CEA381E38FC3FC012107F8F14>I<38FF0F80383C0700EA1C061304A26C5AA26C5AA3
+EA03A0A2EA01C0A36C5AA248C7FCA212E112E212E4127811177F8F14>I<EAFFF8EAE070
+12C0EA80E0EA81C0A2EA0380EA0700A2EA0E04121CA2EA380812701338EAFFF80E107F8F
+11>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fc cmsltt10 9 18
+/Fc 18 122 df<EAFFFC13FE13FC0F037C8C14>45 D<EA01E0EA07F8EA0E3CEA1C1CEA18
+0E12381270A312E0A4131CA31338A21370EA70E01271EA3F80EA1F000F177C9614>48
+D<134013E0EA01C01203120F123D12111201EA0380A6EA0700A6120EEAFFE0A20B177B96
+14>I<381F81F813C1380FC3E0EA0EC213C6A213CE13CC381CCDC013DD13D9A213F1A238
+38E3801303A53870070038FC0FC0A215177F9614>77 D<EA0FE0EA1FF8EA381CEA100E12
+00A2EA03FEEA1FFCEA3C1C127012E0A2133C1378EA7FFFEA1F8F10107D8F14>97
+D<EA01F0EA07F8EA0E0CEA1C0E1238EA7006A2EAFFFEA2EAE000A21270130CEA381CEA1F
+F8EA07F00F107D8F14>101 D<121F7F0007C7FCA5133EEA0EFF380FC3801303120EA338
+1C0700A6EA380E38FF1FC0A212177F9614>104 D<136013F013E013401300A4EA3FC0A2
+1201A5EA0380A6EA0700EAFFF8A20D187C9714>I<EA1FE013F0EA00E0A6EA01C0A6EA03
+80A6EA0700EAFFFCA20E177D9614>108 D<383CE380383FFFC0EA1F7DEA1E79EA1C71A3
+3838E380A63871C70038FDF7C0EAFCF312107F8F14>I<EA3E3E13FF380FC3801303120E
+A3381C0700A6EA380E38FF1FC0A212107F8F14>I<EA03F0EA07F8EA1E1CEA3C0E123812
+70A212E0A3131EEA701C1338EA7870EA3FE0EA0F800F107D8F14>I<381F87C0EB9FE0EA
+03B8EBE040EBC0005BA2120790C7FCA5120EEAFFF0A213107F8F14>114
+D<EA03FAEA0FFEEA1C0E1230A2EA3800EA1FE0EA0FF8EA01FEEA000FEA600312701306EA
+F80CEAFFF8EA4FE010107E8F14>I<1206120EA4EAFFF8A2EA1C00A55AA313301338A213
+70EA1FE0EA0F800D157C9414>I<EAF83EA2EA380EA5EA701CA5133C1378EA3FFFEA1F9F
+10107D8F14>I<383F1FC0A2380F1E006C5AEA03B813F06C5A5B7F1203EA0770120E487E
+123CEAFC7FA212107E8F14>120 D<381FCFE0A238070380EB0700A2130EEA038EA2139C
+A213B8A2EA01B013F05BA25BA2485AA200E7C7FC12EE12FC127813187F8F14>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fd cmtt9 9 83
+/Fd 83 127 df<126012F0AD12601200A4126012F0A212600417789614>33
+D<EAC060EAE0E0A4EAC060A5EA40400B0B7C9614>I<EA071CA5B51280A27E380E3800A7
+387FFF80B5FCA2381C7000A511177F9614>I<EA3806EA7C0E126CEAEE1CA25BA2126CEA
+7C70123812005BA2485AA3485AA248C7FC130E131FEA0E1BEB3B80A2121CA238381B0013
+1FEA180E111D7F9914>37 D<1207487EEA18C0EA38E0A35B3839CF80138F381F1C00121E
+A2EA0E38121EEA37701267EAE3F05B38E1C38013E3EA63F3383F3F00EA1E1E11177F9614
+>I<126012F012F812781218A31230A2126012C01280050C789614>I<EA01801203EA0600
+5A121C121812385AA35AA91270A37E1218121C120C7EEA03801201091D799914>I<1280
+12C01260123012381218121C120EA31207A9120EA3121C121812381230126012C0128008
+1D7C9914>I<EA0380A3EA638CEAF39EEA7FFCEA3FF8EA0FE0A2EA3FF8EA7FFCEAF39EEA
+638CEA0380A30F107E9214>I<EA01C0A7B51280A33801C000A711117F9314>I<127012F8
+12FCA2127C120C1218123012E012C0060A798414>I<EAFFFEA30F037E8C14>I<127012F8
+A312700505798414>I<1306130EA2131CA21338A21370A213E0A2EA01C0A2EA0380A3EA
+0700A2120EA25AA25AA25AA25AA25A0F1D7E9914>I<EA07C0EA0FE0EA1C70EA3838EA30
+18EA701CA2EAE00EA9EA701CA2EA3838A2EA1C70EA0FE0EA07C00F177E9614>I<1203A2
+5A5A123F12F712471207AEEA7FF0A20C177C9614>I<EA0FC0EA1FF0EA3838EA701CEAE0
+0EA312401200131CA213381330137013E0EA01C0EA030012065AEA180E1230EA7FFEA20F
+177E9614>I<137813F8EA01B8A2EA0338A21206120E120C121C12381230127012E0B512
+80A238003800A548B4FCA211177F9614>52 D<EA01F0EA07F8EA0E1C121C1238EA300012
+70A25AEAE7C0EAEFF0EAF838EAF01C130CEAE00EA212601270130CEA381CEA1C38EA0FF0
+EA07C00F177E9614>54 D<127012F8A312701200A6127012F8A312700510798F14>58
+D<127012F8A312701200A6126012F012F8A2127812181230127012E012800515798F14>
+I<1306131E133E13F8EA01F0EA03C0EA0F80EA1F00123C12F85A7E123C121FEA0F80EA03
+C0EA01F0EA00F8133E131E13060F157E9514>I<B51280A27EC8FCA3387FFF80B5FCA211
+097F8F14>I<12C012F07E123E7EEA0780EA03E0EA01F0EA0078133E131E133E1378EA01
+F0EA03E0EA0780EA1F00123E12F85A12C00F157E9514>I<EA1FE0EA3FF8EA701CEAE00E
+A21240EA003C137013E0EA01C0EA0380A41300C7FCA41203EA0780A2EA03000F177E9614
+>I<EA01E0EA07F0EA0E38EA181CEA38FC1271EA731E1277EAEE0EA7EA771CEA7318EA71
+F0EA38E0EA1806EA0E1EEA07F8EA01F00F177E9614>I<EA01C0487EA21360A2EA0770A4
+EA0630EA0E38A4487EEA1FFCA2EA1C1CA2487EA238FE3F80A211177F9614>I<EAFFF013
+FCEA381E130E1307A4130E131EEA3FFCA2EA381E130E1307A5130E131EEAFFFC13F81017
+7F9614>I<3801F180EA07FFEA0E1FEA1C071238EA7003A348C7FCA738700380A3383807
+00121CEA0E0EEA07FCEA01F011177F9614>I<EAFFE013F8EA383C7F130E7FA3EB0380A8
+EB0700A2130E131E5BEAFFF813E011177F9614>I<B5FCA2EA3807A490C7FCA21338A2EA
+3FF8A2EA3838A290C7FCA3EB0380A4B5FCA211177F9614>I<B51280A2EA3803A490C7FC
+A21338A2EA3FF8A2EA3838A290C7FCA7B4FCA211177F9614>I<EA03C6EA0FFEEA1C3EEA
+181E1238EA700EA21260EAE000A4137FA2130E12601270A2EA381E1218EA1C3EEA0FFEEA
+03CE10177F9614>I<EAFFF8A2EA0700B3EAFFF8A20D177D9614>73
+D<EA07FCA2EA0070B012E0A2EAF0E0EA7FC0EA1F000E177D9614>I<B4FCA21238AF1307
+A4B5FCA210177E9614>76 D<38FC1F80A2007C1300EA7637A4EA7777A2EA7367A313E7EA
+71C7A2EA7007A638F80F80A211177F9614>I<38FE3F80A2383E0E00123BA4138E1239A2
+13CEA31238A213EE136EA4133E12FEA211177F9614>I<EA1FF0EA7FFCEA783CEA701CEA
+E00EAFEA701CEA783CEA7FFCEA1FF00F177E9614>I<EAFFF013FCEA381E130E1307A513
+0E131EEA3FFC13F0EA3800A812FEA210177F9614>I<EA1FF0EA7FFCEA783CEA701CEAE0
+0EADEAE38EEAE1CEEA71DCEA78FC127FEA1FF0EA00781338133C131C131E0F1C7E9614>
+I<EAFFE013F8EA383C131C7FA45B133CEA3FF85BEA38387FA51480EB1DC0A238FE0F80EB
+070012177F9614>I<EA0FCCEA1FFCEA307CEA603CEAE01CA313001270127EEA3FE0EA0F
+F0EA01F8EA001C131E130E126012E0A2EAF01CEAF838EAFFF0EAC7E00F177E9614>I<38
+7FFF80B5FCEAE1C3A43801C000AFEA0FF8A211177F9614>I<38FE0FE0A238380380B038
+1C0700A2EA0E0EEA07FCEA01F01317809614>I<38FC1F80A238380E00A3EA3C1EEA1C1C
+A46C5AA4EA0630EA0770A3EA0360A213E0A26C5A11177F9614>I<38FC1F80A238700700
+A7EA31C6EA33E6EA3BEE136EA5EA1B6CA2EA1A2CEA1E3CA311177F9614>I<EA7E3EA2EA
+1C3CEA1E38EA0E78EA0F7012075B12035B120112037FA2EA0770A2EA0E781338EA1C3C13
+1CEA3C1E38FE3F80A211177F9614>I<EAFFE0A2EAE000B3A7EAFFE0A20B1D799914>91
+D<12C07EA21270A27EA27EA27EA27EA2EA0380A3EA01C0A2EA00E0A21370A21338A2131C
+A2130EA213060F1D7E9914>I<EAFFE0A21200B3A712FFA20B1D7F9914>I<EAFFFEA30F03
+7E7E14>95 D<1208121812301260A212C0A312F012F812781230050C799914>I<EA1FC0
+EA7FF0EA7078EA2018EA001CA2EA07FC121FEA3C1C127012E0A3EA707C383FFF80EA0F8F
+11107E8F14>I<12FCA2121CA513F8EA1DFEEA1F07EA1E03001C1380EB01C0A6EB038000
+1E1300EA1F0EEA1DFCEA0CF81217809614>I<EA03F8EA0FFEEA1C0EEA3804EA70001260
+12E0A412601270EA380EEA1C1EEA0FFCEA03F00F107E8F14>I<137EA2130EA5EA07CEEA
+0FFEEA1C3EEA301EEA700E12E0A61270EA301EEA383E381FEFC0EA07CF12177F9614>I<
+EA07E0EA0FF0EA1C38EA301CEA700CEAE00EA2EAFFFEA2EAE00012601270EA380EEA1C1E
+EA0FFCEA03F00F107E8F14>I<13FCEA01FEEA038EEA07041300A3EA7FFE12FFEA0700AC
+EAFFF8A20F177F9614>I<EA07CF381FFF80EA383B38301800EA701CA3EA3018EA3838EA
+3FF0EA37C00070C7FCA2EA3FF86C7E487EEA700F38E00380A438700700EA3C1EEA1FFCEA
+07F011197F8F14>I<12FCA2121CA51378EA1DFEEA1F86EA1E07121CAA38FF8FE0A21317
+809614>I<1206120FA21206C7FCA4B4FCA21207ACEAFFF8A20D187C9714>I<136013F0A2
+13601300A4EA1FF0A2EA0070B2EA40E0EAE0C0EA7F80EA3F000C207E9714>I<12FCA212
+1CA5EBFF80A2EB1C005B5B5BEA1DC0EA1FE0A2EA1E70EA1C38133C131C7F38FF1F80A211
+17809614>I<EAFF80A21203B3EAFFFEA20F177E9614>I<EAFB8EEAFFDF383CF380A2EA38
+E3AA38FEFBE013791310808F14>I<EAFC78EAFDFEEA1F86EA1E07121CAA38FF8FE0A213
+10808F14>I<EA07C0EA1FF0EA3C78EA701CA2EAE00EA6EA701CEA783CEA3C78EA1FF0EA
+07C00F107E8F14>I<EAFCF8EAFDFEEA1F07EA1E03001C1380EB01C0A6EB0380001E1300
+EA1F0EEA1DFCEA1CF890C7FCA6B47EA21218808F14>I<EA03E7EA0FF7EA1C1FEA300F12
+70487EA6EA700F1230EA1C3FEA0FF7EA07C7EA0007A6EB3FE0A213187F8F14>I<EAFE1F
+EB7F80EA0EE3380F810090C7FCA2120EA8EAFFF0A211107F8F14>I<EA0FD8EA3FF8EA60
+3812C0A2EAF000EA7F80EA3FF0EA07F8EA001CEA600612E012F0EAF81CEAFFF8EACFE00F
+107E8F14>I<1206120EA4EA7FFC12FFEA0E00A8130EA3131CEA07F8EA01F00F157F9414>
+I<EAFC3FA2EA1C07AB131F380FFFE0EA03E71310808F14>I<38FE3F80A2383C1E00EA1C
+1CA36C5AA3EA0630EA0770A36C5AA311107F8F14>I<38FE3F80A238700700EA380EA3EA
+39CEA3EA1B6C121AA3EA1E7CA2EA0E3811107F8F14>I<EA7E3FA2EA1E3CEA0E78EA0770
+5B12036C5A12037FEA0770EA0E781338487E38FE3F80A211107F8F14>I<38FE3F80A238
+1C0E005BA2120E5BA212071330A2EA0370A25B1201A25BA3485A12730077C7FC127E123C
+11187F8F14>I<EA3FFF5AEA700E131C1338EA007013E0EA01C0EA0380EA0700120EEA1C
+0712381270B5FCA210107F8F14>I<133E13FEEA01E0EA0380AAEA7F0012FE127FEA0380
+AAEA01E0EA00FE133E0F1D7E9914>I<12E0B3AB031D789914>I<127812FE120FEA0380AA
+EA01FCEA00FEEA01FCEA0380AAEA0F0012FE12780F1D7E9914>I<EA1C10EA3F38EAE7E0
+EA41C00D047D9614>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fe cmss10 10.95 2
+/Fe 2 42 df<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012F0
+AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40
+D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012
+07A213005AA2121E121C123C12385A5A0B2E7EA112>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Ff cmbx10 12 27
+/Ff 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: Fg cmtt10 12 29
+/Fg 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: Fh cmbx12 13.14 54
+/Fh 54 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<123C
+127E12FFA4127E123C1200A8123C127E12FFA4127E123C08187C9711>I<141CA2143EA3
+147FA24A7EA39038019FC0A29038031FE0140F01077FEB0607A2010C7F1403011C7FEB18
+01A2496C7EA2017FB5FCA29039E0007F8049133FA2484880151F00038190C7120FA2486E
+7ED8FFF090B51280A229257EA42E>65 D<B612E015FC3903F0007FED3F80ED1FC0ED0FE0
+A216F0A21507150FA216E0151F16C0ED7F80913801FE0090B512F815FF9039F0003FC0ED
+0FE0ED07F016F8150316FCA616F81507ED0FF0ED1FE0ED7FC0B7120015F826257EA42C>
+I<9138FF8008010FEBF01890393FC03C789039FE0006F8D801F813034848130148481300
+48481478121F48481438A2007F151890C8FCA2481500A97E16187F123FA26C6C1430120F
+6C6C14606C6C14C06C6CEB0180D800FEEB070090383FC01E90380FFFF8010013C025257D
+A42C>I<B612E015FC3903F800FFED1FC0ED07E06F7E6F7E82150082A2167FA31780AA17
+00A316FEA24B5A5E4B5A4B5AED1FC0EDFF80B648C7FC15E029257EA42F>I<B7FCA23903
+F8007FED0F8015071503A21501A3ED00C01406A21600A2140E141EEBFFFEA2EBF81E140E
+1406A21660A291C7FC16C0A415011503A2ED0F80153FB7FCA223257EA428>I<B612FEA2
+3803F800151F8181A281A3ED01801403A292C7FCA25C5C90B5FCA2EBF80F8080A491C8FC
+AAB512F0A221257EA427>I<B500E0B512E0A23B03F80003F800AF90B6FCA29038F80003
+B0B500E0B512E0A22B257EA430>72 D<B512E0A23803F800B3AFB512E0A213257EA417>
+I<B539E007FF80A2D803F8C7EA780016605E4B5A0307C7FC150E15185D5D5DEC03804AC8
+FC140E141F4A7E147FECDFC09038FB8FE09038FF0FF0EBFC07496C7E816E7E1400157F82
+153F6F7E6F7E8215076F7E82B539E03FFFC0A22A257EA430>75 D<B512F0A2D803F8C7FC
+B3A31503A31506A3150EA2151E153E157CEC03FCB6FCA220257EA425>I<D8FFF8EDFFF8
+6D5C0003EEFE00017EEC037EA36D1406A26D6C130CA26D6C1318A26D6C1330A36D6C1360
+A26D6C13C0A2903900FC0180A291387E0300A3EC3F06A2EC1F8CA2EC0FD8A2EC07F0A36E
+5AEA07803CFFFC01C01FFFF8A235257EA43A>I<D8FFF8903807FFE07FD803FE9038003C
+006D14187F6D7E6D7E806D7E6D7E13036D7E6D7E80EC7F80EC3FC0141FEC0FE015F0EC07
+F8EC03FC1401EC00FE157F1698ED3FD8ED1FF8150F15071503A2150115001678486C1438
+D8FFFC1418A22B257EA430>I<B67E15F83903F801FEEC007F6F7E6F7EA282A55EA24B5A
+4BC7FCEC01FE90B512F815C09038F803F06E7E6E7E157EA2157FA482A31760ED3FC017C0
+ED1FE1B539E00FFF80923801FE002B257EA42E>82 D<01FF1380000713E3380F80F7381E
+001F48130F481307140312F81401A27E91C7FCB4FCEA7FE013FE383FFFE014F86C13FE00
+077F6C1480C67E010313C0EB003FEC0FE01407A200C01303A315C07E6C13076C14806CEB
+0F0038FFC03E38E3FFF838803FE01B257DA422>I<007FB612F8A2397E00FE010078EC00
+780070153800601518A200E0151C160C5AA4C71400B3A390B512FEA226247EA32B>I<B5
+39E00FFFC0A2D803F8C7EA78001630B3A700015D7F00005D137C6D495A6D0107C7FC9038
+0FE03E903803FFF89038007FC02A257EA42F>I<B5398001FFE0A2D807F8C7EA1C000003
+1518A26D1438000115306D1470000015607F6D5C80013F495AA2ECC003011F91C7FC6E5A
+010F130614F001075BA26D6C5AA2ECFC3801011330ECFE700100136014FF6E5AA26E5AA3
+6EC8FCA2140EA22B257FA42E>I<B53B81FFFE01FFF0A23D07F0001FC0000F007013066C
+6C010F5CA26F7E6C6C5EA26D496C1338000017304B7E017F01195CA291388030FE013F5E
+829139C0607F01011F5E03E0138190280FE0C03F83C7FCA29139F1801FC3010715C617E6
+9139FB000FEE010315EC02FF14FC6D486D5AA24A130301005DA24A130102785CA202306D
+5A3C257FA43F>I<B539C001FFE0A2D807F8C7EA1C006C6C141816386C6C14306C6C5C16
+E06D6C5B6D6C485A1503D91FE090C7FC90380FF006150E903807F80C6D6C5A15386D6C5A
+903800FF6015E06E5A6E5AAE90380FFFFCA22B257FA42E>89 D<EA07FF001F13E0383E03
+F0383F00F880147E121EC7FCA3EB1FFE3803FE7EEA0FC0EA1F00123E127E5AA314BEEA7E
+01383F073E391FFE1FE03807F00F1B187E971E>97 D<EAFFC0A2120FACEBC1FCEBCFFF90
+38FC0FC09038F007E09038C003F0A2EC01F8A215FCA815F8A2EC03F013E09038F007E090
+381C1F80390E0FFF00380C03F81E267FA522>I<EB7FE03803FFF83807C07C381F80FC13
+005A007E1378140012FEA8127E127F6C130CEA1F80EBC0183807E0703803FFE038007F00
+16187E971B>I<ECFFC0A2140FAC137F3803FFCF380FE0FF381F803F383F000FA2127EA2
+12FEA8127EA27E141F381F803F380FC0EF3903FFCFFC3800FE0F1E267EA522>I<137F38
+03FFC03807C1F0380F80F8EA1F0048137C127E147E12FEA2B512FEA248C7FCA3127EA214
+067E6C130C380F80183807E0703803FFE038007F8017187E971C>I<EB1FC0EB7FF0EA01
+F83803E1F8120713C1380FC0F01400A7B5FCA2EA0FC0B3A2EAFFFEA215267EA513>I<39
+01FF07C00007EBDFE0380F83F1EA1F01393E00F800007E7FA6003E5B6C485A380F83E0EB
+FFC0001190C7FC0030C8FCA21238123C383FFFE06C13FC806C7F481480383C003F48EB0F
+C000F81307A4007CEB0F806CEB1F00381F807E3807FFF8C613C01B247E971F>I<EAFFC0
+A2120FAC14FE9038C3FF809038CE0FC013D89038D007E013E0A213C0AF39FFFC7FFEA21F
+267EA522>I<120FEA1F80EA3FC0A4EA1F80EA0F00C7FCA7EA7FC0A2120FB3A2EAFFF8A2
+0D277EA611>I<EAFFC0A2120FACEC1FF0A2EC0780EC0E005C14305CEBC1C0EBC38013C7
+13DFEBFFC0EBE7E0EBC3F0138180EB80FC147E80A2EC1F80EC0FC039FFF83FF8A21D267F
+A520>107 D<EAFFC0A2120FB3B0EAFFFCA20E267EA511>I<26FF80FE137F903A83FF81FF
+C03B0F8E0FC707E0019813CC903A9007E803F001A013F0A201C013E0AF3BFFFC7FFE3FFF
+A230187E9733>I<38FF80FE903883FF80390F8E0FC0139890389007E013A0A213C0AF39
+FFFC7FFEA21F187E9722>I<EB7F803803FFF03807C0F8381F807E48487EA2007EEB1F80
+A200FE14C0A8007E1480A26CEB3F00A2381F807E6C6C5A3803FFF038007F801A187E971F
+>I<38FFC1FCEBCFFF390FFC1FC09038F007E001C013F0140315F8140115FCA8EC03F8A2
+15F0EBE0079038F00FE09038DC1F809038CFFF00EBC3F801C0C7FCA9EAFFFCA21E237F97
+22>I<38FF83E0EB8FF8380F8C7CEB90FC13B013A01478EBE0005BAEEAFFFEA216187F97
+19>114 D<3807F8C0EA1FFFEA3C07EA7001EAF000A300FC1300B47EEA7FFC7F383FFF80
+000F13C0120338001FE01303EAC001A212E014C0EAF00338FC078038EFFF00EAC3FC1318
+7E9718>I<13C0A41201A312031207120F121FB512C0A2380FC000AC1460A63807E0C013
+E13801FF8038007E0013237FA218>I<39FFC07FE0A2000F1307B0140FA200071317EBE0
+673903FFC7FE38007F071F187E9722>I<39FFF80FF8A2390FC001C015803907E00300A2
+6D5A00031306EBF80E0001130C13FC00005B13FEEB7E30A26D5AA214E06D5AA26D5AA26D
+C7FCA21D187F9720>I<3BFFF9FFE0FF80A23B1FC03F001C00000F6D13181580D807E05C
+A29039F03FC07000030137136015E02601F8635BA29038FCE3F1000001C15B15F990267F
+80FBC7FCA215FF90383F007EA2011E133CA3010C131829187F972C>I<39FFF83FF0A239
+0FC00F003807E00E6C6C5A6D5A6C6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F8
+1361EBE0FC3801C07E3803807F3907003F8048131F39FFC07FF8A21D187F9720>I<39FF
+F80FF8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00005B13
+FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FCA21306A25B1230EA781CEAFC185B1370EA
+68E0EA7FC0001FC8FC1D237F9720>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fi cmsl10 10.95 48
+/Fi 48 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<3A07FF83FFC03A00F8
+007C000178133CA2495BA648485BA490B5FCEBE0004848485AA64848485AA64848485A01
+807F39FFF07FF8221F7E9E22>72 D<3807FF803800F8001378A25BA6485AA6485AA6485A
+A648C7FC7FEAFFF0111F7E9E10>I<3A07FF803FE03A00F8001F000178130C5D4913205D
+5D4AC7FC1402140848485A5C146014F013E1EBE4F83803C878EBD07CEBE03CEBC03E141E
+141F48487E81140781140381380F00016D487E39FFF00FFE231F7E9E23>75
+D<3807FFE0D800FCC7FC1378A25BA6485AA6485AA41580EC0100EA0780A25C1402140614
+0E380F001E147CB512FC191F7E9E1C>I<D807F8EC7FE00000ED7C00017814BCA2019C49
+5AA21502A2018E13041508D8010E5C1510A26D1320A215400002EC41E09038038081EC81
+01A21482A23A0401C403C0A214C8A2EB00F0000C13E04B5A001E01C07FD8FFC0EB7FFC2B
+1F7E9E2A>I<D807F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83
+C0D801035BEB01E0A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A214
+01000C5C001E1300B47E221F7E9E22>I<EB01FCEB0E0790383801C090387000E0484813
+F048481378485A153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01
+F0007C14E01403003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F80
+1F217C9F23>I<0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC
+01E0EC03C0EC0F00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<3807
+FFFE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC0780EC1E00
+EBFFF03803C03880141E140EA2140F48485AA51501D80F0013029038800F8239FFF8078C
+C7EA01F020207E9E22>82 D<EB1F82EB7066EBC01E3801800EEA030048130C0006130412
+0EA3000F1300A27FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA2004013
+38A3143000601370146000F013C038E8018038C60300EA81FC17217E9F19>I<003FB512
+F0383C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F383F
+FFE01C1F7A9E21>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302A648
+5BA600705BA25CA200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<3BFF
+F07FF81FF03B1F000FC007C0001E903907800380001FED01006C1502140F5EEC17C00213
+5B142301805C000713435E14C3913883E0401481D981015B13C1D803C213E193C7FC13C4
+15F2EBC80015F4EA01F015F85B5D5B15605B000014402C207A9E2F>87
+D<EA07F8EA0C0CEA1E061307121C1200A313FFEA07C7EA1E07EA3C0E127800F01310A313
+1EEB2E2038784F40381F878014147D9317>97 D<1207123F120F7EA2120EA65A137CEA1D
+83381E0180001C13C0EB00E05A14F0A5387001E0A214C013031480EB0700EAE80EEACC38
+EA83E014207B9F19>I<13FEEA0383380E0780121C0038130090C7FC12785AA45AA37E5B
+EA70026C5AEA1C18EA07E011147D9314>I<1438EB01F8EB00781438A21470A614E013FC
+EA0382EA0601121CEA3C00383801C0127812F0A438E00380A412F0EA700738380F00381C
+37803807C7E015207D9F19>I<13F8EA070EEA0E07381C038012381278127012F0B5FC00
+F0C7FCA25AA46C5AEA7002EA3004EA1C18EA07E011147D9314>I<EB07C0EB1C60EB30F0
+1360EBE0E0EBC0001201A5485AEA3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F
+9F0E>I<140EEB3E11EBE1A33801C1C2380381E0EA07801301120FA3380703C01480EB87
+00EA04FC48C7FCA21218121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0
+381C0700EA07FC181F809417>I<13E0120712011200A2485AA6485AEB8F80EB90E013A0
+EBC0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014207E9F19>I<
+EA01C0EA03E0A213C0EA0180C7FCA6EA0380121F12071203A2EA0700A6120EA65A121EEA
+FF800B1F7F9E0C>I<13E0120712011200A2485AA6485AEB81FCEB80F014C0EB81801400
+EA07045B13181338137C131C120E7FA2130F7F1480EA1C03381E07C038FF8FF016207E9F
+18>107 D<13E0120712011200A2EA01C0A6EA0380A6EA0700A6120EA65A121EEAFF800B
+207F9F0C>I<390387C07C391F9861863907A072073903C03403EB80380007EB7807EB00
+70A5000EEBE00EA64848485A001EEBE01E3AFFCFFCFFC022147E9326>I<38038F80381F
+90E0EA07A03803C0601380000713E01300A5380E01C0A6381C0380001E13C038FF8FF014
+147E9319>I<13FCEA0387380E0180381C00C04813E0A24813F012F0A438E001E0A214C0
+130300F0138038700700EA380E6C5AEA07E014147D9317>I<EBE3E03807EC383801F01C
+6C487E140F48487E1580A53903800F00A2140E141E141C5C38074070EB61C0011FC7FC90
+C8FCA3120EA4121EEAFFC0191D809319>I<EBFC2038038260EA0702381E01E0123C0038
+13C0127812F0A438E00380A212F0A21307127038380F00EA1C37EA07C7EA0007A3130EA4
+131EEBFFC0131D7D9318>I<EA038E381FB380EA07C71203EB8300EA078090C7FCA5120E
+A65A121EEAFFC011147E9312>I<EA01F9EA0607EA080312181301EA3802EA3C00121F13
+F0EA07FCEA01FEEA001FEA40071303A212601306EAF004EAC818EA87E010147F9312>I<
+1380EA0100A35A5A5A121EEAFFF8EA0E00A45AA65A1310A41320A2EA1840EA0F800D1C7C
+9B12>I<381C0380EAFC1FEA3C07EA1C03A238380700A6EA700EA4131EA25BEA305E381F
+9F8011147B9319>I<38FF83F8381E00E0001C13C01480121E380E01005B13025B12075B
+A25BEA039013A013E05B5B120190C7FC15147C9318>I<39FF9FE1FC393C078070391C03
+0060148015401580EA0E0790380D81001309EB19C21311380F21C4EA0720EB40C814E8EB
+80F0A26C485A1460000213401E147C9321>I<381FF0FF3803C0780001137014403800E0
+C0EBE180EB73001376133CA2131C132E134E1387EA0107380203801204380C01C0383C03
+E038FE07FC18147F9318>I<390FF83F803901E00E00EBC00C140813E000005B14301420
+5C13705CA20171C7FC1339133A133E133C133813181310A25BA25BEA70C0EAF08000F1C8
+FC12E61278191D809318>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fj cmr8 8 29
+/Fj 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: Fk cmsy9 9 2
+/Fk 2 106 df<13801201EA0300A31206A25AA35AA35AA25AA35AA21260A37EA27EA37E
+A37EA27EA3EA0180120009267D9B0F>104 D<12C0A21260A37EA27EA37EA37EA27EA3EA
+0180A2EA0300A31206A25AA35AA35AA25AA35AA209267E9B0F>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fl cmsltt10 10.95 37
+/Fl 37 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<3907F87F80A33901C01C00A448485AA5EBFFF8485BA2EB0070A4000E5BA6
+387F87F8EAFF8FEA7F87191C7F9B18>72 D<EB1FF8EB3FFCEB1FF8EB01C0A4EB0380A6EB
+0700A6130EA2124012E06C5AEAE03CEAFFF86C5AEA1FC0161C7C9B18>74
+D<EA07FC487E6C5AEA01C0A4485AA648C7FCA6120E14301470A4B512E0A3141C7E9B18>
+76 D<3907E01F80000FEB3FC0000714803903B02E00146EA214CE380730DC1331149CA2
+1333141C000E5B13371336133E133C131848C65AA638FE03F800FF7F00FE5B1A1C7F9B18
+>I<126012F0A37E1278A3127C123CA3123E121EA3121F7EA313801207A313C01203A413
+E01201A313F0120013600C24789F18>92 D<387FFFC0B512E0A26C13C013047E7F18>95
+D<EA03FC48B4FC4813801303380601C01200A2137FEA07FF121FEA3F813878038012F012
+E0A21307EA701F387FFFF0EA3FFBEA0FE114147D9318>97 D<127EA3120EA45A137CEA1D
+FF001F13801383381E01C0123CEB00E01238A4387801C0A2EB0380A2EB0F00EA7C1FEAFF
+FCEAEFF8EA63E0131C7C9B18>I<13FF00031380000F13C0EA1F03383C018048C7FC1270
+5AA713033870078038780F00EA3FFE6C5AEA07F012147B9318>I<EB07E0A31300A4EB01
+C0EA01F1EA07FDEA0FFFEA1E0FEA3C0738780380127012E0A4EB0700A25B5B6C5AEA787F
+383FFFC0381FEFE0380F87C0131C7C9B18>I<13F8EA07FE487E381F0780EA3C03387801
+C0127012E0A2B5FCA2148000E0C7FCA213033870078038780F00EA3FFE6C5AEA07F01214
+7B9318>I<EB01F8EB07FC131FEB1E3CEB38181400A25B381FFFF05A7E38007000A25BA6
+485AA6EA7FFE12FF127F161C7E9B18>I<EB1E1F90387FFF8090B5FC3901E1E3003803C0
+E01380EA0700A3495AA238038780EA07FF49C7FCEA0E7890C8FCA26CB47E4813E0487F38
+3C007848133812705AA2147800705B387C03E0383FFFC0000F90C7FCEA03FC191F809318
+>I<1318133C137C133C131890C7FCA4EA0FF8121F120FEA0038A25BA65BA6EA7FFFB512
+806C1300111D7C9C18>105 D<14C0EB01E013031301EB00C01400A4EBFFC0A31301A2EB
+0380A6EB0700A6130EA65BA2EA6038EAF078B45A5BEA3F8013277F9C18>I<EA07E0120F
+12071200A4485AEBC7FEA3EBC1E0EBC3C038038780EB8F00139E13BC13FE13EEEA07CF13
+87EB0780130314C01301387FC7F838FFE7FC387FC7F8171C7F9B18>I<EA0FFCA3EA001C
+A45BA65BA65BA6B5128014C01480121C7D9B18>I<381F3C3CEBFEFE13FF3807CFCEEB8F
+8E380F0F0EA2EA0E0EA4381C1C1CA638FE3E3E38FF7F7F38FE3E3E1814809318>I<381F
+8F80383FBFE0381FFFF03803F07013E0EA07C013801300A4000E13E0A638FF87F8EBCFFC
+EB87F816147F9318>I<13FCEA03FF000F1380EA1F07383C03C0EA7801007013E0EAE000
+A4EB01C0A2EB0380EAF007EB0F00EA7C3EEA3FFC6C5AEA07E013147C9318>I<3807E3E0
+380FEFF83807FFFC3800FC1CEBF00EEA01E0140713C0A40003130EA2141CA21478EBE0F8
+3807FFE0EB7FC0EB1F0090C7FCA3120EA4EAFFC0A3181E819318>I<EBF8C0EA03FDEA0F
+FFEA1F0FEA3C0738780380127012E0A4EB0700A25BA26C5AEA787FEA3FFEEA1FEEEA078E
+EA000EA35BA43801FF80A3121E7C9318>I<381FE1F8EBE7FCEBEFFE3800FE1EEBFC0C38
+01F8005B5B5BA3485AA6EAFFFC7F5B17147E9318>I<EBFE603807FFE05AEA1F01121C00
+3813C0EA3C00001F1300EA0FF8EA07FE3800FF801307383001C01270A238780380EA7C07
+B51200EAEFFEEA63F813147D9318>I<487E7FA3485A387FFFC0B5FC7E38038000A248C7
+FCA6120E5BEB0380A2EB07005BEA07FE5BEA01F012197C9818>I<387E07E0EAFE0FEA7E
+07EA0E00A2381C01C0A638380380A41307131F383FFFE06C13F03807E3E014147D9318>
+I<387F8FF000FF13F8007F13F0381C0380A2EB0700121EEA0E0F130E131E131CA25BA26C
+5AA2136013E05B6C5A15147C9318>I<38FF87F8138F1387383800E0EB01C0A3148013E3
+EA39F31233EB7700A212371376EA3666136EEA3C7CA2EA383815147C9318>I<381FE3FC
+13E713E33803C3C000011380EBE700EA00EE13FC137C1338137813FCEA01DCEA038E1207
+1307120E38FF1FE0EB9FF0EB1FE016147E9318>I<380FF1FE381FF9FF380FF1FE380380
+7013C0000113E0A213C114C0A23800E380A2EBE700A213E6136E136C137C1378A21370A2
+5BA2485A12F3EAF780B4C7FC5A1278181E7F9318>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fm cmcsc10 10.95 18
+/Fm 18 121 df<1318A2133CA3134EA213CF1387A238010380A2000313C0EA0201A23807
+FFE0EA0400A2481370A2001813380038137838FE01FF18177F961C>97
+D<EB7E083803819838070078000C1338001C13185A00781308127000F01300A700701308
+127812386C1310120C000713603803818038007E0015177E961B>99
+D<EAFFFE381C0780EB01C0EB00E01470A21438A2143CA71438A21478147014E0EB01C0EB
+038038FFFE0016177E961C>I<B512C0EA1C011300144014601420A213081400A21318EA
+1FF8EA1C1813081410A2130014301420A21460EB01E0B5FC14177E9619>I<B512C0EA1C
+011300144014601420A213081400A21318EA1FF8EA1C181308A390C7FCA6EAFFC013177E
+9618>I<EB7E083803819838070078000C1338001C13185A00781308127000F01300A5EB
+03FEEB00381270127812387E120C1207380380D838007F0817177E961D>I<38FF87FC38
+1C00E0AAEA1FFFEA1C00AA38FF87FC16177E961C>I<EAFF80EA1C00B3A3EAFF8009177E
+960E>I<EA1FF0EA01C0B112E1A2EAC180EA4300123E0C177E9613>I<EAFFC0001CC7FCAD
+1440A314C0A2148013011307B5FC12177E9617>108 D<00FCEB07F0001C1480A2001613
+0BA200131313A338118023A23810C043A3EB6083A2EB3103A3131AA2130C123800FEEB1F
+F01C177E9622>I<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2
+131C130E1307A2EB03A0EB01E0A213001460123800FE132016177E961C>I<13FE380383
+80380E00E0481370003C1378003813380078133C0070131C00F0131EA70070131C007813
+3C00381338003C1378001C13706C13E0380383803800FE0017177E961D>I<EAFFFCEA1C
+07EB03C0130114E0A414C01303EB0700EA1FFC001CC7FCAAB47E13177E9619>I<EA0FC4
+EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FCEA001C130E1306
+1280A3EAC004EAE008EAD810EA87E00F177E9615>115 D<387FFFFC3870381C00401304
+A200C0130600801302A300001300AE3803FF8017177F961B>I<38FF81FC381C00701420
+B0000C1340120E6C138038018300EA007C16177E961C>I<38FF80FE381F0070000E1360
+6C1340EB80803803C100EA01C3EA00E213F4137813387F133E134E13C7EB8780380103C0
+EA0201380600E0000413F0000C1370003C137800FE13FF18177F961C>120
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fn cmti10 10.95 20
+/Fn 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: Fo cmbxti10 14.4 1
+/Fo 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fp cmbx12 17.28 37
+/Fp 37 122 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1007FB512F0A3
+1C2E7AAD28>49 D<EB3FE03801FFFE0007EBFF80D80F8013C0391E003FE00038EB1FF000
+7CEB0FF8007EEB07FCB4FC018013FEA21403A2EA7F00003E1307C7FC15FCA2EC0FF8A215
+F0EC1FE015C0EC3F80EC7F00147E14F8495A495A495A49C7FC011E130E5B133849131E49
+131C485A48C7123C48B512FC5A5A5A4814F8B6FCA31F2E7CAD28>I<1578A215FCA34A7E
+A24A7EA24A7FA34A7FEC0E7F021E7FEC1C3FA202387F151F02787FEC700FA202E07F1507
+010180ECC003A249486C7EA201078191C7FC498191B6FCA24981011CC7123F013C810138
+141FA24981160F01F081491407A2484881486C1403B549B512FCA336317DB03D>65
+D<913A03FF800180023FEBF00349B5EAFC0701079038003F0FD91FF8EB079FD93FC0EB01
+FFD9FF807F4848C8127F4848153F0007161F49150F485A001F1607A2485A1703127FA249
+92C7FCA212FFA9127FA27FEF0380123FA26C7E1707000F17006C7E6D150E0003161E6C6C
+151C6C6C6C1478D93FC05CD91FF8EB03E0D907FFEB3F800101D9FFFEC7FCD9003F13F802
+03138031317CB03A>67 D<B812F0A3C6903880003FEE07F816031600A21778A21738A317
+1C1507A31700A25D5D5D91B5FCA3EC803F818181A21707A392C7120EA4171EA2173CA217
+7C17FC16011607163FB812F8A330317EB035>69 D<B812E0A3C6903880007FEE0FF01603
+1601A21600A21770A31738A21507A21700A35D5D5D91B5FCA3EC803F818181A592C8FCAC
+B612C0A32D317EB033>I<DA03FF1303027FEBF00749B5EAFC0F01079038007E1FD91FF0
+EB0FBFD97FC0EB03FF49487F4848C87E485A0007824848815B001F82A2484881A2127FA2
+4992C7FC12FFAA0307B512F8127F7FDB00011300123FA26C7EA2120F7F6C7E12036C7E6C
+6C7E6D6C5BD91FF8497ED907FFEB3E3F01019038FFFC1F6D6CEBF00F0203EB800335317C
+B03F>I<B61280A3C6EB8000B3B3A7B61280A319317EB01E>73 D<B67EA3000190C9FCB3
+A9EE0380A416071700A25EA35E5E5E5E4B5A150FB7FCA329317DB030>76
+D<B500C00303B5FCA26E5DC61900D9EFF0150EA3D9E7F85DA2D9E3FC5DA2D9E1FE5DA2D9
+E0FF5DA26E6C495AA26E6C495AA36E6C495AA26E6C130EA26E6C5BA26E6C5BA26E6C5BA2
+6E6C5BA392387F81C0A292383FC380A2DB1FE7C7FCA2ED0FFEA26F5AA36F5A487EB526E0
+01F090B6FCA26F5A48317EB04D>I<B56C49B512C08080C66D90390003E0006E6E5AEBEF
+FC13E780EBE3FF01E17F01E07F6E7E143F816E7E6E7E6E7E14036E7E16806E13C0ED7FE0
+ED3FF0151F16F8ED0FFCED07FEED03FF6F13818117C1EE7FE1EE3FF1EE1FF9EE0FFD1607
+17FF828282177F173FA2171F170F486C1507B500E014031701A23A317EB03F>I<B712E0
+16FEEEFF80C6D9800013E0EE3FF0EE0FF8EE07FCA2EE03FEA217FFA717FEA2EE07FC17F8
+160FEE3FE0EEFFC091B6120016F80280C8FCB3A2B67EA330317EB037>80
+D<B77E16F816FEC690398003FF809238007FE0EE1FF0707EA283160783A65F160F5F4C5A
+4C5A4C5ADB03FFC8FC91B512F816E091388007F8ED01FC6F7E167F83707EA283A583A4F0
+038017F8161F1900706C5AB6398003FE0E933801FFFC9338001FF039317EB03C>82
+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<B53A1FFFE03FF8A33C0FF000FE0007806D15030007
+6EEB0700816D5D00039138FF800EA26C6C486D5A15DF01FF153C6C9039038FE038A2D97F
+876D5A150702C714F0D93FCF6D5AECCE03D91FFEEBF9C09138FC01FD16FF010F5D4A7EA2
+6D486DC7FCA20103147E4A133EA26D48131C35207E9F3A>119 D<3A7FFF807FFCA33A03
+FC000F006C6C131E6C6C5BEC803890387FC078013F5B90381FE1E090380FF3C0ECFF806D
+90C7FC6D5A13016D7E81815B903803DFE09038078FF08190380F07FC90381E03FEEB3C01
+496C7E4914804848EB7FC00003EC3FE026FFFC01B5FCA328207F9F2B>I<B5EB1FFCA3D8
+0FF8EB03C0000715806D1307000315007F0001140E7F6C5CA2EC803C017F1338ECC07801
+3F1370ECE0F0011F5B14F1010F5B14F9903807FB80A214FF6D90C7FCA26D5AA26D5AA214
+78A21470A214F05C1301007C5BEAFE035C49C8FC5BEAFC1EEA787CEA3FF0EA0FC0262E7E
+9F2B>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fq cmsy10 10.95 1
+/Fq 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01
+800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15
+306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0
+D900FEC7FC272B7DA02E>13 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fr cmbx12 14.4 53
+/Fr 53 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<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F1480
+A249486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F08049130300
+0181491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F800
+1FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EAFE
+00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1FF8
+B712E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF00F
+9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290C9
+FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F090397F
+F007C0011FB512800107EBFE009038007FF028297CA831>I<B612FCEDFF8016E03A03FC
+001FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0A2
+17C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0A3
+3903FC001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3EB
+FC0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A32729
+7EA82C>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A3160014
+03A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387FE0
+03903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F4848804848804848
+80485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E6C
+7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5D8
+F00FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835>
+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: Fs cmtt10 10.95 89
+/Fs 89 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<12E0B512E0A2
+14C038E00380EB0700C65A131E131C5BA25B13F05BA2485AA3485AA448C7FCA7131D7E9C
+18>55 D<EA03F8EA0FFE487E383E0F80EA3803387001C0A438380380EA3C07381FFF00EA
+07FC487EEA1F1F383C0780387001C000F013E0EAE000A4387001C0EA7803383E0F80381F
+FF006C5AEA03F8131C7E9B18>I<1230127812FCA2127812301200A81230127812FCA212
+7812300614779318>58 D<1218123C127EA2123C12181200A81218123C127EA2123E121E
+120E121C123C127812F01260071A789318>I<14C0EB03E01307EB1FC0EB3F80EBFE0048
+5AEA07F0485AEA3F8048C7FC12FCA2127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB
+07E01303EB00C013187E9918>I<387FFFC0B512E0A26C13C0C8FCA4387FFFC0B512E0A2
+6C13C0130C7E9318>I<126012F87E127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB
+07E0A2EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC12FC5A126013187E9918>
+I<EA0FF0EA3FFC48B4FCEA700F38F00380A2EA600738000F00133E5BEA01F05B485AA55B
+C8FCA5EA0380487EA36C5A111C7D9B18>I<137CEA01FEEA07FF380F8780381E03C0EA3C
+1DEA387F3870FFE0EA71E313C112E1EAE380A638E1C1C0127113E33870FF8038387F00EA
+3C1C381E00E0EA0F833807FFC00001138038007E00131C7E9B18>I<137013F8A213D8A2
+EA01DCA3138CEA038EA4EA0707A5380FFF80A3EA0E03381C01C0A3387F07F000FF13F800
+7F13F0151C7F9B18>I<EA7FFCB5FC6C1380381C03C01301EB00E0A4130114C01307381F
+FF80140014C0EA1C03EB00E014F01470A414F014E01303387FFFC0B51280387FFE00141C
+7F9B18>I<EBF8E0EA03FEEA07FFEA0F07EA1E03EA3C01EA38005AA214005AA8127014E0
+A27E123C381E01C0EA0F073807FF803803FE00EA00F8131C7E9B18>I<EA7FF8EAFFFE6C
+7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114C01303EB0F80387F
+FF00485AEA7FF8141C7F9B18>I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0E
+A390C7FCA21438A5B512F8A3151C7F9B18>I<B512F0A3381C0070A41400A2130EA3EA1F
+FEA3EA1C0EA390C7FCA7EAFFC0A3141C7E9B18>I<3801F1C0EA03FDEA0FFFEA1F0FEA1C
+03123813011270A290C7FC5AA5EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0F
+EA0FFFEA03FDEA01F1141C7E9B18>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFF
+A3EA1C01AA387F07F038FF8FF8387F07F0151C7F9B18>I<EA7FFFB512806C1300EA01C0
+B3A4EA7FFFB512806C1300111C7D9B18>I<387F07F038FF87F8387F07F0381C03C0EB07
+801400130E131E5B13385B13F0121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380A2EB01
+C0387F03F038FF87F8387F03F0151C7F9B18>75 D<EAFFC0A3001CC7FCB114E0A5B5FCA3
+131C7E9B18>I<38FC01F8EAFE03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F8
+1370A21300A638FE03F8A3151C7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313
+C1121CA213E1A313611371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C
+7F9B18>I<EA0FFE383FFF804813C0EA7803EA700100F013E0EAE000B0EAF001007013C0
+EA7C07EA7FFF6C1380380FFE00131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01E01300
+1470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA0FFE
+383FFF804813C0EA7803EA700100F013E0EAE000AE1370A2EAF079387039C0EA783FEA7F
+FF6C1380380FFE00EA000FEB0780A2EB03C01301A213227E9B18>I<EA7FF8EAFFFE6C7E
+381C0F80130314C01301A313031480130F381FFF005BA2EA1C0F7FEB0380A5149CA3387F
+01F8EAFF81387F00F0161C7F9B18>I<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A390C7
+FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A2126012E0130100F013
+C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA238E07038A400001300
+B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F01380783C03803FF80
+6C1300EA007C171C809B18>I<38FE03F8EAFF07EAFE03383C01E0001C13C0A3EA1E0300
+0E1380A438070700A4EA038EA4EA018C13DCA3EA00D813F8A21370151C7F9B18>I<38FE
+03F8A338700070A36C13E0A513F8EA39FC13DCA2001913C0A3138CA2EA1D8DA31305000D
+1380EA0F07A2EA0E03151C7F9B18>I<387F0FE0139F130F380E0700120FEA070E138EEA
+039C13DCEA01F8A212005B137013F07F487E13DCEA039E138EEA070F7F000E1380130300
+1E13C0387F07F000FF13F8007F13F0151C7F9B18>I<38FE03F8EAFF07EAFE03381C01C0
+EA1E03000E1380EA0F0700071300A2EA038EA2EA01DCA3EA00F8A21370A9EA01FC487E6C
+5A151C7F9B18>I<383FFFE05AA2387001C01303EB07801400C65A131E131C133C5B1370
+13F0485A5B1203485A90C7FC5A001E13E0121C123C5A1270B5FCA3131C7E9B18>I<EAFF
+F8A3EAE000B3ACEAFFF8A30D24779F18>I<126012F0A27E1278127C123CA2123E121E12
+1F7EA27F12077F1203A27F12017F12007F1378A2137C133C133E131EA2131F7F14801307
+A2EB030011247D9F18>I<EAFFF8A3EA0038B3ACEAFFF8A30D247F9F18>I<387FFFC0B512
+E0A26C13C013047E7F18>95 D<1206121E123E12381270A212E0A312F812FC127CA21238
+070E789E18>I<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF1207121FEA7F0312
+7812E0A3EAF007EA780F383FFFF8EA1FFDEA07F015147E9318>I<127E12FE127E120EA5
+133EEBFF80000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFFC000
+0E138038063E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838030048C7FCA25A
+A61270EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I<EB1F80133F131F
+1303A5EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007A2EA380FEA3C1F
+381FFFF0380FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA3E0F38380780EA
+7003A238E001C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF8000071300EA01F8
+12147D9318>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0B5FCA23801C000
+AEEA7FFFA3131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00487EA5EA1C0EEA
+1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F038700070481338A400
+7813F0EA7E03381FFFC06C13803801FC00151F7F9318>I<127E12FE127E120EA5133EEB
+FF80000F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC171C809B18>I<EA
+0380EA07C0A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C18>I<1338137C
+A313381300A4EA0FFCA3EA001CB3A4EA6038EAF078EAFFF0EA7FE0EA3F800E277E9C18>
+I<127E12FE127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA0E0F
+7FEB038014C0387FC7F812FF127F151C7F9B18>I<EAFFC0A31201B3A4B51280A3111C7D
+9B18>I<38F9C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB3E3E
+1714809318>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC7FC38FFE7
+FE387FC7FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A238E000E0
+A5EAF001007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318>I<EA7E
+3E38FEFF80007F13C0380FC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0
+000E1380EB3E0090C7FCA7EA7FC0487E6C5A151E809318>I<3801F380EA07FBEA1FFFEA
+3E1FEA380FEA7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7
+EB1FF0EB3FF8EB1FF0151E7E9318>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0005B
+A290C7FCA9EAFFFC7F5B14147E9318>I<EA07F7EA3FFF5AEA780FEAE007A3007CC7FCEA
+7FE0EA1FFCEA03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F011147D93
+18>I<487E1203A4387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C1380EB3E
+0013197F9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE3801
+FCFC1714809318>I<387F8FF000FF13F8007F13F0381C01C0380E0380A338070700A313
+8FEA038EA3EA01DCA3EA00F8A2137015147F9318>I<38FF07F8138F1307383800E0A438
+1C01C0137113F9A213D9EA1DDD000D1380A3138DEA0F8FA23807070015147F9318>I<38
+7F8FF0139F138F380F0700EA078EEA039EEA01DC13F81200137013F07FEA01DCEA039E13
+8EEA0707000E1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000FF13F800
+7F13F0380E01C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013DC1378A3
+1370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA2387001E0
+EB03C0EB078038000F00131E5B13F8485AEA03C0485A380F0070121E5A5AB512F0A31414
+7F9318>I<EB07E0131F137FEB780013E0AB1201EA7FC0485AA26C7EEA01E01200AB1378
+EB7FE0131F130713247E9F18>I<126012F0B3B012600424769F18>I<127CB4FC13C01203
+C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0005BABEA03C012FF90C7FC127C13247E9F18>I<
+EA060CEA1F1EEA3FBEEAFBF8EAF1F0EA60C00F067C9B18>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Ft cmr10 10.95 82
+/Ft 82 125 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<3807FF
+C038003E00131EB3A3122012F8A3EAF01CEA403CEA6038EA1070EA0FC012207F9E17>I<
+39FFF007FC390F0003E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21
+E01341EB80F0EB0078A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>
+I<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E1C>I<B4
+6CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D1383A29038
+0E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>
+I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03
+C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D1F7E9E22
+>I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0A2007C14
+F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E06CEB03C0
+6C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80
+EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<EB1F
+E0EB70383801C00E48487E39070003804814C0001EEB01E0003E14F0003C1300007C14F8
+A20078147800F8147CA900781478007C14F8A2003C14F0383E0781391E0841E0390F1023
+C00007148039039017003801D01E3900783804EB1FF8EB001CEC0C0CEC0E1CEC0FF8A214
+0715F0EC01E01E297E9F23>I<B512E0380F80780007131E80EC0780A215C0A41580A2EC
+0F00141E1478EBFFE0EB80601438143C141C141EA3141FA315011581140F390FC0078239
+FFFC03C4C812F820207F9E22>I<3803F040380C0CC0EA1803EA3001EA6000A212E01440
+A36C13007E127CEA7F80EA3FF86CB4FC00071380C613C0EB1FE013031301EB00F014707E
+A46C136014E06C13C038F8018038C60300EA81FC14217E9F19>I<007FB512E038780F01
+0060EB006000401420A200C0143000801410A400001400B3497E3803FFFC1C1F7E9E21>
+I<39FFF00FF8390F0003E0EC0080B3A46CEB01001380120314026C6C5A6C6C5AEB3830EB
+0FC01D207E9E22>I<39FFF003FE391F8000F86CC7126015206C6C1340A36C6C1380A2EB
+E00100011400A23800F002A213F8EB7804A26D5AA36D5AA2131F6D5AA2EB07C0A36D5AA3
+6DC7FC1F207F9E22>I<3BFFF07FF81FF03B1F000FC007C06C903907800180170015C001
+805C00071502EC09E013C000035DEC19F01410D801E05CA2EC2078D800F05CA2EC403C01
+785CA2EC801E017C1460013C144090383D000F133F6D5CA2011E1307010E91C7FCA2010C
+7F010413022C207F9E2F>I<397FF81FF8390FE007C03907C0030000031302EBE0063801
+F00400005BEBF818EB78106D5AEB3E60EB1E406D5AA213076D7E497E1305EB08F0EB18F8
+EB1078EB207CEB603EEB401EEB801F3901000F801407000214C000061303001FEB07E039
+FFC01FFE1F1F7F9E22>I<39FFF001FF391F800078000F146012076D1340000314807F39
+01F001001200EBF802EB7C06EB3C04EB3E08131EEB1F10EB0FB0EB07A014E06D5AACEB3F
+FC201F7F9E22>I<387FFFFE387E003C127800701378006013F814F0384001E0130314C0
+EB07801200EB0F00131EA25B137C13785B1201EBE002EA03C0A2EA0780000F1306130000
+1E1304003E130C123C48133C14FCB5FC171F7E9E1C>I<12FFA212C0B3B3A512FFA2082D
+7CA10D>I<EA0804EA1008EA2010A2EA4020A2EA8040A3EAB85CEAFC7EA2EA7C3EEA381C
+0F0E7A9F17>I<12FFA21203B3B3A512FFA2082D80A10D>I<120812101220A21240A21280
+A312B812FCA2127C1238060E7D9F0D>96 D<EA1FE0EA3030EA7818131CEA300E1200A313
+FEEA0F8EEA1E0E1238127800F01310A3131E127838386720380F83C014147E9317>I<12
+1C12FC121CAA137CEA1D87381E0180EB00C0001C13E01470A21478A6147014F014E0001E
+13C0381A018038198700EA107C15207E9F19>I<EA01FCEA0706EA1C0F123813060078C7
+FC127012F0A61270127800381380A2381C0100EA0706EA01F811147F9314>I<EB01C013
+0F1301AAEA01F1EA070DEA0C03EA180112381278127012F0A61270A21238EA1803120CEA
+070D3801F1F815207F9F19>I<EA03F0EA0E1C487E487EA238700380A212F0B5FC00F0C7
+FCA41270A26C1380A2381C0100EA0706EA01F811147F9314>I<137CEA01C6EA030F1207
+EA0E061300A7EAFFF0EA0E00B2EA7FE01020809F0E>I<14E03803E330EA0E3CEA1C1C38
+380E00EA780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381FFF8014C038
+3001E038600070481330A4006013606C13C0381C03803803FC00141F7F9417>I<121C12
+FC121CAA137C1386EA1D03001E1380A2121CAE38FF8FF014207E9F19>I<1238127CA312
+38C7FCA6121C12FC121CB1EAFF80091F7F9E0C>I<13E0EA01F0A3EA00E01300A61370EA
+07F012001370B3A31260EAF06013C0EA6180EA3F000C28829E0E>I<121C12FC121CAAEB
+1FE0EB0780EB060013045B5B5B136013E0EA1DF0EA1E70EA1C38133C131C7F130F7F1480
+14C038FF9FF014207E9F18>I<121C12FC121CB3ABEAFF8009207F9F0C>I<391C3E03E039
+FCC30C30391D019018001EEBE01CA2001C13C0AE3AFF8FF8FF8021147E9326>I<EA1C7C
+EAFC86EA1D03001E1380A2121CAE38FF8FF014147E9319>I<EA01F8EA070E381C038038
+3801C0A2387000E0A200F013F0A6007013E0A2383801C0A2381C038038070E00EA01F814
+147F9317>I<EA1C7CEAFD87381E018014C0381C00E014F014701478A6147014F014E038
+1E01C0EB0380381D8700EA1C7C90C7FCA8B47E151D7E9319>I<3801F04038070CC0EA0E
+02EA1C03EA38011278127012F0A6127012781238EA1C03EA0C05EA0709EA01F1EA0001A8
+EB0FF8151D7F9318>I<EA1CF0EAFD18EA1E3CA21318EA1C00AEEAFFC00E147E9312>I<EA
+0FC8EA3038EA6018EAC008A3EAE000127CEA3FE0EA1FF0EA07F8EA003CEA800E130612C0
+A21304EAE00CEAD818EA87E00F147F9312>I<1202A31206A2120EA2123EEAFFF8EA0E00
+AB1304A5EA07081203EA01F00E1C7F9B12>I<381C0380EAFC1FEA1C03AE1307120CEA06
+1B3803E3F014147E9319>I<38FF83F8383E00E0001C13C06C1380A338070100A21383EA
+0382A2EA01C4A213E4EA00E8A21370A3132015147F9318>I<39FF9FE1FC393C07807039
+1C030060EC8020000E1440A214C0D80704138014E0A239038861001471A23801D032143A
+143E3800E01CA2EB6018EB40081E147F9321>I<38FF87F8381E03C0380E0180EB0300EA
+0702EA0384EA01C813D8EA00F01370137813F8139CEA010E1202EA060738040380000C13
+C0003C13E038FE07FC16147F9318>I<38FF83F8383E00E0001C13C06C1380A338070100
+A21383EA0382A2EA01C4A213E4EA00E8A21370A31320A25BA3EAF080A200F1C7FC126212
+3C151D7F9318>I<EA7FFFEA700E1260EA401C133813781370EA00E0120113C0EA038012
+071301120E121EEA1C03EA3802EA7006130EEAFFFE10147F9314>I<B812F82D01808C2E>
+124 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fu cmbx12 20.736 14
+/Fu 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
+%%PaperSize: A4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 75 659 a Fu(GNU)33 b(Readline)h(Library)p 75
+709 1800 17 v 936 757 a Ft(Edition)17 b(5.0,)c(for)i
+Fs(Readline)f(Library)g Ft(V)l(ersion)i(5.0.)1559 811
+y(Septem)o(b)q(er)g(2003)75 2467 y Fr(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)75
+2534 y(Brian)h(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
+b(oundation)p 75 2570 1800 9 v eop
+%%Page: 2 2
+2 1 bop 75 1512 a Ft(This)11 b(man)o(ual)g(describ)q(es)h(the)f(GNU)g
+(Readline)h(Library)f(\(v)o(ersion)f(5.0,)h(19)f(Septem)o(b)q(er)h
+(2003\),)f(a)g(library)75 1567 y(whic)o(h)20 b(aids)h(in)f(the)g
+(consistency)g(of)f(user)h(in)o(terface)g(across)f(discrete)h(programs)
+f(whic)o(h)h(pro)o(vide)g(a)75 1621 y(command)15 b(line)i(in)o
+(terface.)75 1689 y(Cop)o(yrigh)o(t)301 1688 y(c)289
+1689 y Fq(\015)d Ft(1988-2003)f(F)l(ree)i(Soft)o(w)o(are)f(F)l
+(oundation,)h(Inc.)75 1756 y(P)o(ermission)i(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 1811 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.)195 1878 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)l(,)
+h(distribute)h(and/or)e(mo)q(dify)h(this)g(do)q(cumen)o(t)g(under)195
+1933 y(the)h(terms)f(of)h(the)g(GNU)g(F)l(ree)g(Do)q(cumen)o(tation)g
+(License,)i(V)l(ersion)f(1.1)e(or)g(an)o(y)h(later)195
+1988 y(v)o(ersion)14 b(published)i(b)o(y)e(the)g(F)l(ree)f(Soft)o(w)o
+(are)g(F)l(oundation;)h(with)g(no)f(In)o(v)m(arian)o(t)i(Sections,)195
+2042 y(with)h(the)f(F)l(ron)o(t-Co)o(v)o(er)e(texts)i(b)q(eing)i(\\A)e
+(GNU)g(Man)o(ual,")g(and)g(with)h(the)f(Bac)o(k-Co)o(v)o(er)195
+2097 y(T)l(exts)h(as)g(in)h(\(a\))e(b)q(elo)o(w.)24 b(A)16
+b(cop)o(y)g(of)g(the)g(license)i(is)f(included)i(in)e(the)f(section)h
+(en)o(titled)195 2152 y(\\GNU)e(F)l(ree)g(Do)q(cumen)o(tation)g
+(License.")195 2219 y(\(a\))j(The)h(FSF's)f(Bac)o(k-Co)o(v)o(er)g(T)l
+(ext)h(is:)28 b(\\Y)l(ou)19 b(ha)o(v)o(e)g(freedom)g(to)f(cop)o(y)h
+(and)g(mo)q(dify)195 2274 y(this)e(GNU)f(Man)o(ual,)g(lik)o(e)h(GNU)f
+(soft)o(w)o(are.)22 b(Copies)17 b(published)h(b)o(y)f(the)f(F)l(ree)g
+(Soft)o(w)o(are)195 2329 y(F)l(oundation)g(raise)f(funds)h(for)e(GNU)h
+(dev)o(elopmen)o(t.")75 2451 y(Published)i(b)o(y)f(the)f(F)l(ree)g
+(Soft)o(w)o(are)f(F)l(oundation)75 2506 y(59)h(T)l(emple)h(Place,)f
+(Suite)i(330,)75 2560 y(Boston,)d(MA)h(02111-1307)75
+2615 y(USA)p eop
+%%Page: -1 3
+-1 2 bop 1862 -58 a Ft(i)75 149 y Fp(T)-7 b(able)27 b(of)f(Con)n(ten)n
+(ts)75 320 y Fr(1)67 b(Command)22 b(Line)i(Editing)d
+Fo(.)10 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h
+(.)f(.)g(.)g(.)42 b Fr(1)224 389 y Ft(1.1)j(In)o(tro)q(duction)16
+b(to)f(Line)h(Editing)e Fn(.)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 Ft(1)224 444 y(1.2)45 b(Readline)16 b(In)o(teraction)8
+b Fn(.)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 Ft(1)374 499 y(1.2.1)44 b(Readline)16
+b(Bare)f(Essen)o(tials)f Fn(.)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 Ft(1)374 553 y(1.2.2)44 b(Readline)16 b(Mo)o(v)o(emen)o(t)e(Commands)
+7 b Fn(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
+(.)h(.)21 b Ft(2)374 608 y(1.2.3)44 b(Readline)16 b(Killing)i(Commands)
+11 b Fn(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)25 b Ft(2)374 663 y(1.2.4)44 b(Readline)16
+b(Argumen)o(ts)c Fn(.)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 Ft(3)374 718 y(1.2.5)44 b(Searc)o(hing)16 b(for)e(Commands)h(in)h
+(the)f(History)e Fn(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
+b Ft(3)224 773 y(1.3)45 b(Readline)16 b(Init)h(File)e
+Fn(.)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 Ft(4)374 827 y(1.3.1)44 b(Readline)16
+b(Init)g(File)h(Syn)o(tax)7 b Fn(.)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 Ft(4)374 882 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)5
+b Fn(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)g(.)f(.)19 b Ft(9)374 937 y(1.3.3)44 b(Sample)16
+b(Init)g(File)11 b Fn(.)d(.)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(.)26 b Ft(10)224 992 y(1.4)45 b(Bindable)17 b(Readline)g(Commands)6
+b Fn(.)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 Ft(13)374
+1046 y(1.4.1)44 b(Commands)14 b(F)l(or)h(Mo)o(ving)e
+Fn(.)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 Ft(13)374 1101 y(1.4.2)44
+b(Commands)14 b(F)l(or)h(Manipulating)i(The)e(History)9
+b Fn(.)e(.)h(.)f(.)h(.)f(.)h(.)24 b Ft(13)374 1156 y(1.4.3)44
+b(Commands)14 b(F)l(or)h(Changing)h(T)l(ext)e Fn(.)8
+b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30
+b Ft(14)374 1211 y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)9
+b Fn(.)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 Ft(16)374
+1266 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)c
+Fn(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)27
+b Ft(17)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 Fn(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)25 b Ft(17)374 1375 y(1.4.7)44 b(Keyb)q(oard)15
+b(Macros)6 b Fn(.)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 Ft(17)374 1430 y(1.4.8)44 b(Some)15 b(Miscellaneous)i(Commands)7
+b Fn(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+22 b Ft(18)224 1485 y(1.5)45 b(Readline)16 b(vi)g(Mo)q(de)e
+Fn(.)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 Ft(19)75 1606 y Fr(2)67 b(Programming)23
+b(with)g(GNU)f(Readline)12 b Fo(.)f(.)g(.)f(.)g(.)g(.)g(.)h(.)f(.)35
+b Fr(21)224 1675 y Ft(2.1)45 b(Basic)16 b(Beha)o(vior)8
+b Fn(.)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 Ft(21)224 1729 y(2.2)45
+b(Custom)14 b(F)l(unctions)7 b Fn(.)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 Ft(22)374
+1784 y(2.2.1)44 b(Readline)16 b(T)o(yp)q(edefs)9 b Fn(.)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 Ft(22)374 1839 y(2.2.2)44
+b(W)l(riting)16 b(a)e(New)i(F)l(unction)6 b Fn(.)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 Ft(23)224 1894 y(2.3)45 b(Readline)16 b(V)l(ariables)g
+Fn(.)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 Ft(24)224 1949 y(2.4)45 b(Readline)16
+b(Con)o(v)o(enience)h(F)l(unctions)7 b Fn(.)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 Ft(28)374 2003 y(2.4.1)44 b(Naming)15 b(a)g(F)l(unction)e
+Fn(.)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 Ft(28)374
+2058 y(2.4.2)44 b(Selecting)17 b(a)e(Keymap)6 b Fn(.)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 Ft(28)374 2113 y(2.4.3)44 b(Binding)17
+b(Keys)5 b Fn(.)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 Ft(29)374 2168 y(2.4.4)44 b(Asso)q(ciating)16
+b(F)l(unction)g(Names)f(and)g(Bindings)8 b Fn(.)h(.)f(.)f(.)h(.)f(.)h
+(.)23 b Ft(31)374 2222 y(2.4.5)44 b(Allo)o(wing)16 b(Undoing)f
+Fn(.)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
+Ft(31)374 2277 y(2.4.6)44 b(Redispla)o(y)10 b Fn(.)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 Ft(32)374 2332 y(2.4.7)44 b(Mo)q(difying)16 b(T)l(ext)7
+b Fn(.)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 Ft(34)374 2387 y(2.4.8)44 b(Character)14 b(Input)c
+Fn(.)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 Ft(34)374 2442 y(2.4.9)44 b(T)l(erminal)16 b(Managemen)o(t)11
+b Fn(.)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 Ft(35)374 2496 y(2.4.10)43
+b(Utilit)o(y)17 b(F)l(unctions)c Fn(.)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 Ft(35)374 2551 y(2.4.11)43 b(Miscellaneous)18
+b(F)l(unctions)6 b Fn(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)21 b Ft(36)374
+2606 y(2.4.12)43 b(Alternate)16 b(In)o(terface)f Fn(.)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 Ft(37)374 2661
+y(2.4.13)43 b(A)16 b(Readline)g(Example)9 b Fn(.)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 Ft(38)p eop
+%%Page: -2 4
+-2 3 bop 75 -58 a Ft(ii)1321 b(GNU)15 b(Readline)h(Library)224
+42 y(2.5)45 b(Readline)16 b(Signal)h(Handling)12 b Fn(.)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 Ft(39)224 96
+y(2.6)45 b(Custom)14 b(Completers)f Fn(.)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 Ft(41)374
+151 y(2.6.1)44 b(Ho)o(w)14 b(Completing)i(W)l(orks)10
+b Fn(.)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 Ft(41)374 206 y(2.6.2)44
+b(Completion)16 b(F)l(unctions)6 b Fn(.)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 Ft(42)374 261 y(2.6.3)44 b(Completion)16 b(V)l(ariables)c
+Fn(.)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 Ft(43)374 315
+y(2.6.4)44 b(A)15 b(Short)g(Completion)h(Example)5 b
+Fn(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)20 b Ft(46)75 437 y Fr(App)r(endix)k(A)50 b(Cop)n(ying)23
+b(This)g(Man)n(ual)15 b Fo(.)c(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)37
+b Fr(55)224 505 y Ft(A.1)45 b(GNU)15 b(F)l(ree)h(Do)q(cumen)o(tation)f
+(License)g Fn(.)7 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)28 b Ft(55)374 560 y(A.1.1)44
+b(ADDENDUM:)14 b(Ho)o(w)g(to)h(use)h(this)f(License)i(for)e(y)o(our)465
+615 y(do)q(cumen)o(ts)f Fn(.)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(.)f(.)29 b Ft(61)75
+736 y Fr(Concept)22 b(Index)10 b Fo(.)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 Fr(63)75 871 y(F)-6 b(unction)25
+b(and)d(V)-6 b(ariable)24 b(Index)9 b Fo(.)i(.)f(.)g(.)h(.)f(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)32 b Fr(65)p
+eop
+%%Page: 1 5
+1 4 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(1)75 149 y Fp(1)41 b(Command)28 b(Line)e(Editing)137
+255 y Ft(This)16 b(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f
+(of)g(the)g Fm(gnu)g Ft(command)g(line)i(editing)f(in)o(terface.)75
+378 y Fr(1.1)33 b(In)n(tro)r(duction)24 b(to)e(Line)i(Editing)137
+497 y Ft(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
+562 y(The)h(text)f Fl(C-k)h Ft(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
+560 y Fk(h)p 1844 534 19 2 v 1844 562 a Fj(k)p 1844 570
+V 1860 560 a Fk(i)75 617 y Ft(k)o(ey)d(is)h(pressed)g(while)g(the)f
+(Con)o(trol)g(k)o(ey)g(is)h(depressed.)137 682 y(The)g(text)g
+Fl(M-k)f Ft(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 737 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
+735 y Fk(h)p 942 709 V 942 737 a Fj(k)p 942 745 V 958
+735 a Fk(i)987 737 y Ft(k)o(ey)g(is)h(pressed.)20 b(The)15
+b(Meta)e(k)o(ey)h(is)h(lab)q(eled)1779 735 y Fk(h)p 1791
+709 72 2 v 1791 737 a Fj(AL)m(T)p 1791 745 V 1860 735
+a Fk(i)75 792 y Ft(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 790 y Fk(h)p 1225 764 V 1225 792 a Fj(AL)m(T)p 1225
+800 V 1294 790 a Fk(i)1322 792 y Ft(\(usually)i(to)e(either)i(side)g
+(of)f(the)75 847 y(space)j(bar\),)f(the)388 845 y Fk(h)p
+400 819 V 400 847 a Fj(AL)m(T)p 400 854 V 469 845 a Fk(i)499
+847 y Ft(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 845 y Fk(h)p
+1709 819 V 1709 847 a Fj(AL)m(T)p 1709 854 V 1778 845
+a Fk(i)1808 847 y Ft(k)o(ey)75 901 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 956
+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 1021
+y(If)c(y)o(ou)g(do)g(not)f(ha)o(v)o(e)h(a)f(Meta)h(or)694
+1019 y Fk(h)p 706 993 V 706 1021 a Fj(AL)m(T)p 706 1029
+V 775 1019 a Fk(i)801 1021 y Ft(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
+1076 y(k)o(eystrok)o(e)f(can)i(b)q(e)g(generated)f(b)o(y)g(t)o(yping)
+809 1074 y Fk(h)p 822 1048 70 2 v 822 1076 a Fj(ESC)p
+822 1084 V 888 1074 a Fk(i)915 1076 y Fn(\014rst)p Ft(,)g(and)g(then)h
+(t)o(yping)1339 1074 y Fk(h)p 1351 1048 19 2 v 1351 1076
+a Fj(k)p 1351 1084 V 1368 1074 a Fk(i)1383 1076 y Ft(.)18
+b(Either)12 b(pro)q(cess)f(is)h(kno)o(wn)75 1131 y(as)j
+Fi(metafying)k Ft(the)425 1129 y Fk(h)p 437 1103 V 437
+1131 a Fj(k)p 437 1139 V 454 1129 a Fk(i)484 1131 y Ft(k)o(ey)l(.)137
+1196 y(The)i(text)e Fl(M-C-k)h Ft(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
+1251 y Fi(metafying)e Fl(C-k)p Ft(.)137 1316 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 1314 y Fk(h)p 1396 1288
+73 2 v 1396 1316 a Fj(DEL)p 1396 1323 V 1467 1314 a Fk(i)1482
+1316 y Ft(,)1514 1314 y Fk(h)p 1526 1288 70 2 v 1526
+1316 a Fj(ESC)p 1526 1323 V 1593 1314 a Fk(i)1608 1316
+y Ft(,)1640 1314 y Fk(h)p 1652 1288 72 2 v 1652 1316
+a Fj(LFD)p 1652 1323 V 1722 1314 a Fk(i)1737 1316 y Ft(,)1768
+1314 y Fk(h)p 1780 1288 70 2 v 1780 1316 a Fj(SPC)p 1780
+1323 V 1847 1314 a Fk(i)1862 1316 y Ft(,)75 1369 y Fk(h)p
+87 1343 76 2 v 87 1371 a Fj(RET)p 87 1378 V 160 1369
+a Fk(i)175 1371 y Ft(,)23 b(and)306 1369 y Fk(h)p 318
+1343 74 2 v 318 1371 a Fj(T)m(AB)p 318 1378 V 390 1369
+a Fk(i)427 1371 y Ft(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
+1425 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
+1423 y Fk(h)p 1456 1397 72 2 v 1456 1425 a Fj(LFD)p 1456
+1433 V 1526 1423 a Fk(i)1560 1425 y Ft(k)o(ey)l(,)h(t)o(yping)1802
+1423 y Fk(h)p 1814 1397 49 2 v 1814 1425 a Fj(C-j)p 1814
+1433 V 1860 1423 a Fk(i)75 1480 y Ft(will)c(pro)q(duce)g(the)f(desired)
+h(c)o(haracter.)j(The)874 1478 y Fk(h)p 886 1452 76 2
+v 886 1480 a Fj(RET)p 886 1488 V 959 1478 a Fk(i)989
+1480 y Ft(k)o(ey)c(ma)o(y)f(b)q(e)h(lab)q(eled)1385 1478
+y Fk(h)p 1397 1452 109 2 v 1397 1480 a Fj(Return)p 1397
+1488 V 1503 1478 a Fk(i)1533 1480 y Ft(or)1588 1478 y
+Fk(h)p 1600 1452 86 2 v 1600 1480 a Fj(En)o(ter)p 1600
+1488 V 1684 1478 a Fk(i)1714 1480 y Ft(on)f(some)75 1535
+y(k)o(eyb)q(oards.)75 1657 y Fr(1.2)33 b(Readline)23
+b(In)n(teraction)137 1777 y Ft(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 1832 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
+1886 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 1941 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 1996
+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
+2051 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 2049 y Fk(h)p 1172 2023 76
+2 v 1172 2051 a Fj(RET)p 1172 2059 V 1245 2049 a Fk(i)1260
+2051 y Ft(.)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 2106 y(end)k(of)e(the)h(line)i(to)d(press)563
+2104 y Fk(h)p 575 2078 V 575 2106 a Fj(RET)p 575 2113
+V 648 2104 a Fk(i)663 2106 y Ft(;)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
+2160 y(cursor)d(within)h(the)g(line.)75 2266 y Fh(1.2.1)30
+b(Readline)20 b(Bare)g(Essen)n(tials)137 2386 y Ft(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 2441 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 2495 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 Fl(C-b)f
+Ft(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 Fl(C-f)p Ft(.)p eop
+%%Page: 2 6
+2 5 bop 75 -58 a Ft(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 446 y Fl(C-b)168 b Ft(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o
+(haracter.)75 524 y Fl(C-f)168 b Ft(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h
+(c)o(haracter.)75 599 y Fk(h)p 87 573 73 2 v 87 601 a
+Fj(DEL)p 87 609 V 158 599 a Fk(i)188 601 y Ft(or)244
+599 y Fk(h)p 256 573 159 2 v 256 601 a Fj(Bac)o(kspace)p
+256 609 V 412 599 a Fk(i)315 656 y Ft(Delete)h(the)f(c)o(haracter)g(to)
+f(the)h(left)h(of)f(the)g(cursor.)75 734 y Fl(C-d)168
+b Ft(Delete)16 b(the)f(c)o(haracter)g(underneath)h(the)f(cursor.)75
+811 y(Prin)o(ting)h(c)o(haracters)315 866 y(Insert)f(the)h(c)o
+(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h(cursor.)75
+944 y Fl(C-_)g Ft(or)f Fl(C-x)h(C-u)315 998 y Ft(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 1053 y(line.)75
+1131 y(\(Dep)q(ending)i(on)f(y)o(our)g(con\014guration,)g(the)863
+1129 y Fk(h)p 875 1103 V 875 1131 a Fj(Bac)o(kspace)p
+875 1138 V 1032 1129 a Fk(i)1063 1131 y Ft(k)o(ey)g(b)q(e)h(set)f(to)f
+(delete)i(the)f(c)o(haracter)g(to)f(the)75 1186 y(left)h(of)f(the)h
+(cursor)f(and)g(the)596 1184 y Fk(h)p 608 1158 73 2 v
+608 1186 a Fj(DEL)p 608 1193 V 679 1184 a Fk(i)710 1186
+y Ft(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 1240 y Fl(C-d)p Ft(,)e(rather)h(than)g(the)
+g(c)o(haracter)g(to)f(the)i(left)f(of)g(the)g(cursor.\))75
+1349 y Fh(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i(Commands)137
+1470 y Ft(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 1525 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 Fl(C-b)p
+Ft(,)h Fl(C-f)p Ft(,)f Fl(C-d)p Ft(,)g(and)522 1578 y
+Fk(h)p 534 1552 V 534 1580 a Fj(DEL)p 534 1587 V 605
+1578 a Fk(i)619 1580 y Ft(.)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 1712 y Fl(C-a)168 b Ft(Mo)o(v)o(e)14 b(to)h(the)g(start)f
+(of)h(the)g(line.)75 1790 y Fl(C-e)168 b Ft(Mo)o(v)o(e)14
+b(to)h(the)g(end)h(of)f(the)g(line.)75 1867 y Fl(M-f)168
+b Ft(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 1945
+y Fl(M-b)168 b Ft(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75
+2022 y Fl(C-l)168 b Ft(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 2100 y(Notice)e(ho)o(w)f
+Fl(C-f)g Ft(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)i
+Fl(M-f)e Ft(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 2155 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 2210 y(w)o(ords.)75
+2318 y Fh(1.2.3)30 b(Readline)20 b(Killing)h(Commands)137
+2439 y Fi(Killing)26 b Ft(text)18 b(means)g(to)g(delete)i(the)f(text)f
+(from)g(the)h(line,)i(but)d(to)g(sa)o(v)o(e)g(it)h(a)o(w)o(a)o(y)e(for)
+h(later)h(use,)75 2494 y(usually)f(b)o(y)f Fi(y)o(anking)22
+b Ft(\(re-inserting\))17 b(it)g(bac)o(k)g(in)o(to)g(the)h(line.)27
+b(\(`Cut')15 b(and)j(`paste')e(are)g(more)h(recen)o(t)75
+2549 y(jargon)d(for)h(`kill')h(and)g(`y)o(ank'.\))137
+2615 y(If)g(the)f(description)h(for)f(a)g(command)g(sa)o(ys)f(that)h
+(it)g(`kills')h(text,)e(then)i(y)o(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o
+(ou)75 2670 y(can)h(get)g(the)g(text)g(bac)o(k)g(in)h(a)f(di\013eren)o
+(t)g(\(or)g(the)g(same\))g(place)h(later.)p eop
+%%Page: 3 7
+3 6 bop 75 -58 a Ft(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 Fi(kill-ring)p Ft(.)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 Fl(C-k)168
+b Ft(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 536 y
+Fl(M-d)168 b Ft(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 591 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
+Fl(M-f)p Ft(.)75 669 y Fl(M-)123 667 y Fk(h)p 135 641
+73 2 v 135 669 a Fj(DEL)p 135 676 V 206 667 a Fk(i)315
+669 y Ft(Kill)i(from)e(the)g(cursor)g(the)h(start)e(of)h(the)g(curren)o
+(t)g(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)e(to)h(the)315
+723 y(start)j(of)h(the)g(previous)h(w)o(ord.)31 b(W)l(ord)19
+b(b)q(oundaries)h(are)f(the)h(same)e(as)h(those)g(used)h(b)o(y)315
+778 y Fl(M-b)p Ft(.)75 856 y Fl(C-w)168 b Ft(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 Fl(M-)1777 854
+y Fk(h)p 1789 828 V 1789 856 a Fj(DEL)p 1789 864 V 1860
+854 a Fk(i)315 911 y Ft(b)q(ecause)h(the)f(w)o(ord)g(b)q(oundaries)h
+(di\013er.)137 989 y(Here)21 b(is)h(ho)o(w)e(to)g Fi(y)o(ank)j
+Ft(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 1044 y(recen)o(tly-killed)d
+(text)d(from)f(the)i(kill)h(bu\013er.)75 1122 y Fl(C-y)168
+b Ft(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 1200
+y Fl(M-y)168 b Ft(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 1254 y(command)d(is)h Fl(C-y)f Ft(or)f Fl(M-y)p Ft(.)75
+1364 y Fh(1.2.4)30 b(Readline)20 b(Argumen)n(ts)137 1485
+y Ft(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
+1540 y(as)20 b(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)g(it)h(is)f
+(the)g Fn(sign)j Ft(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 1594 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 1649 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 1704 y(the)f(line,)i(y)o(ou)e(migh)o(t)g
+(t)o(yp)q(e)g(`)p Fs(M--)f(C-k)p Ft('.)137 1770 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 1825
+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 Fs(-)p Ft('\),)d(then)j(the)f(sign)h(of)f
+(the)h(argumen)o(t)75 1880 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
+1935 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
+Fl(C-d)75 1990 y Ft(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 Fs(M-1)14 b(0)h(C-d)p Ft(',)k(whic)o(h)g
+(will)h(delete)g(the)f(next)g(ten)75 2044 y(c)o(haracters)14
+b(on)i(the)f(input)h(line.)75 2154 y Fh(1.2.5)30 b(Searc)n(hing)21
+b(for)f(Commands)h(in)f(the)h(History)137 2275 y Ft(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 2330 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 Fi(incremen)o(tal)e Ft(and)e Fi(non-incremen)o(tal)p
+Ft(.)137 2396 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 2451 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 2506 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
+2560 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 2615 y(string,)g(t)o(yp)q(e)h Fl(C-r)p
+Ft(.)k(T)o(yping)d Fl(C-s)e Ft(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
+2670 y(in)20 b(the)f(v)m(alue)h(of)f(the)g Fs(isearch-terminators)d
+Ft(v)m(ariable)k(are)f(used)h(to)e(terminate)h(an)g(incremen)o(tal)p
+eop
+%%Page: 4 8
+4 7 bop 75 -58 a Ft(4)1322 b(GNU)15 b(Readline)h(Library)75
+149 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 147 y Fk(h)p 1301
+121 70 2 v 1301 149 a Fj(ESC)p 1301 157 V 1368 147 a
+Fk(i)1402 149 y Ft(and)e Fl(C-J)f Ft(c)o(haracters)g(will)75
+204 y(terminate)j(an)g(incremen)o(tal)i(searc)o(h.)37
+b Fl(C-g)21 b Ft(will)i(ab)q(ort)e(an)g(incremen)o(tal)h(searc)o(h)f
+(and)g(restore)g(the)75 259 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 314
+y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 384 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 Fl(C-r)g Ft(or)g Fl(C-s)g Ft(as)h(appropriate.)k(This)75
+439 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 494 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 549 y(searc)o(h)10
+b(and)h(execute)g(that)f(command.)18 b(F)l(or)10 b(instance,)i(a)1063
+547 y Fk(h)p 1076 521 76 2 v 1076 549 a Fj(RET)p 1076
+556 V 1149 547 a Fk(i)1174 549 y Ft(will)g(terminate)f(the)g(searc)o(h)
+f(and)h(accept)75 604 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 658 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 729 y(Readline)j(remem)o(b)q(ers)e(the)h(last)f(incremen)
+o(tal)i(searc)o(h)e(string.)27 b(If)17 b(t)o(w)o(o)f
+Fl(C-r)p Ft(s)h(are)g(t)o(yp)q(ed)h(without)75 784 y(an)o(y)g(in)o
+(terv)o(ening)h(c)o(haracters)f(de\014ning)h(a)f(new)h(searc)o(h)f
+(string,)g(an)o(y)g(remem)o(b)q(ered)h(searc)o(h)f(string)g(is)75
+839 y(used.)137 909 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 964 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 1019 y(con)o(ten)o(ts)15
+b(of)f(the)i(curren)o(t)f(line.)75 1156 y Fr(1.3)33 b(Readline)23
+b(Init)h(File)137 1281 y Ft(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 1336 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 1391 y(programs)15
+b(that)h(use)g(Readline)i(b)o(y)e(putting)g(commands)g(in)i(an)e
+Fi(inputrc)k Ft(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75
+1445 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 1500 y Fs(INPUTRC)p Ft(.)i(If)c(that)g(v)m(ariable)h
+(is)g(unset,)f(the)g(default)h(is)g(`)p Fs(~/.inputrc)p
+Ft('.)137 1571 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 1626 y(k)o(ey)g(bindings)i(are)e(set.)137 1696
+y(In)f(addition,)h(the)e Fs(C-x)i(C-r)e Ft(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
+1751 y(that)h(y)o(ou)h(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75
+1870 y Fh(1.3.1)30 b(Readline)20 b(Init)g(File)h(Syn)n(tax)137
+1995 y Ft(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 2050 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d
+(a)h(`)p Fs(#)p Ft(')e(are)h(commen)o(ts.)35 b(Lines)22
+b(b)q(eginning)h(with)e(a)f(`)p Fs($)p Ft(')f(indicate)75
+2105 y(conditional)c(constructs)f(\(see)g(Section)g(1.3.2)f
+([Conditional)h(Init)h(Constructs],)e(page)h(9\).)k(Other)c(lines)75
+2159 y(denote)h(v)m(ariable)i(settings)e(and)h(k)o(ey)f(bindings.)75
+2244 y(V)l(ariable)h(Settings)315 2299 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 2354 y(v)m(ariables)d(in)g(Readline)g(using)f
+(the)g Fs(set)g Ft(command)f(within)i(the)f(init)h(\014le.)26
+b(The)17 b(syn)o(tax)315 2408 y(is)f(simple:)435 2477
+y Fs(set)23 b Fl(variable)28 b(value)315 2546 y Ft(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 2601 y(use)g
+Fs(vi)e Ft(line)j(editing)g(commands:)435 2670 y Fs(set)23
+b(editing-mode)g(vi)p eop
+%%Page: 5 9
+5 8 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(5)315 149 y(V)l(ariable)19 b(names)e(and)h(v)m(alues,)h(where)e
+(appropriate,)h(are)f(recognized)i(without)e(regard)315
+204 y(to)e(case.)315 271 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 348 y Fs(bell-style)555 403 y Ft(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
+458 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p Fs(none)p
+Ft(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32
+b(If)19 b(set)g(to)555 513 y(`)p Fs(visible)p Ft(',)c(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 568 y(`)p Fs(audible)p Ft(')g(\(the)h
+(default\),)i(Readline)g(attempts)e(to)g(ring)h(the)g(terminal's)555
+622 y(b)q(ell.)315 700 y Fs(comment-begin)555 755 y Ft(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
+Fs(insert-)555 810 y(comment)f Ft(command)h(is)h(executed.)21
+b(The)15 b(default)h(v)m(alue)g(is)g Fs("#")p Ft(.)315
+888 y Fs(completion-ignore-case)555 943 y Ft(If)e(set)f(to)g(`)p
+Fs(on)p Ft(',)g(Readline)i(p)q(erforms)e(\014lename)i(matc)o(hing)f
+(and)g(completion)555 997 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k
+(The)15 b(default)h(v)m(alue)g(is)g(`)p Fs(off)p Ft('.)315
+1075 y Fs(completion-query-items)555 1130 y Ft(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 1185 y(is)i(ask)o(ed)g(whether)g(the)f(list)i(of)e(p)q
+(ossibilities)k(should)e(b)q(e)f(displa)o(y)o(ed.)21
+b(If)15 b(the)555 1240 y(n)o(um)o(b)q(er)f(of)f(p)q(ossible)i
+(completions)f(is)g(greater)f(than)g(this)h(v)m(alue,)h(Readline)555
+1294 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 1349 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 1404 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d
+(default)f(limit)i(is)f Fs(100)p Ft(.)315 1482 y Fs(convert-meta)555
+1537 y Ft(If)11 b(set)g(to)g(`)p Fs(on)p Ft(',)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
+1591 y(to)f(an)h Fm(asci)q(i)e Ft(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
+1644 y Fk(h)p 567 1618 70 2 v 567 1646 a Fj(ESC)p 567
+1654 V 634 1644 a Fk(i)666 1646 y Ft(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
+1701 y(The)e(default)h(v)m(alue)h(is)e(`)p Fs(on)p Ft('.)315
+1779 y Fs(disable-completion)555 1834 y Ft(If)k(set)f(to)f(`)p
+Fs(On)p Ft(',)h(Readline)i(will)g(inhibit)g(w)o(ord)e(completion.)30
+b(Completion)555 1888 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
+1943 y(to)h Fs(self-insert)p Ft(.)j(The)d(default)h(is)g(`)p
+Fs(off)p Ft('.)315 2021 y Fs(editing-mode)555 2076 y
+Ft(The)f Fs(editing-mode)d Ft(v)m(ariable)k(con)o(trols)e(whic)o(h)h
+(default)g(set)f(of)g(k)o(ey)g(bind-)555 2131 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 2185 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
+2240 y(b)q(e)g(set)f(to)f(either)i(`)p Fs(emacs)p Ft(')e(or)h(`)p
+Fs(vi)p Ft('.)315 2318 y Fs(enable-keypad)555 2373 y
+Ft(When)d(set)f(to)h(`)p Fs(on)p Ft(',)e(Readline)j(will)h(try)d(to)g
+(enable)i(the)f(application)h(k)o(eypad)555 2428 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 2483 y(The)j(default)h(is)g(`)p
+Fs(off)p Ft('.)315 2560 y Fs(expand-tilde)555 2615 y
+Ft(If)e(set)g(to)f(`)p Fs(on)p Ft(',)f(tilde)k(expansion)e(is)h(p)q
+(erformed)f(when)g(Readline)h(attempts)555 2670 y(w)o(ord)g
+(completion.)21 b(The)15 b(default)h(is)f(`)p Fs(off)p
+Ft('.)p eop
+%%Page: 6 10
+6 9 bop 75 -58 a Ft(6)1322 b(GNU)15 b(Readline)h(Library)555
+149 y(If)f(set)g(to)f(`)p Fs(on)p Ft(',)g(the)g(history)h(co)q(de)h
+(attempts)e(to)g(place)i(p)q(oin)o(t)f(at)f(the)h(same)555
+204 y(lo)q(cation)i(on)g(eac)o(h)g(history)g(line)h(retriev)o(ed)f
+(with)g Fs(previous-history)d Ft(or)555 259 y Fs(next-history)p
+Ft(.)315 348 y Fs(horizontal-scroll-mode)555 403 y Ft(This)19
+b(v)m(ariable)g(can)f(b)q(e)g(set)g(to)f(either)i(`)p
+Fs(on)p Ft(')e(or)g(`)p Fs(off)p Ft('.)27 b(Setting)19
+b(it)f(to)f(`)p Fs(on)p Ft(')555 458 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
+512 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 567 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 622 y(v)m(ariable)j(is)e(set)g(to)g(`)p
+Fs(off)p Ft('.)315 711 y Fs(input-meta)555 766 y Ft(If)h(set)f(to)g(`)p
+Fs(on)p Ft(',)f(Readline)j(will)h(enable)e(eigh)o(t-bit)h(input)f(\(it)
+g(will)h(not)e(clear)555 821 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
+875 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 Fs(off)p Ft('.)33 b(The)555
+930 y(name)15 b Fs(meta-flag)f Ft(is)i(a)f(synon)o(ym)g(for)f(this)i(v)
+m(ariable.)315 1019 y Fs(isearch-terminators)555 1074
+y Ft(The)26 b(string)g(of)f(c)o(haracters)g(that)g(should)i(terminate)f
+(an)g(incremen)o(tal)555 1129 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
+1184 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 1238 y(b)q(een)17
+b(giv)o(en)f(a)g(v)m(alue,)g(the)g(c)o(haracters)1247
+1236 y Fk(h)p 1259 1210 70 2 v 1259 1238 a Fj(ESC)p 1259
+1246 V 1326 1236 a Fk(i)1357 1238 y Ft(and)g Fl(C-J)f
+Ft(will)i(terminate)f(an)555 1293 y(incremen)o(tal)g(searc)o(h.)315
+1382 y Fs(keymap)96 b Ft(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
+1437 y(mands.)41 b(Acceptable)23 b Fs(keymap)f Ft(names)g(are)f
+Fs(emacs)p Ft(,)i Fs(emacs-standard)p Ft(,)555 1492 y
+Fs(emacs-meta)p Ft(,)49 b Fs(emacs-ctlx)p Ft(,)g Fs(vi)p
+Ft(,)h Fs(vi-move)p Ft(,)f Fs(vi-command)p Ft(,)g(and)555
+1547 y Fs(vi-insert)p Ft(.)31 b Fs(vi)20 b Ft(is)g(equiv)m(alen)o(t)h
+(to)e Fs(vi-command)p Ft(;)g Fs(emacs)g Ft(is)h(equiv)m(alen)o(t)555
+1601 y(to)15 b Fs(emacs-standard)p Ft(.)20 b(The)d(default)f(v)m(alue)h
+(is)g Fs(emacs)p Ft(.)k(The)16 b(v)m(alue)h(of)f(the)555
+1656 y Fs(editing-mode)e Ft(v)m(ariable)i(also)f(a\013ects)g(the)g
+(default)h(k)o(eymap.)315 1745 y Fs(mark-directories)555
+1800 y Ft(If)j(set)g(to)g(`)p Fs(on)p Ft(',)f(completed)i(directory)g
+(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1855
+y(The)15 b(default)h(is)g(`)p Fs(on)p Ft('.)315 1944
+y Fs(mark-modified-lines)555 1999 y Ft(This)j(v)m(ariable,)g(when)g
+(set)e(to)h(`)p Fs(on)p Ft(',)f(causes)h(Readline)h(to)e(displa)o(y)i
+(an)f(as-)555 2054 y(terisk)f(\(`)p Fs(*)p Ft('\))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 2108 y(This)e(v)m(ariable)g(is)g(`)p Fs(off)p
+Ft(')e(b)o(y)h(default.)315 2197 y Fs(mark-symlinked-directories)555
+2252 y Ft(If)23 b(set)f(to)f(`)p Fs(on)p Ft(',)i(completed)g(names)g
+(whic)o(h)g(are)f(sym)o(b)q(olic)i(links)f(to)f(di-)555
+2307 y(rectories)h(ha)o(v)o(e)g(a)g(slash)g(app)q(ended)i(\(sub)s(ject)
+e(to)f(the)i(v)m(alue)g(of)f Fs(mark-)555 2362 y(directories)p
+Ft(\).)18 b(The)d(default)h(is)g(`)p Fs(off)p Ft('.)315
+2451 y Fs(match-hidden-files)555 2506 y Ft(This)c(v)m(ariable,)h(when)e
+(set)g(to)g(`)p Fs(on)p Ft(',)f(causes)h(Readline)i(to)d(matc)o(h)h
+(\014les)h(whose)555 2560 y(names)22 b(b)q(egin)h(with)g(a)e(`)p
+Fs(.)p Ft(')h(\(hidden)h(\014les\))g(when)f(p)q(erforming)h(\014lename)
+555 2615 y(completion,)g(unless)f(the)f(leading)h(`)p
+Fs(.)p Ft(')e(is)h(supplied)i(b)o(y)e(the)f(user)h(in)h(the)555
+2670 y(\014lename)16 b(to)f(b)q(e)h(completed.)21 b(This)15
+b(v)m(ariable)i(is)f(`)p Fs(on)p Ft(')e(b)o(y)h(default.)p
+eop
+%%Page: 7 11
+7 10 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(7)315 149 y Fs(output-meta)555 204 y Ft(If)18 b(set)f(to)g(`)p
+Fs(on)p Ft(',)g(Readline)i(will)h(displa)o(y)f(c)o(haracters)d(with)j
+(the)e(eigh)o(th)h(bit)555 259 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
+314 y(default)16 b(is)f(`)p Fs(off)p Ft('.)315 394 y
+Fs(page-completions)555 449 y Ft(If)i(set)g(to)f(`)p
+Fs(on)p Ft(',)g(Readline)i(uses)g(an)e(in)o(ternal)i
+Fs(more)p Ft(-lik)o(e)g(pager)f(to)f(displa)o(y)555 504
+y(a)g(screenful)h(of)f(p)q(ossible)i(completions)f(at)f(a)g(time.)23
+b(This)17 b(v)m(ariable)g(is)g(`)p Fs(on)p Ft(')555 559
+y(b)o(y)e(default.)315 639 y Fs(print-completions-horizont)o(ally)555
+694 y Ft(If)d(set)g(to)f(`)p Fs(on)p Ft(',)h(Readline)h(will)g(displa)o
+(y)h(completions)f(with)f(matc)o(hes)f(sorted)555 749
+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 804 y(The)15 b(default)h(is)g(`)p
+Fs(off)p Ft('.)315 884 y Fs(show-all-if-ambiguous)555
+939 y Ft(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 994 y(to)e(`)p
+Fs(on)p Ft(',)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 1049 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 1104 y(The)c(default)h(v)m(alue)h(is)e(`)p
+Fs(off)p Ft('.)315 1184 y Fs(show-all-if-unmodified)555
+1239 y Ft(This)20 b(alters)f(the)h(default)f(b)q(eha)o(vior)h(of)f(the)
+h(completion)g(functions)g(in)g(a)555 1294 y(fashion)13
+b(similar)h(to)e Fi(sho)o(w-all-if-am)o(biguous)p Ft(.)21
+b(If)13 b(set)f(to)g(`)p Fs(on)p Ft(',)g(w)o(ords)g(whic)o(h)555
+1348 y(ha)o(v)o(e)j(more)g(than)g(one)h(p)q(ossible)h(completion)f
+(without)g(an)o(y)f(p)q(ossible)i(par-)555 1403 y(tial)22
+b(completion)g(\(the)f(p)q(ossible)i(completions)f(don't)f(share)g(a)f
+(common)555 1458 y(pre\014x\))15 b(cause)h(the)f(matc)o(hes)g(to)f(b)q
+(e)i(listed)g(immediately)h(instead)f(of)e(ring-)555
+1513 y(ing)i(the)f(b)q(ell.)22 b(The)15 b(default)h(v)m(alue)g(is)g(`)p
+Fs(off)p Ft('.)315 1593 y Fs(visible-stats)555 1648 y
+Ft(If)g(set)g(to)f(`)p Fs(on)p Ft(',)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
+1703 y(\014lename)h(when)g(listing)h(p)q(ossible)g(completions.)j(The)c
+(default)g(is)f(`)p Fs(off)p Ft('.)75 1784 y(Key)h(Bindings)315
+1838 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 1893 y(need)15 b(to)e(\014nd)h(the)g(name)g(of)g(the)f
+(command)h(that)f(y)o(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19
+b(The)14 b(follo)o(wing)315 1948 y(sections)k(con)o(tain)h(tables)f(of)
+f(the)h(command)g(name,)g(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)
+l(,)315 2003 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g
+(command)g(do)q(es.)315 2070 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 2125 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
+2180 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
+2235 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 2303 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 2357 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h
+(pressed)g(\(a)e Fi(macro)r Ft(\).)315 2438 y Fi(k)o(eyname)s
+Ft(:)19 b Fi(function-name)g Ft(or)c Fi(macro)555 2493
+y(k)o(eyname)i Ft(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 2560 y
+Fs(Control-u:)22 b(universal-argument)675 2615 y(Meta-Rubout:)g
+(backward-kill-word)675 2670 y(Control-o:)g(">)i(output")p
+eop
+%%Page: 8 12
+8 11 bop 75 -58 a Ft(8)1322 b(GNU)15 b(Readline)h(Library)555
+149 y(In)k(the)f(ab)q(o)o(v)o(e)g(example,)i Fl(C-u)e
+Ft(is)h(b)q(ound)g(to)f(the)g(function)h Fs(universal-)555
+204 y(argument)p Ft(,)e Fl(M-DEL)h Ft(is)g(b)q(ound)h(to)e(the)h
+(function)h Fs(backward-kill-word)p Ft(,)555 259 y(and)g
+Fl(C-o)f Ft(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 314 y(side)c(\(that)e(is,)i(to)e(insert)i
+(the)f(text)g(`)p Fs(>)f(output)p Ft(')g(in)o(to)i(the)f(line\).)555
+382 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 437 y(cessing)13
+b(this)f(k)o(ey)g(binding)h(syn)o(tax:)18 b Fi(DEL)p
+Ft(,)11 b Fi(ESC)p Ft(,)h Fi(ESCAPE)p Ft(,)f Fi(LFD)p
+Ft(,)g Fi(NEW-)555 492 y(LINE)p Ft(,)16 b Fi(RET)p Ft(,)e
+Fi(RETURN)p Ft(,)f Fi(R)o(UBOUT)p Ft(,)i Fi(SP)l(A)o(CE)p
+Ft(,)g Fi(SPC)p Ft(,)f(and)i Fi(T)l(AB)p Ft(.)315 573
+y Fs(")p Fi(k)o(eyseq)q Fs(")p Ft(:)k Fi(function-name)e
+Ft(or)d Fi(macro)555 628 y(k)o(eyseq)i Ft(di\013ers)e(from)g
+Fi(k)o(eyname)j Ft(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g
+(an)f(en-)555 683 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
+737 y(double)e(quotes.)j(Some)c Fm(gnu)g Ft(Emacs)f(st)o(yle)h(k)o(ey)g
+(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 792 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 847 y(recognized.)675 915 y Fs("\\C-u":)23
+b(universal-argument)675 970 y("\\C-x\\C-r":)f(re-read-init-file)675
+1025 y("\\e[11~":)h("Function)f(Key)i(1")555 1093 y Ft(In)33
+b(the)f(ab)q(o)o(v)o(e)g(example,)37 b Fl(C-u)32 b Ft(is)h(again)f(b)q
+(ound)h(to)f(the)g(function)555 1148 y Fs(universal-argument)19
+b Ft(\(just)j(as)f(it)h(w)o(as)f(in)i(the)f(\014rst)f(example\),)j(`)p
+Fl(C-x)555 1202 y(C-r)p Ft(')c(is)h(b)q(ound)g(to)f(the)h(function)g
+Fs(re-read-init-file)p Ft(,)f(and)g(`)1731 1200 y Fk(h)p
+1743 1174 70 2 v 1743 1202 a Fj(ESC)p 1743 1210 V 1810
+1200 a Fk(i)15 b(h)p 1852 1174 10 2 v 1852 1202 a Fj([)p
+1852 1211 V 1860 1200 a Fk(i)555 1255 y(h)p 567 1229
+18 2 v 567 1257 a Fj(1)p 567 1265 V 583 1255 a Fk(i)g(h)p
+625 1229 V 625 1257 a Fj(1)p 625 1265 V 640 1255 a Fk(i)g(h)p
+683 1229 24 2 v 683 1257 a Fs(~)p 683 1265 V 704 1255
+a Fk(i)719 1257 y Ft(')g(is)h(b)q(ound)g(to)e(insert)i(the)f(text)g(`)p
+Fs(Function)f(Key)g(1)p Ft('.)315 1339 y(The)h(follo)o(wing)h
+Fm(gnu)e Ft(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 1393 y(k)o(ey)g(sequences:)315
+1475 y Fl(\\C-)168 b Ft(con)o(trol)15 b(pre\014x)315
+1556 y Fl(\\M-)168 b Ft(meta)15 b(pre\014x)315 1638 y
+Fl(\\e)192 b Ft(an)15 b(escap)q(e)h(c)o(haracter)315
+1719 y Fl(\\\\)192 b Ft(bac)o(kslash)315 1801 y Fl(\\)p
+Fs(")555 1799 y Fk(h)p 567 1773 V 567 1801 a Fs(")p 567
+1808 V 589 1799 a Fk(i)604 1801 y Ft(,)15 b(a)f(double)j(quotation)e
+(mark)315 1882 y Fl(\\')555 1880 y Fk(h)p 567 1854 10
+2 v 567 1882 a Fj(')p 567 1890 V 575 1880 a Fk(i)590
+1882 y Ft(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)315
+1964 y(In)f(addition)h(to)f(the)f Fm(gnu)h Ft(Emacs)g(st)o(yle)f(escap)
+q(e)i(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315
+2018 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 2100 y
+Fs(\\a)192 b Ft(alert)15 b(\(b)q(ell\))315 2181 y Fs(\\b)192
+b Ft(bac)o(kspace)315 2263 y Fs(\\d)g Ft(delete)315 2344
+y Fs(\\f)g Ft(form)14 b(feed)315 2426 y Fs(\\n)192 b
+Ft(newline)315 2507 y Fs(\\r)g Ft(carriage)15 b(return)315
+2589 y Fs(\\t)192 b Ft(horizon)o(tal)16 b(tab)315 2670
+y Fs(\\v)192 b Ft(v)o(ertical)16 b(tab)p eop
+%%Page: 9 13
+9 12 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(9)315 149 y Fs(\\)p Fl(nnn)144 b Ft(the)17 b(eigh)o(t-bit)h(c)o
+(haracter)f(whose)g(v)m(alue)i(is)e(the)h(o)q(ctal)f(v)m(alue)i
+Fi(nnn)f Ft(\(one)f(to)555 204 y(three)e(digits\))315
+282 y Fs(\\x)p Fl(HH)144 b Ft(the)20 b(eigh)o(t-bit)g(c)o(haracter)f
+(whose)h(v)m(alue)h(is)f(the)g(hexadecimal)h(v)m(alue)g
+Fi(HH)555 337 y Ft(\(one)15 b(or)g(t)o(w)o(o)f(hex)h(digits\))315
+415 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 470
+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 524 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 579 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 Fs(")p Ft(')c(and)h(`)p
+Fs(')p Ft('.)34 b(F)l(or)315 634 y(example,)14 b(the)f(follo)o(wing)g
+(binding)i(will)g(mak)o(e)d(`)p Fl(C-x)i Fs(\\)p Ft(')f(insert)g(a)g
+(single)h(`)p Fs(\\)p Ft(')e(in)o(to)h(the)g(line:)435
+700 y Fs("\\C-x\\\\":)23 b("\\\\")75 810 y Fh(1.3.2)30
+b(Conditional)20 b(Init)g(Constructs)137 931 y Ft(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 986 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 1040 y(the)e(result)h(of)
+f(tests.)k(There)c(are)g(four)g(parser)g(directiv)o(es)h(used.)75
+1118 y Fs($if)168 b Ft(The)16 b Fs($if)f Ft(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 1173 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
+1228 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
+1306 y Fs(mode)144 b Ft(The)11 b Fs(mode=)e Ft(form)h(of)g(the)h
+Fs($if)f Ft(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline)
+555 1361 y(is)k(in)h Fs(emacs)e Ft(or)g Fs(vi)g Ft(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
+1415 y(`)p Fs(set)f(keymap)p Ft(')f(command,)g(for)h(instance,)g(to)f
+(set)h(bindings)h(in)g(the)f Fs(emacs-)555 1470 y(standard)d
+Ft(and)i Fs(emacs-ctlx)e Ft(k)o(eymaps)h(only)i(if)f(Readline)g(is)g
+(starting)f(out)555 1525 y(in)k Fs(emacs)f Ft(mo)q(de.)315
+1603 y Fs(term)144 b Ft(The)14 b Fs(term=)e Ft(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
+1658 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 1712 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 Fs(=)p Ft(')f(is)h(tested)g(against)555 1767
+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 1822 y(name)i(b)q(efore)g(the)g
+(\014rst)f(`)p Fs(-)p Ft('.)24 b(This)17 b(allo)o(ws)g
+Fs(sun)f Ft(to)g(matc)o(h)h(b)q(oth)f Fs(sun)h Ft(and)555
+1877 y Fs(sun-cmd)p Ft(,)d(for)g(instance.)315 1955 y
+Fs(application)555 2010 y Ft(The)d Fi(application)i Ft(construct)e(is)g
+(used)h(to)e(include)j(application-sp)q(eci)q(\014c)h(set-)555
+2064 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e(Readline)i
+(library)f(sets)f(the)g Fi(application)555 2119 y(name)p
+Ft(,)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 2174 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 2229 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 2283 y(the)f(curren)o(t)g(or)g(previous)h(w)o(ord)e(in)j
+(Bash:)675 2350 y Fs($if)23 b(Bash)675 2405 y(#)h(Quote)f(the)g
+(current)g(or)h(previous)f(word)675 2459 y("\\C-xq":)g
+("\\eb\\"\\ef\\"")675 2514 y($endif)75 2592 y($endif)96
+b Ft(This)16 b(command,)e(as)h(seen)h(in)g(the)f(previous)h(example,)g
+(terminates)f(an)g Fs($if)f Ft(command.)75 2670 y Fs($else)120
+b Ft(Commands)15 b(in)h(this)f(branc)o(h)h(of)e(the)i
+Fs($if)e Ft(directiv)o(e)j(are)e(executed)h(if)g(the)f(test)g(fails.)p
+eop
+%%Page: 10 14
+10 13 bop 75 -58 a Ft(10)1299 b(GNU)15 b(Readline)h(Library)75
+149 y Fs($include)48 b Ft(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 204 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
+259 y(`)p Fs(/etc/inputrc)p Ft(':)435 326 y Fs($include)k(/etc/inputrc)
+75 438 y Fh(1.3.3)30 b(Sample)20 b(Init)h(File)137 560
+y Ft(Here)16 b(is)g(an)f(example)h(of)f(an)g Fi(inputrc)k
+Ft(\014le.)i(This)16 b(illustrates)g(k)o(ey)f(binding,)i(v)m(ariable)f
+(assignmen)o(t,)75 615 y(and)f(conditional)i(syn)o(tax.)p
+eop
+%%Page: 11 15
+11 14 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(11)195 204 y Fs(#)24 b(This)f(file)g(controls)g(the)h(behaviour)e(of)
+i(line)f(input)g(editing)g(for)195 259 y(#)h(programs)e(that)i(use)f
+(the)h(GNU)f(Readline)g(library.)47 b(Existing)195 314
+y(#)24 b(programs)e(include)h(FTP,)h(Bash,)f(and)g(GDB.)195
+369 y(#)195 423 y(#)h(You)f(can)h(re-read)f(the)g(inputrc)g(file)g
+(with)h(C-x)f(C-r.)195 478 y(#)h(Lines)f(beginning)g(with)g('#')g(are)h
+(comments.)195 533 y(#)195 588 y(#)g(First,)f(include)g(any)g
+(systemwide)g(bindings)f(and)i(variable)195 643 y(#)g(assignments)e
+(from)h(/etc/Inputrc)195 697 y($include)g(/etc/Inputrc)195
+807 y(#)195 862 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.)
+195 971 y(set)g(editing-mode)g(emacs)195 1081 y($if)g(mode=emacs)195
+1191 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 1201 21 38 v
+195 1300 a(#)195 1355 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195
+1410 y(#)195 1465 y(#"\\M-OD":)190 b(backward-char)195
+1519 y(#"\\M-OC":)g(forward-char)195 1574 y(#"\\M-OA":)g
+(previous-history)195 1629 y(#"\\M-OB":)g(next-history)195
+1684 y(#)195 1738 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195
+1793 y(#)195 1848 y("\\M-[D":)190 b(backward-char)195
+1903 y("\\M-[C":)g(forward-char)195 1958 y("\\M-[A":)g
+(previous-history)195 2012 y("\\M-[B":)g(next-history)195
+2067 y(#)195 2122 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode)
+195 2177 y(#)195 2232 y(#"\\M-\\C-OD":)165 b(backward-char)195
+2286 y(#"\\M-\\C-OC":)g(forward-char)195 2341 y(#"\\M-\\C-OA":)g
+(previous-history)195 2396 y(#"\\M-\\C-OB":)g(next-history)195
+2451 y(#)195 2506 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
+195 2560 y(#)195 2615 y(#"\\M-\\C-[D":)165 b(backward-char)195
+2670 y(#"\\M-\\C-[C":)g(forward-char)p eop
+%%Page: 12 16
+12 15 bop 75 -58 a Ft(12)1299 b(GNU)15 b(Readline)h(Library)195
+149 y Fs(#"\\M-\\C-[A":)165 b(previous-history)195 204
+y(#"\\M-\\C-[B":)g(next-history)195 314 y(C-q:)23 b(quoted-insert)195
+423 y($endif)195 533 y(#)h(An)f(old-style)g(binding.)47
+b(This)23 b(happens)g(to)g(be)h(the)f(default.)195 588
+y(TAB:)g(complete)195 697 y(#)h(Macros)f(that)g(are)h(convenient)e(for)
+h(shell)h(interaction)195 752 y($if)f(Bash)195 807 y(#)h(edit)f(the)g
+(path)195 862 y("\\C-xp":)g("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195
+917 y(#)h(prepare)f(to)g(type)h(a)f(quoted)g(word)h(--)195
+971 y(#)g(insert)f(open)g(and)h(close)f(double)g(quotes)195
+1026 y(#)h(and)f(move)g(to)h(just)f(after)h(the)f(open)g(quote)195
+1081 y("\\C-x\\"":)g("\\"\\"\\C-b")195 1136 y(#)h(insert)f(a)g
+(backslash)g(\(testing)g(backslash)g(escapes)195 1191
+y(#)h(in)f(sequences)g(and)g(macros\))195 1245 y("\\C-x\\\\":)g("\\\\")
+195 1300 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)195
+1355 y("\\C-xq":)g("\\eb\\"\\ef\\"")195 1410 y(#)h(Add)f(a)h(binding)f
+(to)g(refresh)g(the)h(line,)f(which)g(is)h(unbound)195
+1465 y("\\C-xr":)f(redraw-current-line)195 1519 y(#)h(Edit)f(variable)g
+(on)g(current)g(line.)195 1574 y("\\M-\\C-v":)f
+("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)o(")195 1629 y($endif)195
+1738 y(#)i(use)f(a)h(visible)f(bell)g(if)h(one)f(is)h(available)195
+1793 y(set)f(bell-style)g(visible)195 1903 y(#)h(don't)f(strip)g
+(characters)g(to)g(7)h(bits)f(when)h(reading)195 1958
+y(set)f(input-meta)g(on)195 2067 y(#)h(allow)f(iso-latin1)f(characters)
+h(to)g(be)h(inserted)f(rather)195 2122 y(#)h(than)f(converted)g(to)g
+(prefix-meta)g(sequences)195 2177 y(set)g(convert-meta)g(off)195
+2286 y(#)h(display)f(characters)f(with)h(the)h(eighth)f(bit)g(set)h
+(directly)195 2341 y(#)g(rather)f(than)g(as)h(meta-prefixed)e
+(characters)195 2396 y(set)h(output-meta)g(on)195 2506
+y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g(completions)f
+(for)195 2560 y(#)i(a)f(word,)h(ask)f(the)h(user)f(if)g(he)h(wants)f
+(to)h(see)f(all)h(of)f(them)195 2615 y(set)g(completion-query-items)e
+(150)p eop
+%%Page: 13 17
+13 16 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(13)195 149 y Fs(#)24 b(For)f(FTP)195 204 y($if)g(Ftp)195
+259 y("\\C-xg":)g("get)g(\\M-?")195 314 y("\\C-xt":)g("put)g(\\M-?")195
+369 y("\\M-.":)g(yank-last-arg)195 423 y($endif)75 549
+y Fr(1.4)33 b(Bindable)24 b(Readline)f(Commands)137 670
+y Ft(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 725 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
+791 y(In)f(the)f(follo)o(wing)h(descriptions,)h Fi(p)q(oin)o(t)f
+Ft(refers)f(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)j(and)e
+Fi(mark)i Ft(refers)75 846 y(to)k(a)g(cursor)g(p)q(osition)h(sa)o(v)o
+(ed)f(b)o(y)h(the)f Fs(set-mark)g Ft(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
+900 y(mark)15 b(is)g(referred)h(to)e(as)h(the)g Fi(region)p
+Ft(.)75 1009 y Fh(1.4.1)30 b(Commands)21 b(F)-5 b(or)19
+b(Mo)n(ving)75 1130 y Fs(beginning-of-line)13 b(\(C-a\))315
+1185 y Ft(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g
+(line.)75 1263 y Fs(end-of-line)f(\(C-e\))315 1317 y
+Ft(Mo)o(v)o(e)g(to)h(the)g(end)h(of)f(the)g(line.)75
+1395 y Fs(forward-char)f(\(C-f\))315 1450 y Ft(Mo)o(v)o(e)g(forw)o(ard)
+g(a)h(c)o(haracter.)75 1527 y Fs(backward-char)e(\(C-b\))315
+1582 y Ft(Mo)o(v)o(e)h(bac)o(k)h(a)g(c)o(haracter.)75
+1660 y Fs(forward-word)f(\(M-f\))315 1714 y Ft(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 1769 y(digits.)75 1847
+y Fs(backward-word)e(\(M-b\))315 1902 y Ft(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 1956 y(of)e(letters)g(and)g
+(digits.)75 2034 y Fs(clear-screen)f(\(C-l\))315 2089
+y Ft(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
+2143 y(of)i(the)g(screen.)75 2221 y Fs(redraw-current-line)e(\(\))315
+2276 y Ft(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 2385 y Fh(1.4.2)30
+b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f(History)75
+2506 y Fs(accept-line)14 b(\(Newline)g(or)h(Return\))315
+2560 y Ft(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
+2615 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 Fs(add_history\(\))p Ft(.)k(If)d(this)315
+2670 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.)p
+eop
+%%Page: 14 18
+14 17 bop 75 -58 a Ft(14)1299 b(GNU)15 b(Readline)h(Library)75
+149 y Fs(previous-history)d(\(C-p\))315 204 y Ft(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 293 y Fs(next-history)e(\(C-n\))315 348
+y Ft(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.)75 437 y Fs(beginning-of-history)c
+(\(M-<\))315 492 y Ft(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)i(in)f
+(the)f(history)l(.)75 580 y Fs(end-of-history)e(\(M->\))315
+635 y Ft(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
+724 y Fs(reverse-search-history)c(\(C-r\))315 779 y Ft(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 834 y(tory)e(as)h(necessary)l(.)20
+b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 923
+y Fs(forward-search-history)c(\(C-s\))315 977 y Ft(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 1032 y(history)g(as)g(necessary)l(.)20
+b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 1121
+y Fs(non-incremental-reverse-se)o(arch-hi)o(story)c(\(M-p\))315
+1176 y Ft(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
+1231 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 1285
+y(user.)75 1374 y Fs(non-incremental-forward-se)o(arch-hi)o(story)12
+b(\(M-n\))315 1429 y Ft(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 1484 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
+1539 y(user.)75 1627 y Fs(history-search-forward)f(\(\))315
+1682 y Ft(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
+1737 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 1792 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
+1881 y Fs(history-search-backward)c(\(\))315 1935 y Ft(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 1990 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
+2045 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
+2134 y Fs(yank-nth-arg)e(\(M-C-y\))315 2189 y Ft(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 2244 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 Fi(n)p
+Ft(,)h(insert)g(the)g Fi(n)p Ft(th)g(w)o(ord)g(from)f(the)315
+2298 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
+2353 y(negativ)o(e)13 b(argumen)o(t)f(inserts)h(the)g
+Fi(n)p Ft(th)g(w)o(ord)f(from)g(the)h(end)h(of)e(the)h(previous)g
+(command.)75 2442 y Fs(yank-last-arg)g(\(M-.)i(or)g(M-_\))315
+2497 y Ft(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 2552
+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 Fs(yank-nth-arg)p Ft(.)j(Succes-)315
+2606 y(siv)o(e)f(calls)g(to)f Fs(yank-last-arg)e Ft(mo)o(v)o(e)i(bac)o
+(k)g(through)g(the)g(history)g(list,)i(inserting)f(the)315
+2661 y(last)d(argumen)o(t)g(of)f(eac)o(h)i(line)g(in)g(turn.)p
+eop
+%%Page: 15 19
+15 18 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(15)75 149 y Fh(1.4.3)30 b(Commands)21 b(F)-5 b(or)19
+b(Changing)i(T)-5 b(ext)75 273 y Fs(delete-char)14 b(\(C-d\))315
+328 y Ft(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 383 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 438 y Fs(delete-char)p Ft(,)13 b(then)j(return)f
+Fm(eof)p Ft(.)75 521 y Fs(backward-delete-char)d(\(Rubout\))315
+576 y Ft(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
+631 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
+714 y Fs(forward-backward-delete-ch)o(ar)12 b(\(\))315
+769 y Ft(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
+824 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
+878 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 962
+y Fs(quoted-insert)e(\(C-q)i(or)g(C-v\))315 1017 y Ft(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 1071
+y(sequences)f(lik)o(e)h Fl(C-q)p Ft(,)d(for)h(example.)75
+1155 y Fs(tab-insert)f(\(M-)401 1153 y Fk(h)p 412 1127
+74 2 v 412 1155 a Fj(T)m(AB)p 412 1162 V 484 1153 a Fk(i)499
+1155 y Fs(\))315 1210 y Ft(Insert)h(a)g(tab)g(c)o(haracter.)75
+1293 y Fs(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315
+1348 y Ft(Insert)g(y)o(ourself.)75 1431 y Fs(transpose-chars)e(\(C-t\))
+315 1486 y Ft(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
+1541 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 1596 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 1650 y(ha)o(v)o(e)k(no)g(e\013ect.)75
+1734 y Fs(transpose-words)e(\(M-t\))315 1789 y Ft(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 1843
+y(w)o(ord)d(as)h(w)o(ell.)21 b(If)14 b(the)g(insertion)i(p)q(oin)o(t)e
+(is)h(at)f(the)g(end)h(of)e(the)i(line,)g(this)g(transp)q(oses)f(the)
+315 1898 y(last)h(t)o(w)o(o)f(w)o(ords)g(on)i(the)f(line.)75
+1981 y Fs(upcase-word)f(\(M-u\))315 2036 y Ft(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 2091
+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 2174 y Fs(downcase-word)d(\(M-l\))315 2229
+y Ft(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 2284 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 2367 y Fs(capitalize-word)e(\(M-c\))315
+2422 y Ft(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
+2477 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 2560 y Fs(overwrite-mode)e(\(\))315
+2615 y Ft(T)l(oggle)j(o)o(v)o(erwrite)g(mo)q(de.)24 b(With)17
+b(an)f(explicit)j(p)q(ositiv)o(e)f(n)o(umeric)f(argumen)o(t,)f(switc)o
+(hes)315 2670 y(to)10 b(o)o(v)o(erwrite)g(mo)q(de.)19
+b(With)11 b(an)g(explicit)i(non-p)q(ositiv)o(e)f(n)o(umeric)g(argumen)o
+(t,)e(switc)o(hes)i(to)p eop
+%%Page: 16 20
+16 19 bop 75 -58 a Ft(16)1299 b(GNU)15 b(Readline)h(Library)315
+149 y(insert)g(mo)q(de.)k(This)c(command)f(a\013ects)g(only)h
+Fs(emacs)e Ft(mo)q(de;)h Fs(vi)g Ft(mo)q(de)h(do)q(es)g(o)o(v)o
+(erwrite)315 204 y(di\013eren)o(tly)l(.)21 b(Eac)o(h)15
+b(call)h(to)f Fs(readline\(\))f Ft(starts)f(in)k(insert)e(mo)q(de.)315
+271 y(In)g(o)o(v)o(erwrite)f(mo)q(de,)h(c)o(haracters)f(b)q(ound)h(to)f
+Fs(self-insert)f Ft(replace)j(the)e(text)h(at)e(p)q(oin)o(t)315
+326 y(rather)20 b(than)h(pushing)h(the)f(text)f(to)g(the)h(righ)o(t.)36
+b(Characters)20 b(b)q(ound)i(to)e Fs(backward-)315 381
+y(delete-char)14 b Ft(replace)i(the)f(c)o(haracter)g(b)q(efore)g(p)q
+(oin)o(t)h(with)f(a)g(space.)315 448 y(By)g(default,)h(this)f(command)g
+(is)h(un)o(b)q(ound.)75 559 y Fh(1.4.4)30 b(Killing)20
+b(And)h(Y)-5 b(anking)75 680 y Fs(kill-line)14 b(\(C-k\))315
+735 y Ft(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
+(the)g(line.)75 814 y Fs(backward-kill-line)e(\(C-x)h(Rubout\))315
+869 y Ft(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
+(line.)75 948 y Fs(unix-line-discard)e(\(C-u\))315 1003
+y Ft(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 1082 y Fs(kill-whole-line)
+e(\(\))315 1137 y Ft(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 1192 y(this)d(is)f(un)o(b)q(ound.)75
+1271 y Fs(kill-word)f(\(M-d\))315 1325 y Ft(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 1380 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
+Fs(forward-word)p Ft(.)75 1459 y Fs(backward-kill-word)e(\(M-)592
+1457 y Fk(h)p 603 1431 73 2 v 603 1459 a Fj(DEL)p 603
+1467 V 674 1457 a Fk(i)689 1459 y Fs(\))315 1514 y Ft(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 Fs(backward-word)p Ft(.)75 1593 y
+Fs(unix-word-rubout)f(\(C-w\))315 1648 y Ft(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 1703 y(text)f(is)g(sa)o(v)o
+(ed)g(on)g(the)h(kill-ring.)75 1782 y Fs(delete-horizontal-space)c
+(\(\))315 1836 y Ft(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
+1915 y Fs(kill-region)e(\(\))315 1970 y Ft(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 2049 y Fs(copy-region-as-kill)d(\(\))315
+2104 y Ft(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 2159 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q
+(ound.)75 2238 y Fs(copy-backward-word)d(\(\))315 2293
+y Ft(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
+2348 y(same)c(as)g Fs(backward-word)p Ft(.)j(By)d(default,)g(this)h
+(command)f(is)h(un)o(b)q(ound.)75 2427 y Fs(copy-forward-word)d(\(\))
+315 2481 y Ft(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 2536 y(same)g(as)g Fs(forward-word)p Ft(.)j(By)d(default,)h
+(this)f(command)g(is)h(un)o(b)q(ound.)75 2615 y Fs(yank)f(\(C-y\))315
+2670 y Ft(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.)p eop
+%%Page: 17 21
+17 20 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(17)75 149 y Fs(yank-pop)14 b(\(M-y\))315 204 y Ft(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 259 y(command)d(is)h
+Fs(yank)e Ft(or)h Fs(yank-pop)p Ft(.)75 382 y Fh(1.4.5)30
+b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts)75 507 y
+Fs(digit-argument)13 b(\()p Fl(M-0)p Fs(,)i Fl(M-1)p
+Fs(,)f(...)h Fl(M--)p Fs(\))315 562 y Ft(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 616 y Fl(M--)h Ft(starts)f(a)h(negativ)o(e)g(argumen)
+o(t.)75 702 y Fs(universal-argument)e(\(\))315 756 y
+Ft(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
+811 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 866
+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 Fs(universal-argument)315 921
+y Ft(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
+976 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
+1030 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
+1085 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
+1140 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
+1195 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 1318 y Fh(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 1443 y Fs(complete)14 b(\()305 1441 y Fk(h)p
+317 1414 74 2 v 317 1443 a Fj(T)m(AB)p 317 1450 V 389
+1441 a Fk(i)404 1443 y Fs(\))315 1497 y Ft(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 1552 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 1637 y Fs(possible-completions)c(\(M-?\))315
+1692 y Ft(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 1777 y Fs(insert-completions)d(\(M-*\))315
+1832 y Ft(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
+1887 y(b)o(y)f Fs(possible-completions)p Ft(.)75 1972
+y Fs(menu-complete)e(\(\))315 2027 y Ft(Similar)g(to)f
+Fs(complete)p Ft(,)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 2082 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 Fs(menu-complete)315 2136 y Ft(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 2191 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 2246 y(of)f Fs(bell-style)p Ft(\))e(and)i(the)g
+(original)h(text)f(is)g(restored.)28 b(An)19 b(argumen)o(t)e(of)g
+Fi(n)i Ft(mo)o(v)o(es)e Fi(n)315 2301 y Ft(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 2356 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 2408 y Fk(h)p 327 2382 V 327
+2410 a Fj(T)m(AB)p 327 2418 V 399 2408 a Fk(i)414 2410
+y Ft(,)15 b(but)g(is)h(un)o(b)q(ound)g(b)o(y)f(default.)75
+2496 y Fs(delete-char-or-list)e(\(\))315 2550 y Ft(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 2605 y(\(lik)o(e)i Fs(delete-char)p
+Ft(\).)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 Fs(possible-)315 2660 y(completions)p
+Ft(.)k(This)e(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.)p
+eop
+%%Page: 18 22
+18 21 bop 75 -58 a Ft(18)1299 b(GNU)15 b(Readline)h(Library)75
+149 y Fh(1.4.7)30 b(Keyb)r(oard)20 b(Macros)75 272 y
+Fs(start-kbd-macro)13 b(\(C-x)i(\(\))315 327 y Ft(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 409 y Fs(end-kbd-macro)e(\(C-x)i(\)\))315
+464 y Ft(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 519 y(de\014nition.)75 600 y Fs(call-last-kbd-macro)g(\(C-x)h
+(e\))315 655 y Ft(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
+710 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 826 y Fh(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands)
+75 949 y Fs(re-read-init-file)13 b(\(C-x)h(C-r\))315
+1004 y Ft(Read)d(in)g(the)g(con)o(ten)o(ts)g(of)f(the)h
+Fi(inputrc)k Ft(\014le,)d(and)g(incorp)q(orate)f(an)o(y)f(bindings)j
+(or)e(v)m(ariable)315 1058 y(assignmen)o(ts)k(found)h(there.)75
+1140 y Fs(abort)e(\(C-g\))315 1195 y Ft(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 1250 y(setting)i(of)g Fs(bell-style)p
+Ft(\).)75 1331 y Fs(do-uppercase-version)d(\(M-a,)j(M-b,)f(M-)p
+Fl(x)p Fs(,)h(...\))315 1386 y Ft(If)f(the)g(meta\014ed)g(c)o(haracter)
+f Fi(x)k Ft(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 1441 y(corresp)q(onding)j(upp)q(ercase)g(c)o
+(haracter.)75 1523 y Fs(prefix-meta)e(\()377 1521 y Fk(h)p
+389 1494 70 2 v 389 1523 a Fj(ESC)p 389 1530 V 456 1521
+a Fk(i)471 1523 y Fs(\))315 1577 y Ft(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 1632 y(T)o(yping)e(`)485
+1630 y Fk(h)p 496 1604 V 496 1632 a Fj(ESC)p 496 1640
+V 563 1630 a Fk(i)593 1632 y Fs(f)p Ft(')f(is)h(equiv)m(alen)o(t)h(to)d
+(t)o(yping)i Fl(M-f)p Ft(.)75 1714 y Fs(undo)f(\(C-_)f(or)h(C-x)g
+(C-u\))315 1769 y Ft(Incremen)o(tal)h(undo,)f(separately)h(remem)o(b)q
+(ered)g(for)e(eac)o(h)h(line.)75 1850 y Fs(revert-line)f(\(M-r\))315
+1905 y Ft(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 Fs(undo)f
+Ft(command)315 1960 y(enough)g(times)f(to)g(get)f(bac)o(k)h(to)g(the)g
+(b)q(eginning.)75 2041 y Fs(tilde-expand)f(\(M-~\))315
+2096 y Ft(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o
+(ord.)75 2178 y Fs(set-mark)f(\(C-@\))315 2233 y Ft(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 2287 y(to)e(that)f(p)q
+(osition.)75 2369 y Fs(exchange-point-and-mark)e(\(C-x)j(C-x\))315
+2424 y Ft(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 2479 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 2560 y Fs(character-search)e
+(\(C-]\))315 2615 y Ft(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 2670 y(A)j(negativ)o(e)h(coun)o(t)f(searc)o(hes)g
+(for)f(previous)i(o)q(ccurrences.)p eop
+%%Page: 19 23
+19 22 bop 75 -58 a Ft(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(19)75 149 y Fs(character-search-backward)12 b(\(M-C-]\))315
+204 y Ft(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
+259 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 339 y Fs(insert-comment)d(\(M-#\))
+315 394 y Ft(Without)18 b(a)f(n)o(umeric)i(argumen)o(t,)e(the)h(v)m
+(alue)h(of)f(the)f Fs(comment-begin)f Ft(v)m(ariable)k(is)e(in-)315
+448 y(serted)e(at)f(the)h(b)q(eginning)i(of)d(the)h(curren)o(t)g(line.)
+23 b(If)16 b(a)g(n)o(umeric)h(argumen)o(t)e(is)h(supplied,)315
+503 y(this)j(command)f(acts)g(as)f(a)h(toggle:)26 b(if)19
+b(the)f(c)o(haracters)g(at)f(the)i(b)q(eginning)h(of)e(the)g(line)315
+558 y(do)d(not)g(matc)o(h)g(the)g(v)m(alue)i(of)e Fs(comment-begin)p
+Ft(,)e(the)i(v)m(alue)i(is)f(inserted,)f(otherwise)h(the)315
+613 y(c)o(haracters)j(in)i Fs(comment-begin)d Ft(are)i(deleted)i(from)d
+(the)h(b)q(eginning)i(of)e(the)g(line.)36 b(In)315 667
+y(either)16 b(case,)f(the)g(line)i(is)f(accepted)f(as)g(if)h(a)f
+(newline)i(had)e(b)q(een)i(t)o(yp)q(ed.)75 747 y Fs(dump-functions)c
+(\(\))315 802 y Ft(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
+857 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
+912 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g Fi(inputrc)k
+Ft(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.)
+75 991 y Fs(dump-variables)e(\(\))315 1046 y Ft(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 1101 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 1156 y(it)g(can)h(b)q(e)g(made)f
+(part)f(of)h(an)g Fi(inputrc)k Ft(\014le.)i(This)16 b(command)f(is)h
+(un)o(b)q(ound)g(b)o(y)f(default.)75 1235 y Fs(dump-macros)f(\(\))315
+1290 y Ft(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
+1345 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
+1400 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
+Fi(inputrc)k Ft(\014le.)i(This)15 b(command)g(is)h(un)o(b)q(ound)g(b)o
+(y)315 1455 y(default.)75 1534 y Fs(emacs-editing-mode)d(\(C-e\))315
+1589 y Ft(When)j(in)g Fs(vi)e Ft(command)i(mo)q(de,)f(this)g(causes)h
+(a)f(switc)o(h)g(to)g Fs(emacs)f Ft(editing)j(mo)q(de.)75
+1669 y Fs(vi-editing-mode)c(\(M-C-j\))315 1724 y Ft(When)j(in)g
+Fs(emacs)e Ft(editing)j(mo)q(de,)e(this)g(causes)h(a)f(switc)o(h)g(to)g
+Fs(vi)f Ft(editing)j(mo)q(de.)75 1852 y Fr(1.5)33 b(Readline)23
+b(vi)h(Mo)r(de)137 1974 y Ft(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 Fs(vi)g
+Ft(editing)j(functions,)f(it)f(do)q(es)g(con)o(tain)75
+2029 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 Fs(vi)f Ft(mo)q(de)g(b)q(eha)o(v)o(es)g(as)g
+(sp)q(eci\014ed)i(in)75 2084 y(the)c Fm(posix)g Ft(1003.2)f(standard.)
+137 2151 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 Fs(emacs)e Ft(and)i Fs(vi)f Ft(editing)i(mo)q(des,)f(use)f
+(the)h(command)75 2206 y Fl(M-C-j)j Ft(\(b)q(ound)i(to)e
+(emacs-editing-mo)q(de)j(when)e(in)h Fs(vi)f Ft(mo)q(de)g(and)g(to)f
+(vi-editing-mo)q(de)k(in)e Fs(emacs)75 2261 y Ft(mo)q(de\).)g(The)15
+b(Readline)i(default)f(is)f Fs(emacs)g Ft(mo)q(de.)137
+2328 y(When)h(y)o(ou)e(en)o(ter)h(a)g(line)i(in)e Fs(vi)g
+Ft(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 2383 y(had)e(t)o(yp)q(ed)h(an)f(`)p
+Fs(i)p Ft('.)18 b(Pressing)608 2381 y Fk(h)p 620 2355
+70 2 v 620 2383 a Fj(ESC)p 620 2390 V 687 2381 a Fk(i)715
+2383 y Ft(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 2438 y(text)i(of)h(the)g(line)h
+(with)g(the)f(standard)f Fs(vi)h Ft(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 2492
+y(`)p Fs(k)p Ft(')14 b(and)i(subsequen)o(t)f(lines)i(with)f(`)p
+Fs(j)p Ft(',)e(and)h(so)g(forth.)p eop
+%%Page: 20 24
+20 23 bop 75 -58 a Ft(20)1299 b(GNU)15 b(Readline)h(Library)p
+eop
+%%Page: 21 25
+21 24 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(21)75 149 y Fp(2)41 b(Programming)28
+b(with)e(GNU)i(Readline)137 264 y Ft(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 Fm(gnu)g
+Ft(Readline)h(Library)f(and)g(other)g(pro-)75 318 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 Fm(gnu)e Ft(Readline)75
+373 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 428 y(this)16 b(section)f(is)h(for)f(y)o(ou.)75
+555 y Fr(2.1)33 b(Basic)22 b(Beha)n(vior)137 676 y Ft(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 Fs(mail)p Ft(,)f Fs(ftp)p Ft(,)h(and)g Fs(sh)p
+Ft(.)20 b(F)l(or)15 b(suc)o(h)75 731 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
+786 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
+Fs(gets\(\))g Ft(or)75 841 y Fs(fgets\(\))p Ft(.)137
+907 y(The)h(function)g Fs(readline\(\))e Ft(prin)o(ts)h(a)g(prompt)g
+Fi(prompt)h Ft(and)f(then)h(reads)f(and)h(returns)f(a)g(single)75
+962 y(line)i(of)e(text)g(from)f(the)i(user.)23 b(If)17
+b Fi(prompt)g Ft(is)g Fs(NULL)e Ft(or)h(the)h(empt)o(y)f(string,)g(no)g
+(prompt)g(is)h(displa)o(y)o(ed.)75 1017 y(The)i(line)h
+Fs(readline)d Ft(returns)i(is)g(allo)q(cated)g(with)g
+Fs(malloc\(\))p Ft(;)g(the)g(caller)g(should)h Fs(free\(\))e
+Ft(the)g(line)75 1072 y(when)e(it)f(has)g(\014nished)i(with)f(it.)k
+(The)15 b(declaration)h(for)f Fs(readline)f Ft(in)i(ANSI)g(C)f(is)195
+1138 y Fs(char)23 b(*readline)g(\(const)g(char)g(*)p
+Fl(prompt)5 b Fs(\);)75 1205 y Ft(So,)15 b(one)g(migh)o(t)g(sa)o(y)195
+1272 y Fs(char)23 b(*line)g(=)h(readline)f(\("Enter)g(a)h(line:)f("\);)
+75 1338 y Ft(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 1393 y(so)h(only)h(the)f(text)g(remains.)
+137 1460 y(If)21 b Fs(readline)e Ft(encoun)o(ters)h(an)g
+Fs(EOF)g Ft(while)i(reading)f(the)f(line,)j(and)d(the)h(line)g(is)g
+(empt)o(y)f(at)g(that)75 1515 y(p)q(oin)o(t,)15 b(then)g
+Fs(\(char)f(*\)NULL)g Ft(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
+1570 y(b)q(een)f(t)o(yp)q(ed.)137 1636 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 1634 y Fk(h)p 1338 1608 57 2 v 1338 1636
+a Fj(C-p)p 1338 1644 V 1392 1634 a Fk(i)1420 1636 y Ft(for)f
+(example\),)i(y)o(ou)f(m)o(ust)75 1691 y(call)j Fs(add_history\(\))e
+Ft(to)g(sa)o(v)o(e)h(the)g(line)i(a)o(w)o(a)o(y)d(in)i(a)e
+Fi(history)19 b Ft(list)d(of)f(suc)o(h)h(lines.)195 1758
+y Fs(add_history)22 b(\(line\);)75 1824 y Ft(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 1891 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 1946 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 2001 y Fs(gets\(\))f
+Ft(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 2067
+y Fs(/*)24 b(A)f(static)g(variable)g(for)h(holding)e(the)i(line.)f(*/)
+195 2122 y(static)g(char)g(*line_read)g(=)h(\(char)f(*\)NULL;)195
+2232 y(/*)h(Read)f(a)h(string,)f(and)g(return)g(a)h(pointer)f(to)g(it.)
+267 2286 y(Returns)f(NULL)i(on)f(EOF.)h(*/)195 2341 y(char)f(*)195
+2396 y(rl_gets)g(\(\))195 2451 y({)243 2506 y(/*)g(If)h(the)f(buffer)g
+(has)h(already)f(been)g(allocated,)314 2560 y(return)g(the)h(memory)f
+(to)g(the)h(free)f(pool.)g(*/)243 2615 y(if)g(\(line_read\))290
+2670 y({)p eop
+%%Page: 22 26
+22 25 bop 75 -58 a Ft(22)1299 b(GNU)15 b(Readline)h(Library)338
+149 y Fs(free)23 b(\(line_read\);)338 204 y(line_read)g(=)h(\(char)f
+(*\)NULL;)290 259 y(})243 369 y(/*)g(Get)h(a)f(line)h(from)f(the)h
+(user.)f(*/)243 423 y(line_read)f(=)i(readline)f(\(""\);)243
+533 y(/*)g(If)h(the)f(line)h(has)f(any)h(text)f(in)g(it,)314
+588 y(save)h(it)f(on)h(the)f(history.)g(*/)243 643 y(if)g(\(line_read)g
+(&&)g(*line_read\))290 697 y(add_history)g(\(line_read\);)243
+807 y(return)g(\(line_read\);)195 862 y(})137 927 y Ft(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 925 y Fk(h)p 1181 899 74 2 v 1181 927 a Fj(T)m(AB)p
+1181 935 V 1253 925 a Fk(i)1280 927 y Ft(completion:)19
+b(completion)13 b(on)f(\014le)75 982 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 1037 y(of)g(the)205
+1035 y Fk(h)p 217 1009 V 217 1037 a Fj(T)m(AB)p 217 1044
+V 289 1035 a Fk(i)319 1037 y Ft(k)o(ey)g(with)h Fs(rl_bind_key\(\))p
+Ft(.)195 1102 y Fs(int)23 b(rl_bind_key)g(\(int)g Fl(key)p
+Fs(,)g(rl_command_func_t)f(*)p Fl(function)5 b Fs(\);)137
+1168 y(rl_bind_key\(\))15 b Ft(tak)o(es)h(t)o(w)o(o)g(argumen)o(ts:)22
+b Fi(k)o(ey)e Ft(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 1222 y Fi(function)h Ft(is)f(the)g(address)g(of)g
+(the)g(function)g(to)g(call)h(when)f Fi(k)o(ey)k Ft(is)c(pressed.)29
+b(Binding)1628 1220 y Fk(h)p 1641 1194 V 1641 1222 a
+Fj(T)m(AB)p 1641 1230 V 1712 1220 a Fk(i)1745 1222 y
+Ft(to)17 b Fs(rl_)75 1277 y(insert\(\))f Ft(mak)o(es)422
+1275 y Fk(h)p 434 1249 V 434 1277 a Fj(T)m(AB)p 434 1285
+V 506 1275 a Fk(i)539 1277 y Ft(insert)i(itself.)28 b
+Fs(rl_bind_key\(\))15 b Ft(returns)j(non-zero)g(if)g
+Fi(k)o(ey)j Ft(is)d(not)f(a)g(v)m(alid)75 1332 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
+1398 y(Th)o(us,)g(to)g(disable)h(the)g(default)703 1396
+y Fk(h)p 716 1370 V 716 1398 a Fj(T)m(AB)p 716 1405 V
+787 1396 a Fk(i)817 1398 y Ft(b)q(eha)o(vior,)g(the)f(follo)o(wing)h
+(su\016ces:)195 1463 y Fs(rl_bind_key)22 b(\('\\t',)h(rl_insert\);)137
+1528 y Ft(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 1583 y(tion)k(called)h Fs(initialize_readline\(\))13
+b Ft(whic)o(h)k(p)q(erforms)f(this)h(and)g(other)f(desired)h
+(initializations,)75 1638 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
+(41\).)75 1761 y Fr(2.2)33 b(Custom)21 b(F)-6 b(unctions)137
+1882 y Ft(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 1936 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 1991 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 2046 y(functionalit)o(y)j(to)f(Readline.)137
+2111 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
+2166 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
+2221 y Fs(<readline/readline.h>)14 b Ft(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 2276 y(nitions)g(in)f Fs(readline.h)e Ft(use)i(the)g
+Fs(stdio)f Ft(library)l(,)h(the)g(\014le)g Fs(<stdio.h>)f
+Ft(should)h(b)q(e)g(included)j(b)q(efore)75 2331 y Fs(readline.h)p
+Ft(.)137 2396 y Fs(readline.h)14 b Ft(de\014nes)i(a)f(C)h(prepro)q
+(cessor)f(v)m(ariable)i(that)d(should)i(b)q(e)g(treated)f(as)g(an)g(in)
+o(teger,)g Fs(RL_)75 2451 y(READLINE_VERSION)p Ft(,)9
+b(whic)o(h)j(ma)o(y)f(b)q(e)g(used)h(to)e(conditionally)k(compile)e
+(application)h(co)q(de)f(dep)q(ending)75 2506 y(on)17
+b(the)h(installed)h(Readline)g(v)o(ersion.)27 b(The)18
+b(v)m(alue)h(is)f(a)f(hexadecimal)i(enco)q(ding)g(of)e(the)h(ma)s(jor)e
+(and)75 2560 y(minor)h(v)o(ersion)h(n)o(um)o(b)q(ers)f(of)g(the)g
+(library)l(,)h(of)f(the)g(form)f(0x)p Fi(MMmm)p Ft(.)25
+b Fi(MM)c Ft(is)c(the)h(t)o(w)o(o-digit)e(ma)s(jor)75
+2615 y(v)o(ersion)f(n)o(um)o(b)q(er;)f Fi(mm)h Ft(is)g(the)f(t)o(w)o
+(o-digit)g(minor)h(v)o(ersion)g(n)o(um)o(b)q(er.)20 b(F)l(or)14
+b(Readline)h(4.2,)f(for)f(example,)75 2670 y(the)i(v)m(alue)i(of)d
+Fs(RL_READLINE_VERSION)f Ft(w)o(ould)j(b)q(e)f Fs(0x0402)p
+Ft(.)p eop
+%%Page: 23 27
+23 26 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(23)75 149 y Fh(2.2.1)30 b(Readline)20
+b(T)n(yp)r(edefs)137 270 y Ft(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 336 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 391 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 457 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
+Fi(func)i Ft(as)c(a)g(p)q(oin)o(ter)h(to)f(a)g(function)h(whic)o(h)75
+511 y(tak)o(es)12 b(t)o(w)o(o)g Fs(int)g Ft(argumen)o(ts)g(and)h
+(returns)g(an)g Fs(int)f Ft(\(this)h(is)g(the)g(t)o(yp)q(e)g(of)g(all)g
+(of)g(the)g(Readline)h(bindable)75 566 y(functions\).)20
+b(Instead)c(of)f(the)g(classic)h(C)f(declaration)137
+632 y Fs(int)g(\(*func\)\(\);)75 698 y Ft(or)g(the)g(ANSI-C)h(st)o(yle)
+f(declaration)137 764 y Fs(int)g(\(*func\)\(int,)f(int\);)75
+830 y Ft(w)o(e)h(ma)o(y)f(write)137 896 y Fs(rl_command_func_t)f
+(*func;)137 961 y Ft(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 1038 y Fs(typedef)d(int)h
+(rl_command_func_t)e(\(int,)h(int\);)75 1093 y(typedef)g(char)h
+(*rl_compentry_func_t)d(\(const)j(char)f(*,)h(int\);)75
+1148 y(typedef)f(char)h(**rl_completion_func_t)d(\(const)i(char)h(*,)g
+(int,)f(int\);)75 1203 y(typedef)g(char)h(*rl_quote_func_t)e(\(char)h
+(*,)h(int,)g(char)f(*\);)75 1258 y(typedef)g(char)h(*rl_dequote_func_t)
+d(\(char)j(*,)g(int\);)75 1312 y(typedef)f(int)h(rl_compignore_func_t)d
+(\(char)j(**\);)75 1367 y(typedef)f(void)h(rl_compdisp_func_t)d(\(char)
+j(**,)g(int,)f(int\);)75 1422 y(typedef)g(int)h(rl_hook_func_t)e
+(\(void\);)75 1477 y(typedef)h(int)h(rl_getc_func_t)e(\(FILE)i(*\);)75
+1531 y(typedef)f(int)h(rl_linebuf_func_t)e(\(char)h(*,)h(int\);)75
+1586 y(typedef)f(int)h(rl_intfunc_t)e(\(int\);)75 1641
+y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)75 1696 y(typedef)h(int)h
+(rl_icpfunc_t)e(\(char)i(*\);)75 1751 y(typedef)f(int)h(rl_icppfunc_t)e
+(\(char)i(**\);)75 1805 y(typedef)f(void)h(rl_voidfunc_t)e(\(void\);)75
+1860 y(typedef)h(void)h(rl_vintfunc_t)e(\(int\);)75 1915
+y(typedef)h(void)h(rl_vcpfunc_t)e(\(char)i(*\);)75 1970
+y(typedef)f(void)h(rl_vcppfunc_t)e(\(char)i(**\);)75
+2067 y Fh(2.2.2)30 b(W)-5 b(riting)20 b(a)h(New)f(F)-5
+b(unction)137 2187 y Ft(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 2242 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 2297 y(state)c(of)h(the)g(line)i
+(read)e(so)g(far.)137 2363 y(The)h(calling)h(sequence)f(for)f(a)f
+(command)i Fs(foo)e Ft(lo)q(oks)i(lik)o(e)195 2429 y
+Fs(int)23 b(foo)h(\(int)f(count,)g(int)h(key\))75 2495
+y Ft(where)18 b Fi(coun)o(t)h Ft(is)f(the)g(n)o(umeric)h(argumen)o(t)e
+(\(or)h(1)f(if)i(defaulted\))f(and)g Fi(k)o(ey)k Ft(is)d(the)f(k)o(ey)g
+(that)f(in)o(v)o(ok)o(ed)75 2549 y(this)f(function.)137
+2615 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 2670 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)p eop
+%%Page: 24 28
+24 27 bop 75 -58 a Ft(24)1299 b(GNU)15 b(Readline)h(Library)75
+149 y(b)q(eha)o(vior)22 b(\(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
+204 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 259 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 314 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.)137 381 y(A)f(command)g(function)h
+(should)g(return)e(0)h(if)g(its)g(action)h(completes)f(successfully)l
+(,)i(and)e(a)g(non-zero)75 436 y(v)m(alue)i(if)g(some)f(error)f(o)q
+(ccurs.)75 565 y Fr(2.3)33 b(Readline)23 b(V)-6 b(ariables)137
+687 y Ft(These)16 b(v)m(ariables)g(are)f(a)o(v)m(ailable)i(to)e
+(function)h(writers.)1685 780 y([V)l(ariable])-1799 b
+Fg(char)20 b(*)f Ff(rl)p 287 780 18 3 v 26 w(line)p 401
+780 V 27 w(bu\013er)195 835 y Ft(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 889 y(but)i(see)g(Section)h(2.4.5)d
+([Allo)o(wing)i(Undoing],)h(page)e(32.)27 b(The)18 b(function)h
+Fs(rl_extend_line_)195 944 y(buffer)14 b Ft(is)i(a)o(v)m(ailable)h(to)d
+(increase)j(the)e(memory)f(allo)q(cated)j(to)d Fs(rl_line_buffer)p
+Ft(.)1685 1037 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p
+216 1037 V 25 w(p)r(oin)n(t)195 1091 y Ft(The)15 b(o\013set)g(of)f(the)
+i(curren)o(t)f(cursor)g(p)q(osition)h(in)g Fs(rl_line_buffer)d
+Ft(\(the)i Fn(p)n(oint)t Ft(\).)1685 1184 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(rl)p 216 1184 V 25 w(end)195 1239 y
+Ft(The)14 b(n)o(um)o(b)q(er)g(of)g(c)o(haracters)f(presen)o(t)h(in)h
+Fs(rl_line_buffer)p Ft(.)i(When)e Fs(rl_point)e Ft(is)h(at)f(the)h(end)
+195 1293 y(of)h(the)g(line,)i Fs(rl_point)d Ft(and)h
+Fs(rl_end)f Ft(are)h(equal.)1685 1386 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(rl)p 216 1386 V 25 w(mark)195 1441 y
+Ft(The)f Fi(mark)h Ft(\(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 1495 y Fn(r)n(e)n(gion)p Ft(.)1685
+1588 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216
+1588 V 25 w(done)195 1643 y Ft(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(.)1685 1735 y([V)l(ariable])-1799 b Fg(int)20
+b Ff(rl)p 216 1735 V 25 w(n)n(um)p 352 1735 V 24 w(c)n(hars)p
+506 1735 V 25 w(to)p 582 1735 V 25 w(read)195 1790 y
+Ft(Setting)d(this)g(to)f(a)g(p)q(ositiv)o(e)h(v)m(alue)h(b)q(efore)f
+(calling)h Fs(readline\(\))d Ft(causes)h(Readline)i(to)e(return)195
+1845 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
+1899 y(to)e Fs(accept-line)p Ft(.)1685 1992 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(rl)p 216 1992 V 25 w(p)r(ending)p 441
+1992 V 25 w(input)195 2047 y Ft(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
+2102 y(c)o(haracter)h(in)o(to)i(the)f(input)h(stream.)1685
+2194 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216
+2194 V 25 w(dispatc)n(hing)195 2249 y Ft(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 2304 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 2358 y(b)o(y)c(Readline's)h
+(dispatc)o(hing)h(mec)o(hanism.)1685 2451 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(rl)p 216 2451 V 25 w(erase)p 368 2451
+V 25 w(empt)n(y)p 550 2451 V 25 w(line)195 2506 y Ft(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 2560 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 2615 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 2670 y(line.)p eop
+%%Page: 25 29
+25 28 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(25)1685 149 y([V)l(ariable])-1799 b Fg(char)20
+b(*)f Ff(rl)p 287 149 18 3 v 26 w(prompt)195 204 y Ft(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 Fs(readline\(\))p Ft(,)g(and)h(should)195
+259 y(not)g(b)q(e)h(assigned)g(to)f(directly)l(.)21 b(The)14
+b Fs(rl_set_prompt\(\))d Ft(function)j(\(see)g(Section)g(2.4.6)e
+([Redis-)195 314 y(pla)o(y],)j(page)g(32\))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
+Fs(readline\(\))p Ft(.)1685 399 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(rl)p 216 399 V 25 w(already)p 424 399
+V 26 w(prompted)195 453 y Ft(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 508 y(it)e(the)f(\014rst)g(time)h
+Fs(readline\(\))e Ft(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 563 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 618 y Fs(readline\(\))c
+Ft(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
+672 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.)1685 757 y([V)l(ariable])
+-1799 b Fg(const)20 b(char)g(*)f Ff(rl)p 437 757 V 26
+w(library)p 631 757 V 26 w(v)n(ersion)195 812 y Ft(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(.)1685
+897 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 897
+V 25 w(readline)p 439 897 V 27 w(v)n(ersion)195 951 y
+Ft(An)d(in)o(teger)h(enco)q(ding)g(the)f(curren)o(t)g(v)o(ersion)g(of)g
+(the)g(library)l(.)27 b(The)17 b(enco)q(ding)h(is)g(of)f(the)g(form)195
+1006 y(0x)p Fi(MMmm)p Ft(,)g(where)i Fi(MM)j Ft(is)d(the)f(t)o(w)o
+(o-digit)g(ma)s(jor)f(v)o(ersion)i(n)o(um)o(b)q(er,)g(and)f
+Fi(mm)g Ft(is)h(the)f(t)o(w)o(o-)195 1061 y(digit)i(minor)e(v)o(ersion)
+h(n)o(um)o(b)q(er.)31 b(F)l(or)18 b(example,)i(for)e(Readline-4.2,)i
+Fs(rl_readline_version)195 1116 y Ft(w)o(ould)c(ha)o(v)o(e)e(the)i(v)m
+(alue)g(0x0402.)1685 1200 y([V)l(ariable])-1799 b Fg(int)20
+b Ff(rl)p 216 1200 V 25 w(gn)n(u)p 332 1200 V 25 w(readline)p
+555 1200 V 27 w(p)195 1255 y Ft(Alw)o(a)o(ys)15 b(set)g(to)f(1,)h
+(denoting)h(that)e(this)i(is)g Fm(gnu)f Ft(readline)h(rather)f(than)g
+(some)g(em)o(ulation.)1685 1340 y([V)l(ariable])-1799
+b Fg(const)20 b(char)g(*)f Ff(rl)p 437 1340 V 26 w(terminal)p
+674 1340 V 25 w(name)195 1395 y Ft(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 1450 y(this)h(to)e(the)h(v)m(alue)i
+(of)e(the)g Fs(TERM)g Ft(en)o(vironmen)o(t)g(v)m(ariable)i(the)e
+(\014rst)g(time)g(it)h(is)f(called.)1685 1534 y([V)l(ariable])-1799
+b Fg(const)20 b(char)g(*)f Ff(rl)p 437 1534 V 26 w(readline)p
+661 1534 V 26 w(name)195 1589 y Ft(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 1644 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 1699 y(structs],)f(page)h(9\).)1685
+1783 y([V)l(ariable])-1799 b Fg(FILE)20 b(*)f Ff(rl)p
+287 1783 V 26 w(instream)195 1838 y Ft(The)i(stdio)f(stream)g(from)g
+(whic)o(h)h(Readline)h(reads)e(input.)37 b(If)21 b Fs(NULL)p
+Ft(,)g(Readline)h(defaults)f(to)195 1893 y Fi(stdin)p
+Ft(.)1685 1978 y([V)l(ariable])-1799 b Fg(FILE)20 b(*)f
+Ff(rl)p 287 1978 V 26 w(outstream)195 2032 y Ft(The)e(stdio)h(stream)e
+(to)h(whic)o(h)h(Readline)g(p)q(erforms)f(output.)26
+b(If)18 b Fs(NULL)p Ft(,)e(Readline)j(defaults)f(to)195
+2087 y Fi(stdout)p Ft(.)1685 2172 y([V)l(ariable])-1799
+b Fg(rl_command_func_t)22 b(*)d Ff(rl)p 627 2172 V 26
+w(last)p 741 2172 V 25 w(func)195 2227 y Ft(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 2281 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.)1685 2366 y([V)l(ariable])-1799 b Fg(rl_hook_func_t)21
+b(*)e Ff(rl)p 548 2366 V 26 w(startup)p 757 2366 V 25
+w(ho)r(ok)195 2421 y Ft(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 Fs(readline)f
+Ft(prin)o(ts)i(the)195 2476 y(\014rst)d(prompt.)1685
+2560 y([V)l(ariable])-1799 b Fg(rl_hook_func_t)21 b(*)e
+Ff(rl)p 548 2560 V 26 w(pre)p 656 2560 V 25 w(input)p
+814 2560 V 26 w(ho)r(ok)195 2615 y Ft(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 2670 y(prin)o(ted)e(and)f(just)g(b)q(efore)
+h Fs(readline)e Ft(starts)g(reading)h(input)i(c)o(haracters.)p
+eop
+%%Page: 26 30
+26 29 bop 75 -58 a Ft(26)1299 b(GNU)15 b(Readline)h(Library)1685
+149 y([V)l(ariable])-1799 b Fg(rl_hook_func_t)21 b(*)e
+Ff(rl)p 548 149 18 3 v 26 w(ev)n(en)n(t)p 706 149 V 27
+w(ho)r(ok)195 204 y Ft(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 259 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 314 y(if)i(there)f(is)h(no)f(k)o(eyb)q(oard)g
+(input.)1685 407 y([V)l(ariable])-1799 b Fg(rl_getc_func_t)21
+b(*)e Ff(rl)p 548 407 V 26 w(getc)p 676 407 V 26 w(function)195
+462 y Ft(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 517 y(the)k(input)i(stream.)31 b(By)19 b(default,)h(it)g(is)g(set)f
+(to)f Fs(rl_getc)p Ft(,)h(the)g(default)h(Readline)h(c)o(haracter)195
+571 y(input)16 b(function)g(\(see)f(Section)h(2.4.8)e([Character)g
+(Input],)h(page)g(34\).)1685 665 y([V)l(ariable])-1799
+b Fg(rl_voidfunc_t)21 b(*)e Ff(rl)p 522 665 V 26 w(redispla)n(y)p
+771 665 V 27 w(function)195 719 y Ft(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 774 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 Fs(rl_redisplay)p Ft(,)195 829 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(32\).)1685 922 y([V)l(ariable])-1799 b Fg(rl_vintfunc_t)21
+b(*)e Ff(rl)p 522 922 V 26 w(prep)p 662 922 V 25 w(term)p
+808 922 V 24 w(function)195 977 y Ft(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 1032 y(The)19 b(function)g(tak)o(es)f
+(a)g(single)i(argumen)o(t,)e(an)h Fs(int)f Ft(\015ag)g(that)g(sa)o(ys)g
+(whether)g(or)h(not)f(to)g(use)195 1087 y(eigh)o(t-bit)g(c)o
+(haracters.)25 b(By)17 b(default,)h(this)f(is)h(set)e(to)h
+Fs(rl_prep_terminal)e Ft(\(see)i(Section)h(2.4.9)195
+1141 y([T)l(erminal)e(Managemen)o(t],)d(page)i(35\).)1685
+1234 y([V)l(ariable])-1799 b Fg(rl_voidfunc_t)21 b(*)e
+Ff(rl)p 522 1234 V 26 w(deprep)p 720 1234 V 25 w(term)p
+866 1234 V 24 w(function)195 1289 y Ft(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 1344 y(This)f(function)g(should)h(undo)f
+(the)f(e\013ects)h(of)f Fs(rl_prep_term_function)p Ft(.)24
+b(By)17 b(default,)i(this)195 1399 y(is)d(set)f(to)f
+Fs(rl_deprep_terminal)f Ft(\(see)i(Section)h(2.4.9)e([T)l(erminal)i
+(Managemen)o(t],)d(page)i(35\).)1685 1492 y([V)l(ariable])-1799
+b Fg(Keymap)20 b Ff(rl)p 294 1492 V 26 w(executing)p
+557 1492 V 27 w(k)n(eymap)195 1547 y Ft(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
+(28\))f(in)i(whic)o(h)195 1602 y(the)c(curren)o(tly)h(executing)g
+(readline)h(function)f(w)o(as)f(found.)1685 1695 y([V)l(ariable])-1799
+b Fg(Keymap)20 b Ff(rl)p 294 1695 V 26 w(binding)p 507
+1695 V 26 w(k)n(eymap)195 1750 y Ft(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(28\))
+f(in)i(whic)o(h)195 1804 y(the)c(last)g(k)o(ey)g(binding)j(o)q
+(ccurred.)1685 1898 y([V)l(ariable])-1799 b Fg(char)20
+b(*)f Ff(rl)p 287 1898 V 26 w(executing)p 550 1898 V
+27 w(macro)195 1952 y Ft(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.)1685
+2046 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216
+2046 V 25 w(readline)p 439 2046 V 27 w(state)195 2100
+y Ft(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
+2155 y(with)h(the)g Fs(RL_SETSTATE)f Ft(macro,)h(and)g(unset)g(with)g
+(the)g Fs(RL_UNSETSTATE)e Ft(macro.)31 b(Use)19 b(the)195
+2210 y Fs(RL_ISSTATE)e Ft(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
+2265 y(include:)195 2345 y Fs(RL_STATE_NONE)435 2400
+y Ft(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 2480 y Fs
+(RL_STATE_INITIALIZING)435 2535 y Ft(Readline)h(is)g(initializi)q(ng)i
+(its)d(in)o(ternal)h(data)f(structures.)195 2615 y Fs
+(RL_STATE_INITIALIZED)435 2670 y Ft(Readline)h(has)g(completed)g(its)f
+(initialization.)p eop
+%%Page: 27 31
+27 30 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(27)195 149 y Fs(RL_STATE_TERMPREPPED)435
+204 y Ft(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 344 y Fs(RL_STATE_READCMD)435 398 y
+Ft(Readline)h(is)g(reading)g(a)f(command)g(from)f(the)i(k)o(eyb)q
+(oard.)195 483 y Fs(RL_STATE_METANEXT)435 538 y Ft(Readline)g(is)g
+(reading)g(more)f(input)h(after)e(reading)i(the)f(meta-pre\014x)h(c)o
+(haracter.)195 622 y Fs(RL_STATE_DISPATCHING)435 677
+y Ft(Readline)g(is)g(dispatc)o(hing)h(to)d(a)h(command.)195
+762 y Fs(RL_STATE_MOREINPUT)435 816 y Ft(Readline)h(is)g(reading)g
+(more)f(input)h(while)h(executing)f(an)f(editing)i(command.)195
+901 y Fs(RL_STATE_ISEARCH)435 956 y Ft(Readline)f(is)g(p)q(erforming)g
+(an)f(incremen)o(tal)h(history)f(searc)o(h.)195 1040
+y Fs(RL_STATE_NSEARCH)435 1095 y Ft(Readline)h(is)g(p)q(erforming)g(a)f
+(non-incremen)o(tal)h(history)g(searc)o(h.)195 1180 y
+Fs(RL_STATE_SEARCH)435 1234 y Ft(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 1319 y Fs(RL_STATE_NUMERICARG)435 1374 y
+Ft(Readline)16 b(is)g(reading)g(a)f(n)o(umeric)h(argumen)o(t.)195
+1458 y Fs(RL_STATE_MACROINPUT)435 1513 y Ft(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 1568 y(macro.)195 1652 y Fs(RL_STATE_MACRODEF)435
+1707 y Ft(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 1792 y
+Fs(RL_STATE_OVERWRITE)435 1846 y Ft(Readline)h(is)g(in)g(o)o(v)o
+(erwrite)f(mo)q(de.)195 1931 y Fs(RL_STATE_COMPLETING)435
+1986 y Ft(Readline)h(is)g(p)q(erforming)g(w)o(ord)e(completion.)195
+2070 y Fs(RL_STATE_SIGHANDLER)435 2125 y Ft(Readline)i(is)g(curren)o
+(tly)g(executing)g(the)f(readline)i(signal)f(handler.)195
+2210 y Fs(RL_STATE_UNDOING)435 2264 y Ft(Readline)g(is)g(p)q(erforming)
+g(an)f(undo.)195 2349 y Fs(RL_STATE_DONE)435 2404 y Ft(Readline)g(has)f
+(read)g(a)f(k)o(ey)h(sequence)h(b)q(ound)g(to)e Fs(accept-line)f
+Ft(and)i(is)h(ab)q(out)f(to)435 2459 y(return)h(the)g(line)i(to)e(the)g
+(caller.)1685 2560 y([V)l(ariable])-1799 b Fg(int)20
+b Ff(rl)p 216 2560 18 3 v 25 w(explici)q(t)p 422 2560
+V 28 w(arg)195 2615 y Ft(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: 28 32
+28 31 bop 75 -58 a Ft(28)1299 b(GNU)15 b(Readline)h(Library)1685
+149 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 149
+18 3 v 25 w(n)n(umeric)p 442 149 V 25 w(arg)195 204 y
+Ft(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.)1685
+349 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 349
+V 25 w(editing)p 412 349 V 27 w(mo)r(de)195 404 y Ft(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 Fi(1)k Ft(means)d(Readline)195
+458 y(is)j(curren)o(tly)f(in)h(emacs)g(mo)q(de;)f Fi(0)j
+Ft(means)d(that)g(vi)h(mo)q(de)f(is)h(activ)o(e.)75 585
+y Fr(2.4)33 b(Readline)23 b(Con)n(v)n(enience)g(F)-6
+b(unctions)75 749 y Fh(2.4.1)30 b(Naming)20 b(a)g(F)-5
+b(unction)137 871 y Ft(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 925 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 980 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
+1047 y Fs(Meta-Rubout:)46 b(backward-kill-word)137 1113
+y Ft(This)21 b(binds)g(the)f(k)o(eystrok)o(e)661 1111
+y Fk(h)p 673 1085 209 2 v 673 1113 a Fj(Meta-Rub)q(out)p
+673 1121 V 879 1111 a Fk(i)914 1113 y Ft(to)g(the)g(function)g
+Fn(descriptively)k Ft(named)c Fs(backward-)75 1168 y(kill-word)p
+Ft(.)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
+1223 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:)1675 1313 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 1313 18 3 v 25 w(add)p 333
+1313 V 25 w(defun)i Fe(\()p Fs(const)14 b(char)h(*name,)f
+(rl_command_func_t)f(*function,)283 1367 y(int)h(key)p
+Fe(\))195 1422 y Ft(Add)k Fi(name)i Ft(to)d(the)h(list)h(of)e(named)h
+(functions.)28 b(Mak)o(e)17 b Fi(function)h Ft(b)q(e)g(the)g(function)h
+(that)d(gets)195 1477 y(called.)21 b(If)16 b Fi(k)o(ey)j
+Ft(is)d(not)e(-1,)h(then)h(bind)g(it)g(to)e Fi(function)i
+Ft(using)g Fs(rl_bind_key\(\))p Ft(.)137 1567 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 1622
+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 1676 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
+1731 y(functions)f(describ)q(ed)h(b)q(elo)o(w.)75 1841
+y Fh(2.4.2)30 b(Selecting)20 b(a)h(Keymap)137 1962 y
+Ft(Key)16 b(bindings)i(tak)o(e)c(place)j(on)e(a)g Fi(k)o(eymap)p
+Ft(.)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 2017 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 2072 y(existing)i(k)o(eymaps,)
+f(and)g(tell)h(Readline)h(whic)o(h)f(k)o(eymap)f(to)f(use.)1675
+2162 y([F)l(unction])-1800 b Fg(Keymap)20 b Ff(rl)p 294
+2162 V 26 w(mak)n(e)p 451 2162 V 24 w(bare)p 585 2162
+V 25 w(k)n(eymap)i Fe(\()p Fs(void)p Fe(\))195 2216 y
+Ft(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
+Fs(malloc\(\))p Ft(;)195 2271 y(the)j(caller)i(should)f(free)f(it)h(b)o
+(y)f(calling)i Fs(rl_discard_keymap\(\))12 b Ft(when)k(done.)1675
+2361 y([F)l(unction])-1800 b Fg(Keymap)20 b Ff(rl)p 294
+2361 V 26 w(cop)n(y)p 434 2361 V 25 w(k)n(eymap)j Fe(\()p
+Fs(Keymap)14 b(map)p Fe(\))195 2416 y Ft(Return)h(a)g(new)g(k)o(eymap)g
+(whic)o(h)h(is)g(a)f(cop)o(y)g(of)g Fi(map)p Ft(.)1675
+2506 y([F)l(unction])-1800 b Fg(Keymap)20 b Ff(rl)p 294
+2506 V 26 w(mak)n(e)p 451 2506 V 24 w(k)n(eymap)j Fe(\()p
+Fs(void)p Fe(\))195 2560 y Ft(Return)15 b(a)h(new)g(k)o(eymap)f(with)h
+(the)g(prin)o(ting)h(c)o(haracters)d(b)q(ound)j(to)e(rl)p
+1454 2560 14 2 v 21 w(insert,)g(the)h(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: 29 33
+29 32 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(29)1675 149 y([F)l(unction])-1800 b Fg(void)20
+b Ff(rl)p 242 149 18 3 v 25 w(discard)p 446 149 V 26
+w(k)n(eymap)i Fe(\()p Fs(Keymap)14 b(keymap)p Fe(\))195
+204 y Ft(F)l(ree)h(the)h(storage)d(asso)q(ciated)j(with)f
+Fi(k)o(eymap)p Ft(.)137 292 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 347 y(k)o(eymap)15 b(is)h(activ)o(e.)1675
+435 y([F)l(unction])-1800 b Fg(Keymap)20 b Ff(rl)p 294
+435 V 26 w(get)p 397 435 V 25 w(k)n(eymap)i Fe(\()p Fs(void)p
+Fe(\))195 490 y Ft(Returns)15 b(the)g(curren)o(tly)h(activ)o(e)f(k)o
+(eymap.)1675 577 y([F)l(unction])-1800 b Fg(void)20 b
+Ff(rl)p 242 577 V 25 w(set)p 338 577 V 26 w(k)n(eymap)i
+Fe(\()p Fs(Keymap)14 b(keymap)p Fe(\))195 632 y Ft(Mak)o(es)g
+Fi(k)o(eymap)j Ft(the)e(curren)o(tly)h(activ)o(e)f(k)o(eymap.)1675
+720 y([F)l(unction])-1800 b Fg(Keymap)20 b Ff(rl)p 294
+720 V 26 w(get)p 397 720 V 25 w(k)n(eymap)p 615 720 V
+25 w(b)n(y)p 700 720 V 26 w(name)h Fe(\()p Fs(const)14
+b(char)h(*name)p Fe(\))195 775 y Ft(Return)h(the)h(k)o(eymap)f(matc)o
+(hing)h Fi(name)p Ft(.)24 b Fi(name)19 b Ft(is)e(one)g(whic)o(h)g(w)o
+(ould)g(b)q(e)h(supplied)h(in)e(a)f Fs(set)195 830 y(keymap)e
+Ft(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)i(Init)g(File],)g
+(page)f(4\).)1675 917 y([F)l(unction])-1800 b Fg(char)20
+b(*)f Ff(rl)p 287 917 V 26 w(get)p 390 917 V 25 w(k)n(eymap)p
+608 917 V 25 w(name)i Fe(\()p Fs(Keymap)14 b(keymap)p
+Fe(\))195 972 y Ft(Return)i(the)h(name)g(matc)o(hing)f
+Fi(k)o(eymap)p Ft(.)24 b Fi(name)19 b Ft(is)e(one)g(whic)o(h)g(w)o
+(ould)g(b)q(e)h(supplied)h(in)e(a)f Fs(set)195 1027 y(keymap)e
+Ft(inputrc)j(line)f(\(see)g(Section)g(1.3)e([Readline)i(Init)g(File],)g
+(page)f(4\).)75 1135 y Fh(2.4.3)30 b(Binding)20 b(Keys)137
+1255 y Ft(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 1310 y(ternal)j(k)o(eymaps:)k Fs(emacs_standard_keymap)p
+Ft(,)11 b Fs(emacs_meta_keymap)p Ft(,)h Fs(emacs_ctlx_keymap)p
+Ft(,)g Fs(vi_)75 1365 y(movement_keymap)p Ft(,)20 b(and)i
+Fs(vi_insertion_keymap)p Ft(.)35 b Fs(emacs_standard_keymap)18
+b Ft(is)k(the)f(default,)75 1420 y(and)15 b(the)h(examples)g(in)g(this)
+f(man)o(ual)h(assume)f(that.)137 1486 y(Since)h Fs(readline\(\))c
+Ft(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 1540
+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
+Fs(readline\(\))g Ft(will)75 1595 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 1650 y(function)19
+b(assigned)h(to)d(the)i Fs(rl_startup_hook)e Ft(v)m(ariable)j(\(see)e
+(Section)h(2.3)f([Readline)i(V)l(ariables],)75 1705 y(page)15
+b(24\).)137 1771 y(These)h(functions)g(manage)e(k)o(ey)i(bindings.)1675
+1858 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
+1858 V 25 w(bind)p 352 1858 V 26 w(k)n(ey)k Fe(\()p Fs(int)14
+b(key,)h(rl_command_func_t)e(*function)p Fe(\))195 1913
+y Ft(Binds)18 b Fi(k)o(ey)i Ft(to)c Fi(function)h Ft(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 1968 y(of)e(an)g(in)o(v)m(alid)i Fi(k)o(ey)p
+Ft(.)1675 2056 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p
+216 2056 V 25 w(bind)p 352 2056 V 26 w(k)n(ey)p 462 2056
+V 26 w(in)p 535 2056 V 26 w(map)h Fe(\()p Fs(int)15 b(key,)f
+(rl_command_func_t)f(*function,)283 2111 y(Keymap)h(map)p
+Fe(\))195 2166 y Ft(Bind)i Fi(k)o(ey)j Ft(to)c Fi(function)h
+Ft(in)g Fi(map)p Ft(.)k(Returns)14 b(non-zero)i(in)g(the)f(case)g(of)g
+(an)g(in)o(v)m(alid)j Fi(k)o(ey)p Ft(.)1675 2253 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 2253 V 25 w(bind)p 352 2253
+V 26 w(k)n(ey)p 462 2253 V 26 w(if)p 521 2253 V 26 w(un)n(b)r(ound)h
+Fe(\()p Fs(int)15 b(key,)f(rl_command_func_t)283 2308
+y(*function)p Fe(\))195 2363 y Ft(Binds)23 b Fi(k)o(ey)j
+Ft(to)21 b Fi(function)i Ft(if)g(it)f(is)g(not)g(already)g(b)q(ound)h
+(in)g(the)f(curren)o(tly)g(activ)o(e)h(k)o(eymap.)195
+2418 y(Returns)15 b(non-zero)g(in)h(the)g(case)f(of)f(an)i(in)o(v)m
+(alid)h Fi(k)o(ey)i Ft(or)c(if)g Fi(k)o(ey)k Ft(is)d(already)g(b)q
+(ound.)1675 2506 y([F)l(unction])-1800 b Fg(int)20 b
+Ff(rl)p 216 2506 V 25 w(bind)p 352 2506 V 26 w(k)n(ey)p
+462 2506 V 26 w(if)p 521 2506 V 26 w(un)n(b)r(ound)p
+768 2506 V 24 w(in)p 839 2506 V 26 w(map)h Fe(\()p Fs(int)14
+b(key,)283 2560 y(rl_command_func_t)e(*function,)i(Keymap)h(map)p
+Fe(\))195 2615 y Ft(Binds)g Fi(k)o(ey)i Ft(to)c Fi(function)i
+Ft(if)f(it)g(is)g(not)f(already)h(b)q(ound)h(in)f Fi(map)p
+Ft(.)20 b(Returns)13 b(non-zero)h(in)g(the)g(case)195
+2670 y(of)h(an)g(in)o(v)m(alid)i Fi(k)o(ey)i Ft(or)c(if)h
+Fi(k)o(ey)j Ft(is)c(already)h(b)q(ound.)p eop
+%%Page: 30 34
+30 33 bop 75 -58 a Ft(30)1299 b(GNU)15 b(Readline)h(Library)1675
+149 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 149
+18 3 v 25 w(un)n(bind)p 414 149 V 26 w(k)n(ey)k Fe(\()p
+Fs(int)14 b(key)p Fe(\))195 204 y Ft(Bind)19 b Fi(k)o(ey)j
+Ft(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 259
+y(case)d(of)g(error.)1675 347 y([F)l(unction])-1800 b
+Fg(int)20 b Ff(rl)p 216 347 V 25 w(un)n(bind)p 414 347
+V 26 w(k)n(ey)p 524 347 V 26 w(in)p 597 347 V 26 w(map)h
+Fe(\()p Fs(int)15 b(key,)f(Keymap)h(map)p Fe(\))195 401
+y Ft(Bind)h Fi(k)o(ey)j Ft(to)c(the)g(n)o(ull)i(function)f(in)g
+Fi(map)p Ft(.)k(Returns)14 b(non-zero)i(in)g(case)f(of)g(error.)1675
+489 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 489
+V 25 w(un)n(bind)p 414 489 V 26 w(function)p 645 489
+V 25 w(in)p 717 489 V 26 w(map)h Fe(\()p Fs(rl_command_func_t)13
+b(*function,)283 544 y(Keymap)h(map)p Fe(\))195 599 y
+Ft(Un)o(bind)j(all)f(k)o(eys)f(that)f(execute)i Fi(function)g
+Ft(in)g Fi(map)p Ft(.)1675 686 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 686 V 25 w(un)n(bind)p 414
+686 V 26 w(command)p 684 686 V 22 w(in)p 753 686 V 26
+w(map)h Fe(\()p Fs(const)14 b(char)h(*command,)f(Keymap)283
+741 y(map)p Fe(\))195 796 y Ft(Un)o(bind)j(all)f(k)o(eys)f(that)f(are)h
+(b)q(ound)h(to)f Fi(command)i Ft(in)f Fi(map)p Ft(.)1675
+884 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 884
+V 25 w(bind)p 352 884 V 26 w(k)n(eyseq)k Fe(\()p Fs(const)14
+b(char)h(*keyseq,)f(rl_command_func_t)283 938 y(*function)p
+Fe(\))195 993 y Ft(Bind)23 b(the)e(k)o(ey)h(sequence)h(represen)o(ted)f
+(b)o(y)f(the)h(string)f Fi(k)o(eyseq)i Ft(to)e(the)g(function)h
+Fi(function)p Ft(,)195 1048 y(b)q(eginning)16 b(in)f(the)f(curren)o(t)g
+(k)o(eymap.)20 b(This)14 b(mak)o(es)g(new)g(k)o(eymaps)g(as)g
+(necessary)l(.)20 b(The)14 b(return)195 1103 y(v)m(alue)i(is)g
+(non-zero)g(if)f Fi(k)o(eyseq)i Ft(is)e(in)o(v)m(alid.)1675
+1191 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
+1191 V 25 w(bind)p 352 1191 V 26 w(k)n(eyseq)p 541 1191
+V 26 w(in)p 614 1191 V 26 w(map)h Fe(\()p Fs(const)15
+b(char)f(*keyseq,)283 1245 y(rl_command_func_t)e(*function,)i(Keymap)h
+(map)p Fe(\))195 1300 y Ft(Bind)f(the)e(k)o(ey)h(sequence)h(represen)o
+(ted)f(b)o(y)f(the)h(string)f Fi(k)o(eyseq)i Ft(to)e(the)g(function)i
+Fi(function)p Ft(.)19 b(This)195 1355 y(mak)o(es)14 b(new)h(k)o(eymaps)
+f(as)g(necessary)l(.)20 b(Initial)d(bindings)f(are)f(p)q(erformed)f(in)
+i Fi(map)p Ft(.)j(The)c(return)195 1410 y(v)m(alue)h(is)g(non-zero)g
+(if)f Fi(k)o(eyseq)i Ft(is)e(in)o(v)m(alid.)1675 1497
+y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 1497
+V 25 w(set)p 312 1497 V 26 w(k)n(ey)j Fe(\()p Fs(const)15
+b(char)f(*keyseq,)g(rl_command_func_t)f(*function,)283
+1552 y(Keymap)h(map)p Fe(\))195 1607 y Ft(Equiv)m(alen)o(t)j(to)d
+Fs(rl_bind_keyseq_in_map)p Ft(.)1675 1695 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 1695 V 25 w(bind)p 352 1695
+V 26 w(k)n(eyseq)p 541 1695 V 26 w(if)p 600 1695 V 26
+w(un)n(b)r(ound)h Fe(\()p Fs(const)14 b(char)h(*keyseq,)283
+1749 y(rl_command_func_t)d(*function)p Fe(\))195 1804
+y Ft(Binds)19 b Fi(k)o(eyseq)g Ft(to)e Fi(function)h
+Ft(if)h(it)f(is)g(not)f(already)h(b)q(ound)h(in)g(the)e(curren)o(tly)i
+(activ)o(e)f(k)o(eymap.)195 1859 y(Returns)d(non-zero)g(in)h(the)g
+(case)f(of)f(an)i(in)o(v)m(alid)h Fi(k)o(eyseq)f Ft(or)f(if)h
+Fi(k)o(eyseq)g Ft(is)g(already)f(b)q(ound.)1675 1947
+y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 1947
+V 25 w(bind)p 352 1947 V 26 w(k)n(eyseq)p 541 1947 V
+26 w(if)p 600 1947 V 26 w(un)n(b)r(ound)p 847 1947 V
+24 w(in)p 918 1947 V 26 w(map)h Fe(\()p Fs(const)14 b(char)h(*keyseq,)
+283 2001 y(rl_command_func_t)d(*function,)i(Keymap)h(map)p
+Fe(\))195 2056 y Ft(Binds)i Fi(k)o(eyseq)g Ft(to)f Fi(function)g
+Ft(if)h(it)f(is)h(not)e(already)h(b)q(ound)h(in)g Fi(map)p
+Ft(.)22 b(Returns)16 b(non-zero)g(in)h(the)195 2111 y(case)e(of)g(an)g
+(in)o(v)m(alid)j Fi(k)o(eyseq)e Ft(or)f(if)g Fi(k)o(eyseq)h
+Ft(is)g(already)g(b)q(ound.)1675 2199 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 2199 V 25 w(generic)p 418 2199
+V 26 w(bind)k Fe(\()p Fs(int)14 b(type,)g(const)h(char)f(*keyseq,)h
+(char)f(*data,)283 2254 y(Keymap)g(map)p Fe(\))195 2308
+y Ft(Bind)h(the)e(k)o(ey)h(sequence)h(represen)o(ted)e(b)o(y)h(the)g
+(string)f Fi(k)o(eyseq)i Ft(to)d(the)i(arbitrary)f(p)q(oin)o(ter)h
+Fi(data)p Ft(.)195 2363 y Fi(t)o(yp)q(e)j Ft(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 Fi(data)p
+Ft(;)g(this)h(can)f(b)q(e)h(a)f(function)h(\()p Fs(ISFUNC)p
+Ft(\),)d(a)195 2418 y(macro)i(\()p Fs(ISMACR)p Ft(\),)f(or)h(a)h(k)o
+(eymap)f(\()p Fs(ISKMAP)p Ft(\).)k(This)e(mak)o(es)e(new)h(k)o(eymaps)f
+(as)h(necessary)l(.)20 b(The)195 2473 y(initial)d(k)o(eymap)e(in)h
+(whic)o(h)g(to)f(do)g(bindings)i(is)f Fi(map)p Ft(.)1675
+2560 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
+2560 V 25 w(parse)p 374 2560 V 25 w(and)p 491 2560 V
+24 w(bind)j Fe(\()p Fs(char)15 b(*line)p Fe(\))195 2615
+y Ft(P)o(arse)f Fi(line)19 b Ft(as)14 b(if)h(it)g(had)g(b)q(een)h(read)
+f(from)f(the)g Fs(inputrc)g Ft(\014le)i(and)f(p)q(erform)f(an)o(y)h(k)o
+(ey)f(bindings)195 2670 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\).)p
+eop
+%%Page: 31 35
+31 34 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(31)1675 149 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 149 18 3 v 25 w(read)p 351 149 V 25 w(init)p
+460 149 V 27 w(\014le)k Fe(\()p Fs(const)14 b(char)h(*filename)p
+Fe(\))195 204 y Ft(Read)g(k)o(eybindings)j(and)e(v)m(ariable)h
+(assignmen)o(ts)f(from)f Fi(\014lename)k Ft(\(see)d(Section)g(1.3)f
+([Readline)195 259 y(Init)h(File],)g(page)f(4\).)75 396
+y Fh(2.4.4)30 b(Asso)r(ciating)20 b(F)-5 b(unction)20
+b(Names)h(and)f(Bindings)137 530 y Ft(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 585 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
+640 y(arbitrary)h(function.)1675 757 y([F)l(unction])-1800
+b Fg(rl_command_func_t)22 b(*)d Ff(rl)p 627 757 V 26
+w(named)p 820 757 V 23 w(function)k Fe(\()p Fs(const)14
+b(char)h(*name)p Fe(\))195 811 y Ft(Return)g(the)g(function)h(with)g
+(name)f Fi(name)p Ft(.)1675 928 y([F)l(unction])-1800
+b Fg(rl_command_func_t)22 b(*)d Ff(rl)p 627 928 V 26
+w(function)p 858 928 V 25 w(of)p 930 928 V 24 w(k)n(eyseq)24
+b Fe(\()p Fs(const)15 b(char)f(*keyseq,)283 983 y(Keymap)g(map,)g(int)h
+(*type)p Fe(\))195 1038 y Ft(Return)h(the)g(function)h(in)o(v)o(ok)o
+(ed)g(b)o(y)f Fi(k)o(eyseq)h Ft(in)g(k)o(eymap)f Fi(map)p
+Ft(.)23 b(If)17 b Fi(map)g Ft(is)g Fs(NULL)p Ft(,)f(the)g(curren)o(t)
+195 1092 y(k)o(eymap)i(is)h(used.)31 b(If)18 b Fi(t)o(yp)q(e)j
+Ft(is)e(not)g Fs(NULL)p Ft(,)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 Fs(int)195 1147 y Ft(v)m(ariable)f(it)e(p)
+q(oin)o(ts)h(to)e(\(one)h(of)g Fs(ISFUNC)p Ft(,)f Fs(ISKMAP)p
+Ft(,)g(or)h Fs(ISMACR)p Ft(\).)1675 1264 y([F)l(unction])-1800
+b Fg(char)20 b(**)f Ff(rl)p 313 1264 V 26 w(in)n(v)n(oking)p
+547 1264 V 27 w(k)n(eyseqs)24 b Fe(\()p Fs(rl_command_func_t)12
+b(*function)p Fe(\))195 1319 y Ft(Return)j(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 Fi(function)g Ft(in)195 1374 y(the)f(curren)o(t)g(k)o
+(eymap.)1675 1490 y([F)l(unction])-1800 b Fg(char)20
+b(**)f Ff(rl)p 313 1490 V 26 w(in)n(v)n(oking)p 547 1490
+V 27 w(k)n(eyseqs)p 760 1490 V 26 w(in)p 833 1490 V 26
+w(map)i Fe(\()p Fs(rl_command_func_t)283 1545 y(*function,)13
+b(Keymap)i(map)p Fe(\))195 1600 y Ft(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 Fi(function)g Ft(in)195 1655 y(the)f(k)o(eymap)g
+Fi(map)p Ft(.)1675 1772 y([F)l(unction])-1800 b Fg(void)20
+b Ff(rl)p 242 1772 V 25 w(function)p 472 1772 V 26 w(dump)r(er)g
+Fe(\()p Fs(int)15 b(readable)p Fe(\))195 1826 y Ft(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 1881 y Fs(rl_outstream)p
+Ft(.)j(If)c Fi(readable)j Ft(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
+1936 y(b)q(e)i(made)f(part)g(of)f(an)i Fs(inputrc)e Ft(\014le)i(and)f
+(re-read.)1675 2053 y([F)l(unction])-1800 b Fg(void)20
+b Ff(rl)p 242 2053 V 25 w(list)p 342 2053 V 27 w(funmap)p
+560 2053 V 23 w(names)h Fe(\()p Fs(void)p Fe(\))195 2108
+y Ft(Prin)o(t)15 b(the)g(names)h(of)e(all)j(bindable)g(Readline)f
+(functions)g(to)f Fs(rl_outstream)p Ft(.)1675 2224 y([F)l(unction])
+-1800 b Fg(const)20 b(char)g(**)f Ff(rl)p 463 2224 V
+26 w(funmap)p 680 2224 V 22 w(names)i Fe(\()p Fs(void)p
+Fe(\))195 2279 y Ft(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 2334 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 Fs(free\(\))d
+Ft(the)i(arra)o(y)e(when)195 2389 y(y)o(ou)k(are)g(done,)g(but)g(not)g
+(the)g(p)q(oin)o(ters.)1675 2506 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 2506 V 25 w(add)p 333 2506
+V 25 w(funmap)p 549 2506 V 23 w(en)n(try)j Fe(\()p Fs(const)14
+b(char)h(*name,)f(rl_command_func_t)283 2560 y(*function)p
+Fe(\))195 2615 y Ft(Add)j Fi(name)i Ft(to)d(the)g(list)h(of)f(bindable)
+j(Readline)f(command)e(names,)g(and)h(mak)o(e)f Fi(function)h
+Ft(the)195 2670 y(function)f(to)f(b)q(e)g(called)i(when)f
+Fi(name)i Ft(is)d(in)o(v)o(ok)o(ed.)p eop
+%%Page: 32 36
+32 35 bop 75 -58 a Ft(32)1299 b(GNU)15 b(Readline)h(Library)75
+149 y Fh(2.4.5)30 b(Allo)n(wing)21 b(Undoing)137 269
+y Ft(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
+324 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
+389 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 Fs(rl_insert_)75
+444 y(text\(\))13 b Ft(or)h Fs(rl_delete_text\(\))d Ft(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 509 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 564 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
+Fs(rl_begin_undo_)75 619 y(group\(\))14 b Ft(and)i Fs
+(rl_end_undo_group\(\))p Ft(.)137 684 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 738
+y Fd(enum)i(undo_code)e({)j(UNDO_DELETE)o(,)d(UNDO_INSERT)o(,)g
+(UNDO_BEGIN,)g(UNDO_END)g(};)137 803 y Ft(Notice)g(that)e
+Fs(UNDO_DELETE)g Ft(means)h(to)g(insert)g(some)g(text,)f(and)i
+Fs(UNDO_INSERT)d Ft(means)i(to)g(delete)75 858 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 Fs(UNDO_BEGIN)13 b
+Ft(and)75 913 y Fs(UNDO_END)h Ft(are)h(tags)f(added)i(b)o(y)f
+Fs(rl_begin_undo_group\(\))d Ft(and)k Fs(rl_end_undo_group\(\))p
+Ft(.)1675 998 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p
+216 998 18 3 v 25 w(b)r(egin)p 377 998 V 26 w(undo)p
+528 998 V 24 w(group)h Fe(\()p Fs(void)p Fe(\))195 1053
+y Ft(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
+1108 y(comes)21 b(from)f(calls)i(to)e Fs(rl_insert_text\(\))e
+Ft(and)j Fs(rl_delete_text\(\))p Ft(,)f(but)h(could)g(b)q(e)h(the)195
+1163 y(result)16 b(of)e(calls)j(to)d Fs(rl_add_undo\(\))p
+Ft(.)1675 1248 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p
+216 1248 V 25 w(end)p 331 1248 V 25 w(undo)p 481 1248
+V 25 w(group)h Fe(\()p Fs(void)p Fe(\))195 1303 y Ft(Closes)15
+b(the)f(curren)o(t)h(undo)g(group)f(started)g(with)g
+Fs(rl_begin_undo_group)f(\(\))p Ft(.)19 b(There)c(should)195
+1358 y(b)q(e)h(one)f(call)i(to)d Fs(rl_end_undo_group\(\))f
+Ft(for)h(eac)o(h)h(call)i(to)d Fs(rl_begin_undo_group\(\))p
+Ft(.)1675 1444 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p
+242 1444 V 25 w(add)p 359 1444 V 25 w(undo)i Fe(\()p
+Fs(enum)14 b(undo_code)g(what,)h(int)f(start,)h(int)f(end,)h(char)283
+1499 y(*text)p Fe(\))195 1553 y Ft(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 Fi(what)q Ft(\).)24
+b(The)17 b(a\013ected)g(text)f(runs)i(from)195 1608 y
+Fi(start)d Ft(to)g Fi(end)p Ft(,)g(and)g(encompasses)h
+Fi(text)p Ft(.)1675 1694 y([F)l(unction])-1800 b Fg(void)20
+b Ff(rl)p 242 1694 V 25 w(free)p 361 1694 V 25 w(undo)p
+511 1694 V 25 w(list)k Fe(\()p Fs(void)p Fe(\))195 1749
+y Ft(F)l(ree)15 b(the)h(existing)g(undo)f(list.)1675
+1834 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
+1834 V 25 w(do)p 302 1834 V 25 w(undo)i Fe(\()p Fs(void)p
+Fe(\))195 1889 y Ft(Undo)12 b(the)f(\014rst)g(thing)h(on)g(the)f(undo)h
+(list.)19 b(Returns)11 b Fs(0)h Ft(if)g(there)f(w)o(as)g(nothing)h(to)e
+(undo,)j(non-zero)195 1944 y(if)j(something)f(w)o(as)f(undone.)137
+2030 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 2085 y(c)o(hange)j(its)h(case\),)g(call)g Fs(rl_modifying\(\))e
+Ft(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 2139 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(.)1675
+2225 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
+2225 V 25 w(mo)r(difying)i Fe(\()p Fs(int)14 b(start,)h(int)f(end)p
+Fe(\))195 2280 y Ft(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 Fi(start)g Ft(and)g Fi(end)j
+Ft(as)c(a)h(single)h(undo)g(unit.)35 b(It)20 b(is)195
+2335 y(assumed)15 b(that)g(y)o(ou)g(will)i(subsequen)o(tly)f(mo)q(dify)
+g(that)e(text.)75 2440 y Fh(2.4.6)30 b(Redispla)n(y)1675
+2560 y Ft([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p
+242 2560 V 25 w(redispla)n(y)25 b Fe(\()p Fs(void)p Fe(\))195
+2615 y Ft(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
+Fs(rl_line_)195 2670 y(buffer)p Ft(.)p eop
+%%Page: 33 37
+33 36 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(33)1675 149 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 149 18 3 v 25 w(forced)p 395 149 V 25 w(up)r(date)p
+594 149 V 24 w(displa)n(y)25 b Fe(\()p Fs(void)p Fe(\))195
+204 y Ft(F)l(orce)20 b(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
+259 y(screen)16 b(displa)o(y)g(is)g(correct.)1675 358
+y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 358 V
+25 w(on)p 302 358 V 25 w(new)p 426 358 V 26 w(line)k
+Fe(\()p Fs(void)p Fe(\))195 412 y Ft(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 467
+y(ouputting)f(a)e(newline.)1675 566 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 566 V 25 w(on)p 302 566 V 25
+w(new)p 426 566 V 26 w(line)p 540 566 V 27 w(with)p 677
+566 V 26 w(prompt)h Fe(\()p Fs(void)p Fe(\))195 621 y
+Ft(T)l(ell)13 b(the)g(up)q(date)f(functions)h(that)e(w)o(e)h(ha)o(v)o
+(e)g(mo)o(v)o(ed)f(on)o(to)g(a)h(new)g(line,)i(with)f
+Fi(rl)p 1553 621 14 2 v 20 w(prompt)g Ft(already)195
+675 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 730 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 785 y(should)16 b(b)q(e)g(used)g(after)e(setting)i
+Fi(rl)p 795 785 V 20 w(already)p 960 785 V 20 w(prompted)p
+Ft(.)1675 884 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p
+216 884 18 3 v 25 w(reset)p 362 884 V 25 w(line)p 475
+884 V 28 w(state)j Fe(\()p Fs(void)p Fe(\))195 938 y
+Ft(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
+993 y(new)e(line.)1675 1092 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 1092 V 25 w(crlf)j Fe(\()p Fs(void)p Fe(\))195
+1147 y Ft(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.)1675 1245 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 1245 V 25 w(sho)n(w)p 364 1245
+V 25 w(c)n(har)j Fe(\()p Fs(int)15 b(c)p Fe(\))195 1300
+y Ft(Displa)o(y)i(c)o(haracter)e Fi(c)20 b Ft(on)c Fs(rl_outstream)p
+Ft(.)21 b(If)c(Readline)g(has)f(not)g(b)q(een)i(set)e(to)f(displa)o(y)j
+(meta)195 1355 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 1410 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(.)1675 1508 y([F)l(unction])-1800 b Fg(int)20 b
+Ff(rl)p 216 1508 V 25 w(message)h Fe(\()p Fs(const)14
+b(char)h(*,)g(...)o Fe(\))195 1563 y Ft(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
+Fs(printf)p Ft(,)h(p)q(ossibly)i(con)o(taining)195 1618
+y(con)o(v)o(ersion)22 b(sp)q(eci\014cations)i(suc)o(h)f(as)e(`)p
+Fs(\045d)p Ft(',)i(and)f(an)o(y)g(additional)h(argumen)o(ts)e
+(necessary)i(to)195 1673 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 Fi(ec)o(ho)195 1728 y(area)p Ft(.)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.)1675 1826 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 1826 V 25 w(clear)p 359 1826
+V 27 w(message)g Fe(\()p Fs(void)p Fe(\))195 1881 y Ft(Clear)15
+b(the)h(message)e(in)i(the)g(ec)o(ho)f(area.)1675 1980
+y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p 242 1980
+V 25 w(sa)n(v)n(e)p 370 1980 V 26 w(prompt)h Fe(\()p
+Fs(void)p Fe(\))195 2034 y Ft(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 2089 y(message)15 b(in)h(the)f(message)g(area)f(with)i
+Fs(rl_message\(\))p Ft(.)1675 2188 y([F)l(unction])-1800
+b Fg(void)20 b Ff(rl)p 242 2188 V 25 w(restore)p 441
+2188 V 25 w(prompt)g Fe(\()p Fs(void)p Fe(\))195 2243
+y Ft(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
+2297 y Fs(rl_save_prompt)p Ft(.)1675 2396 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 2396 V 25 w(expand)p 421 2396
+V 25 w(prompt)h Fe(\()p Fs(char)14 b(*prompt)p Fe(\))195
+2451 y Ft(Expand)22 b(an)o(y)f(sp)q(ecial)i(c)o(haracter)e(sequences)h
+(in)g Fi(prompt)g Ft(and)g(set)f(up)h(the)f(lo)q(cal)i(Readline)195
+2506 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 Fs(readline\(\))p
+Ft(.)26 b(It)18 b(ma)o(y)f(also)h(b)q(e)195 2560 y(called)12
+b(to)e(expand)h(the)g(primary)g(prompt)f(if)h(the)f Fs
+(rl_on_new_line_with_prompt\(\))d Ft(function)195 2615
+y(or)12 b Fs(rl_already_prompted)e Ft(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 2670 y(on)g(the)g(last)h(line)g(of)f(the)g(\(p)q
+(ossibly)i(m)o(ulti-line\))g(prompt.)p eop
+%%Page: 34 38
+34 37 bop 75 -58 a Ft(34)1299 b(GNU)15 b(Readline)h(Library)1675
+149 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 149
+18 3 v 25 w(set)p 312 149 V 26 w(prompt)g Fe(\()p Fs(const)14
+b(char)h(*prompt)p Fe(\))195 204 y Ft(Mak)o(e)e(Readline)i(use)e
+Fi(prompt)h Ft(for)f(subsequen)o(t)h(redispla)o(y)l(.)21
+b(This)14 b(calls)g Fs(rl_expand_prompt\(\))195 259 y
+Ft(to)h(expand)g(the)h(prompt)e(and)i(sets)f Fs(rl_prompt)f
+Ft(to)g(the)h(result.)75 375 y Fh(2.4.7)30 b(Mo)r(difying)20
+b(T)-5 b(ext)1675 499 y Ft([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 499 V 25 w(insert)p 383 499 V 26 w(text)k
+Fe(\()p Fs(const)14 b(char)g(*text)p Fe(\))195 554 y
+Ft(Insert)i Fi(text)g Ft(in)o(to)g(the)g(line)h(at)f(the)g(curren)o(t)f
+(cursor)h(p)q(osition.)22 b(Returns)16 b(the)g(n)o(um)o(b)q(er)g(of)f
+(c)o(har-)195 608 y(acters)g(inserted.)1675 704 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 704 V 25 w(delete)p 388 704
+V 27 w(text)k Fe(\()p Fs(int)14 b(start,)h(int)g(end)p
+Fe(\))195 759 y Ft(Delete)k(the)g(text)g(b)q(et)o(w)o(een)g
+Fi(start)g Ft(and)g Fi(end)i Ft(in)f(the)f(curren)o(t)f(line.)33
+b(Returns)18 b(the)h(n)o(um)o(b)q(er)g(of)195 814 y(c)o(haracters)14
+b(deleted.)1675 910 y([F)l(unction])-1800 b Fg(char)20
+b(*)f Ff(rl)p 287 910 V 26 w(cop)n(y)p 427 910 V 25 w(text)24
+b Fe(\()p Fs(int)15 b(start,)f(int)h(end)p Fe(\))195
+965 y Ft(Return)g(a)g(cop)o(y)g(of)g(the)g(text)f(b)q(et)o(w)o(een)i
+Fi(start)f Ft(and)g Fi(end)j Ft(in)e(the)f(curren)o(t)g(line.)1675
+1060 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
+1060 V 25 w(kill)p 316 1060 V 28 w(text)k Fe(\()p Fs(int)15
+b(start,)f(int)h(end)p Fe(\))195 1115 y Ft(Cop)o(y)i(the)g(text)f(b)q
+(et)o(w)o(een)i Fi(start)f Ft(and)g Fi(end)i Ft(in)f(the)f(curren)o(t)g
+(line)i(to)e(the)g(kill)i(ring,)e(app)q(ending)195 1170
+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
+1225 y(deleted.)26 b(If)17 b Fi(start)g Ft(is)g(less)g(than)g
+Fi(end)p Ft(,)g(the)g(text)g(is)g(app)q(ended,)h(otherwise)f(prep)q
+(ended.)27 b(If)17 b(the)195 1280 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.)1675
+1375 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
+1375 V 25 w(push)p 360 1375 V 25 w(macro)p 540 1375 V
+23 w(input)j Fe(\()p Fs(char)15 b(*macro)p Fe(\))195
+1430 y Ft(Cause)f Fi(macro)i Ft(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 1485 y(a)g(macro.)k(Not)c(esp)q(ecially)i
+(useful;)f(use)g Fs(rl_insert_text\(\))d Ft(instead.)75
+1601 y Fh(2.4.8)30 b(Character)21 b(Input)1675 1725 y
+Ft([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 1725
+V 25 w(read)p 351 1725 V 25 w(k)n(ey)k Fe(\()p Fs(void)p
+Fe(\))195 1780 y Ft(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 1834 y(dles)e(input)g(inserted)h(in)o(to)e(the)g(input)h
+(stream)f(via)g Fi(rl)p 1112 1834 14 2 v 21 w(p)q(ending)p
+1289 1834 V 22 w(input)i Ft(\(see)e(Section)h(2.3)f([Read-)195
+1889 y(line)21 b(V)l(ariables],)g(page)f(24\))f(and)h
+Fs(rl_stuff_char\(\))p Ft(,)e(macros,)h(and)h(c)o(haracters)f(read)h
+(from)195 1944 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 1999 y(to)d(the)g Fs(rl_event_hook)e
+Ft(v)m(ariable.)1675 2095 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 2095 18 3 v 25 w(getc)k Fe(\()p Fs(FILE)14
+b(*stream)p Fe(\))195 2149 y Ft(Return)c(the)h(next)g(c)o(haracter)f(a)
+o(v)m(ailable)i(from)e Fi(stream)p Ft(,)g(whic)o(h)i(is)f(assumed)f(to)
+g(b)q(e)i(the)e(k)o(eyb)q(oard.)1675 2245 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 2245 V 25 w(stu\013)p 351 2245
+V 26 w(c)n(har)i Fe(\()p Fs(int)15 b(c)p Fe(\))195 2300
+y Ft(Insert)i Fi(c)i Ft(in)o(to)d(the)h(Readline)h(input)f(stream.)23
+b(It)16 b(will)i(b)q(e)f Fs(")p Ft(read)p Fs(")g Ft(b)q(efore)f
+(Readline)i(attempts)195 2355 y(to)13 b(read)g(c)o(haracters)g(from)f
+(the)i(terminal)g(with)g Fs(rl_read_key\(\))p Ft(.)j(Up)d(to)f(512)f(c)
+o(haracters)h(ma)o(y)195 2410 y(b)q(e)j(pushed)g(bac)o(k.)k
+Fs(rl_stuff_char)14 b Ft(returns)h(1)g(if)h(the)f(c)o(haracter)g(w)o
+(as)f(successfully)j(inserted;)195 2465 y(0)e(otherwise.)1675
+2560 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
+2560 V 25 w(execute)p 428 2560 V 27 w(next)j Fe(\()p
+Fs(int)15 b(c)p Fe(\))195 2615 y Ft(Mak)o(e)i Fi(c)k
+Ft(b)q(e)d(the)g(next)g(command)g(to)f(b)q(e)i(executed)f(when)h
+Fs(rl_read_key\(\))d Ft(is)i(called.)29 b(This)195 2670
+y(sets)15 b Fi(rl)p 317 2670 14 2 v 20 w(p)q(ending)p
+493 2670 V 22 w(input)p Ft(.)p eop
+%%Page: 35 39
+35 38 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(35)1675 149 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 149 18 3 v 25 w(clear)p 359 149 V 27 w(p)r(ending)p
+586 149 V 24 w(input)k Fe(\()p Fs(void)p Fe(\))195 204
+y Ft(Unset)d Fi(rl)p 364 204 14 2 v 20 w(p)q(ending)p
+540 204 V 22 w(input)p Ft(,)i(e\013ectiv)o(ely)f(negating)f(the)g
+(e\013ect)g(of)f(an)o(y)h(previous)g(call)h(to)e Fs(rl_)195
+259 y(execute_next\(\))p Ft(.)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
+314 y(with)c Fs(rl_read_key\(\))p Ft(.)1675 404 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 404 18 3 v 25 w(set)p 312 404
+V 26 w(k)n(eyb)r(oard)p 569 404 V 24 w(input)p 726 404
+V 26 w(timeout)j Fe(\()p Fs(int)14 b(u)p Fe(\))195 459
+y Ft(While)21 b(w)o(aiting)g(for)e(k)o(eyb)q(oard)h(input)h(in)g
+Fs(rl_read_key\(\))p Ft(,)e(Readline)i(will)h(w)o(ait)e(for)f
+Fi(u)h Ft(mi-)195 514 y(croseconds)h(for)e(input)j(b)q(efore)f(calling)
+h(an)o(y)e(function)h(assigned)g(to)f Fs(rl_event_hook)p
+Ft(.)34 b(The)195 569 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 679 y Fh(2.4.9)30 b(T)-5 b(erminal)20
+b(Managemen)n(t)1675 800 y Ft([F)l(unction])-1800 b Fg(void)20
+b Ff(rl)p 242 800 V 25 w(prep)p 381 800 V 25 w(terminal)j
+Fe(\()p Fs(int)15 b(meta_flag)p Fe(\))195 855 y Ft(Mo)q(dify)22
+b(the)f(terminal)h(settings)f(for)g(Readline's)h(use,)h(so)d
+Fs(readline\(\))g Ft(can)i(read)f(a)g(single)195 910
+y(c)o(haracter)15 b(at)g(a)g(time)g(from)g(the)h(k)o(eyb)q(oard.)k(The)
+c Fi(meta)p 1189 910 14 2 v 19 w(\015ag)j Ft(argumen)o(t)c(should)i(b)q
+(e)f(non-zero)195 965 y(if)g(Readline)g(should)g(read)f(eigh)o(t-bit)i
+(input.)1675 1055 y([F)l(unction])-1800 b Fg(void)20
+b Ff(rl)p 242 1055 18 3 v 25 w(deprep)p 439 1055 V 25
+w(terminal)j Fe(\()p Fs(void)p Fe(\))195 1110 y Ft(Undo)16
+b(the)g(e\013ects)f(of)h Fs(rl_prep_terminal\(\))p Ft(,)d(lea)o(ving)k
+(the)e(terminal)i(in)g(the)e(state)g(in)i(whic)o(h)195
+1165 y(it)e(w)o(as)g(b)q(efore)g(the)h(most)e(recen)o(t)h(call)i(to)d
+Fs(rl_prep_terminal\(\))p Ft(.)1675 1255 y([F)l(unction])-1800
+b Fg(void)20 b Ff(rl)p 242 1255 V 25 w(tt)n(y)p 339 1255
+V 27 w(set)p 437 1255 V 25 w(default)p 635 1255 V 26
+w(bindings)j Fe(\()p Fs(Keymap)14 b(kmap)p Fe(\))195
+1310 y Ft(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
+1365 y Fs(stty)p Ft(\))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 Fi(kmap)p
+Ft(.)1675 1455 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p
+242 1455 V 25 w(tt)n(y)p 339 1455 V 27 w(unset)p 501
+1455 V 25 w(default)p 699 1455 V 25 w(bindings)k Fe(\()p
+Fs(Keymap)14 b(kmap)p Fe(\))195 1510 y Ft(Reset)h(the)h(bindings)i
+(manipulated)f(b)o(y)f Fs(rl_tty_set_default_bindings)c
+Ft(so)k(that)f(the)h(ter-)195 1564 y(minal)21 b(editing)g(c)o
+(haracters)e(are)h(b)q(ound)g(to)f Fs(rl_insert)p Ft(.)33
+b(The)20 b(bindings)i(are)d(p)q(erformed)h(in)195 1619
+y Fi(kmap)p Ft(.)1675 1710 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 1710 V 25 w(reset)p 362 1710 V 25 w(terminal)k
+Fe(\()p Fs(const)14 b(char)g(*terminal_name)p Fe(\))195
+1764 y Ft(Reinitialize)h(Readline's)d(idea)h(of)f(the)g(terminal)g
+(settings)g(using)h Fi(terminal)p 1488 1764 14 2 v 21
+w(name)h Ft(as)e(the)g(termi-)195 1819 y(nal)k(t)o(yp)q(e)g(\(e.g.,)f
+Fs(vt100)p Ft(\).)21 b(If)16 b Fi(terminal)p 876 1819
+V 21 w(name)i Ft(is)f Fs(NULL)p Ft(,)e(the)h(v)m(alue)h(of)e(the)h
+Fs(TERM)g Ft(en)o(vironmen)o(t)195 1874 y(v)m(ariable)h(is)e(used.)75
+1984 y Fh(2.4.10)29 b(Utilit)n(y)22 b(F)-5 b(unctions)1675
+2106 y Ft([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p
+242 2106 18 3 v 25 w(replace)p 443 2106 V 27 w(line)k
+Fe(\()p Fs(const)15 b(char)f(*text,)g(int)h(clear_undo)p
+Fe(\))195 2161 y Ft(Replace)20 b(the)g(con)o(ten)o(ts)f(of)g
+Fs(rl_line_buffer)f Ft(with)i Fi(text)p Ft(.)33 b(The)20
+b(p)q(oin)o(t)g(and)g(mark)f(are)h(pre-)195 2215 y(serv)o(ed,)13
+b(if)g(p)q(ossible.)21 b(If)13 b Fi(clear)p 711 2215
+14 2 v 21 w(undo)i Ft(is)e(non-zero,)h(the)e(undo)i(list)f(asso)q
+(ciated)g(with)g(the)g(curren)o(t)195 2270 y(line)k(is)f(cleared.)1675
+2360 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216
+2360 18 3 v 25 w(extend)p 409 2360 V 26 w(line)p 523
+2360 V 27 w(bu\013er)j Fe(\()p Fs(int)14 b(len)p Fe(\))195
+2415 y Ft(Ensure)h(that)g Fs(rl_line_buffer)e Ft(has)i(enough)g(space)h
+(to)e(hold)i Fi(len)g Ft(c)o(haracters,)e(p)q(ossibly)i(real-)195
+2470 y(lo)q(cating)g(it)f(if)h(necessary)l(.)1675 2560
+y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 2560
+V 25 w(initial)q(i)q(ze)26 b Fe(\()p Fs(void)p Fe(\))195
+2615 y Ft(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 2670 y(this;)d Fs(readline\(\))f Ft(calls)i(it)g(b)q(efore)f
+(reading)h(an)o(y)f(input.)p eop
+%%Page: 36 40
+36 39 bop 75 -58 a Ft(36)1299 b(GNU)15 b(Readline)h(Library)1675
+149 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 149
+18 3 v 25 w(ding)j Fe(\()p Fs(void)p Fe(\))195 204 y
+Ft(Ring)15 b(the)g(terminal)h(b)q(ell,)h(ob)q(eying)f(the)g(setting)f
+(of)g Fs(bell-style)p Ft(.)1675 305 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 305 V 25 w(alphab)r(etic)25
+b Fe(\()p Fs(int)14 b(c)p Fe(\))195 360 y Ft(Return)h(1)g(if)g
+Fi(c)j Ft(is)e(an)f(alphab)q(etic)i(c)o(haracter.)1675
+462 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p 242
+462 V 25 w(displa)n(y)p 440 462 V 27 w(matc)n(h)p 621
+462 V 25 w(list)k Fe(\()p Fs(char)15 b(**matches,)e(int)i(len,)g(int)g
+(max)p Fe(\))195 516 y Ft(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 571 y(line's)h(output)f(stream.)23 b Fs(matches)16
+b Ft(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 626 y(completion)c(matc)o(hes.)19
+b Fs(len)11 b Ft(is)i(the)f(n)o(um)o(b)q(er)h(of)e(strings)h(in)h
+Fs(matches)p Ft(,)f(and)g Fs(max)g Ft(is)g(the)h(length)f(of)195
+681 y(the)h(longest)g(string)g(in)h Fs(matches)p Ft(.)19
+b(This)13 b(function)h(uses)f(the)h(setting)f(of)f Fs
+(print-completions-)195 736 y(horizontally)k Ft(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 790 y(Init)g(File)g(Syn)o(tax],)e(page)h(4\).)137
+892 y(The)i(follo)o(wing)f(are)g(implemen)o(ted)i(as)e(macros,)f
+(de\014ned)i(in)g Fs(chardefs.h)p Ft(.)k(Applications)d(should)75
+946 y(refrain)d(from)g(using)h(them.)1675 1048 y([F)l(unction])-1800
+b Fg(int)p 177 1048 V 45 w Ff(rl)p 241 1048 V 25 w(upp)r(ercase)p
+516 1048 V 25 w(p)22 b Fe(\()p Fs(int)15 b(c)p Fe(\))195
+1102 y Ft(Return)g(1)g(if)g Fi(c)j Ft(is)e(an)f(upp)q(ercase)i(alphab)q
+(etic)f(c)o(haracter.)1675 1204 y([F)l(unction])-1800
+b Fg(int)p 177 1204 V 45 w Ff(rl)p 241 1204 V 25 w(lo)n(w)n(ercase)p
+499 1204 V 27 w(p)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195
+1258 y Ft(Return)h(1)g(if)g Fi(c)j Ft(is)e(a)f(lo)o(w)o(ercase)g
+(alphab)q(etic)i(c)o(haracter.)1675 1360 y([F)l(unction])-1800
+b Fg(int)p 177 1360 V 45 w Ff(rl)p 241 1360 V 25 w(digit)p
+379 1360 V 27 w(p)23 b Fe(\()p Fs(int)14 b(c)p Fe(\))195
+1414 y Ft(Return)h(1)g(if)g Fi(c)j Ft(is)e(a)f(n)o(umeric)h(c)o
+(haracter.)1675 1516 y([F)l(unction])-1800 b Fg(int)p
+177 1516 V 45 w Ff(rl)p 241 1516 V 25 w(to)p 317 1516
+V 26 w(upp)r(er)21 b Fe(\()p Fs(int)15 b(c)p Fe(\))195
+1571 y Ft(If)d Fi(c)j Ft(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.)1675 1672 y([F)l(unction])-1800 b Fg(int)p
+177 1672 V 45 w Ff(rl)p 241 1672 V 25 w(to)p 317 1672
+V 26 w(lo)n(w)n(er)24 b Fe(\()p Fs(int)14 b(c)p Fe(\))195
+1727 y Ft(If)h Fi(c)i Ft(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 1781 y(ter.)1675 1883 y([F)l(unction])-1800
+b Fg(int)p 177 1883 V 45 w Ff(rl)p 241 1883 V 25 w(digit)p
+379 1883 V 27 w(v)m(alue)24 b Fe(\()p Fs(int)14 b(c)p
+Fe(\))195 1937 y Ft(If)h Fi(c)k Ft(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 2059 y Fh(2.4.11)29
+b(Miscellaneous)22 b(F)-5 b(unctions)1675 2185 y Ft([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 2185 V 25 w(macro)p 396 2185
+V 24 w(bind)j Fe(\()p Fs(const)14 b(char)h(*keyseq,)f(const)g(char)h
+(*macro,)f(Keymap)283 2240 y(map)p Fe(\))195 2295 y Ft(Bind)f(the)f(k)o
+(ey)f(sequence)i Fi(k)o(eyseq)g Ft(to)e(in)o(v)o(ok)o(e)g(the)h(macro)f
+Fi(macro)p Ft(.)18 b(The)12 b(binding)h(is)f(p)q(erformed)g(in)195
+2350 y Fi(map)p Ft(.)19 b(When)14 b Fi(k)o(eyseq)h Ft(is)f(in)o(v)o(ok)
+o(ed,)g(the)g Fi(macro)i Ft(will)f(b)q(e)f(inserted)h(in)o(to)f(the)g
+(line.)21 b(This)14 b(function)195 2404 y(is)i(deprecated;)f(use)h
+Fs(rl_generic_bind\(\))d Ft(instead.)1675 2506 y([F)l(unction])-1800
+b Fg(void)20 b Ff(rl)p 242 2506 V 25 w(macro)p 422 2506
+V 24 w(dump)r(er)g Fe(\()p Fs(int)15 b(readable)p Fe(\))195
+2560 y Ft(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
+2615 y(to)h Fs(rl_outstream)p Ft(.)k(If)d Fi(readable)j
+Ft(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 2670 y(can)g(b)q(e)h(made)f(part)g(of)g(an)g
+Fs(inputrc)f Ft(\014le)i(and)g(re-read.)p eop
+%%Page: 37 41
+37 40 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(37)1675 149 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 149 18 3 v 25 w(v)m(ariable)p 436 149 V
+27 w(bind)j Fe(\()p Fs(const)14 b(char)h(*variable,)e(const)i(char)f
+(*value)p Fe(\))195 204 y Ft(Mak)o(e)g(the)g(Readline)i(v)m(ariable)g
+Fi(v)m(ariable)i Ft(ha)o(v)o(e)d Fi(v)m(alue)p Ft(.)20
+b(This)c(b)q(eha)o(v)o(es)e(as)g(if)h(the)g(readline)h(com-)195
+259 y(mand)e(`)p Fs(set)h Fl(variable)k(value)5 b Ft(')14
+b(had)g(b)q(een)i(executed)f(in)h(an)e Fs(inputrc)f Ft(\014le)j(\(see)e
+(Section)i(1.3.1)195 314 y([Readline)g(Init)g(File)h(Syn)o(tax],)d
+(page)h(4\).)1675 403 y([F)l(unction])-1800 b Fg(void)20
+b Ff(rl)p 242 403 V 25 w(v)m(ariable)p 462 403 V 27 w(dump)r(er)g
+Fe(\()p Fs(int)15 b(readable)p Fe(\))195 458 y Ft(Prin)o(t)f(the)h
+(readline)h(v)m(ariable)f(names)g(and)f(their)h(curren)o(t)f(v)m(alues)
+i(to)d Fs(rl_outstream)p Ft(.)18 b(If)d Fi(read-)195
+513 y(able)20 b Ft(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 568 y Fs(inputrc)d Ft(\014le)i(and)g(re-read.)1675
+657 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 657
+V 25 w(set)p 312 657 V 26 w(paren)p 480 657 V 24 w(blink)p
+628 657 V 27 w(timeout)j Fe(\()p Fs(int)14 b(u)p Fe(\))195
+712 y Ft(Set)f(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
+767 y(c)o(haracter)h(when)i Fs(blink-matching-paren)d
+Ft(has)i(b)q(een)h(enabled.)1675 856 y([F)l(unction])-1800
+b Fg(char)20 b(*)f Ff(rl)p 287 856 V 26 w(get)p 390 856
+V 25 w(termcap)j Fe(\()p Fs(const)14 b(char)h(*cap)p
+Fe(\))195 911 y Ft(Retriev)o(e)e(the)h(string)f(v)m(alue)i(of)e(the)h
+(termcap)f(capabilit)o(y)i Fi(cap)p Ft(.)k(Readline)c(fetc)o(hes)f(the)
+f(termcap)195 966 y(en)o(try)j(for)h(the)f(curren)o(t)h(terminal)h
+(name)e(and)h(uses)g(those)g(capabilities)i(to)d(mo)o(v)o(e)g(around)h
+(the)195 1020 y(screen)11 b(line)h(and)f(p)q(erform)f(other)g
+(terminal-sp)q(eci\014c)k(op)q(erations,)d(lik)o(e)h(erasing)e(a)h
+(line.)20 b(Readline)195 1075 y(do)q(es)e(not)f(use)h(all)g(of)f(a)g
+(terminal's)h(capabilities,)i(and)e(this)g(function)g(will)h(return)f
+(v)m(alues)h(for)195 1130 y(only)d(those)f(capabilities)i(Readline)g
+(uses.)75 1239 y Fh(2.4.12)29 b(Alternate)21 b(In)n(terface)137
+1361 y Ft(An)i(alternate)f(in)o(terface)h(is)g(a)o(v)m(ailable)h(to)d
+(plain)j Fs(readline\(\))p Ft(.)40 b(Some)22 b(applications)i(need)g
+(to)75 1415 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 1470 y(lo)q(op)f(to)g Fs(select\(\))e
+Ft(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
+1525 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 1580 y(this)i(easy)l(.)1675
+1669 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p 242
+1669 V 25 w(callbac)n(k)p 463 1669 V 29 w(handler)p 681
+1669 V 25 w(install)25 b Fe(\()p Fs(const)14 b(char)h(*prompt,)283
+1724 y(rl_vcpfunc_t)e(*lhandler)p Fe(\))195 1779 y Ft(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 Fi(prompt)p Ft(.)195 1834
+y(Sa)o(v)o(e)j(the)h(v)m(alue)h(of)f Fi(lhandler)21 b
+Ft(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 1888 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.)1675 1978 y([F)l(unction])-1800 b
+Fg(void)20 b Ff(rl)p 242 1978 V 25 w(callbac)n(k)p 463
+1978 V 29 w(read)p 602 1978 V 24 w(c)n(har)j Fe(\()p
+Fs(void)p Fe(\))195 2033 y Ft(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 2087 y Fs(rl_callback_read_char\(\))p
+Ft(,)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 2142 y(source.)38 b(If)21
+b(that)g(c)o(haracter)f(completes)i(the)f(line,)j Fs
+(rl_callback_read_char)18 b Ft(will)23 b(in)o(v)o(ok)o(e)195
+2197 y(the)18 b Fi(lhandler)k Ft(function)d(sa)o(v)o(ed)e(b)o(y)h
+Fs(rl_callback_handler_insta)o(ll)d Ft(to)i(pro)q(cess)h(the)g(line.)
+195 2252 y(Before)13 b(calling)i(the)f Fi(lhandler)k
+Ft(function,)c(the)g(terminal)g(settings)f(are)g(reset)g(to)g(the)g(v)m
+(alues)i(they)195 2307 y(had)g(b)q(efore)g(calling)i
+Fs(rl_callback_handler_insta)o(ll)p Ft(.)g(If)e(the)g
+Fi(lhandler)20 b Ft(function)15 b(returns,)195 2361 y(the)d(terminal)i
+(settings)e(are)g(mo)q(di\014ed)i(for)d(Readline's)i(use)g(again.)19
+b Fs(EOF)12 b Ft(is)h(indicated)h(b)o(y)e(calling)195
+2416 y Fi(lhandler)20 b Ft(with)c(a)f Fs(NULL)f Ft(line.)1675
+2506 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p 242
+2506 V 25 w(callbac)n(k)p 463 2506 V 29 w(handler)p 681
+2506 V 25 w(remo)n(v)n(e)i Fe(\()p Fs(void)p Fe(\))195
+2560 y Ft(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
+2615 y(called)i(from)d(within)j(a)d(callbac)o(k)j(as)d(w)o(ell)i(as)f
+(indep)q(enden)o(tly)m(.)31 b(If)19 b(the)f Fi(lhandler)23
+b Ft(installed)d(b)o(y)195 2670 y Fs(rl_callback_handler_instal)o(l)d
+Ft(do)q(es)i(not)g(exit)h(the)g(program,)e(either)i(this)g(function)g
+(or)p eop
+%%Page: 38 42
+38 41 bop 75 -58 a Ft(38)1299 b(GNU)15 b(Readline)h(Library)195
+149 y(the)g(function)g(referred)g(to)f(b)o(y)h(the)g(v)m(alue)h(of)e
+Fs(rl_deprep_term_function)d Ft(should)17 b(b)q(e)f(called)195
+204 y(b)q(efore)f(the)h(program)e(exits)h(to)g(reset)g(the)g(terminal)h
+(settings.)75 330 y Fh(2.4.13)29 b(A)21 b(Readline)g(Example)137
+459 y Ft(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 514 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
+Fs(M-c)p Ft(',)f(then)i(t)o(yping)75 568 y(`)p Fs(M-c)p
+Ft(')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 Fs(M-1)g(0)h(M-c)p
+Ft(')d(w)o(ould)i(c)o(hange)75 623 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 697 y Fs(/*)24
+b(Invert)f(the)g(case)g(of)h(the)f(COUNT)h(following)e(characters.)h
+(*/)195 752 y(int)195 807 y(invert_case_line)f(\(count,)h(key\))314
+862 y(int)h(count,)f(key;)195 917 y({)243 971 y(register)f(int)i
+(start,)f(end,)g(i;)243 1081 y(start)g(=)h(rl_point;)243
+1191 y(if)f(\(rl_point)g(>=)h(rl_end\))290 1245 y(return)f(\(0\);)243
+1355 y(if)g(\(count)g(<)h(0\))290 1410 y({)338 1465 y(direction)f(=)h
+(-1;)338 1519 y(count)f(=)h(-count;)290 1574 y(})243
+1629 y(else)290 1684 y(direction)f(=)h(1;)243 1793 y(/*)f(Find)h(the)f
+(end)h(of)f(the)h(range)f(to)g(modify.)g(*/)243 1848
+y(end)g(=)h(start)f(+)h(\(count)f(*)h(direction\);)243
+1958 y(/*)f(Force)g(it)h(to)g(be)f(within)g(range.)g(*/)243
+2012 y(if)g(\(end)h(>)f(rl_end\))290 2067 y(end)h(=)g(rl_end;)243
+2122 y(else)f(if)h(\(end)f(<)h(0\))290 2177 y(end)g(=)g(0;)243
+2286 y(if)f(\(start)g(==)h(end\))290 2341 y(return)f(\(0\);)243
+2451 y(if)g(\(start)g(>)h(end\))290 2506 y({)338 2560
+y(int)g(temp)f(=)h(start;)338 2615 y(start)f(=)h(end;)338
+2670 y(end)g(=)f(temp;)p eop
+%%Page: 39 43
+39 42 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(39)290 149 y Fs(})243 259 y(/*)23 b(Tell)h(readline)e
+(that)i(we)f(are)h(modifying)e(the)i(line,)314 314 y(so)g(it)f(will)h
+(save)f(the)h(undo)f(information.)f(*/)243 369 y(rl_modifying)g
+(\(start,)h(end\);)243 478 y(for)g(\(i)h(=)f(start;)h(i)f(!=)h(end;)f
+(i++\))290 533 y({)338 588 y(if)h(\(_rl_uppercase_p)d
+(\(rl_line_buffer[i]\)\))386 643 y(rl_line_buffer[i])g(=)j
+(_rl_to_lower)e(\(rl_line_buffer[i]\);)338 697 y(else)h(if)h
+(\(_rl_lowercase_p)e(\(rl_line_buffer[i]\)\))386 752
+y(rl_line_buffer[i])f(=)j(_rl_to_upper)e(\(rl_line_buffer[i]\);)290
+807 y(})243 862 y(/*)h(Move)h(point)f(to)g(on)h(top)f(of)h(the)f(last)h
+(character)e(changed.)h(*/)243 917 y(rl_point)f(=)i(\(direction)f(==)g
+(1\))h(?)g(end)f(-)h(1)g(:)f(start;)243 971 y(return)g(\(0\);)195
+1026 y(})75 1149 y Fr(2.5)33 b(Readline)23 b(Signal)h(Handling)137
+1269 y Ft(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 1324 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 1378 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 1433 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 1488
+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
+1543 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 1598 y(pro)o(vide)k(application)h(writers)e(with)g(functions)h
+(to)f(do)g(so)g(man)o(ually)l(.)137 1663 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
+1718 y(\()p Fs(SIGINT)p Ft(,)h Fs(SIGQUIT)p Ft(,)g Fs(SIGTERM)p
+Ft(,)g Fs(SIGALRM)p Ft(,)g Fs(SIGTSTP)p Ft(,)g Fs(SIGTTIN)p
+Ft(,)h(and)f Fs(SIGTTOU)p Ft(\).)36 b(When)21 b(one)g(of)75
+1772 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
+1827 y(w)o(ere)d(in)i(e\013ect)e(b)q(efore)h Fs(readline\(\))e
+Ft(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 1882 y Fs(readline\(\))21 b Ft(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 1937 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 1992 y(con)o(tin)o(ue)d
+(to)e(accept)i(input.)20 b(When)15 b(a)e Fs(SIGINT)h
+Ft(is)g(receiv)o(ed,)h(the)g(Readline)g(signal)g(handler)g(p)q(erforms)
+75 2046 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 2101 y(description)e(of)d Fs(rl_free_line_state\(\))f
+Ft(b)q(elo)o(w\).)137 2166 y(There)g(is)f(an)g(additional)i(Readline)g
+(signal)f(handler,)g(for)f Fs(SIGWINCH)p Ft(,)f(whic)o(h)i(the)f(k)o
+(ernel)h(sends)g(to)e(a)75 2221 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 Fs(xterm)p Ft(\).)19 b(The)75 2276 y(Readline)g
+Fs(SIGWINCH)e Ft(handler)i(up)q(dates)f(Readline's)h(in)o(ternal)f
+(screen)h(size)f(information,)h(and)f(then)75 2331 y(calls)g(an)o(y)f
+Fs(SIGWINCH)e Ft(signal)j(handler)g(the)f(calling)i(application)f(has)f
+(installed.)27 b(Readline)18 b(calls)g(the)75 2386 y(application's)h
+Fs(SIGWINCH)d Ft(signal)j(handler)f(without)g(resetting)g(the)f
+(terminal)i(to)e(its)g(original)i(state.)75 2440 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 2495
+y(return)e(\(for)f(example,)h(a)f Fs(longjmp)g Ft(bac)o(k)h(to)f(a)h
+(main)g(pro)q(cessing)g(lo)q(op\),)g(it)g Fn(must)20
+b Ft(call)c Fs(rl_cleanup_)75 2550 y(after_signal\(\))d
+Ft(\(describ)q(ed)k(b)q(elo)o(w\),)e(to)g(restore)f(the)h(terminal)h
+(state.)137 2615 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 2670 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)p eop
+%%Page: 40 44
+40 43 bop 75 -58 a Ft(40)1299 b(GNU)15 b(Readline)h(Library)75
+149 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 Fs(readline\(\))p
+Ft(,)d(not)h(in)h(a)75 204 y(signal)d(handler,)g(so)f(Readline's)h(in)o
+(ternal)g(signal)g(state)e(is)i(not)f(corrupted.)1685
+298 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 298
+18 3 v 25 w(catc)n(h)p 371 298 V 27 w(signals)195 353
+y Ft(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 Fs(SIGINT)p Ft(,)f
+Fs(SIGQUIT)p Ft(,)195 408 y Fs(SIGTERM)p Ft(,)h Fs(SIGALRM)p
+Ft(,)g Fs(SIGTSTP)p Ft(,)f Fs(SIGTTIN)p Ft(,)h(and)i
+Fs(SIGTTOU)p Ft(.)195 476 y(The)f(default)h(v)m(alue)h(of)d
+Fs(rl_catch_signals)f Ft(is)j(1.)1685 569 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(rl)p 216 569 V 25 w(catc)n(h)p 371 569
+V 27 w(sigwinc)n(h)195 624 y Ft(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
+Fs(SIGWINCH)p Ft(.)195 692 y(The)h(default)h(v)m(alue)h(of)d
+Fs(rl_catch_sigwinch)f Ft(is)j(1.)137 786 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 841 y(other)i(than)g(those)g
+(Readline)i(catc)o(hes)e(\()p Fs(SIGHUP)p Ft(,)g(for)g(example\),)h
+(Readline)h(pro)o(vides)e(con)o(v)o(enience)75 895 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.)1675 989 y([F)l(unction])
+-1800 b Fg(void)20 b Ff(rl)p 242 989 V 25 w(clean)n(up)p
+455 989 V 27 w(after)p 600 989 V 25 w(signal)j Fe(\()p
+Fs(void)p Fe(\))195 1044 y Ft(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
+Fs(readline\(\))195 1099 y Ft(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 1153 y(v)m(alues)h(of)f Fs(rl_catch_signals)e
+Ft(and)i Fs(rl_catch_sigwinch)p Ft(.)1675 1247 y([F)l(unction])-1800
+b Fg(void)20 b Ff(rl)p 242 1247 V 25 w(free)p 361 1247
+V 25 w(line)p 474 1247 V 27 w(state)j Fe(\()p Fs(void)p
+Fe(\))195 1302 y Ft(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 1357 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 1411 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 Fs(rl_cleanup_)195
+1466 y(after_signal\(\))p Ft(.)36 b(The)22 b(Readline)h(signal)f
+(handler)g(for)f Fs(SIGINT)f Ft(calls)j(this)e(to)g(ab)q(ort)g(the)195
+1521 y(curren)o(t)15 b(input)h(line.)1675 1615 y([F)l(unction])-1800
+b Fg(void)20 b Ff(rl)p 242 1615 V 25 w(reset)p 388 1615
+V 26 w(after)p 532 1615 V 24 w(signal)k Fe(\()p Fs(void)p
+Fe(\))195 1670 y Ft(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 1724 y(ing)h(on)f(the)g(v)m(alues)i(of)d Fs(rl_catch_signals)f
+Ft(and)j Fs(rl_catch_sigwinch)p Ft(.)137 1818 y(If)k(an)g(application)h
+(do)q(es)f(not)g(wish)g(Readline)h(to)e(catc)o(h)g Fs(SIGWINCH)p
+Ft(,)h(it)g(ma)o(y)f(call)h Fs(rl_resize_)75 1873 y(terminal\(\))12
+b Ft(or)h Fs(rl_set_screen_size\(\))e Ft(to)i(force)g(Readline)i(to)e
+(up)q(date)h(its)g(idea)g(of)g(the)f(terminal)75 1928
+y(size)j(when)g(a)f Fs(SIGWINCH)f Ft(is)h(receiv)o(ed.)1675
+2021 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p 242
+2021 V 25 w(resize)p 406 2021 V 27 w(terminal)j Fe(\()p
+Fs(void)p Fe(\))195 2076 y Ft(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.)
+1675 2170 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p
+242 2170 V 25 w(set)p 338 2170 V 26 w(screen)p 520 2170
+V 25 w(size)k Fe(\()p Fs(int)14 b(rows,)h(int)g(cols)p
+Fe(\))195 2225 y Ft(Set)g(Readline's)h(idea)g(of)f(the)g(terminal)h
+(size)g(to)f Fi(ro)o(ws)h Ft(ro)o(ws)e(and)i Fi(cols)h
+Ft(columns.)137 2318 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 Fs(SIGWINCH)e Ft(handler,)j(but)f(is)g(still)h
+(in)o(terested)f(in)75 2373 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.)1675
+2467 y([F)l(unction])-1800 b Fg(void)20 b Ff(rl)p 242
+2467 V 25 w(get)p 344 2467 V 26 w(screen)p 526 2467 V
+25 w(size)k Fe(\()p Fs(int)14 b(*rows,)h(int)f(*cols)p
+Fe(\))195 2522 y Ft(Return)h(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 2576 y(men)o(ts.)137 2670 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.)p
+eop
+%%Page: 41 45
+41 44 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(41)1675 149 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 149 18 3 v 25 w(set)p 312 149 V 26 w(signals)j
+Fe(\()p Fs(void)p Fe(\))195 204 y Ft(Install)c(Readline's)f(signal)h
+(handler)f(for)f Fs(SIGINT)p Ft(,)g Fs(SIGQUIT)p Ft(,)g
+Fs(SIGTERM)p Ft(,)g Fs(SIGALRM)p Ft(,)f Fs(SIGTSTP)p
+Ft(,)195 259 y Fs(SIGTTIN)p Ft(,)11 b Fs(SIGTTOU)p Ft(,)g(and)h
+Fs(SIGWINCH)p Ft(,)e(dep)q(ending)k(on)e(the)f(v)m(alues)i(of)e
+Fs(rl_catch_signals)f Ft(and)195 314 y Fs(rl_catch_sigwinch)p
+Ft(.)1675 410 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p
+216 410 V 25 w(clear)p 359 410 V 27 w(signals)j Fe(\()p
+Fs(void)p Fe(\))195 465 y Ft(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 Fs
+(rl_set_signals\(\))p Ft(.)75 598 y Fr(2.6)33 b(Custom)21
+b(Completers)137 722 y Ft(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 777 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 832 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
+886 y(co)q(op)q(erate)g(to)g(pro)o(vide)g(this)h(service.)75
+1002 y Fh(2.6.1)30 b(Ho)n(w)21 b(Completing)f(W)-5 b(orks)137
+1126 y Ft(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 1181 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 1236 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 1291 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 1345 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
+1400 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
+1469 y(There)g(are)f(three)g(ma)s(jor)f(functions)i(used)f(to)g(p)q
+(erform)g(completion:)100 1538 y(1.)29 b(The)22 b(user-in)o(terface)g
+(function)h Fs(rl_complete\(\))p Ft(.)37 b(This)22 b(function)h(is)f
+(called)h(with)f(the)g(same)165 1593 y(argumen)o(ts)17
+b(as)g(other)h(bindable)i(Readline)f(functions:)26 b
+Fi(coun)o(t)18 b Ft(and)g Fi(in)o(v)o(oking)p 1553 1593
+14 2 v 21 w(k)o(ey)p Ft(.)28 b(It)18 b(isolates)165 1648
+y(the)h(w)o(ord)f(to)g(b)q(e)i(completed)f(and)g(calls)h
+Fs(rl_completion_matches\(\))c Ft(to)i(generate)g(a)h(list)g(of)165
+1703 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
+1758 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
+1812 y(desired.)100 1881 y(2.)29 b(The)17 b(in)o(ternal)h(function)f
+Fs(rl_completion_matches\(\))d Ft(uses)j(an)g(application-supplie)q(d)j
+Fi(gener-)165 1935 y(ator)h Ft(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 1990 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
+Fs(rl_)165 2045 y(completion_entry_function)p Ft(.)100
+2113 y(3.)29 b(The)12 b(generator)e(function)i(is)g(called)h(rep)q
+(eatedly)g(from)e Fs(rl_completion_matches\(\))p Ft(,)d(returning)165
+2168 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 Fi(text)h Ft(and)g
+Fi(state)p Ft(.)22 b Fi(text)165 2223 y Ft(is)17 b(the)f(partial)g(w)o
+(ord)f(to)h(b)q(e)h(completed.)23 b Fi(state)18 b Ft(is)e(zero)g(the)g
+(\014rst)g(time)g(the)g(function)h(is)g(called,)165 2278
+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
+2332 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 Fs(\(char)h(*\)NULL)f
+Ft(to)165 2387 y(inform)19 b Fs(rl_completion_matches\(\))d
+Ft(that)i(there)h(are)g(no)g(more)g(p)q(ossibilities)j(left.)32
+b(Usually)165 2442 y(the)19 b(generator)g(function)h(computes)g(the)f
+(list)h(of)f(p)q(ossible)i(completions)g(when)e Fi(state)j
+Ft(is)d(zero,)165 2497 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 2552 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 Fs(malloc\(\))p Ft(;)d(Readline)k
+(frees)e(the)g(strings)f(when)165 2606 y(it)i(has)g(\014nished)i(with)e
+(them.)25 b(Suc)o(h)18 b(a)e(generator)g(function)i(is)f(referred)g(to)
+g(as)f(an)h Fi(application-)165 2661 y(sp)q(eci\014c)g(completion)f
+(function)p Ft(.)p eop
+%%Page: 42 46
+42 45 bop 75 -58 a Ft(42)1299 b(GNU)15 b(Readline)h(Library)1675
+149 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p 216 149
+18 3 v 25 w(complete)j Fe(\()p Fs(int)15 b(ignore,)f(int)h
+(invoking_key)p Fe(\))195 204 y Ft(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 259 y(initial)23
+b(simple)f(matc)o(hing)e(selection)i(algorithm)f(\(see)f
+Fs(rl_completion_matches\(\))p Ft(\).)33 b(The)195 314
+y(default)16 b(is)f(to)g(do)g(\014lename)h(completion.)1685
+406 y([V)l(ariable])-1799 b Fg(rl_compentry_func_t)22
+b(*)d Ff(rl)p 679 406 V 26 w(completion)p 979 406 V 26
+w(en)n(try)p 1137 406 V 25 w(function)195 460 y Ft(This)i(is)f(a)g(p)q
+(oin)o(ter)g(to)f(the)h(generator)g(function)g(for)g
+Fs(rl_completion_matches\(\))p Ft(.)31 b(If)20 b(the)195
+515 y(v)m(alue)13 b(of)f Fs(rl_completion_entry_fun)o(ction)d
+Ft(is)j Fs(NULL)f Ft(then)h(the)g(default)h(\014lename)g(generator)195
+570 y(function,)25 b Fs(rl_filename_completion_f)o(unction\()o(\))p
+Ft(,)c(is)i(used.)42 b(An)23 b Fi(application-sp)q(eci)q(\014c)195
+625 y(completion)12 b(function)f Ft(is)g(a)f(function)i(whose)e
+(address)h(is)g(assigned)g(to)f Fs(rl_completion_entry_)195
+680 y(function)k Ft(and)h(whose)h(return)f(v)m(alues)h(are)f(used)h(to)
+e(generate)h(p)q(ossible)i(completions.)75 791 y Fh(2.6.2)30
+b(Completion)20 b(F)-5 b(unctions)137 913 y Ft(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.)1675 1005 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 1005 V 25 w(complete)p 465
+1005 V 26 w(in)n(ternal)k Fe(\()p Fs(int)15 b(what_to_do)p
+Fe(\))195 1060 y Ft(Complete)k(the)f(w)o(ord)g(at)f(or)h(b)q(efore)h(p)
+q(oin)o(t.)29 b Fi(what)p 1104 1060 14 2 v 20 w(to)p
+1165 1060 V 19 w(do)21 b Ft(sa)o(ys)c(what)h(to)g(do)g(with)h(the)f
+(com-)195 1115 y(pletion.)k(A)16 b(v)m(alue)h(of)e(`)p
+Fs(?)p Ft(')g(means)g(list)i(the)e(p)q(ossible)j(completions.)k(`)p
+Fs(TAB)p Ft(')14 b(means)i(do)f(standard)195 1170 y(completion.)22
+b(`)p Fs(*)p Ft(')15 b(means)g(insert)h(all)h(of)e(the)h(p)q(ossible)h
+(completions.)22 b(`)p Fs(!)p Ft(')15 b(means)g(to)g(displa)o(y)i(all)
+195 1224 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
+1279 y(completion.)i(`)p Fs(@)p Ft(')13 b(is)h(similar)h(to)e(`)p
+Fs(!)p Ft(',)g(but)h(p)q(ossible)h(completions)g(are)e(not)g(listed)i
+(if)f(the)g(p)q(ossible)195 1334 y(completions)i(share)f(a)g(common)g
+(pre\014x.)1675 1426 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 1426 18 3 v 25 w(complete)j Fe(\()p Fs(int)15
+b(ignore,)f(int)h(invoking_key)p Fe(\))195 1481 y Ft(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 1535 y(the)d(initial)h(simple)g(matc)o(hing)f(selection)h
+(algorithm)e(\(see)g Fs(rl_completion_matches\(\))e Ft(and)195
+1590 y Fs(rl_completion_entry_functi)o(on)p Ft(\).)25
+b(The)18 b(default)h(is)f(to)f(do)h(\014lename)h(completion.)29
+b(This)195 1645 y(calls)16 b Fs(rl_complete_internal\(\))c
+Ft(with)k(an)f(argumen)o(t)f(dep)q(ending)k(on)d Fi(in)o(v)o(oking)p
+1657 1645 14 2 v 21 w(k)o(ey)p Ft(.)1675 1737 y([F)l(unction])-1800
+b Fg(int)20 b Ff(rl)p 216 1737 18 3 v 25 w(p)r(ossible)p
+438 1737 V 26 w(completions)i Fe(\()p Fs(int)15 b(count,)f(int)h
+(invoking_key)p Fe(\))195 1792 y Ft(List)21 b(the)f(p)q(ossible)i
+(completions.)36 b(See)21 b(description)h(of)e Fs(rl_complete)13
+b(\(\))p Ft(.)35 b(This)21 b(calls)g Fs(rl_)195 1846
+y(complete_internal\(\))13 b Ft(with)i(an)g(argumen)o(t)g(of)f(`)p
+Fs(?)p Ft('.)1675 1938 y([F)l(unction])-1800 b Fg(int)20
+b Ff(rl)p 216 1938 V 25 w(insert)p 383 1938 V 26 w(completions)j
+Fe(\()p Fs(int)14 b(count,)g(int)h(invoking_key)p Fe(\))195
+1993 y Ft(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
+2048 y(w)o(ord.)k(See)c(description)g(of)e Fs(rl_complete\(\))p
+Ft(.)20 b(This)d(calls)g Fs(rl_complete_internal\(\))c
+Ft(with)195 2103 y(an)i(argumen)o(t)g(of)f(`)p Fs(*)p
+Ft('.)1675 2195 y([F)l(unction])-1800 b Fg(int)20 b Ff(rl)p
+216 2195 V 25 w(completion)p 515 2195 V 26 w(mo)r(de)h
+Fe(\()p Fs(rl_command_func_t)12 b(*cfunc)p Fe(\))195
+2249 y Ft(Returns)25 b(the)g(apppriate)h(v)m(alue)g(to)f(pass)g(to)f
+Fs(rl_complete_internal\(\))f Ft(dep)q(ending)k(on)195
+2304 y(whether)21 b Fi(cfunc)i Ft(w)o(as)d(called)i(t)o(wice)f(in)g
+(succession)h(and)e(the)h(v)m(alues)g(of)f(the)h Fs(show-all-if-)195
+2359 y(ambiguous)13 b Ft(and)g Fs(show-all-if-unmodified)e
+Ft(v)m(ariables.)21 b(Application-sp)q(eci)q(\014c)c(completion)195
+2414 y(functions)f(ma)o(y)e(use)i(this)g(function)g(to)e(presen)o(t)h
+(the)h(same)f(in)o(terface)g(as)g Fs(rl_complete\(\))p
+Ft(.)1675 2506 y([F)l(unction])-1800 b Fg(char)20 b(**)f
+Ff(rl)p 313 2506 V 26 w(completion)p 613 2506 V 26 w(matc)n(hes)j
+Fe(\()p Fs(const)14 b(char)g(*text,)283 2560 y(rl_compentry_func_t)e
+(*entry_func)p Fe(\))195 2615 y Ft(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
+Fi(text)p Ft(.)30 b(If)19 b(there)g(are)g(no)195 2670
+y(completions,)f(returns)g Fs(NULL)p Ft(.)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)p eop
+%%Page: 43 47
+43 46 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(43)195 149 y(for)13 b Fi(text)p Ft(.)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
+204 y(with)i(a)e Fs(NULL)h Ft(p)q(oin)o(ter.)195 272
+y Fi(en)o(try)p 302 272 14 2 v 20 w(func)23 b Ft(is)d(a)f(function)i
+(of)e(t)o(w)o(o)g(args,)g(and)h(returns)g(a)f Fs(char)c(*)p
+Ft(.)33 b(The)20 b(\014rst)f(argumen)o(t)g(is)195 327
+y Fi(text)p Ft(.)32 b(The)19 b(second)h(is)g(a)f(state)f(argumen)o(t;)j
+(it)e(is)h(zero)f(on)g(the)h(\014rst)f(call,)i(and)e(non-zero)h(on)195
+381 y(subsequen)o(t)e(calls.)26 b Fi(en)o(try)p 661 381
+V 19 w(func)21 b Ft(returns)16 b(a)h Fs(NULL)f Ft(p)q(oin)o(ter)i(to)e
+(the)h(caller)h(when)f(there)g(are)g(no)195 436 y(more)e(matc)o(hes.)
+1675 529 y([F)l(unction])-1800 b Fg(char)20 b(*)f Ff(rl)p
+287 529 18 3 v 26 w(\014lename)p 521 529 V 25 w(completion)p
+820 529 V 25 w(function)k Fe(\()p Fs(const)14 b(char)h(*text,)f(int)283
+584 y(state)p Fe(\))195 639 y Ft(A)f(generator)f(function)h(for)g
+(\014lename)h(completion)f(in)h(the)f(general)g(case.)19
+b Fi(text)14 b Ft(is)f(a)g(partial)g(\014le-)195 693
+y(name.)18 b(The)11 b(Bash)g(source)g(is)g(a)g(useful)h(reference)f
+(for)f(writing)h(application-sp)q(eci)q(\014c)j(completion)195
+748 y(functions)i(\(the)f(Bash)g(completion)h(functions)g(call)h(this)e
+(and)h(other)f(Readline)h(functions\).)1675 841 y([F)l(unction])-1800
+b Fg(char)20 b(*)f Ff(rl)p 287 841 V 26 w(username)p
+553 841 V 23 w(completion)p 850 841 V 25 w(function)k
+Fe(\()p Fs(const)15 b(char)f(*text,)h(int)283 896 y(state)p
+Fe(\))195 951 y Ft(A)f(completion)i(generator)d(for)h(usernames.)19
+b Fi(text)c Ft(con)o(tains)f(a)g(partial)h(username)f(preceded)i(b)o(y)
+195 1006 y(a)f(random)g(c)o(haracter)f(\(usually)j(`)p
+Fs(~)p Ft('\).)i(As)c(with)g(all)i(completion)f(generators,)e
+Fi(state)j Ft(is)f(zero)f(on)195 1060 y(the)g(\014rst)g(call)h(and)g
+(non-zero)f(for)g(subsequen)o(t)h(calls.)75 1173 y Fh(2.6.3)30
+b(Completion)20 b(V)-5 b(ariables)1685 1295 y Ft([V)l(ariable])-1799
+b Fg(rl_compentry_func_t)22 b(*)d Ff(rl)p 679 1295 V
+26 w(completion)p 979 1295 V 26 w(en)n(try)p 1137 1295
+V 25 w(function)195 1350 y Ft(A)e(p)q(oin)o(ter)g(to)f(the)h(generator)
+f(function)h(for)f Fs(rl_completion_matches\(\))p Ft(.)22
+b Fs(NULL)16 b Ft(means)h(to)195 1405 y(use)f Fs
+(rl_filename_completion_)o(functio)o(n\(\))p Ft(,)c(the)j(default)h
+(\014lename)g(completer.)1685 1498 y([V)l(ariable])-1799
+b Fg(rl_completion_func_t)22 b(*)d Ff(rl)p 705 1498 V
+26 w(attempted)p 990 1498 V 25 w(completion)p 1289 1498
+V 26 w(function)195 1553 y Ft(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 1608 y Fi(text)p
+Ft(,)11 b Fi(start)p Ft(,)g(and)h Fi(end)p Ft(.)19 b
+Fi(start)11 b Ft(and)h Fi(end)i Ft(are)d(indices)i(in)g
+Fs(rl_line_buffer)c Ft(de\014ning)k(the)f(b)q(ound-)195
+1662 y(aries)h(of)g Fi(text)p Ft(,)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
+Fs(NULL)p Ft(,)f(or)g(if)195 1717 y(this)f(v)m(ariable)i(is)e(set)g(to)
+f Fs(NULL)p Ft(,)h(then)g Fs(rl_complete\(\))e Ft(will)k(call)f(the)f
+(v)m(alue)h(of)f Fs(rl_completion_)195 1772 y(entry_function)h
+Ft(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 1827 y(used.)j(If)12
+b(this)f(function)h(sets)f(the)g Fs(rl_attempted_completion_over)d
+Ft(v)m(ariable)k(to)f(a)g(non-zero)195 1882 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 1936 y(no)d(matc)o(hes.)1685
+2029 y([V)l(ariable])-1799 b Fg(rl_quote_func_t)21 b(*)f
+Ff(rl)p 575 2029 V 25 w(\014lename)p 808 2029 V 25 w(quoting)p
+1022 2029 V 26 w(function)195 2084 y Ft(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 2139 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 2194 y(in)d Fs
+(rl_filename_quote_characters)c Ft(app)q(ears)k(in)g(a)g(completed)g
+(\014lename.)25 b(The)17 b(function)195 2248 y(is)i(called)h(with)f
+Fi(text)p Ft(,)f Fi(matc)o(h)p 720 2248 14 2 v 20 w(t)o(yp)q(e)p
+Ft(,)g(and)h Fi(quote)p 1060 2248 V 20 w(p)q(oin)o(ter)p
+Ft(.)30 b(The)19 b Fi(text)g Ft(is)f(the)h(\014lename)h(to)d(b)q(e)195
+2303 y(quoted.)38 b(The)21 b Fi(matc)o(h)p 606 2303 V
+20 w(t)o(yp)q(e)i Ft(is)f(either)g Fs(SINGLE_MATCH)p
+Ft(,)e(if)i(there)f(is)h(only)g(one)f(completion)195
+2358 y(matc)o(h,)15 b(or)g Fs(MULT_MATCH)p Ft(.)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
+2413 y(closing)11 b(quote)g(c)o(haracter.)17 b(The)11
+b Fi(quote)p 876 2413 V 20 w(p)q(oin)o(ter)j Ft(is)d(a)f(p)q(oin)o(ter)
+h(to)f(an)o(y)g(op)q(ening)h(quote)g(c)o(haracter)195
+2468 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.)1685 2560 y([V)l(ariable])-1799
+b Fg(rl_dequote_func_t)22 b(*)d Ff(rl)p 627 2560 18 3
+v 26 w(\014lename)p 861 2560 V 24 w(dequoting)p 1132
+2560 V 26 w(function)195 2615 y Ft(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 2670 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)p eop
+%%Page: 44 48
+44 47 bop 75 -58 a Ft(44)1299 b(GNU)15 b(Readline)h(Library)195
+149 y(matc)o(hing)j(the)g(text)g(against)f(names)h(in)h(the)f
+(\014lesystem.)33 b(It)19 b(is)g(called)i(with)e Fi(text)p
+Ft(,)g(the)g(text)195 204 y(of)i(the)g(w)o(ord)f(to)h(b)q(e)g
+(dequoted,)i(and)e Fi(quote)p 1007 204 14 2 v 20 w(c)o(har)p
+Ft(,)h(whic)o(h)g(is)g(the)f(quoting)g(c)o(haracter)g(that)195
+259 y(delimits)d(the)e(\014lename)h(\(usually)g(`)p Fs(')p
+Ft(')e(or)h(`)p Fs(")p Ft('\).)21 b(If)c Fi(quote)p 1185
+259 V 19 w(c)o(har)i Ft(is)e(zero,)f(the)g(\014lename)h(w)o(as)e(not)
+195 314 y(in)h(an)f(em)o(b)q(edded)i(string.)1685 423
+y([V)l(ariable])-1799 b Fg(rl_linebuf_func_t)22 b(*)d
+Ff(rl)p 627 423 18 3 v 26 w(c)n(har)p 760 423 V 25 w(is)p
+823 423 V 26 w(quoted)p 1020 423 V 25 w(p)195 478 y Ft(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 533
+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 588
+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 Fi(text)p Ft(,)12
+b(the)h(text)f(of)g(the)195 643 y(line,)17 b(and)e Fi(index)p
+Ft(,)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 697
+y(c)o(haracter)f(found)i(in)g Fs(rl_completer_word_break_)o(charact)o
+(ers)c Ft(should)k(b)q(e)g(used)g(to)e(break)195 752
+y(w)o(ords)g(for)h(the)g(completer.)1685 862 y([V)l(ariable])-1799
+b Fg(rl_compignore_func_t)22 b(*)d Ff(rl)p 705 862 V
+26 w(ignore)p 886 862 V 25 w(some)p 1038 862 V 24 w(completions)p
+1359 862 V 25 w(function)195 917 y Ft(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 971 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 Fs(NULL)f Ft(ter-)195 1026
+y(minated)g(arra)o(y)e(of)h(matc)o(hes.)20 b(The)c(\014rst)f(elemen)o
+(t)h(\()p Fs(matches[0])p Ft(\))d(is)j(the)g(maximal)g(substring)195
+1081 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
+1136 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.)1685 1245 y([V)l(ariable])-1799
+b Fg(rl_icppfunc_t)21 b(*)e Ff(rl)p 522 1245 V 26 w(directory)p
+775 1245 V 26 w(completion)p 1075 1245 V 26 w(ho)r(ok)195
+1300 y Ft(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
+1355 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
+1410 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
+1465 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
+1519 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 1574 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 1629 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 1684 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.)
+1685 1793 y([V)l(ariable])-1799 b Fg(rl_compdisp_func_t)22
+b(*)d Ff(rl)p 653 1793 V 26 w(completion)p 953 1793 V
+25 w(displa)n(y)p 1151 1793 V 27 w(matc)n(hes)p 1381
+1793 V 25 w(ho)r(ok)195 1848 y Ft(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 1903 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 1958 y(displa)o(ying)20
+b(the)f(list.)30 b(It)19 b(tak)o(es)f(three)g(argumen)o(ts:)26
+b(\()p Fs(char)14 b(**)p Fi(matc)o(hes)p Ft(,)19 b Fs(int)f
+Fi(n)o(um)p 1685 1958 14 2 v 20 w(matc)o(hes)p Ft(,)195
+2012 y Fs(int)13 b Fi(max)p 368 2012 V 19 w(length)p
+Ft(\))h(where)f Fi(matc)o(hes)i Ft(is)f(the)f(arra)o(y)f(of)h(matc)o
+(hing)g(strings,)g Fi(n)o(um)p 1575 2012 V 20 w(matc)o(hes)i
+Ft(is)f(the)195 2067 y(n)o(um)o(b)q(er)h(of)f(strings)g(in)i(that)e
+(arra)o(y)l(,)f(and)i Fi(max)p 1011 2067 V 19 w(length)g
+Ft(is)g(the)g(length)g(of)f(the)h(longest)g(string)f(in)195
+2122 y(that)f(arra)o(y)l(.)19 b(Readline)c(pro)o(vides)g(a)e(con)o(v)o
+(enience)j(function,)f Fs(rl_display_match_list)p Ft(,)c(that)195
+2177 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 2232 y(called)h(from)d(this)i(ho)q(ok.)1685 2341
+y([V)l(ariable])-1799 b Fg(const)20 b(char)g(*)f Ff(rl)p
+437 2341 18 3 v 26 w(basic)p 586 2341 V 25 w(w)n(ord)p
+735 2341 V 25 w(break)p 900 2341 V 25 w(c)n(haracters)195
+2396 y Ft(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
+2451 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 2506 y(completion)e(in)g(Bash:)k Fs(")15 b
+(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)1685 2615 y([V)l(ariable])-1799
+b Fg(const)20 b(char)g(*)f Ff(rl)p 437 2615 V 26 w(basic)p
+586 2615 V 25 w(quote)p 750 2615 V 26 w(c)n(haracters)195
+2670 y Ft(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.)p eop
+%%Page: 45 49
+45 48 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(45)1685 149 y([V)l(ariable])-1799 b Fg(const)20
+b(char)g(*)f Ff(rl)p 437 149 18 3 v 26 w(completer)p
+711 149 V 25 w(w)n(ord)p 860 149 V 25 w(break)p 1025
+149 V 25 w(c)n(haracters)195 204 y Ft(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 Fs(rl_complete_)195 259 y(internal\(\))p Ft(.)18
+b(The)e(default)g(list)g(is)f(the)h(v)m(alue)g(of)f Fs
+(rl_basic_word_break_chara)o(cters)p Ft(.)1685 355 y([V)l(ariable])
+-1799 b Fg(const)20 b(char)g(*)f Ff(rl)p 437 355 V 26
+w(completer)p 711 355 V 25 w(quote)p 875 355 V 25 w(c)n(haracters)195
+410 y Ft(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
+465 y(o)q(ccurs)13 b(on)h(the)f(en)o(tire)g(substring,)h(and)f(within)i
+(the)e(substring)g Fs(rl_completer_word_break_)195 519
+y(characters)j Ft(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
+574 y(list.)1685 670 y([V)l(ariable])-1799 b Fg(const)20
+b(char)g(*)f Ff(rl)p 437 670 V 26 w(\014lename)p 671
+670 V 24 w(quote)p 834 670 V 26 w(c)n(haracters)195 725
+y Ft(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
+780 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.)1685
+875 y([V)l(ariable])-1799 b Fg(const)20 b(char)g(*)f
+Ff(rl)p 437 875 V 26 w(sp)r(ecial)p 629 875 V 26 w(pre\014xes)195
+930 y Ft(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
+Fi(text)f Ft(when)195 985 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 1040 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
+Fs(")p Ft($)p Fs(@")g Ft(so)g(that)g(it)h(can)195 1095
+y(complete)h(shell)h(v)m(ariables)f(and)g(hostnames.)1685
+1191 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216
+1191 V 25 w(completion)p 515 1191 V 26 w(query)p 683
+1191 V 25 w(items)195 1245 y Ft(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 1300 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 1355
+y(is)h(100.)1685 1451 y([V)l(ariable])-1799 b Fg(int)20
+b Ff(rl)p 216 1451 V 25 w(completion)p 515 1451 V 26
+w(app)r(end)p 725 1451 V 24 w(c)n(haracter)195 1506 y
+Ft(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 1560
+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 1615 y(\(`)j('\).)42 b(Setting)23 b(this)g(to)f(the)h(n)o
+(ull)h(c)o(haracter)e(\(`)p Fs(\\0)p Ft('\))f(prev)o(en)o(ts)i(an)o
+(ything)f(b)q(eing)i(app)q(ended)195 1670 y(automatically)l(.)32
+b(This)19 b(can)g(b)q(e)h(c)o(hanged)f(in)g(application-sp)q(eci)q
+(\014c)j(completion)e(functions)g(to)195 1725 y(pro)o(vide)g(the)g
+(\\most)f(sensible)j(w)o(ord)d(separator)g(c)o(haracter")g(according)h
+(to)f(an)h(application-)195 1780 y(sp)q(eci\014c)d(command)e(line)i
+(syn)o(tax)d(sp)q(eci\014cation.)1685 1875 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(rl)p 216 1875 V 25 w(completion)p 515
+1875 V 26 w(suppress)p 756 1875 V 23 w(app)r(end)195
+1930 y Ft(If)d(non-zero,)g Fi(rl)p 474 1930 14 2 v 20
+w(completion)p 710 1930 V 21 w(app)q(end)p 875 1930 V
+22 w(c)o(haracter)i Ft(is)e(not)f(app)q(ended)i(to)e(matc)o(hes)h(at)f
+(the)g(end)195 1985 y(of)d(the)h(command)g(line,)h(as)f(describ)q(ed)h
+(ab)q(o)o(v)o(e.)k(It)14 b(is)h(set)e(to)g(0)h(b)q(efore)g(an)o(y)f
+(application-sp)q(eci)q(\014c)195 2040 y(completion)j(function)g(is)g
+(called,)g(and)g(ma)o(y)e(only)i(b)q(e)g(c)o(hanged)f(within)i(suc)o(h)
+e(a)g(function.)1685 2136 y([V)l(ariable])-1799 b Fg(int)20
+b Ff(rl)p 216 2136 18 3 v 25 w(completion)p 515 2136
+V 26 w(mark)p 672 2136 V 24 w(symlink)p 890 2136 V 25
+w(dirs)195 2191 y Ft(If)c(non-zero,)g(a)g(slash)g(will)i(b)q(e)e(app)q
+(ended)i(to)d(completed)i(\014lenames)g(that)e(are)g(sym)o(b)q(olic)j
+(links)195 2245 y(to)11 b(directory)i(names,)f(sub)s(ject)g(to)f(the)i
+(v)m(alue)g(of)f(the)g(user-settable)g Fi(mark-directories)j
+Ft(v)m(ariable.)195 2300 y(This)f(v)m(ariable)h(exists)f(so)g(that)f
+(application-sp)q(eci\014c)k(completion)e(functions)f(can)g(o)o(v)o
+(erride)g(the)195 2355 y(user's)21 b(global)h(preference)g(\(set)e(via)
+i(the)f Fi(mark-symlink)o(ed-directories)k Ft(Readline)e(v)m(ariable\))
+195 2410 y(if)c(appropriate.)31 b(This)19 b(v)m(ariable)h(is)g(set)e
+(to)g(the)h(user's)g(preference)h(b)q(efore)f(an)o(y)f(application-)195
+2465 y(sp)q(eci\014c)g(completion)f(function)f(is)h(called,)g(so)e
+(unless)i(that)e(function)i(mo)q(di\014es)g(the)f(v)m(alue,)h(the)195
+2519 y(user's)e(preferences)h(are)f(honored.)1685 2615
+y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 2615
+V 25 w(ignore)p 396 2615 V 25 w(completion)p 695 2615
+V 26 w(duplicates)195 2670 y Ft(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.)p eop
+%%Page: 46 50
+46 49 bop 75 -58 a Ft(46)1299 b(GNU)15 b(Readline)h(Library)1685
+149 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 149
+18 3 v 25 w(\014lename)p 449 149 V 25 w(completion)p
+748 149 V 26 w(desired)195 204 y Ft(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 259 y(is)d Fn(always)k Ft(zero)c(when)g
+(completion)h(is)g(attempted,)f(and)g(can)g(only)h(b)q(e)g(c)o(hanged)f
+(within)h(an)195 314 y(application-sp)q(eci\014)q(c)h(completion)f
+(function.)35 b(If)20 b(it)f(is)i(set)e(to)g(a)h(non-zero)g(v)m(alue)h
+(b)o(y)e(suc)o(h)h(a)195 369 y(function,)12 b(directory)g(names)f(ha)o
+(v)o(e)g(a)f(slash)i(app)q(ended)h(and)e(Readline)h(attempts)f(to)f
+(quote)h(com-)195 423 y(pleted)19 b(\014lenames)f(if)g(they)g(con)o
+(tain)g(an)o(y)f(c)o(haracters)f(in)j Fs(rl_filename_quote_charact)o
+(ers)195 478 y Ft(and)c Fs(rl_filename_quoting_desired)d
+Ft(is)k(set)f(to)f(a)h(non-zero)g(v)m(alue.)1685 570
+y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216 570 V
+25 w(\014lename)p 449 570 V 25 w(quoting)p 663 570 V
+26 w(desired)195 625 y Ft(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 680 y(\(or)20 b(an)i(application-sp)q(eci\014c)i(quoting)e
+(mec)o(hanism\))f(if)h(the)f(completed)i(\014lename)f(con)o(tains)195
+735 y(an)o(y)13 b(c)o(haracters)h(in)g Fs(rl_filename_quote_chars)p
+Ft(.)i(This)f(is)f Fn(always)k Ft(non-zero)c(when)g(comple-)195
+790 y(tion)g(is)g(attempted,)g(and)g(can)g(only)g(b)q(e)g(c)o(hanged)h
+(within)g(an)e(application-sp)q(eci)q(\014c)k(completion)195
+844 y(function.)i(The)11 b(quoting)g(is)g(e\013ected)f(via)h(a)f(call)i
+(to)e(the)h(function)g(p)q(oin)o(ted)g(to)f(b)o(y)h Fs(rl_filename_)195
+899 y(quoting_function)p Ft(.)1685 991 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(rl)p 216 991 V 25 w(attempted)p 500
+991 V 25 w(completion)p 799 991 V 26 w(o)n(v)n(er)195
+1046 y Ft(If)47 b(an)g(application-sp)q(eci\014)q(c)j(completion)e
+(function)g(assigned)f(to)g Fs(rl_attempted_)195 1101
+y(completion_function)24 b Ft(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 1156
+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
+1210 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.)1685
+1303 y([V)l(ariable])-1799 b Fg(int)20 b Ff(rl)p 216
+1303 V 25 w(completion)p 515 1303 V 26 w(t)n(yp)r(e)195
+1357 y Ft(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
+1412 y(ing;)g(see)f(the)f(description)i(of)f Fs
+(rl_complete_internal\(\))c Ft(\(see)k(Section)h(2.6.2)d([Completion)
+195 1467 y(F)l(unctions],)k(page)f(42\))g(for)f(the)i(list)g(of)f(c)o
+(haracters.)28 b(This)19 b(is)g(set)f(to)g(the)g(appropriate)h(v)m
+(alue)195 1522 y(b)q(efore)d(an)o(y)g(application-sp)q(eci\014c)j
+(completion)e(function)g(is)f(called,)h(allo)o(wing)g(suc)o(h)f
+(functions)195 1577 y(to)f(presen)o(t)g(the)g(same)g(in)o(terface)g(as)
+g Fs(rl_complete\(\))p Ft(.)1685 1669 y([V)l(ariable])-1799
+b Fg(int)20 b Ff(rl)p 216 1669 V 25 w(inhibit)p 404 1669
+V 28 w(completion)195 1724 y Ft(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 1778 y(inserted)g(as)f
+(an)o(y)g(other)g(b)q(ound)h(to)e Fs(self-insert)p Ft(.)75
+1890 y Fh(2.6.4)30 b(A)21 b(Short)f(Completion)g(Example)137
+2012 y Ft(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 2067 y Fs(fileman)p Ft(,)17 b(and)h(the)g(source)g(co)
+q(de)g(resides)h(in)f(`)p Fs(examples/fileman.c)p Ft('.)25
+b(This)18 b(sample)g(application)75 2122 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: 47 51
+47 50 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(47)195 149 y Fd(/*)19 b(fileman.c)d(--)j(A)g(tiny)f
+(applicatio)o(n)e(which)i(demonstrat)o(es)e(how)j(to)f(use)h(the)254
+193 y(GNU)f(Readline)f(library.)36 b(This)18 b(applicatio)o(n)e
+(interactive)o(ly)g(allows)h(users)254 237 y(to)i(manipulat)o(e)d
+(files)i(and)h(their)e(modes.)h(*/)195 324 y(#include)f(<stdio.h)o(>)
+195 367 y(#include)g(<sys/typ)o(es.)o(h>)195 411 y(#include)g(<sys/fil)
+o(e.h)o(>)195 455 y(#include)g(<sys/sta)o(t.h)o(>)195
+498 y(#include)g(<sys/err)o(no.)o(h>)195 585 y(#include)g(<readlin)o
+(e/r)o(ea)o(dli)o(ne.)o(h>)195 629 y(#include)g(<readlin)o(e/h)o(is)o
+(tor)o(y.h)o(>)195 716 y(extern)g(char)h(*xmalloc)f(\(\);)195
+803 y(/*)i(The)f(names)g(of)h(functions)d(that)i(actually)f(do)h(the)h
+(manipulat)o(ion)o(.)d(*/)195 847 y(int)i(com_list)f(__P\(\(char)f
+(*\)\);)195 890 y(int)i(com_view)f(__P\(\(char)f(*\)\);)195
+934 y(int)i(com_rename)e(__P\(\(char)g(*\)\);)195 978
+y(int)i(com_stat)f(__P\(\(char)f(*\)\);)195 1021 y(int)i(com_pwd)f
+(__P\(\(char)f(*\)\);)195 1065 y(int)i(com_delete)e(__P\(\(char)g
+(*\)\);)195 1108 y(int)i(com_help)f(__P\(\(char)f(*\)\);)195
+1152 y(int)i(com_cd)g(__P\(\(char)e(*\)\);)195 1196 y(int)i(com_quit)f
+(__P\(\(char)f(*\)\);)195 1283 y(/*)j(A)g(structure)d(which)i(contains)
+e(information)g(on)j(the)f(commands)f(this)h(program)254
+1326 y(can)g(understand)o(.)f(*/)195 1413 y(typedef)g(struct)g({)234
+1457 y(char)h(*name;)g(/*)g(User)g(printable)f(name)h(of)h(the)f
+(function.)e(*/)234 1501 y(rl_icpfunc)o(_t)g(*func;)h(/*)i(Function)e
+(to)i(call)f(to)h(do)f(the)h(job.)f(*/)234 1544 y(char)g(*doc;)g(/*)h
+(Documenta)o(tio)o(n)d(for)j(this)f(function.)36 b(*/)195
+1588 y(})19 b(COMMAND;)195 1675 y(COMMAND)e(commands[)o(])g(=)i({)234
+1719 y({)g("cd",)f(com_cd,)f("Change)g(to)i(directory)d(DIR")i(},)234
+1762 y({)h("delete",)e(com_dele)o(te,)f("Delete)h(FILE")h(},)234
+1806 y({)h("help",)e(com_help,)f("Display)h(this)h(text")g(},)234
+1849 y({)h("?",)g(com_help)o(,)e("Synonym)f(for)j(`help'")e(},)234
+1893 y({)i("list",)e(com_list,)f("List)i(files)g(in)h(DIR")f(},)234
+1936 y({)h("ls",)f(com_list,)e("Synonym)h(for)h(`list'")f(},)234
+1980 y({)i("pwd",)f(com_pwd,)e("Print)i(the)g(current)f(working)g
+(directory)o(")g(},)234 2024 y({)i("quit",)e(com_quit,)f("Quit)i(using)
+g(Fileman")e(},)234 2067 y({)j("rename",)e(com_rena)o(me,)f("Rename)h
+(FILE)h(to)h(NEWNAME")d(},)234 2111 y({)j("stat",)e(com_stat,)f("Print)
+i(out)g(statistics)e(on)j(FILE")f(},)234 2154 y({)h("view",)e
+(com_view,)f("View)i(the)h(contents)d(of)j(FILE")f(},)234
+2198 y({)h(\(char)f(*\)NULL,)f(\(rl_icpfun)o(c_)o(t)g(*\)NULL,)g
+(\(char)g(*\)NULL)h(})195 2242 y(};)195 2329 y(/*)h(Forward)e
+(declarati)o(on)o(s.)f(*/)195 2372 y(char)i(*stripwhit)o(e)e(\(\);)195
+2416 y(COMMAND)h(*find_com)o(man)o(d)f(\(\);)195 2503
+y(/*)j(The)f(name)g(of)h(this)f(program,)f(as)i(taken)e(from)h
+(argv[0].)f(*/)195 2547 y(char)h(*progname;)195 2634
+y(/*)h(When)f(non-zero,)e(this)i(means)g(the)g(user)g(is)h(done)f
+(using)g(this)g(program.)f(*/)p eop
+%%Page: 48 52
+48 51 bop 75 -58 a Ft(48)1299 b(GNU)15 b(Readline)h(Library)195
+149 y Fd(int)i(done;)195 237 y(char)g(*)195 280 y(dupstr)f(\(s\))293
+324 y(int)i(s;)195 367 y({)234 411 y(char)f(*r;)234 498
+y(r)h(=)h(xmalloc)d(\(strlen)f(\(s\))j(+)g(1\);)234 542
+y(strcpy)f(\(r,)g(s\);)234 585 y(return)g(\(r\);)195
+629 y(})195 716 y(main)g(\(argc,)f(argv\))293 760 y(int)i(argc;)293
+803 y(char)f(**argv;)195 847 y({)234 890 y(char)g(*line,)g(*s;)234
+978 y(progname)f(=)i(argv[0];)234 1065 y(initialize)o(_re)o(ad)o(lin)o
+(e)d(\(\);)j(/*)g(Bind)f(our)g(completer.)e(*/)234 1152
+y(/*)j(Loop)f(reading)f(and)h(executing)f(lines)g(until)h(the)g(user)h
+(quits.)e(*/)234 1196 y(for)i(\()g(;)g(done)f(==)h(0;)g(\))273
+1239 y({)313 1283 y(line)f(=)h(readline)d(\("FileMan:)g("\);)313
+1370 y(if)j(\(!line\))352 1413 y(break;)313 1501 y(/*)g(Remove)e
+(leading)g(and)h(trailing)f(whitespac)o(e)f(from)j(the)f(line.)372
+1544 y(Then,)f(if)i(there)f(is)h(anything)d(left,)i(add)g(it)h(to)g
+(the)f(history)f(list)372 1588 y(and)h(execute)f(it.)h(*/)313
+1631 y(s)h(=)g(stripwhite)d(\(line\);)313 1719 y(if)j(\(*s\))352
+1762 y({)391 1806 y(add_histor)o(y)d(\(s\);)391 1849
+y(execute_li)o(ne)g(\(s\);)352 1893 y(})313 1980 y(free)i(\(line\);)273
+2024 y(})234 2067 y(exit)g(\(0\);)195 2111 y(})195 2198
+y(/*)h(Execute)e(a)i(command)e(line.)h(*/)195 2242 y(int)195
+2285 y(execute_li)o(ne)e(\(line\))293 2329 y(char)i(*line;)195
+2372 y({)234 2416 y(register)f(int)h(i;)234 2460 y(COMMAND)f(*command;)
+234 2503 y(char)h(*word;)234 2590 y(/*)h(Isolate)e(the)h(command)f
+(word.)h(*/)234 2634 y(i)h(=)h(0;)p eop
+%%Page: 49 53
+49 52 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(49)234 149 y Fd(while)18 b(\(line[i])e(&&)j(whitespace)
+d(\(line[i]\)\))273 193 y(i++;)234 237 y(word)i(=)i(line)e(+)h(i;)234
+324 y(while)f(\(line[i])e(&&)j(!whitespac)o(e)e(\(line[i]\))o(\))273
+367 y(i++;)234 455 y(if)i(\(line[i]\))273 498 y(line[i++])e(=)i('\\0';)
+234 585 y(command)e(=)i(find_comma)o(nd)d(\(word\);)234
+672 y(if)j(\(!command\))273 716 y({)313 760 y(fprintf)e(\(stderr,)f
+("\045s:)i(No)h(such)f(command)f(for)h(FileMan.\\n")o(,)e(word\);)313
+803 y(return)h(\(-1\);)273 847 y(})234 934 y(/*)i(Get)g(argument)d(to)j
+(command,)d(if)j(any.)f(*/)234 978 y(while)g(\(whitespa)o(ce)e
+(\(line[i]\)\))273 1021 y(i++;)234 1108 y(word)i(=)i(line)e(+)h(i;)234
+1196 y(/*)g(Call)f(the)h(function)o(.)e(*/)234 1239 y(return)h
+(\(\(*\(comm)o(and)o(->)o(fun)o(c\)\))e(\(word\)\);)195
+1283 y(})195 1370 y(/*)j(Look)f(up)h(NAME)f(as)h(the)f(name)g(of)h(a)g
+(command,)e(and)h(return)g(a)h(pointer)e(to)i(that)254
+1413 y(command.)36 b(Return)17 b(a)i(NULL)g(pointer)d(if)j(NAME)f
+(isn't)g(a)h(command)e(name.)h(*/)195 1457 y(COMMAND)f(*)195
+1501 y(find_comma)o(nd)f(\(name\))293 1544 y(char)i(*name;)195
+1588 y({)234 1631 y(register)f(int)h(i;)234 1719 y(for)h(\(i)g(=)g(0;)g
+(commands)o([i])o(.na)o(me)o(;)e(i++\))273 1762 y(if)i(\(strcmp)e
+(\(name,)g(commands[i])o(.n)o(ame)o(\))g(==)h(0\))313
+1806 y(return)f(\(&command)o(s[i)o(]\);)234 1893 y(return)h(\(\(COMMAN)
+o(D)f(*\)NULL\);)195 1936 y(})195 2024 y(/*)i(Strip)f(whitespa)o(ce)e
+(from)i(the)h(start)e(and)i(end)f(of)h(STRING.)37 b(Return)17
+b(a)i(pointer)254 2067 y(into)f(STRING.)f(*/)195 2111
+y(char)h(*)195 2154 y(stripwhite)e(\(string\))293 2198
+y(char)i(*string;)195 2242 y({)234 2285 y(register)f(char)h(*s,)g(*t;)
+234 2372 y(for)h(\(s)g(=)g(string;)e(whitespac)o(e)f(\(*s\);)i(s++\))
+273 2416 y(;)234 2503 y(if)h(\(*s)g(==)f(0\))273 2547
+y(return)g(\(s\);)234 2634 y(t)h(=)h(s)f(+)g(strlen)e(\(s\))i(-)g(1;)p
+eop
+%%Page: 50 54
+50 53 bop 75 -58 a Ft(50)1299 b(GNU)15 b(Readline)h(Library)234
+149 y Fd(while)i(\(t)h(>)g(s)g(&&)g(whitespace)d(\(*t\)\))273
+193 y(t--;)234 237 y(*++t)i(=)i('\\0';)234 324 y(return)e(s;)195
+367 y(})195 455 y(/*)h(*********)o(***)o(**)o(***)o(**)o(***)o(***)o
+(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)
+o(***)o(***)d(*/)195 498 y(/*)1294 b(*/)195 542 y(/*)352
+b(Interface)16 b(to)j(Readline)e(Completio)o(n)311 b(*/)195
+585 y(/*)1294 b(*/)195 629 y(/*)19 b(*********)o(***)o(**)o(***)o(**)o
+(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o
+(**)o(***)o(**)o(***)o(***)d(*/)195 716 y(char)i(*command_g)o(en)o(era)
+o(to)o(r)f(__P\(\(cons)o(t)f(char)j(*,)f(int\)\);)195
+760 y(char)g(**fileman_)o(co)o(mpl)o(et)o(ion)e(__P\(\(cons)o(t)h(char)
+h(*,)h(int,)f(int\)\);)195 847 y(/*)h(Tell)f(the)g(GNU)h(Readline)d
+(library)h(how)i(to)g(complete)o(.)36 b(We)19 b(want)f(to)h(try)g(to)
+254 890 y(complete)d(on)j(command)e(names)h(if)h(this)f(is)h(the)f
+(first)g(word)g(in)h(the)f(line,)g(or)254 934 y(on)h(filenames)d(if)j
+(not.)f(*/)195 978 y(initialize)o(_r)o(ead)o(li)o(ne)e(\(\))195
+1021 y({)234 1065 y(/*)j(Allow)f(condition)o(al)e(parsing)h(of)i(the)f
+(~/.inputrc)e(file.)i(*/)234 1108 y(rl_readlin)o(e_n)o(am)o(e)f(=)i
+("FileMan")o(;)234 1196 y(/*)g(Tell)f(the)h(complete)o(r)e(that)h(we)h
+(want)f(a)h(crack)f(first.)f(*/)234 1239 y(rl_attempt)o(ed_)o(co)o(mpl)
+o(et)o(ion)o(_fu)o(nc)o(tio)o(n)f(=)k(fileman_c)o(om)o(ple)o(tio)o(n;)
+195 1283 y(})195 1370 y(/*)f(Attempt)e(to)i(complete)d(on)j(the)f
+(contents)f(of)i(TEXT.)37 b(START)18 b(and)g(END)254
+1413 y(bound)g(the)g(region)f(of)i(rl_line_bu)o(ff)o(er)d(that)i
+(contains)f(the)h(word)g(to)254 1457 y(complete.)36 b(TEXT)18
+b(is)g(the)h(word)f(to)h(complete.)36 b(We)18 b(can)h(use)f(the)h
+(entire)254 1501 y(contents)d(of)j(rl_line_bu)o(ffe)o(r)d(in)j(case)f
+(we)h(want)f(to)h(do)g(some)f(simple)254 1544 y(parsing.)36
+b(Returnthe)16 b(array)i(of)h(matches,)d(or)j(NULL)f(if)h(there)f
+(aren't)f(any.)h(*/)195 1588 y(char)g(**)195 1631 y(fileman_co)o(mp)o
+(let)o(io)o(n)f(\(text,)g(start,)g(end\))293 1675 y(const)h(char)g
+(*text;)293 1719 y(int)h(start,)e(end;)195 1762 y({)234
+1806 y(char)h(**matches;)234 1893 y(matches)f(=)i(\(char)f(**\)NULL;)
+234 1980 y(/*)h(If)g(this)f(word)g(is)h(at)g(the)f(start)g(of)h(the)f
+(line,)g(then)g(it)h(is)g(a)g(command)293 2024 y(to)g(complete.)36
+b(Otherwise)16 b(it)j(is)f(the)h(name)f(of)h(a)g(file)f(in)h(the)f
+(current)293 2067 y(directory.)e(*/)234 2111 y(if)j(\(start)e(==)i(0\))
+273 2154 y(matches)e(=)j(rl_compl)o(eti)o(on_)o(ma)o(tch)o(es)c
+(\(text,)h(command_gen)o(er)o(ato)o(r\))o(;)234 2242
+y(return)h(\(matches)o(\);)195 2285 y(})195 2372 y(/*)h(Generator)d
+(function)g(for)j(command)e(completio)o(n.)36 b(STATE)18
+b(lets)g(us)254 2416 y(know)g(whether)f(to)i(start)e(from)h(scratch;)f
+(without)g(any)h(state)254 2460 y(\(i.e.)g(STATE)f(==)i(0\),)f(then)h
+(we)f(start)g(at)h(the)f(top)h(of)g(the)f(list.)g(*/)195
+2503 y(char)g(*)195 2547 y(command_ge)o(ne)o(rat)o(or)e(\(text,)h
+(state\))293 2590 y(const)h(char)g(*text;)293 2634 y(int)h(state;)p
+eop
+%%Page: 51 55
+51 54 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(51)195 149 y Fd({)234 193 y(static)18
+b(int)g(list_inde)o(x,)e(len;)234 237 y(char)i(*name;)234
+324 y(/*)h(If)g(this)f(is)h(a)g(new)f(word)h(to)f(complete,)f(initiali)
+o(ze)f(now.)38 b(This)293 367 y(includes)17 b(saving)g(the)h(length)g
+(of)g(TEXT)h(for)f(efficiency)o(,)e(and)293 411 y(initializi)o(ng)g
+(the)i(index)g(variable)f(to)i(0.)f(*/)234 455 y(if)h(\(!state\))273
+498 y({)313 542 y(list_inde)o(x)d(=)k(0;)313 585 y(len)e(=)h(strlen)f
+(\(text\);)273 629 y(})234 716 y(/*)h(Return)e(the)i(next)f(name)g
+(which)g(partially)e(matches)h(from)h(the)293 760 y(command)f(list.)h
+(*/)234 803 y(while)g(\(name)g(=)h(commands[)o(lis)o(t_)o(ind)o(ex)o
+(].n)o(ame)o(\))273 847 y({)313 890 y(list_inde)o(x+)o(+;)313
+978 y(if)g(\(strncmp)d(\(name,)h(text,)h(len\))g(==)h(0\))352
+1021 y(return)e(\(dupstr\(na)o(me\))o(\);)273 1065 y(})234
+1152 y(/*)i(If)g(no)g(names)e(matched,)g(then)h(return)f(NULL.)h(*/)234
+1196 y(return)g(\(\(char)f(*\)NULL\);)195 1239 y(})195
+1326 y(/*)i(*********)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o
+(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o
+(***)d(*/)195 1370 y(/*)1294 b(*/)195 1413 y(/*)450 b(FileMan)17
+b(Commands)527 b(*/)195 1457 y(/*)1294 b(*/)195 1501
+y(/*)19 b(*********)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o
+(***)o(***)o(**)o(***)o(**)o(***)o(***)o(**)o(***)o(**)o(***)o(***)d
+(*/)195 1588 y(/*)j(String)e(to)i(pass)f(to)h(system)e(\(\).)38
+b(This)18 b(is)h(for)g(the)f(LIST,)g(VIEW)g(and)g(RENAME)254
+1631 y(commands.)e(*/)195 1675 y(static)h(char)h(syscom[102)o(4];)195
+1762 y(/*)h(List)f(the)g(file\(s\))f(named)h(in)h(arg.)f(*/)195
+1806 y(com_list)f(\(arg\))293 1849 y(char)h(*arg;)195
+1893 y({)234 1936 y(if)h(\(!arg\))273 1980 y(arg)g(=)g("";)234
+2067 y(sprintf)e(\(syscom,)g("ls)h(-FClg)g(\045s",)g(arg\);)234
+2111 y(return)g(\(system)e(\(syscom\)\);)195 2154 y(})195
+2242 y(com_view)h(\(arg\))293 2285 y(char)h(*arg;)195
+2329 y({)234 2372 y(if)h(\(!valid_ar)o(gu)o(men)o(t)d(\("view",)h
+(arg\)\))273 2416 y(return)h(1;)234 2503 y(sprintf)f(\(syscom,)g("more)
+g(\045s",)h(arg\);)234 2547 y(return)g(\(system)e(\(syscom\)\);)195
+2590 y(})p eop
+%%Page: 52 56
+52 55 bop 75 -58 a Ft(52)1299 b(GNU)15 b(Readline)h(Library)195
+149 y Fd(com_rename)g(\(arg\))293 193 y(char)i(*arg;)195
+237 y({)234 280 y(too_danger)o(ous)e(\("rename")o(\);)234
+324 y(return)i(\(1\);)195 367 y(})195 455 y(com_stat)f(\(arg\))293
+498 y(char)h(*arg;)195 542 y({)234 585 y(struct)g(stat)g(finfo;)234
+672 y(if)h(\(!valid_ar)o(gu)o(men)o(t)d(\("stat",)h(arg\)\))273
+716 y(return)h(\(1\);)234 803 y(if)h(\(stat)f(\(arg,)f(&finfo\))g(==)i
+(-1\))273 847 y({)313 890 y(perror)e(\(arg\);)313 934
+y(return)g(\(1\);)273 978 y(})234 1065 y(printf)h(\("Statis)o(tic)o(s)e
+(for)j(`\045s':\\n",)d(arg\);)234 1152 y(printf)i(\("\045s)g(has)g
+(\045d)h(link\045s,)e(and)h(is)h(\045d)g(byte\045s)e(in)i(length.\\n")o
+(,)d(arg,)391 1196 y(finfo.st_n)o(li)o(nk,)391 1239 y(\(finfo.st_)o(nl)
+o(ink)g(==)j(1\))g(?)g("")g(:)g("s",)391 1283 y(finfo.st_s)o(iz)o(e,)
+391 1326 y(\(finfo.st_)o(si)o(ze)d(==)j(1\))g(?)g("")g(:)g("s"\);)234
+1370 y(printf)f(\("Inode)e(Last)i(Change)g(at:)g(\045s",)g(ctime)g
+(\(&finfo.st)o(_c)o(tim)o(e\))o(\);)234 1413 y(printf)g(\(")116
+b(Last)18 b(access)g(at:)g(\045s",)g(ctime)g(\(&finfo.st)o(_a)o(tim)o
+(e\))o(\);)234 1457 y(printf)g(\(")77 b(Last)18 b(modified)f(at:)h
+(\045s",)g(ctime)g(\(&finfo.st)o(_m)o(tim)o(e\))o(\);)234
+1501 y(return)g(\(0\);)195 1544 y(})195 1631 y(com_delete)e(\(arg\))293
+1675 y(char)i(*arg;)195 1719 y({)234 1762 y(too_danger)o(ous)e
+(\("delete")o(\);)234 1806 y(return)i(\(1\);)195 1849
+y(})195 1936 y(/*)h(Print)f(out)g(help)g(for)g(ARG,)h(or)f(for)h(all)f
+(of)h(the)g(commands)d(if)j(ARG)f(is)254 1980 y(not)g(present.)f(*/)195
+2024 y(com_help)g(\(arg\))293 2067 y(char)h(*arg;)195
+2111 y({)234 2154 y(register)f(int)h(i;)234 2198 y(int)h(printed)e(=)i
+(0;)234 2285 y(for)g(\(i)g(=)g(0;)g(commands)o([i])o(.na)o(me)o(;)e
+(i++\))273 2329 y({)313 2372 y(if)i(\(!*arg)e(||)i(\(strcmp)e(\(arg,)g
+(commands[i)o(].n)o(am)o(e\))f(==)j(0\)\))352 2416 y({)391
+2460 y(printf)e(\("\045s\\t\\t\045s.)o(\\n)o(",)f(commands[i)o(].n)o
+(am)o(e,)g(commands[i)o(].d)o(oc\))o(;)391 2503 y(printed++;)352
+2547 y(})273 2590 y(})p eop
+%%Page: 53 57
+53 56 bop 75 -58 a Ft(Chapter)15 b(2:)k(Programming)c(with)g(GNU)g
+(Readline)843 b(53)234 149 y Fd(if)19 b(\(!printed\))273
+193 y({)313 237 y(printf)e(\("No)h(commands)f(match)g(`\045s'.)38
+b(Possibil)o(tie)o(s)17 b(are:\\n",)f(arg\);)313 324
+y(for)i(\(i)h(=)g(0;)g(commands[i)o(].)o(nam)o(e;)d(i++\))352
+367 y({)391 411 y(/*)j(Print)f(in)g(six)h(columns.)d(*/)391
+455 y(if)j(\(printed)d(==)j(6\))430 498 y({)470 542 y(printed)d(=)k(0;)
+470 585 y(printf)d(\("\\n"\);)430 629 y(})391 716 y(printf)g
+(\("\045s\\t",)g(commands[)o(i].)o(nam)o(e\))o(;)391
+760 y(printed++;)352 803 y(})313 890 y(if)i(\(printed)o(\))352
+934 y(printf)e(\("\\n"\);)273 978 y(})234 1021 y(return)h(\(0\);)195
+1065 y(})195 1152 y(/*)h(Change)e(to)i(the)f(directory)f(ARG.)h(*/)195
+1196 y(com_cd)f(\(arg\))293 1239 y(char)h(*arg;)195 1283
+y({)234 1326 y(if)h(\(chdir)e(\(arg\))h(==)h(-1\))273
+1370 y({)313 1413 y(perror)e(\(arg\);)313 1457 y(return)g(1;)273
+1501 y(})234 1588 y(com_pwd)g(\(""\);)234 1631 y(return)h(\(0\);)195
+1675 y(})195 1762 y(/*)h(Print)f(out)g(the)g(current)f(working)g
+(directory.)f(*/)195 1806 y(com_pwd)h(\(ignore\))293
+1849 y(char)h(*ignore;)195 1893 y({)234 1936 y(char)g(dir[1024],)e(*s;)
+234 2024 y(s)j(=)h(getcwd)d(\(dir,)h(sizeof\(di)o(r\))e(-)j(1\);)234
+2067 y(if)g(\(s)g(==)g(0\))273 2111 y({)313 2154 y(printf)e(\("Error)g
+(getting)g(pwd:)h(\045s\\n",)f(dir\);)313 2198 y(return)g(1;)273
+2242 y(})234 2329 y(printf)h(\("Curren)o(t)f(directory)f(is)j
+(\045s\\n",)e(dir\);)234 2372 y(return)h(0;)195 2416
+y(})195 2503 y(/*)h(The)f(user)g(wishes)g(to)g(quit)h(using)e(this)h
+(program.)36 b(Just)19 b(set)f(DONE)254 2547 y(non-zero.)e(*/)195
+2590 y(com_quit)h(\(arg\))293 2634 y(char)h(*arg;)p eop
+%%Page: 54 58
+54 57 bop 75 -58 a Ft(54)1299 b(GNU)15 b(Readline)h(Library)195
+149 y Fd({)234 193 y(done)i(=)i(1;)234 237 y(return)e(\(0\);)195
+280 y(})195 367 y(/*)h(Function)d(which)i(tells)g(you)g(that)g(you)h
+(can't)e(do)i(this.)f(*/)195 411 y(too_danger)o(ou)o(s)f(\(caller\))293
+455 y(char)h(*caller;)195 498 y({)234 542 y(fprintf)f(\(stderr,)411
+585 y("\045s:)h(Too)g(dangerous)e(for)j(me)g(to)g(distribu)o(te.)o
+(\\n")411 629 y(caller\);)234 672 y(fprintf)e(\(stderr,)g("Write)g(it)i
+(yourself.)o(\\n")o(\);)195 716 y(})195 803 y(/*)g(Return)e(non-zero)g
+(if)h(ARG)h(is)g(a)g(valid)f(argument)e(for)j(CALLER,)254
+847 y(else)f(print)g(an)g(error)g(message)f(and)h(return)g(zero.)f(*/)
+195 890 y(int)195 934 y(valid_argu)o(me)o(nt)f(\(caller,)h(arg\))293
+978 y(char)h(*caller,)f(*arg;)195 1021 y({)234 1065 y(if)i(\(!arg)f(||)
+h(!*arg\))273 1108 y({)313 1152 y(fprintf)e(\(stderr,)f("\045s:)i
+(Argument)f(required.)o(\\n)o(",)f(caller\);)313 1196
+y(return)h(\(0\);)273 1239 y(})234 1326 y(return)h(\(1\);)195
+1370 y(})p eop
+%%Page: 55 59
+55 58 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(55)75 149 y Fp(App)r(endix)25 b(A)20 b(Cop)n(ying)26
+b(This)g(Man)n(ual)75 345 y Fr(A.1)33 b(GNU)21 b(F)-6
+b(ree)23 b(Do)r(cumen)n(tation)g(License)698 455 y Ft(V)l(ersion)16
+b(1.2,)e(No)o(v)o(em)o(b)q(er)h(2002)195 526 y(Cop)o(yrigh)o(t)421
+525 y(c)409 526 y Fq(\015)f Ft(2000,2001,200)o(2)e(F)l(ree)j(Soft)o(w)o
+(are)f(F)l(oundation,)h(Inc.)195 581 y(59)g(T)l(emple)h(Place,)f(Suite)
+i(330,)d(Boston,)g(MA)30 b(02111-1307,)12 b(USA)195 690
+y(Ev)o(ery)o(one)j(is)g(p)q(ermitted)h(to)f(cop)o(y)g(and)g(distribute)
+i(v)o(erbatim)e(copies)195 745 y(of)g(this)g(license)j(do)q(cumen)o(t,)
+d(but)g(c)o(hanging)h(it)f(is)h(not)f(allo)o(w)o(ed.)100
+816 y(0.)29 b(PREAMBLE)165 885 y(The)19 b(purp)q(ose)g(of)f(this)h
+(License)i(is)e(to)f(mak)o(e)g(a)g(man)o(ual,)h(textb)q(o)q(ok,)g(or)f
+(other)g(functional)i(and)165 940 y(useful)c(do)q(cumen)o(t)g
+Fi(free)h Ft(in)f(the)f(sense)h(of)f(freedom:)k(to)c(assure)g(ev)o(ery)
+o(one)f(the)i(e\013ectiv)o(e)f(freedom)165 995 y(to)g(cop)o(y)h(and)g
+(redistribute)h(it,)e(with)h(or)f(without)h(mo)q(difying)h(it,)f
+(either)g(commercially)h(or)f(non-)165 1050 y(commercially)l(.)28
+b(Secondarily)l(,)19 b(this)f(License)h(preserv)o(es)e(for)g(the)g
+(author)g(and)h(publisher)h(a)e(w)o(a)o(y)165 1104 y(to)g(get)h(credit)
+h(for)e(their)i(w)o(ork,)e(while)j(not)e(b)q(eing)h(considered)g(resp)q
+(onsible)h(for)e(mo)q(di\014cations)165 1159 y(made)d(b)o(y)g(others.)
+165 1228 y(This)d(License)i(is)e(a)f(kind)i(of)e(\\cop)o(yleft",)g
+(whic)o(h)i(means)e(that)g(deriv)m(ativ)o(e)i(w)o(orks)e(of)g(the)h(do)
+q(cumen)o(t)165 1283 y(m)o(ust)k(themselv)o(es)i(b)q(e)g(free)e(in)i
+(the)f(same)g(sense.)26 b(It)16 b(complemen)o(ts)i(the)f(GNU)g(General)
+g(Public)165 1338 y(License,)g(whic)o(h)f(is)f(a)g(cop)o(yleft)h
+(license)h(designed)f(for)f(free)g(soft)o(w)o(are.)165
+1407 y(W)l(e)g(ha)o(v)o(e)f(designed)i(this)g(License)g(in)g(order)e
+(to)g(use)h(it)g(for)g(man)o(uals)f(for)g(free)h(soft)o(w)o(are,)e(b)q
+(ecause)165 1462 y(free)21 b(soft)o(w)o(are)e(needs)j(free)f(do)q
+(cumen)o(tation:)32 b(a)21 b(free)g(program)f(should)i(come)f(with)h
+(man)o(uals)165 1517 y(pro)o(viding)15 b(the)g(same)f(freedoms)g(that)g
+(the)g(soft)o(w)o(are)f(do)q(es.)20 b(But)14 b(this)h(License)h(is)f
+(not)f(limited)j(to)165 1571 y(soft)o(w)o(are)d(man)o(uals;)h(it)g(can)
+h(b)q(e)g(used)g(for)e(an)o(y)h(textual)h(w)o(ork,)e(regardless)h(of)g
+(sub)s(ject)g(matter)f(or)165 1626 y(whether)i(it)g(is)g(published)i
+(as)e(a)f(prin)o(ted)i(b)q(o)q(ok.)k(W)l(e)16 b(recommend)g(this)g
+(License)i(principally)h(for)165 1681 y(w)o(orks)14 b(whose)h(purp)q
+(ose)h(is)g(instruction)g(or)f(reference.)100 1750 y(1.)29
+b(APPLICABILITY)17 b(AND)e(DEFINITIONS)165 1819 y(This)21
+b(License)g(applies)h(to)d(an)o(y)h(man)o(ual)g(or)f(other)h(w)o(ork,)g
+(in)h(an)o(y)e(medium,)j(that)d(con)o(tains)h(a)165 1874
+y(notice)h(placed)h(b)o(y)f(the)g(cop)o(yrigh)o(t)f(holder)i(sa)o(ying)
+f(it)g(can)g(b)q(e)g(distributed)h(under)g(the)f(terms)165
+1929 y(of)d(this)h(License.)33 b(Suc)o(h)19 b(a)g(notice)g(gran)o(ts)e
+(a)i(w)o(orld-wide,)h(ro)o(y)o(alt)o(y-free)e(license,)j(unlimited)g
+(in)165 1984 y(duration,)j(to)e(use)h(that)f(w)o(ork)g(under)h(the)g
+(conditions)h(stated)e(herein.)43 b(The)23 b(\\Do)q(cumen)o(t",)165
+2039 y(b)q(elo)o(w,)15 b(refers)f(to)f(an)o(y)h(suc)o(h)g(man)o(ual)h
+(or)e(w)o(ork.)19 b(An)o(y)14 b(mem)o(b)q(er)h(of)e(the)i(public)h(is)f
+(a)f(licensee,)i(and)165 2093 y(is)d(addressed)g(as)f(\\y)o(ou".)18
+b(Y)l(ou)13 b(accept)g(the)f(license)j(if)e(y)o(ou)f(cop)o(y)l(,)h(mo)q
+(dify)g(or)f(distribute)h(the)g(w)o(ork)165 2148 y(in)j(a)f(w)o(a)o(y)f
+(requiring)j(p)q(ermission)f(under)g(cop)o(yrigh)o(t)f(la)o(w.)165
+2217 y(A)i(\\Mo)q(di\014ed)h(V)l(ersion")f(of)f(the)h(Do)q(cumen)o(t)g
+(means)g(an)o(y)f(w)o(ork)g(con)o(taining)i(the)f(Do)q(cumen)o(t)f(or)
+165 2272 y(a)i(p)q(ortion)h(of)g(it,)g(either)h(copied)g(v)o(erbatim,)f
+(or)f(with)h(mo)q(di\014cations)h(and/or)e(translated)h(in)o(to)165
+2327 y(another)c(language.)165 2396 y(A)e(\\Secondary)g(Section")h(is)f
+(a)g(named)g(app)q(endix)i(or)d(a)h(fron)o(t-matter)e(section)i(of)g
+(the)g(Do)q(cumen)o(t)165 2451 y(that)d(deals)h(exclusiv)o(ely)i(with)e
+(the)g(relationship)h(of)f(the)f(publishers)j(or)d(authors)g(of)g(the)h
+(Do)q(cumen)o(t)165 2506 y(to)18 b(the)h(Do)q(cumen)o(t's)f(o)o(v)o
+(erall)h(sub)s(ject)f(\(or)g(to)g(related)h(matters\))e(and)i(con)o
+(tains)g(nothing)g(that)165 2560 y(could)i(fall)g(directly)h(within)f
+(that)e(o)o(v)o(erall)i(sub)s(ject.)34 b(\(Th)o(us,)21
+b(if)g(the)f(Do)q(cumen)o(t)g(is)h(in)g(part)e(a)165
+2615 y(textb)q(o)q(ok)12 b(of)f(mathematics,)h(a)f(Secondary)h(Section)
+h(ma)o(y)e(not)h(explain)h(an)o(y)f(mathematics.\))18
+b(The)165 2670 y(relationship)d(could)g(b)q(e)f(a)g(matter)e(of)i
+(historical)g(connection)h(with)f(the)g(sub)s(ject)f(or)h(with)g
+(related)p eop
+%%Page: 56 60
+56 59 bop 75 -58 a Ft(56)1299 b(GNU)15 b(Readline)h(Library)165
+149 y(matters,)h(or)g(of)g(legal,)i(commercial,)g(philosophical,)i
+(ethical)e(or)e(p)q(olitical)j(p)q(osition)f(regarding)165
+204 y(them.)165 275 y(The)13 b(\\In)o(v)m(arian)o(t)g(Sections")g(are)g
+(certain)g(Secondary)g(Sections)h(whose)f(titles)g(are)g(designated,)g
+(as)165 329 y(b)q(eing)i(those)e(of)g(In)o(v)m(arian)o(t)g(Sections,)h
+(in)h(the)e(notice)h(that)e(sa)o(ys)h(that)g(the)g(Do)q(cumen)o(t)g(is)
+h(released)165 384 y(under)h(this)f(License.)21 b(If)14
+b(a)g(section)g(do)q(es)g(not)g(\014t)f(the)h(ab)q(o)o(v)o(e)g
+(de\014nition)i(of)d(Secondary)h(then)g(it)g(is)165 439
+y(not)i(allo)o(w)o(ed)g(to)f(b)q(e)i(designated)g(as)e(In)o(v)m(arian)o
+(t.)22 b(The)17 b(Do)q(cumen)o(t)e(ma)o(y)h(con)o(tain)g(zero)g(In)o(v)
+m(arian)o(t)165 494 y(Sections.)k(If)12 b(the)h(Do)q(cumen)o(t)f(do)q
+(es)h(not)f(iden)o(tify)h(an)o(y)f(In)o(v)m(arian)o(t)h(Sections)g
+(then)g(there)f(are)g(none.)165 564 y(The)19 b(\\Co)o(v)o(er)e(T)l
+(exts")g(are)h(certain)h(short)f(passages)g(of)f(text)h(that)g(are)g
+(listed,)i(as)e(F)l(ron)o(t-Co)o(v)o(er)165 619 y(T)l(exts)12
+b(or)g(Bac)o(k-Co)o(v)o(er)g(T)l(exts,)g(in)i(the)e(notice)h(that)f(sa)
+o(ys)g(that)g(the)g(Do)q(cumen)o(t)h(is)g(released)g(under)165
+674 y(this)g(License.)21 b(A)13 b(F)l(ron)o(t-Co)o(v)o(er)e(T)l(ext)i
+(ma)o(y)f(b)q(e)i(at)e(most)g(5)h(w)o(ords,)f(and)h(a)g(Bac)o(k-Co)o(v)
+o(er)f(T)l(ext)h(ma)o(y)165 729 y(b)q(e)j(at)e(most)h(25)f(w)o(ords.)
+165 799 y(A)k(\\T)l(ransparen)o(t")e(cop)o(y)i(of)f(the)h(Do)q(cumen)o
+(t)g(means)f(a)h(mac)o(hine-readable)h(cop)o(y)l(,)f(represen)o(ted)165
+854 y(in)h(a)e(format)g(whose)g(sp)q(eci\014cation)j(is)f(a)o(v)m
+(ailable)g(to)e(the)h(general)h(public,)h(that)d(is)h(suitable)i(for)
+165 909 y(revising)d(the)f(do)q(cumen)o(t)g(straigh)o(tforw)o(ardly)f
+(with)h(generic)h(text)e(editors)h(or)f(\(for)g(images)h(com-)165
+964 y(p)q(osed)c(of)g(pixels\))h(generic)g(pain)o(t)f(programs)f(or)g
+(\(for)g(dra)o(wings\))h(some)f(widely)i(a)o(v)m(ailable)h(dra)o(wing)
+165 1018 y(editor,)h(and)f(that)g(is)h(suitable)h(for)e(input)h(to)f
+(text)g(formatters)f(or)h(for)g(automatic)g(translation)h(to)165
+1073 y(a)e(v)m(ariet)o(y)h(of)f(formats)f(suitable)i(for)f(input)i(to)d
+(text)h(formatters.)18 b(A)13 b(cop)o(y)h(made)f(in)h(an)g(otherwise)
+165 1128 y(T)l(ransparen)o(t)k(\014le)i(format)d(whose)i(markup,)g(or)g
+(absence)g(of)g(markup,)g(has)f(b)q(een)i(arranged)f(to)165
+1183 y(th)o(w)o(art)12 b(or)g(discourage)i(subsequen)o(t)g(mo)q
+(di\014cation)h(b)o(y)e(readers)g(is)h(not)f(T)l(ransparen)o(t.)18
+b(An)c(image)165 1238 y(format)i(is)i(not)e(T)l(ransparen)o(t)h(if)h
+(used)f(for)g(an)o(y)g(substan)o(tial)g(amoun)o(t)g(of)f(text.)26
+b(A)17 b(cop)o(y)g(that)f(is)165 1292 y(not)f(\\T)l(ransparen)o(t")f
+(is)i(called)g(\\Opaque".)165 1363 y(Examples)27 b(of)f(suitable)i
+(formats)d(for)h(T)l(ransparen)o(t)g(copies)h(include)i(plain)f
+Fm(asci)q(i)e Ft(without)165 1418 y(markup,)20 b(T)l(exinfo)h(input)g
+(format,)e(LaT)887 1427 y(E)913 1418 y(X)h(input)h(format,)e
+Fm(sgml)h Ft(or)f Fm(xml)h Ft(using)h(a)e(publicly)165
+1472 y(a)o(v)m(ailable)e Fm(dtd)p Ft(,)g(and)f(standard-conforming)f
+(simple)i Fm(html)p Ft(,)f(P)o(ostScript)f(or)h Fm(pdf)g
+Ft(designed)i(for)165 1527 y(h)o(uman)h(mo)q(di\014cation.)33
+b(Examples)19 b(of)g(transparen)o(t)f(image)h(formats)f(include)k
+Fm(png)p Ft(,)e Fm(x)o(cf)f Ft(and)165 1582 y Fm(jpg)p
+Ft(.)32 b(Opaque)20 b(formats)e(include)j(proprietary)e(formats)f(that)
+g(can)h(b)q(e)h(read)f(and)g(edited)h(only)165 1637 y(b)o(y)g
+(proprietary)f(w)o(ord)g(pro)q(cessors,)h Fm(sgml)g Ft(or)f
+Fm(xml)h Ft(for)f(whic)o(h)i(the)f Fm(dtd)g Ft(and/or)f(pro)q(cessing)
+165 1692 y(to)q(ols)c(are)h(not)f(generally)h(a)o(v)m(ailable,)h(and)f
+(the)f(mac)o(hine-generated)i Fm(html)p Ft(,)e(P)o(ostScript)g(or)g
+Fm(pdf)165 1746 y Ft(pro)q(duced)h(b)o(y)f(some)g(w)o(ord)g(pro)q
+(cessors)g(for)f(output)h(purp)q(oses)h(only)l(.)165
+1817 y(The)h(\\Title)h(P)o(age")e(means,)i(for)e(a)h(prin)o(ted)h(b)q
+(o)q(ok,)f(the)g(title)h(page)f(itself,)i(plus)f(suc)o(h)f(follo)o
+(wing)165 1872 y(pages)d(as)f(are)h(needed)h(to)e(hold,)i(legibly)l(,)g
+(the)f(material)g(this)h(License)g(requires)g(to)e(app)q(ear)h(in)h
+(the)165 1926 y(title)f(page.)19 b(F)l(or)13 b(w)o(orks)f(in)i(formats)
+e(whic)o(h)i(do)f(not)g(ha)o(v)o(e)g(an)o(y)g(title)h(page)f(as)g(suc)o
+(h,)h(\\Title)g(P)o(age")165 1981 y(means)h(the)h(text)e(near)i(the)f
+(most)g(prominen)o(t)g(app)q(earance)h(of)f(the)g(w)o(ork's)f(title,)i
+(preceding)h(the)165 2036 y(b)q(eginning)g(of)e(the)g(b)q(o)q(dy)h(of)f
+(the)g(text.)165 2106 y(A)g(section)g(\\En)o(titled)h(XYZ")e(means)h(a)
+g(named)g(subunit)h(of)e(the)h(Do)q(cumen)o(t)g(whose)g(title)g(either)
+165 2161 y(is)f(precisely)i(XYZ)e(or)f(con)o(tains)h(XYZ)g(in)h(paren)o
+(theses)f(follo)o(wing)g(text)g(that)f(translates)g(XYZ)h(in)165
+2216 y(another)e(language.)19 b(\(Here)13 b(XYZ)f(stands)g(for)g(a)g
+(sp)q(eci\014c)j(section)e(name)f(men)o(tioned)h(b)q(elo)o(w,)h(suc)o
+(h)165 2271 y(as)g(\\Ac)o(kno)o(wledgemen)o(ts",)f(\\Dedications",)i
+(\\Endorsemen)o(ts",)e(or)g(\\History".\))19 b(T)l(o)13
+b(\\Preserv)o(e)165 2326 y(the)k(Title")g(of)g(suc)o(h)g(a)f(section)i
+(when)f(y)o(ou)f(mo)q(dify)i(the)f(Do)q(cumen)o(t)f(means)h(that)f(it)h
+(remains)g(a)165 2380 y(section)f(\\En)o(titled)g(XYZ")e(according)i
+(to)f(this)g(de\014nition.)165 2451 y(The)f(Do)q(cumen)o(t)g(ma)o(y)f
+(include)j(W)l(arran)o(t)o(y)c(Disclaimers)j(next)f(to)g(the)g(notice)g
+(whic)o(h)h(states)e(that)165 2506 y(this)k(License)i(applies)g(to)d
+(the)h(Do)q(cumen)o(t.)25 b(These)17 b(W)l(arran)o(t)o(y)e(Disclaimers)
+k(are)d(considered)j(to)165 2560 y(b)q(e)g(included)j(b)o(y)d
+(reference)g(in)h(this)f(License,)i(but)e(only)g(as)g(regards)f
+(disclaiming)j(w)o(arran)o(ties:)165 2615 y(an)o(y)d(other)g
+(implication)j(that)d(these)g(W)l(arran)o(t)o(y)f(Disclaimers)j(ma)o(y)
+d(ha)o(v)o(e)h(is)h(v)o(oid)g(and)g(has)f(no)165 2670
+y(e\013ect)d(on)g(the)g(meaning)h(of)f(this)h(License.)p
+eop
+%%Page: 57 61
+57 60 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(57)100 149 y(2.)29 b(VERBA)l(TIM)15 b(COPYING)165
+222 y(Y)l(ou)k(ma)o(y)g(cop)o(y)f(and)i(distribute)g(the)f(Do)q(cumen)o
+(t)g(in)h(an)o(y)f(medium,)h(either)g(commercially)g(or)165
+277 y(noncommercially)l(,)k(pro)o(vided)e(that)f(this)h(License,)i(the)
+d(cop)o(yrigh)o(t)g(notices,)i(and)f(the)f(license)165
+332 y(notice)e(sa)o(ying)e(this)i(License)g(applies)h(to)d(the)h(Do)q
+(cumen)o(t)g(are)f(repro)q(duced)i(in)g(all)g(copies,)g(and)165
+387 y(that)13 b(y)o(ou)g(add)g(no)g(other)g(conditions)i(whatso)q(ev)o
+(er)d(to)h(those)g(of)g(this)h(License.)21 b(Y)l(ou)13
+b(ma)o(y)g(not)g(use)165 442 y(tec)o(hnical)18 b(measures)e(to)g
+(obstruct)g(or)g(con)o(trol)g(the)g(reading)h(or)f(further)h(cop)o
+(ying)g(of)f(the)g(copies)165 496 y(y)o(ou)c(mak)o(e)g(or)f
+(distribute.)21 b(Ho)o(w)o(ev)o(er,)11 b(y)o(ou)h(ma)o(y)g(accept)g
+(comp)q(ensation)h(in)g(exc)o(hange)g(for)e(copies.)165
+551 y(If)16 b(y)o(ou)g(distribute)h(a)f(large)g(enough)h(n)o(um)o(b)q
+(er)f(of)g(copies)h(y)o(ou)f(m)o(ust)f(also)h(follo)o(w)h(the)f
+(conditions)165 606 y(in)g(section)g(3.)165 679 y(Y)l(ou)11
+b(ma)o(y)e(also)i(lend)g(copies,)h(under)f(the)g(same)f(conditions)h
+(stated)f(ab)q(o)o(v)o(e,)h(and)f(y)o(ou)g(ma)o(y)g(publicly)165
+734 y(displa)o(y)16 b(copies.)100 807 y(3.)29 b(COPYING)16
+b(IN)f(QUANTITY)165 880 y(If)e(y)o(ou)f(publish)j(prin)o(ted)e(copies)h
+(\(or)d(copies)j(in)f(media)h(that)d(commonly)i(ha)o(v)o(e)f(prin)o
+(ted)i(co)o(v)o(ers\))d(of)165 935 y(the)16 b(Do)q(cumen)o(t,)g(n)o(um)
+o(b)q(ering)g(more)g(than)g(100,)e(and)i(the)g(Do)q(cumen)o(t's)g
+(license)i(notice)e(requires)165 990 y(Co)o(v)o(er)g(T)l(exts,)h(y)o
+(ou)g(m)o(ust)g(enclose)h(the)f(copies)h(in)g(co)o(v)o(ers)f(that)f
+(carry)l(,)h(clearly)h(and)g(legibly)l(,)h(all)165 1044
+y(these)h(Co)o(v)o(er)e(T)l(exts:)29 b(F)l(ron)o(t-Co)o(v)o(er)18
+b(T)l(exts)h(on)g(the)h(fron)o(t)f(co)o(v)o(er,)g(and)h(Bac)o(k-Co)o(v)
+o(er)f(T)l(exts)g(on)165 1099 y(the)c(bac)o(k)f(co)o(v)o(er.)19
+b(Both)14 b(co)o(v)o(ers)g(m)o(ust)g(also)h(clearly)h(and)e(legibly)j
+(iden)o(tify)f(y)o(ou)e(as)g(the)h(publisher)165 1154
+y(of)i(these)g(copies.)27 b(The)17 b(fron)o(t)f(co)o(v)o(er)h(m)o(ust)f
+(presen)o(t)i(the)f(full)h(title)g(with)g(all)g(w)o(ords)e(of)h(the)g
+(title)165 1209 y(equally)g(prominen)o(t)f(and)f(visible.)23
+b(Y)l(ou)16 b(ma)o(y)e(add)i(other)f(material)g(on)h(the)f(co)o(v)o
+(ers)g(in)h(addition.)165 1264 y(Cop)o(ying)i(with)h(c)o(hanges)f
+(limited)i(to)d(the)h(co)o(v)o(ers,)g(as)g(long)g(as)g(they)g(preserv)o
+(e)g(the)g(title)h(of)f(the)165 1318 y(Do)q(cumen)o(t)g(and)h(satisfy)f
+(these)h(conditions,)h(can)f(b)q(e)g(treated)f(as)h(v)o(erbatim)f(cop)o
+(ying)h(in)g(other)165 1373 y(resp)q(ects.)165 1446 y(If)e(the)f
+(required)i(texts)d(for)h(either)h(co)o(v)o(er)f(are)g(to)q(o)g(v)o
+(oluminous)h(to)f(\014t)g(legibly)l(,)i(y)o(ou)e(should)i(put)165
+1501 y(the)f(\014rst)f(ones)g(listed)i(\(as)d(man)o(y)h(as)g(\014t)h
+(reasonably\))f(on)g(the)h(actual)g(co)o(v)o(er,)e(and)i(con)o(tin)o
+(ue)g(the)165 1556 y(rest)e(on)o(to)f(adjacen)o(t)h(pages.)165
+1629 y(If)f(y)o(ou)f(publish)j(or)d(distribute)h(Opaque)h(copies)f(of)f
+(the)h(Do)q(cumen)o(t)f(n)o(um)o(b)q(ering)i(more)e(than)g(100,)165
+1684 y(y)o(ou)h(m)o(ust)f(either)i(include)h(a)e(mac)o(hine-readable)i
+(T)l(ransparen)o(t)d(cop)o(y)h(along)g(with)g(eac)o(h)g(Opaque)165
+1738 y(cop)o(y)l(,)k(or)f(state)g(in)h(or)f(with)h(eac)o(h)f(Opaque)i
+(cop)o(y)e(a)g(computer-net)o(w)o(ork)g(lo)q(cation)h(from)f(whic)o(h)
+165 1793 y(the)12 b(general)h(net)o(w)o(ork-using)f(public)i(has)e
+(access)g(to)g(do)o(wnload)g(using)h(public-standard)h(net)o(w)o(ork)
+165 1848 y(proto)q(cols)19 b(a)g(complete)i(T)l(ransparen)o(t)d(cop)o
+(y)i(of)f(the)g(Do)q(cumen)o(t,)h(free)g(of)f(added)h(material.)33
+b(If)165 1903 y(y)o(ou)19 b(use)h(the)f(latter)g(option,)i(y)o(ou)e(m)o
+(ust)g(tak)o(e)f(reasonably)i(pruden)o(t)g(steps,)g(when)g(y)o(ou)f(b)q
+(egin)165 1958 y(distribution)i(of)d(Opaque)i(copies)g(in)g(quan)o(tit)
+o(y)l(,)g(to)e(ensure)i(that)e(this)i(T)l(ransparen)o(t)e(cop)o(y)h
+(will)165 2012 y(remain)d(th)o(us)e(accessible)j(at)e(the)g(stated)g
+(lo)q(cation)g(un)o(til)i(at)d(least)h(one)h(y)o(ear)e(after)g(the)i
+(last)f(time)165 2067 y(y)o(ou)j(distribute)i(an)e(Opaque)h(cop)o(y)f
+(\(directly)i(or)e(through)g(y)o(our)g(agen)o(ts)f(or)h(retailers\))h
+(of)f(that)165 2122 y(edition)f(to)d(the)h(public.)165
+2195 y(It)i(is)h(requested,)g(but)f(not)g(required,)i(that)d(y)o(ou)h
+(con)o(tact)g(the)g(authors)g(of)f(the)i(Do)q(cumen)o(t)f(w)o(ell)165
+2250 y(b)q(efore)e(redistributing)h(an)o(y)e(large)g(n)o(um)o(b)q(er)h
+(of)e(copies,)i(to)f(giv)o(e)h(them)f(a)g(c)o(hance)h(to)e(pro)o(vide)i
+(y)o(ou)165 2305 y(with)h(an)f(up)q(dated)h(v)o(ersion)f(of)g(the)g(Do)
+q(cumen)o(t.)100 2378 y(4.)29 b(MODIFICA)l(TIONS)165
+2451 y(Y)l(ou)13 b(ma)o(y)f(cop)o(y)h(and)g(distribute)h(a)e(Mo)q
+(di\014ed)i(V)l(ersion)g(of)e(the)h(Do)q(cumen)o(t)f(under)i(the)f
+(conditions)165 2506 y(of)d(sections)h(2)f(and)h(3)f(ab)q(o)o(v)o(e,)h
+(pro)o(vided)g(that)f(y)o(ou)g(release)h(the)g(Mo)q(di\014ed)h(V)l
+(ersion)f(under)g(precisely)165 2560 y(this)k(License,)h(with)f(the)f
+(Mo)q(di\014ed)i(V)l(ersion)f(\014lling)i(the)e(role)f(of)h(the)f(Do)q
+(cumen)o(t,)g(th)o(us)h(licensing)165 2615 y(distribution)k(and)e(mo)q
+(di\014cation)h(of)f(the)g(Mo)q(di\014ed)h(V)l(ersion)g(to)e(who)q(ev)o
+(er)h(p)q(ossesses)h(a)e(cop)o(y)h(of)165 2670 y(it.)j(In)c(addition,)g
+(y)o(ou)f(m)o(ust)f(do)h(these)h(things)g(in)g(the)f(Mo)q(di\014ed)h(V)
+l(ersion:)p eop
+%%Page: 58 62
+58 61 bop 75 -58 a Ft(58)1299 b(GNU)15 b(Readline)h(Library)178
+149 y(A.)30 b(Use)17 b(in)g(the)f(Title)h(P)o(age)f(\(and)g(on)h(the)f
+(co)o(v)o(ers,)g(if)g(an)o(y\))g(a)g(title)h(distinct)h(from)d(that)h
+(of)g(the)255 204 y(Do)q(cumen)o(t,)h(and)g(from)f(those)h(of)f
+(previous)i(v)o(ersions)f(\(whic)o(h)g(should,)h(if)g(there)f(w)o(ere)f
+(an)o(y)l(,)255 259 y(b)q(e)g(listed)h(in)g(the)f(History)f(section)h
+(of)f(the)h(Do)q(cumen)o(t\).)21 b(Y)l(ou)16 b(ma)o(y)f(use)h(the)g
+(same)f(title)h(as)255 314 y(a)f(previous)h(v)o(ersion)f(if)h(the)f
+(original)h(publisher)i(of)d(that)f(v)o(ersion)h(giv)o(es)h(p)q
+(ermission.)180 379 y(B.)30 b(List)16 b(on)f(the)g(Title)i(P)o(age,)d
+(as)h(authors,)f(one)h(or)g(more)g(p)q(ersons)g(or)g(en)o(tities)h
+(resp)q(onsible)i(for)255 434 y(authorship)c(of)e(the)h(mo)q
+(di\014cations)h(in)g(the)f(Mo)q(di\014ed)i(V)l(ersion,)f(together)e
+(with)h(at)g(least)g(\014v)o(e)255 488 y(of)f(the)g(principal)i
+(authors)d(of)h(the)g(Do)q(cumen)o(t)g(\(all)g(of)g(its)g(principal)i
+(authors,)e(if)g(it)g(has)g(few)o(er)255 543 y(than)j(\014v)o(e\),)g
+(unless)h(they)f(release)h(y)o(ou)f(from)f(this)i(requiremen)o(t.)180
+608 y(C.)29 b(State)15 b(on)g(the)h(Title)g(page)f(the)h(name)f(of)g
+(the)g(publisher)j(of)d(the)g(Mo)q(di\014ed)i(V)l(ersion,)f(as)f(the)
+255 663 y(publisher.)178 728 y(D.)29 b(Preserv)o(e)15
+b(all)h(the)f(cop)o(yrigh)o(t)g(notices)h(of)f(the)g(Do)q(cumen)o(t.)
+181 793 y(E.)30 b(Add)16 b(an)g(appropriate)g(cop)o(yrigh)o(t)f(notice)
+h(for)f(y)o(our)g(mo)q(di\014cations)i(adjacen)o(t)f(to)f(the)g(other)
+255 848 y(cop)o(yrigh)o(t)g(notices.)183 913 y(F.)29
+b(Include,)16 b(immediately)g(after)d(the)h(cop)o(yrigh)o(t)f(notices,)
+i(a)e(license)j(notice)f(giving)g(the)f(public)255 968
+y(p)q(ermission)g(to)d(use)i(the)f(Mo)q(di\014ed)i(V)l(ersion)f(under)g
+(the)f(terms)g(of)f(this)i(License,)h(in)f(the)g(form)255
+1023 y(sho)o(wn)i(in)h(the)f(Addendum)i(b)q(elo)o(w.)177
+1088 y(G.)29 b(Preserv)o(e)11 b(in)h(that)f(license)i(notice)g(the)e
+(full)i(lists)f(of)f(In)o(v)m(arian)o(t)h(Sections)g(and)f(required)i
+(Co)o(v)o(er)255 1143 y(T)l(exts)i(giv)o(en)h(in)g(the)f(Do)q(cumen)o
+(t's)g(license)i(notice.)178 1208 y(H.)30 b(Include)17
+b(an)e(unaltered)i(cop)o(y)e(of)f(this)i(License.)196
+1273 y(I.)30 b(Preserv)o(e)16 b(the)g(section)h(En)o(titled)g
+(\\History",)e(Preserv)o(e)g(its)i(Title,)f(and)h(add)f(to)f(it)i(an)f
+(item)255 1328 y(stating)e(at)f(least)h(the)g(title,)h(y)o(ear,)e(new)i
+(authors,)e(and)h(publisher)i(of)e(the)g(Mo)q(di\014ed)h(V)l(ersion)255
+1382 y(as)g(giv)o(en)h(on)g(the)g(Title)g(P)o(age.)21
+b(If)16 b(there)g(is)g(no)g(section)g(En)o(titled)g(\\History")f(in)i
+(the)f(Do)q(cu-)255 1437 y(men)o(t,)h(create)g(one)h(stating)f(the)g
+(title,)i(y)o(ear,)e(authors,)g(and)g(publisher)j(of)d(the)g(Do)q
+(cumen)o(t)255 1492 y(as)h(giv)o(en)g(on)g(its)g(Title)h(P)o(age,)f
+(then)h(add)f(an)g(item)g(describing)i(the)e(Mo)q(di\014ed)h(V)l
+(ersion)g(as)255 1547 y(stated)c(in)h(the)f(previous)h(sen)o(tence.)189
+1612 y(J.)30 b(Preserv)o(e)16 b(the)g(net)o(w)o(ork)f(lo)q(cation,)i
+(if)g(an)o(y)l(,)f(giv)o(en)h(in)g(the)f(Do)q(cumen)o(t)g(for)g(public)
+i(access)f(to)255 1667 y(a)e(T)l(ransparen)o(t)g(cop)o(y)h(of)f(the)g
+(Do)q(cumen)o(t,)h(and)f(lik)o(ewise)j(the)d(net)o(w)o(ork)g(lo)q
+(cations)h(giv)o(en)g(in)255 1721 y(the)g(Do)q(cumen)o(t)g(for)f
+(previous)h(v)o(ersions)g(it)g(w)o(as)f(based)i(on.)k(These)c(ma)o(y)e
+(b)q(e)h(placed)h(in)g(the)255 1776 y(\\History")12 b(section.)19
+b(Y)l(ou)13 b(ma)o(y)f(omit)g(a)g(net)o(w)o(ork)g(lo)q(cation)h(for)f
+(a)g(w)o(ork)g(that)g(w)o(as)f(published)255 1831 y(at)17
+b(least)h(four)g(y)o(ears)f(b)q(efore)h(the)g(Do)q(cumen)o(t)g(itself,)
+h(or)e(if)i(the)e(original)i(publisher)h(of)e(the)255
+1886 y(v)o(ersion)d(it)h(refers)f(to)f(giv)o(es)i(p)q(ermission.)177
+1951 y(K.)30 b(F)l(or)11 b(an)o(y)h(section)g(En)o(titled)h(\\Ac)o(kno)
+o(wledgemen)o(ts")f(or)f(\\Dedications",)h(Preserv)o(e)g(the)g(Title)
+255 2006 y(of)h(the)g(section,)h(and)f(preserv)o(e)h(in)g(the)f
+(section)h(all)g(the)g(substance)f(and)h(tone)f(of)g(eac)o(h)g(of)g
+(the)255 2060 y(con)o(tributor)i(ac)o(kno)o(wledgemen)o(ts)g(and/or)g
+(dedications)h(giv)o(en)g(therein.)184 2125 y(L.)30 b(Preserv)o(e)17
+b(all)i(the)f(In)o(v)m(arian)o(t)g(Sections)g(of)g(the)f(Do)q(cumen)o
+(t,)h(unaltered)h(in)f(their)h(text)e(and)255 2180 y(in)i(their)f
+(titles.)29 b(Section)19 b(n)o(um)o(b)q(ers)f(or)g(the)g(equiv)m(alen)o
+(t)h(are)f(not)g(considered)h(part)e(of)h(the)255 2235
+y(section)e(titles.)171 2300 y(M.)29 b(Delete)16 b(an)o(y)f(section)h
+(En)o(titled)g(\\Endorsemen)o(ts".)k(Suc)o(h)c(a)f(section)h(ma)o(y)e
+(not)h(b)q(e)h(included)255 2355 y(in)g(the)f(Mo)q(di\014ed)i(V)l
+(ersion.)178 2420 y(N.)30 b(Do)14 b(not)f(retitle)i(an)o(y)f(existing)h
+(section)g(to)f(b)q(e)g(En)o(titled)i(\\Endorsemen)o(ts")d(or)h(to)f
+(con\015ict)i(in)255 2475 y(title)h(with)f(an)o(y)g(In)o(v)m(arian)o(t)
+h(Section.)177 2540 y(O.)30 b(Preserv)o(e)15 b(an)o(y)g(W)l(arran)o(t)o
+(y)e(Disclaimers.)165 2615 y(If)k(the)g(Mo)q(di\014ed)h(V)l(ersion)f
+(includes)i(new)e(fron)o(t-matter)e(sections)i(or)f(app)q(endices)j
+(that)d(qualify)165 2670 y(as)e(Secondary)g(Sections)h(and)f(con)o
+(tain)g(no)g(material)g(copied)h(from)e(the)h(Do)q(cumen)o(t,)g(y)o(ou)
+f(ma)o(y)h(at)p eop
+%%Page: 59 63
+59 62 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(59)165 149 y(y)o(our)16 b(option)g(designate)h(some)f(or)f
+(all)i(of)f(these)h(sections)f(as)g(in)o(v)m(arian)o(t.)24
+b(T)l(o)15 b(do)i(this,)f(add)g(their)165 204 y(titles)i(to)f(the)h
+(list)h(of)e(In)o(v)m(arian)o(t)h(Sections)h(in)f(the)g(Mo)q(di\014ed)h
+(V)l(ersion's)f(license)i(notice.)28 b(These)165 259
+y(titles)16 b(m)o(ust)f(b)q(e)g(distinct)i(from)d(an)o(y)h(other)g
+(section)h(titles.)165 325 y(Y)l(ou)21 b(ma)o(y)g(add)g(a)g(section)h
+(En)o(titled)g(\\Endorsemen)o(ts",)f(pro)o(vided)h(it)g(con)o(tains)f
+(nothing)h(but)165 380 y(endorsemen)o(ts)15 b(of)f(y)o(our)h(Mo)q
+(di\014ed)h(V)l(ersion)f(b)o(y)g(v)m(arious)g(parties|for)f(example,)i
+(statemen)o(ts)d(of)165 434 y(p)q(eer)h(review)g(or)g(that)e(the)i
+(text)f(has)h(b)q(een)g(appro)o(v)o(ed)g(b)o(y)f(an)h(organization)f
+(as)h(the)f(authoritativ)o(e)165 489 y(de\014nition)k(of)e(a)g
+(standard.)165 555 y(Y)l(ou)f(ma)o(y)g(add)g(a)g(passage)g(of)f(up)i
+(to)e(\014v)o(e)i(w)o(ords)e(as)h(a)g(F)l(ron)o(t-Co)o(v)o(er)e(T)l
+(ext,)i(and)g(a)g(passage)g(of)f(up)165 610 y(to)g(25)g(w)o(ords)g(as)g
+(a)g(Bac)o(k-Co)o(v)o(er)g(T)l(ext,)g(to)g(the)g(end)i(of)e(the)g(list)
+i(of)e(Co)o(v)o(er)f(T)l(exts)i(in)g(the)g(Mo)q(di\014ed)165
+665 y(V)l(ersion.)29 b(Only)19 b(one)f(passage)f(of)h(F)l(ron)o(t-Co)o
+(v)o(er)e(T)l(ext)i(and)g(one)g(of)f(Bac)o(k-Co)o(v)o(er)g(T)l(ext)h
+(ma)o(y)f(b)q(e)165 719 y(added)d(b)o(y)g(\(or)f(through)g(arrangemen)o
+(ts)g(made)h(b)o(y\))f(an)o(y)h(one)g(en)o(tit)o(y)l(.)19
+b(If)14 b(the)g(Do)q(cumen)o(t)g(already)165 774 y(includes)19
+b(a)e(co)o(v)o(er)f(text)h(for)f(the)h(same)g(co)o(v)o(er,)f
+(previously)i(added)g(b)o(y)f(y)o(ou)g(or)f(b)o(y)h(arrangemen)o(t)165
+829 y(made)h(b)o(y)f(the)h(same)f(en)o(tit)o(y)h(y)o(ou)f(are)g(acting)
+h(on)f(b)q(ehalf)i(of,)f(y)o(ou)f(ma)o(y)g(not)g(add)h(another;)g(but)
+165 884 y(y)o(ou)f(ma)o(y)f(replace)i(the)f(old)h(one,)f(on)g(explicit)
+i(p)q(ermission)f(from)f(the)g(previous)h(publisher)h(that)165
+938 y(added)d(the)f(old)h(one.)165 1004 y(The)d(author\(s\))e(and)i
+(publisher\(s\))h(of)f(the)g(Do)q(cumen)o(t)f(do)h(not)f(b)o(y)h(this)g
+(License)i(giv)o(e)e(p)q(ermission)165 1059 y(to)i(use)g(their)h(names)
+f(for)f(publicit)o(y)k(for)c(or)h(to)f(assert)h(or)f(imply)j
+(endorsemen)o(t)e(of)g(an)o(y)g(Mo)q(di\014ed)165 1114
+y(V)l(ersion.)100 1180 y(5.)29 b(COMBINING)16 b(DOCUMENTS)165
+1245 y(Y)l(ou)k(ma)o(y)e(com)o(bine)i(the)g(Do)q(cumen)o(t)f(with)h
+(other)f(do)q(cumen)o(ts)g(released)i(under)f(this)g(License,)165
+1300 y(under)g(the)f(terms)g(de\014ned)h(in)g(section)g(4)e(ab)q(o)o(v)
+o(e)h(for)g(mo)q(di\014ed)h(v)o(ersions,)g(pro)o(vided)g(that)e(y)o(ou)
+165 1355 y(include)d(in)e(the)g(com)o(bination)h(all)f(of)f(the)h(In)o
+(v)m(arian)o(t)g(Sections)h(of)e(all)h(of)g(the)f(original)i(do)q
+(cumen)o(ts,)165 1410 y(unmo)q(di\014ed,)h(and)f(list)g(them)f(all)i
+(as)e(In)o(v)m(arian)o(t)g(Sections)i(of)e(y)o(our)f(com)o(bined)j(w)o
+(ork)d(in)i(its)g(license)165 1465 y(notice,)h(and)h(that)e(y)o(ou)h
+(preserv)o(e)g(all)i(their)e(W)l(arran)o(t)o(y)f(Disclaimers.)165
+1530 y(The)h(com)o(bined)i(w)o(ork)d(need)i(only)f(con)o(tain)h(one)f
+(cop)o(y)g(of)g(this)g(License,)i(and)e(m)o(ultiple)i(iden)o(tical)165
+1585 y(In)o(v)m(arian)o(t)g(Sections)g(ma)o(y)e(b)q(e)i(replaced)h
+(with)e(a)g(single)i(cop)o(y)l(.)23 b(If)16 b(there)h(are)f(m)o
+(ultiple)i(In)o(v)m(arian)o(t)165 1640 y(Sections)c(with)g(the)f(same)g
+(name)h(but)f(di\013eren)o(t)h(con)o(ten)o(ts,)f(mak)o(e)g(the)g(title)
+h(of)f(eac)o(h)h(suc)o(h)f(section)165 1695 y(unique)19
+b(b)o(y)d(adding)i(at)f(the)g(end)g(of)g(it,)g(in)h(paren)o(theses,)f
+(the)g(name)g(of)g(the)g(original)h(author)e(or)165 1749
+y(publisher)f(of)d(that)g(section)h(if)g(kno)o(wn,)f(or)g(else)h(a)g
+(unique)h(n)o(um)o(b)q(er.)19 b(Mak)o(e)12 b(the)g(same)h(adjustmen)o
+(t)165 1804 y(to)f(the)g(section)h(titles)g(in)g(the)f(list)h(of)f(In)o
+(v)m(arian)o(t)g(Sections)h(in)g(the)g(license)h(notice)f(of)f(the)g
+(com)o(bined)165 1859 y(w)o(ork.)165 1925 y(In)21 b(the)g(com)o
+(bination,)h(y)o(ou)f(m)o(ust)f(com)o(bine)h(an)o(y)f(sections)i(En)o
+(titled)f(\\History")f(in)h(the)g(v)m(ari-)165 1980 y(ous)16
+b(original)h(do)q(cumen)o(ts,)f(forming)g(one)h(section)f(En)o(titled)h
+(\\History";)f(lik)o(ewise)h(com)o(bine)g(an)o(y)165
+2034 y(sections)f(En)o(titled)h(\\Ac)o(kno)o(wledgemen)o(ts",)f(and)g
+(an)o(y)f(sections)i(En)o(titled)f(\\Dedications".)23
+b(Y)l(ou)165 2089 y(m)o(ust)15 b(delete)h(all)g(sections)g(En)o(titled)
+g(\\Endorsemen)o(ts.")100 2155 y(6.)29 b(COLLECTIONS)17
+b(OF)e(DOCUMENTS)165 2221 y(Y)l(ou)h(ma)o(y)f(mak)o(e)h(a)f(collection)
+j(consisting)f(of)e(the)h(Do)q(cumen)o(t)g(and)g(other)g(do)q(cumen)o
+(ts)g(released)165 2275 y(under)22 b(this)g(License,)i(and)d(replace)h
+(the)f(individual)k(copies)d(of)f(this)g(License)i(in)f(the)f(v)m
+(arious)165 2330 y(do)q(cumen)o(ts)h(with)f(a)g(single)i(cop)o(y)e
+(that)f(is)i(included)i(in)e(the)f(collection,)k(pro)o(vided)d(that)e
+(y)o(ou)165 2385 y(follo)o(w)f(the)f(rules)i(of)e(this)h(License)h(for)
+e(v)o(erbatim)g(cop)o(ying)h(of)f(eac)o(h)h(of)f(the)h(do)q(cumen)o(ts)
+g(in)g(all)165 2440 y(other)c(resp)q(ects.)165 2506 y(Y)l(ou)h(ma)o(y)f
+(extract)g(a)g(single)i(do)q(cumen)o(t)f(from)f(suc)o(h)h(a)g
+(collection,)h(and)f(distribute)h(it)f(individu-)165
+2560 y(ally)i(under)h(this)f(License,)h(pro)o(vided)f(y)o(ou)f(insert)h
+(a)g(cop)o(y)f(of)g(this)h(License)h(in)o(to)f(the)f(extracted)165
+2615 y(do)q(cumen)o(t,)g(and)f(follo)o(w)g(this)h(License)h(in)f(all)h
+(other)d(resp)q(ects)i(regarding)g(v)o(erbatim)f(cop)o(ying)g(of)165
+2670 y(that)e(do)q(cumen)o(t.)p eop
+%%Page: 60 64
+60 63 bop 75 -58 a Ft(60)1299 b(GNU)15 b(Readline)h(Library)100
+149 y(7.)29 b(A)o(GGREGA)l(TION)14 b(WITH)i(INDEPENDENT)e(W)o(ORKS)165
+214 y(A)g(compilation)h(of)f(the)g(Do)q(cumen)o(t)g(or)f(its)i(deriv)m
+(ativ)o(es)g(with)f(other)g(separate)f(and)i(indep)q(enden)o(t)165
+269 y(do)q(cumen)o(ts)i(or)f(w)o(orks,)g(in)h(or)f(on)h(a)f(v)o(olume)h
+(of)f(a)h(storage)e(or)h(distribution)j(medium,)e(is)g(called)165
+324 y(an)e(\\aggregate")e(if)i(the)h(cop)o(yrigh)o(t)e(resulting)i
+(from)f(the)g(compilation)h(is)g(not)e(used)i(to)e(limit)j(the)165
+379 y(legal)d(righ)o(ts)f(of)g(the)g(compilation's)i(users)e(b)q(ey)o
+(ond)h(what)f(the)g(individual)j(w)o(orks)d(p)q(ermit.)20
+b(When)165 433 y(the)14 b(Do)q(cumen)o(t)g(is)g(included)i(an)e
+(aggregate,)e(this)j(License)g(do)q(es)f(not)g(apply)g(to)g(the)g
+(other)f(w)o(orks)165 488 y(in)j(the)f(aggregate)f(whic)o(h)i(are)f
+(not)g(themselv)o(es)h(deriv)m(ativ)o(e)g(w)o(orks)e(of)h(the)g(Do)q
+(cumen)o(t.)165 553 y(If)d(the)f(Co)o(v)o(er)f(T)l(ext)i(requiremen)o
+(t)g(of)f(section)h(3)f(is)h(applicable)h(to)e(these)h(copies)g(of)f
+(the)g(Do)q(cumen)o(t,)165 608 y(then)h(if)f(the)h(Do)q(cumen)o(t)f(is)
+g(less)h(than)f(one)h(half)f(of)g(the)g(en)o(tire)h(aggregate,)e(the)h
+(Do)q(cumen)o(t's)g(Co)o(v)o(er)165 663 y(T)l(exts)i(ma)o(y)g(b)q(e)h
+(placed)g(on)f(co)o(v)o(ers)g(that)f(brac)o(k)o(et)h(the)g(Do)q(cumen)o
+(t)g(within)i(the)e(aggregate,)f(or)h(the)165 717 y(electronic)19
+b(equiv)m(alen)o(t)g(of)e(co)o(v)o(ers)g(if)h(the)g(Do)q(cumen)o(t)f
+(is)h(in)g(electronic)h(form.)27 b(Otherwise)18 b(they)165
+772 y(m)o(ust)d(app)q(ear)g(on)g(prin)o(ted)h(co)o(v)o(ers)f(that)f
+(brac)o(k)o(et)h(the)g(whole)h(aggregate.)100 837 y(8.)29
+b(TRANSLA)l(TION)165 902 y(T)l(ranslation)20 b(is)h(considered)g(a)f
+(kind)h(of)e(mo)q(di\014cation,)j(so)e(y)o(ou)g(ma)o(y)f(distribute)i
+(translations)165 956 y(of)h(the)g(Do)q(cumen)o(t)g(under)h(the)f
+(terms)g(of)g(section)g(4.)41 b(Replacing)23 b(In)o(v)m(arian)o(t)g
+(Sections)g(with)165 1011 y(translations)g(requires)g(sp)q(ecial)i(p)q
+(ermission)f(from)e(their)h(cop)o(yrigh)o(t)f(holders,)j(but)e(y)o(ou)g
+(ma)o(y)165 1066 y(include)15 b(translations)d(of)g(some)g(or)f(all)i
+(In)o(v)m(arian)o(t)g(Sections)g(in)g(addition)h(to)d(the)h(original)i
+(v)o(ersions)165 1121 y(of)h(these)h(In)o(v)m(arian)o(t)g(Sections.)23
+b(Y)l(ou)15 b(ma)o(y)g(include)k(a)c(translation)h(of)f(this)h
+(License,)h(and)f(all)h(the)165 1176 y(license)23 b(notices)e(in)g(the)
+g(Do)q(cumen)o(t,)g(and)g(an)o(y)f(W)l(arran)o(t)o(y)f(Disclaimers,)k
+(pro)o(vided)e(that)f(y)o(ou)165 1230 y(also)g(include)i(the)e
+(original)i(English)f(v)o(ersion)f(of)g(this)g(License)i(and)e(the)g
+(original)h(v)o(ersions)f(of)165 1285 y(those)d(notices)g(and)h
+(disclaimers.)27 b(In)18 b(case)f(of)f(a)h(disagreemen)o(t)g(b)q(et)o
+(w)o(een)h(the)f(translation)g(and)165 1340 y(the)h(original)g(v)o
+(ersion)g(of)f(this)h(License)i(or)d(a)g(notice)h(or)f(disclaimer,)j
+(the)e(original)g(v)o(ersion)g(will)165 1395 y(prev)m(ail.)165
+1460 y(If)d(a)f(section)g(in)i(the)e(Do)q(cumen)o(t)g(is)h(En)o(titled)
+g(\\Ac)o(kno)o(wledgemen)o(ts",)f(\\Dedications",)h(or)e(\\His-)165
+1514 y(tory",)f(the)h(requiremen)o(t)h(\(section)f(4\))g(to)f(Preserv)o
+(e)h(its)h(Title)g(\(section)f(1\))g(will)i(t)o(ypically)f(require)165
+1569 y(c)o(hanging)i(the)f(actual)g(title.)100 1634 y(9.)29
+b(TERMINA)l(TION)165 1699 y(Y)l(ou)15 b(ma)o(y)f(not)h(cop)o(y)l(,)f
+(mo)q(dify)l(,)i(sublicense,)h(or)d(distribute)i(the)f(Do)q(cumen)o(t)g
+(except)h(as)e(expressly)165 1753 y(pro)o(vided)22 b(for)e(under)i
+(this)f(License.)39 b(An)o(y)21 b(other)f(attempt)g(to)g(cop)o(y)l(,)i
+(mo)q(dify)l(,)h(sublicense)g(or)165 1808 y(distribute)d(the)e(Do)q
+(cumen)o(t)g(is)h(v)o(oid,)g(and)f(will)i(automatically)f(terminate)f
+(y)o(our)g(righ)o(ts)g(under)165 1863 y(this)c(License.)22
+b(Ho)o(w)o(ev)o(er,)12 b(parties)i(who)g(ha)o(v)o(e)g(receiv)o(ed)h
+(copies,)f(or)g(righ)o(ts,)f(from)g(y)o(ou)h(under)h(this)165
+1918 y(License)20 b(will)g(not)e(ha)o(v)o(e)g(their)h(licenses)h
+(terminated)f(so)f(long)g(as)g(suc)o(h)h(parties)g(remain)f(in)i(full)
+165 1973 y(compliance.)77 2037 y(10.)29 b(FUTURE)14 b(REVISIONS)j(OF)e
+(THIS)h(LICENSE)165 2102 y(The)21 b(F)l(ree)g(Soft)o(w)o(are)e(F)l
+(oundation)i(ma)o(y)f(publish)j(new,)f(revised)g(v)o(ersions)f(of)f
+(the)h(GNU)g(F)l(ree)165 2157 y(Do)q(cumen)o(tation)16
+b(License)i(from)d(time)h(to)g(time.)22 b(Suc)o(h)17
+b(new)f(v)o(ersions)h(will)g(b)q(e)g(similar)g(in)g(spirit)165
+2212 y(to)g(the)g(presen)o(t)g(v)o(ersion,)h(but)f(ma)o(y)f(di\013er)i
+(in)g(detail)g(to)f(address)g(new)g(problems)h(or)f(concerns.)165
+2266 y(See)f Fs(http://www.gnu.org/copyle)o(ft/)p Ft(.)165
+2331 y(Eac)o(h)f(v)o(ersion)f(of)h(the)g(License)h(is)f(giv)o(en)g(a)g
+(distinguishing)i(v)o(ersion)e(n)o(um)o(b)q(er.)20 b(If)15
+b(the)g(Do)q(cumen)o(t)165 2386 y(sp)q(eci\014es)24 b(that)e(a)h
+(particular)g(n)o(um)o(b)q(ered)h(v)o(ersion)e(of)h(this)g(License)h
+(\\or)e(an)o(y)g(later)h(v)o(ersion")165 2441 y(applies)18
+b(to)d(it,)i(y)o(ou)f(ha)o(v)o(e)g(the)g(option)g(of)g(follo)o(wing)h
+(the)f(terms)g(and)g(conditions)i(either)f(of)f(that)165
+2496 y(sp)q(eci\014ed)21 b(v)o(ersion)e(or)g(of)f(an)o(y)h(later)g(v)o
+(ersion)g(that)f(has)h(b)q(een)h(published)i(\(not)c(as)g(a)h(draft\))f
+(b)o(y)165 2550 y(the)e(F)l(ree)h(Soft)o(w)o(are)e(F)l(oundation.)23
+b(If)17 b(the)g(Do)q(cumen)o(t)f(do)q(es)g(not)g(sp)q(ecify)i(a)e(v)o
+(ersion)h(n)o(um)o(b)q(er)f(of)165 2605 y(this)i(License,)h(y)o(ou)e
+(ma)o(y)f(c)o(ho)q(ose)i(an)o(y)e(v)o(ersion)i(ev)o(er)f(published)j
+(\(not)c(as)h(a)g(draft\))f(b)o(y)i(the)f(F)l(ree)165
+2660 y(Soft)o(w)o(are)d(F)l(oundation.)p eop
+%%Page: 61 65
+61 64 bop 75 -58 a Ft(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(61)75 149 y Fh(A.1.1)30 b(ADDENDUM:)22 b(Ho)n(w)f(to)f(use)
+h(this)f(License)h(for)f(y)n(our)h(do)r(cumen)n(ts)137
+271 y Ft(T)l(o)14 b(use)g(this)g(License)h(in)g(a)e(do)q(cumen)o(t)h(y)
+o(ou)f(ha)o(v)o(e)h(written,)f(include)j(a)d(cop)o(y)h(of)f(the)h
+(License)h(in)g(the)75 326 y(do)q(cumen)o(t)h(and)f(put)g(the)h(follo)o
+(wing)g(cop)o(yrigh)o(t)e(and)i(license)h(notices)f(just)f(after)f(the)
+h(title)h(page:)234 382 y Fd(Copyright)g(\(C\))38 b Fc(year)k(your)19
+b(name)p Fd(.)234 426 y(Permission)d(is)j(granted)e(to)i(copy,)e
+(distribute)f(and/or)h(modify)h(this)g(document)234 469
+y(under)g(the)g(terms)g(of)h(the)f(GNU)h(Free)f(Documenta)o(tio)o(n)e
+(License,)h(Version)g(1.2)234 513 y(or)i(any)g(later)e(version)g
+(published)f(by)j(the)g(Free)f(Software)e(Foundation)o(;)234
+557 y(with)i(no)h(Invariant)d(Sections,)g(no)j(Front-Cove)o(r)e(Texts,)
+g(and)h(no)h(Back-Cover)d(Texts.)234 600 y(A)j(copy)g(of)f(the)h
+(license)e(is)i(included)d(in)j(the)f(section)f(entitled)g(``GNU)234
+644 y(Free)h(Documentat)o(ion)e(License'')o(.)137 705
+y Ft(If)k(y)o(ou)g(ha)o(v)o(e)g(In)o(v)m(arian)o(t)g(Sections,)h(F)l
+(ron)o(t-Co)o(v)o(er)e(T)l(exts)g(and)h(Bac)o(k-Co)o(v)o(er)f(T)l
+(exts,)i(replace)g(the)75 760 y(\\with...T)l(exts.")d(line)f(with)f
+(this:)273 816 y Fd(with)j(the)f(Invariant)e(Sections)h(being)g
+Fc(list)h(their)g(titles)p Fd(,)f(with)273 860 y(the)i(Front-Cov)o(er)d
+(Texts)i(being)g Fc(list)p Fd(,)f(and)i(with)f(the)g(Back-Cover)e
+(Texts)273 903 y(being)i Fc(list)p Fd(.)137 964 y Ft(If)g(y)o(ou)f(ha)o
+(v)o(e)h(In)o(v)m(arian)o(t)g(Sections)g(without)g(Co)o(v)o(er)e(T)l
+(exts,)i(or)f(some)g(other)g(com)o(bination)i(of)e(the)75
+1019 y(three,)e(merge)g(those)g(t)o(w)o(o)f(alternativ)o(es)h(to)g
+(suit)g(the)g(situation.)137 1086 y(If)d(y)o(our)g(do)q(cumen)o(t)g
+(con)o(tains)g(non)o(trivial)h(examples)g(of)e(program)g(co)q(de,)i(w)o
+(e)f(recommend)g(releasing)75 1141 y(these)22 b(examples)g(in)g
+(parallel)i(under)e(y)o(our)f(c)o(hoice)h(of)f(free)h(soft)o(w)o(are)e
+(license,)k(suc)o(h)e(as)g(the)f(GNU)75 1196 y(General)16
+b(Public)h(License,)f(to)f(p)q(ermit)h(their)f(use)h(in)g(free)f(soft)o
+(w)o(are.)p eop
+%%Page: 62 66
+62 65 bop 75 -58 a Ft(62)1299 b(GNU)15 b(Readline)h(Library)p
+eop
+%%Page: 63 67
+63 66 bop 75 -58 a Ft(Concept)15 b(Index)1466 b(63)75
+149 y Fp(Concept)27 b(Index)75 319 y Fr(A)75 380 y Fb(application)q
+(-sp)q(eci)q(\014c)16 b(completion)f(functions)5 b Fa(.)j(.)e(.)g(.)g
+(.)g(.)h(.)17 b Fb(41)75 511 y Fr(C)75 571 y Fb(command)d(editing)e
+Fa(.)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
+Fb(1)75 703 y Fr(E)75 763 y Fb(editing)15 b(command)f(lines)f
+Fa(.)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 Fb(1)75 895 y Fr(F)75
+955 y Fb(FDL,)13 b(GNU)f(F)m(ree)h(Do)q(cumen)o(tation)j(License)6
+b Fa(.)h(.)f(.)g(.)g(.)g(.)h(.)18 b Fb(55)75 1086 y Fr(I)75
+1147 y Fb(initiali)q(zati)q(on)e(\014le,)e(readline)t
+Fa(.)8 b(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)17 b Fb(4)75 1192 y(in)o(teraction,)e(readline)5
+b Fa(.)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 Fb(1)1012
+319 y Fr(K)1012 380 y Fb(kill)d(ring)8 b Fa(.)f(.)g(.)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(.)g(.)g(.)21
+b Fb(3)1012 424 y(killin)q(g)16 b(text)9 b Fa(.)d(.)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(.)h(.)f(.)g(.)g(.)22 b Fb(2)1012
+556 y Fr(N)1012 616 y Fb(notation,)15 b(readline)7 b
+Fa(.)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 Fb(1)1012
+748 y Fr(R)1012 808 y Fb(readline,)15 b(function)8 b
+Fa(.)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 Fb(21)1012
+939 y Fr(V)1012 1000 y Fb(v)n(ariables,)15 b(readline)t
+Fa(.)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
+Fb(5)1012 1131 y Fr(Y)1012 1192 y Fb(y)o(anking)e(text)t
+Fa(.)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 Fb(2)p eop
+%%Page: 64 68
+64 67 bop 75 -58 a Ft(64)1299 b(GNU)15 b(Readline)h(Library)p
+eop
+%%Page: 65 69
+65 68 bop 75 -58 a Ft(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
+b(65)75 149 y Fp(F)-7 b(unction)26 b(and)h(V)-7 b(ariable)26
+b(Index)p 80 305 21 3 v 75 366 a Fd(_rl_digit_)o(p)7
+b Fa(.)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 Fb(36)75 411 y Fd(_rl_digit_)o(va)o(lue)6 b Fa(.)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 Fb(36)75 456 y Fd(_rl_lowerc)o(as)o(e_p)6
+b Fa(.)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 Fb(36)75
+501 y Fd(_rl_to_low)o(er)6 b Fa(.)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 Fb(36)75 546 y Fd(_rl_to_upp)o(er)6
+b Fa(.)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 Fb(36)75 591 y Fd(_rl_upperc)o(as)o(e_p)6 b Fa(.)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 Fb(36)75 724 y Fr(A)75 785 y
+Fd(abort)11 b(\(C-g\))5 b Fa(.)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 Fb(18)75 830 y Fd(accept-lin)o(e)10
+b(\(Newline)f(or)j(Return\))6 b Fa(.)t(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)19 b Fb(13)75 963 y Fr(B)75 1024 y Fd(backward-c)o(ha)o(r)10
+b(\(C-b\))e Fa(.)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 Fb(13)75
+1069 y Fd(backward-d)o(el)o(ete)o(-c)o(har)9 b(\(Rubout\))e
+Fa(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)22
+b Fb(15)75 1114 y Fd(backward-k)o(il)o(l-l)o(in)o(e)10
+b(\(C-x)h(Rubout\))e Fa(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)24
+b Fb(16)75 1159 y Fd(backward-k)o(il)o(l-w)o(or)o(d)10
+b(\(M-)501 1157 y Fk(h)p 512 1131 73 2 v 512 1159 a Fj(DEL)p
+512 1167 V 583 1157 a Fk(i)598 1159 y Fd(\))g Fa(.)c(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)23 b Fb(16)75 1204 y
+Fd(backward-w)o(or)o(d)10 b(\(M-b\))e Fa(.)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 Fb(13)75 1249 y Fd(beginning-)o(of)o(-hi)o(st)o(ory)9
+b(\(M-<\))h Fa(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)25 b Fb(14)75 1294 y Fd(beginning-)o(of)o(-li)o(ne)9
+b(\(C-a\))c Fa(.)t(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)18 b Fb(13)75 1339 y(b)q(ell-st)o(yle)7
+b Fa(.)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 Fb(5)75 1471 y Fr(C)75 1532 y Fd(call-last-)o(kb)o(d-m)
+o(ac)o(ro)9 b(\(C-x)j(e\))5 b Fa(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)18 b Fb(18)75 1577 y Fd(capitalize)o(-w)o(ord)9
+b(\(M-c\))d Fa(.)f(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Fb(15)75 1622 y Fd(character-)o(se)
+o(arc)o(h)10 b(\(C-]\))c Fa(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)18 b Fb(18)75
+1667 y Fd(character-)o(se)o(arc)o(h-)o(bac)o(kwa)o(rd)9
+b(\(M-C-]\))e Fa(.)s(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)20
+b Fb(19)75 1712 y Fd(clear-scre)o(en)9 b(\(C-l\))g Fa(.)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 Fb(13)75 1757 y(commen)o(t-b)q(egin)9
+b Fa(.)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 Fb(5)75 1802 y Fd(complete)10 b(\()265 1800 y Fk(h)p
+276 1774 74 2 v 276 1802 a Fj(T)m(AB)p 276 1810 V 348
+1800 a Fk(i)363 1802 y Fd(\))f Fa(.)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 Fb(17)75 1847 y(completion-query-i)q(tems)t Fa(.)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 Fb(5)75 1892 y(con)o(v)o(ert-meta)10
+b Fa(.)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 Fb(5)75 1937 y Fd(copy-backw)o(ar)o(d-w)o(or)o(d)10
+b(\(\))c Fa(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Fb(16)75 1982 y Fd(copy-forwa)o(rd)o
+(-wo)o(rd)9 b(\(\))e Fa(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Fb(16)75
+2027 y Fd(copy-regio)o(n-)o(as-)o(ki)o(ll)9 b(\(\))d
+Fa(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)h(.)18 b Fb(16)75 2160 y Fr(D)75 2221 y Fd(delete-cha)o(r)10
+b(\(C-d\))d Fa(.)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 Fb(15)75
+2266 y Fd(delete-cha)o(r-)o(or-)o(li)o(st)9 b(\(\))d
+Fa(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)h(.)18 b Fb(17)75 2311 y Fd(delete-hor)o(iz)o(ont)o(al)o
+(-sp)o(ace)9 b(\(\))i Fa(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)25 b Fb(16)75 2356 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 Fa(.)e(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)20 b Fb(17)75
+2401 y(disable-comple)q(tion)9 b Fa(.)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 Fb(5)75 2446 y Fd(do-upperca)o(se)o(-ve)o(rs)o(ion)9
+b(\(M-a,)i(M-b,)g(M-)p Fc(x)p Fd(,)g(...)o(\))159 2490
+y Fa(.)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 Fb(18)75 2535 y Fd(downcase-w)o(or)o(d)10
+b(\(M-l\))e Fa(.)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 Fb(15)75
+2580 y Fd(dump-funct)o(io)o(ns)9 b(\(\))g Fa(.)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 Fb(19)75 2625 y Fd(dump-macro)o(s)10 b(\(\))g
+Fa(.)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 Fb(19)75
+2670 y Fd(dump-varia)o(bl)o(es)9 b(\(\))g Fa(.)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 Fb(19)1012 305 y Fr(E)1012 364 y Fb(editing-mo)q(de)12
+b Fa(.)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 Fb(5)1012 407 y Fd(emacs-editi)o(ng)o(-mo)o(de)9 b(\(C-e\))t
+Fa(.)c(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)18 b Fb(19)1012 451 y(enable-k)o(eypad)9 b Fa(.)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 Fb(5)1012
+495 y Fd(end-kbd-mac)o(ro)9 b(\(C-x)i(\)\))e Fa(.)e(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)23
+b Fb(18)1012 539 y Fd(end-of-hist)o(or)o(y)10 b(\(M->\))d
+Fa(.)t(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)20 b Fb(14)1012 583 y Fd(end-of-line)9
+b(\(C-e\))e Fa(.)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 Fb(13)1012
+626 y Fd(exchange-po)o(in)o(t-a)o(nd)o(-ma)o(rk)9 b(\(C-x)j(C-x\))c
+Fa(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)24 b Fb(18)1012
+670 y(expand-tilde)6 b Fa(.)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 Fb(5)1012 796 y Fr(F)1012 854
+y Fd(forward-bac)o(kw)o(ard)o(-d)o(ele)o(te)o(-ch)o(ar)9
+b(\(\))f Fa(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)22
+b Fb(15)1012 898 y Fd(forward-cha)o(r)10 b(\(C-f\))f
+Fa(.)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 Fb(13)1012 942 y
+Fd(forward-sea)o(rc)o(h-h)o(is)o(tor)o(y)10 b(\(C-s\))e
+Fa(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)24
+b Fb(14)1012 986 y Fd(forward-wor)o(d)10 b(\(M-f\))f
+Fa(.)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 Fb(13)1012 1107 y
+Fr(H)1012 1166 y Fb(history-preserv)o(e-p)q(oi)q(n)o(t)8
+b Fa(.)h(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21 b Fb(5)1012 1210 y
+Fd(history-sea)o(rc)o(h-b)o(ac)o(kwa)o(rd)9 b(\(\))i
+Fa(.)c(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)25
+b Fb(14)1012 1253 y Fd(history-sea)o(rc)o(h-f)o(or)o(war)o(d)10
+b(\(\))s Fa(.)c(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)17 b Fb(14)1012 1297 y(horizon)o(tal-scrol)q(l-mo)r(de)6
+b Fa(.)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 Fb(6)1012 1415 y
+Fr(I)1012 1473 y Fb(input-meta)8 b Fa(.)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 Fb(6)1012 1517
+y Fd(insert-comm)o(en)o(t)10 b(\(M-#\))d Fa(.)t(.)f(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20
+b Fb(19)1012 1561 y Fd(insert-comp)o(le)o(tio)o(ns)9
+b(\(M-*\))t Fa(.)c(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)18 b Fb(17)1012 1605 y(isearc)o(h-terminators)t
+Fa(.)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 Fb(6)1012
+1722 y Fr(K)1012 1780 y Fb(k)o(eymap)9 b Fa(.)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 Fb(6)1012 1824 y Fd(kill-line)10 b(\(C-k\))f Fa(.)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 Fb(16)1012 1868 y Fd(kill-region)9
+b(\(\))i Fa(.)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 Fb(16)1012 1912 y Fd(kill-whole-)o(li)o(ne)9 b(\(\))g
+Fa(.)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 Fb(16)1012 1956 y
+Fd(kill-word)10 b(\(M-d\))f Fa(.)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 Fb(16)1012 2077 y Fr(M)1012 2136 y Fb(mark-mo)q(di\014ed-li)q(nes)
+8 b Fa(.)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 Fb(6)1012
+2180 y(mark-symlink)o(ed-di)q(rectori)q(es)14 b Fa(.)6
+b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)23 b Fb(6)1012 2223 y(matc)o(h-hidden-\014l)q(es)14
+b Fa(.)6 b(.)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(.)24 b Fb(6)1012
+2267 y Fd(menu-comple)o(te)9 b(\(\))g Fa(.)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 Fb(17)1012 2311 y(meta-\015ag)t Fa(.)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 Fb(6)1012 2437 y Fr(N)1012 2495 y Fd(next-histor)o(y)10
+b(\(C-n\))f Fa(.)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 Fb(14)1012
+2539 y Fd(non-increme)o(nt)o(al-)o(fo)o(rwa)o(rd)o(-se)o(arc)o(h-)o
+(his)o(to)o(ry)10 b(\(M-n\))1096 2583 y Fa(.)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(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20
+b Fb(14)1012 2626 y Fd(non-increme)o(nt)o(al-)o(re)o(ver)o(se)o(-se)o
+(arc)o(h-)o(his)o(to)o(ry)10 b(\(M-p\))1096 2670 y Fa(.)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(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
+(.)20 b Fb(14)p eop
+%%Page: 66 70
+66 69 bop 75 -58 a Ft(66)1299 b(GNU)15 b(Readline)h(Library)75
+149 y Fr(O)75 209 y Fb(output-meta)5 b Fa(.)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 Fb(7)75 253
+y Fd(overwrite-)o(mo)o(de)9 b(\(\))g Fa(.)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 Fb(15)75 377 y Fr(P)75 436 y Fb(page-completions)14
+b Fa(.)6 b(.)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(.)23
+b Fb(7)75 480 y Fd(possible-c)o(om)o(ple)o(ti)o(ons)9
+b(\(M-?\))h Fa(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)25 b Fb(17)75 525 y Fd(prefix-met)o(a)10 b(\()324
+523 y Fk(h)p 335 496 70 2 v 335 525 a Fj(ESC)p 335 532
+V 402 523 a Fk(i)417 525 y Fd(\))g Fa(.)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 Fb(18)75 569 y Fd(previous-h)o(is)o(tor)o(y)10 b(\(C-p\))c
+Fa(.)t(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)h(.)18 b Fb(14)75 698 y Fr(Q)75 757 y Fd(quoted-ins)o(er)o
+(t)10 b(\(C-q)h(or)h(C-v\))c Fa(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)f(.)22 b Fb(15)75 886 y Fr(R)75
+945 y Fd(re-read-in)o(it)o(-fi)o(le)9 b(\(C-x)i(C-r\))5
+b Fa(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)18
+b Fb(18)75 990 y Fd(readline)s Fa(.)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 Fb(21)75 1034
+y Fd(redraw-cur)o(re)o(nt-)o(li)o(ne)9 b(\(\))d Fa(.)g(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)18
+b Fb(13)75 1078 y Fd(reverse-se)o(ar)o(ch-)o(hi)o(sto)o(ry)9
+b(\(C-r\))g Fa(.)d(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)23
+b Fb(14)75 1122 y Fd(revert-lin)o(e)10 b(\(M-r\))d Fa(.)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 Fb(18)75 1166 y Fd(rl_add_def)o(un)6
+b Fa(.)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 Fb(28)75 1211 y Fd(rl_add_fun)o(ma)o(p_e)o(nt)o(ry)t
+Fa(.)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 Fb(31)75 1255 y Fd(rl_add_und)o(o)7
+b Fa(.)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 Fb(32)75 1299 y Fd(rl_alphabe)o(ti)o(c)9 b Fa(.)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 Fb(36)75 1343 y Fd(rl_already)o(_p)o(rom)o
+(pt)o(ed)t Fa(.)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 Fb(25)75
+1388 y Fd(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_f)o(unc)o(ti)o(on)t
+Fa(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17 b Fb(43)75
+1432 y Fd(rl_attempt)o(ed)o(_co)o(mp)o(let)o(ion)o(_o)o(ver)6
+b Fa(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20
+b Fb(46)75 1476 y Fd(rl_basic_q)o(uo)o(te_)o(ch)o(ara)o(cte)o(rs)8
+b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+22 b Fb(44)75 1520 y Fd(rl_basic_w)o(or)o(d_b)o(re)o(ak_)o(cha)o(ra)o
+(cte)o(rs)5 b Fa(.)s(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18
+b Fb(44)75 1564 y Fd(rl_begin_u)o(nd)o(o_g)o(ro)o(up)t
+Fa(.)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 Fb(32)75 1609 y Fd(rl_bind_ke)o(y)7
+b Fa(.)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 Fb(29)75 1653 y Fd(rl_bind_ke)o(y_)o(if_)o(un)o(bou)o(nd)8
+b Fa(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)24 b Fb(29)75 1697 y Fd(rl_bind_ke)o(y_)o(if_)o(un)o(bou)o
+(nd_)o(in)o(_ma)o(p)6 b Fa(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)19 b Fb(29)75 1741 y Fd(rl_bind_ke)o(y_)o(in_)o(ma)o(p)5
+b Fa(.)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 Fb(29)75 1786 y
+Fd(rl_bind_ke)o(ys)o(eq)8 b Fa(.)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 Fb(30)75 1830 y Fd(rl_bind_ke)o(ys)o(eq_)o(if)o(_un)o(bou)o
+(nd)8 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)22 b Fb(30)75 1874 y Fd(rl_bind_ke)o(ys)o(eq_)o(if)o(_un)o(bou)o
+(nd)o(_in)o(_m)o(ap)t Fa(.)s(.)6 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)17
+b Fb(30)75 1918 y Fd(rl_bind_ke)o(ys)o(eq_)o(in)o(_ma)o(p)9
+b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)25 b Fb(30)75 1962 y Fd(rl_binding)o(_k)o(eym)o(ap)5
+b Fa(.)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 Fb(26)75 2007
+y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(ins)o(ta)o(ll)7
+b Fa(.)s(.)g(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)20
+b Fb(37)75 2051 y Fd(rl_callbac)o(k_)o(han)o(dl)o(er_)o(rem)o(ov)o(e)8
+b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21
+b Fb(37)75 2095 y Fd(rl_callbac)o(k_)o(rea)o(d_)o(cha)o(r)9
+b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)25 b Fb(37)75 2139 y Fd(rl_catch_s)o(ig)o(nal)o(s)6
+b Fa(.)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 Fb(40)75
+2184 y Fd(rl_catch_s)o(ig)o(win)o(ch)5 b Fa(.)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 Fb(40)75 2228 y Fd(rl_char_is)o(_q)o(uot)o(ed)o(_p)t
+Fa(.)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 Fb(44)75 2272 y Fd(rl_cleanup)o(_a)o
+(fte)o(r_)o(sig)o(nal)7 b Fa(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(40)75 2316 y
+Fd(rl_clear_m)o(es)o(sag)o(e)6 b Fa(.)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 Fb(33)75 2360 y Fd(rl_clear_p)o(en)o(din)o(g_)o(inp)o(ut)8
+b Fa(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)24 b Fb(35)75 2405 y Fd(rl_clear_s)o(ig)o(nal)o(s)6
+b Fa(.)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 Fb(41)75
+2449 y Fd(rl_complet)o(e)7 b Fa(.)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 Fb(42)75 2493 y Fd(rl_complet)o(e_)o(int)o(er)o
+(nal)s Fa(.)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 Fb(42)75 2537 y Fd(rl_complet)o(er)
+o(_qu)o(ot)o(e_c)o(har)o(ac)o(ter)o(s)6 b Fa(.)s(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)19 b Fb(45)75 2582 y Fd(rl_complet)o(er)o(_wo)o
+(rd)o(_br)o(eak)o(_c)o(har)o(ac)o(ter)o(s)9 b Fa(.)d(.)g(.)g(.)g(.)g(.)
+h(.)24 b Fb(45)75 2626 y Fd(rl_complet)o(io)o(n_a)o(pp)o(end)o(_ch)o
+(ar)o(act)o(er)5 b Fa(.)s(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)18
+b Fb(45)75 2670 y Fd(rl_complet)o(io)o(n_d)o(is)o(pla)o(y_m)o(at)o(che)
+o(s_)o(hoo)o(k)9 b Fa(.)d(.)g(.)g(.)g(.)g(.)h(.)24 b
+Fb(44)1012 149 y Fd(rl_completi)o(on)o(_en)o(tr)o(y_f)o(un)o(cti)o(on)s
+Fa(.)s(.)6 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)17 b Fb(42,)c(43)1012
+194 y Fd(rl_completi)o(on)o(_ma)o(rk)o(_sy)o(ml)o(ink)o(_di)o(rs)t
+Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 b Fb(45)1012
+238 y Fd(rl_completi)o(on)o(_ma)o(tc)o(hes)8 b Fa(.)f(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
+b Fb(42)1012 282 y Fd(rl_completi)o(on)o(_mo)o(de)t Fa(.)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 Fb(42)1012 326 y Fd(rl_completi)o(on)o(_qu)
+o(er)o(y_i)o(te)o(ms)9 b Fa(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)23 b Fb(45)1012 371 y Fd(rl_completi)o(on)o(_su)
+o(pp)o(res)o(s_)o(app)o(end)5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)20 b Fb(45)1012 415 y Fd(rl_completi)o(on)o(_ty)o(pe)t
+Fa(.)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 Fb(46)1012 459 y
+Fd(rl_copy_key)o(ma)o(p)8 b Fa(.)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 Fb(28)1012 503 y Fd(rl_copy_tex)o(t)6 b Fa(.)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 Fb(34)1012 547 y
+Fd(rl_crlf)t Fa(.)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 Fb(33)1012 592 y Fd(rl_delete_t)o(ex)o(t)8
+b Fa(.)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
+Fb(34)1012 636 y Fd(rl_deprep_t)o(er)o(m_f)o(un)o(cti)o(on)7
+b Fa(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)24 b Fb(26)1012 680 y Fd(rl_deprep_t)o(er)o(min)o(al)t
+Fa(.)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 Fb(35)1012 724 y
+Fd(rl_ding)t Fa(.)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 Fb(36)1012 769 y Fd(rl_director)o(y_)o
+(com)o(pl)o(eti)o(on)o(_ho)o(ok)7 b Fa(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)h(.)20 b Fb(44)1012 813 y Fd(rl_discard_)o(ke)o(yma)
+o(p)6 b Fa(.)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 Fb(29)1012
+857 y Fd(rl_dispatch)o(in)o(g)8 b Fa(.)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 Fb(24)1012 901 y Fd(rl_display_)o(ma)o(tch)o(_l)o(ist)8
+b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)h(.)25 b Fb(36)1012 945 y Fd(rl_do_undo)8
+b Fa(.)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 Fb(32)1012 990 y Fd(rl_done)t Fa(.)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 Fb(24)1012
+1034 y Fd(rl_editing_)o(mo)o(de)7 b Fa(.)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 Fb(28)1012 1078 y Fd(rl_end)5 b Fa(.)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 Fb(24)1012 1122 y Fd(rl_end_undo)o(_g)o(rou)o(p)6 b
+Fa(.)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 Fb(32)1012 1167
+y Fd(rl_erase_em)o(pt)o(y_l)o(in)o(e)t Fa(.)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 Fb(24)1012 1211 y Fd(rl_event_ho)o(ok)8 b Fa(.)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 Fb(26)1012 1255 y Fd(rl_execute_)o(ne)o
+(xt)7 b Fa(.)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 Fb(34)1012 1299 y Fd(rl_executin)o(g_)o(key)o(ma)o(p)t
+Fa(.)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 Fb(26)1012 1343 y Fd(rl_executin)o(g_)
+o(mac)o(ro)t Fa(.)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 Fb(26)1012
+1388 y Fd(rl_expand_p)o(ro)o(mpt)6 b Fa(.)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 Fb(33)1012 1432 y Fd(rl_explicit)o(_a)o(rg)7
+b Fa(.)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 Fb(27)1012
+1476 y Fd(rl_extend_l)o(in)o(e_b)o(uf)o(fer)8 b Fa(.)f(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
+b Fb(35)1012 1520 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(des)o
+(ire)o(d)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
+b Fb(46)1012 1564 y Fd(rl_filename)o(_c)o(omp)o(le)o(tio)o(n_)o(fun)o
+(cti)o(on)t Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18
+b Fb(43)1012 1609 y Fd(rl_filename)o(_d)o(equ)o(ot)o(ing)o(_f)o(unc)o
+(tio)o(n)5 b Fa(.)s(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
+b Fb(43)1012 1653 y Fd(rl_filename)o(_q)o(uot)o(e_)o(cha)o(ra)o(cte)o
+(rs)7 b Fa(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20
+b Fb(45)1012 1697 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_d)o(es)o(ire)o
+(d)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)21
+b Fb(46)1012 1741 y Fd(rl_filename)o(_q)o(uot)o(in)o(g_f)o(un)o(cti)o
+(on)7 b Fa(.)s(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)20
+b Fb(43)1012 1786 y Fd(rl_forced_u)o(pd)o(ate)o(_d)o(isp)o(la)o(y)7
+b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)23 b Fb(33)1012 1830 y Fd(rl_free_lin)o(e_)o(sta)o(te)t
+Fa(.)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 Fb(40)1012 1874
+y Fd(rl_free_und)o(o_)o(lis)o(t)6 b Fa(.)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 Fb(32)1012 1918 y Fd(rl_function)o(_d)o(ump)o(er)t
+Fa(.)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 Fb(31)1012 1962
+y Fd(rl_function)o(_o)o(f_k)o(ey)o(seq)8 b Fa(.)f(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
+b Fb(31)1012 2007 y Fd(rl_funmap_n)o(am)o(es)7 b Fa(.)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 Fb(31)1012 2051 y Fd(rl_generic_)o(bi)o(nd)7
+b Fa(.)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 Fb(30)1012
+2095 y Fd(rl_get_keym)o(ap)8 b Fa(.)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 Fb(29)1012 2139 y Fd(rl_get_keym)o(ap)o(_by)o(_n)o
+(ame)8 b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)25 b Fb(29)1012 2184 y Fd(rl_get_keym)o(ap)o
+(_na)o(me)t Fa(.)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 Fb(29)1012
+2228 y Fd(rl_get_scre)o(en)o(_si)o(ze)t Fa(.)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 Fb(40)1012 2272 y Fd(rl_get_term)o(ca)o(p)8 b
+Fa(.)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 Fb(37)1012
+2316 y Fd(rl_getc)t Fa(.)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 Fb(34)1012 2360 y
+Fd(rl_getc_fun)o(ct)o(ion)6 b Fa(.)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 Fb(26)1012 2405 y Fd(rl_gnu_read)o(li)o(ne_)o(p)6 b
+Fa(.)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 Fb(25)1012 2449
+y Fd(rl_ignore_c)o(om)o(ple)o(ti)o(on_)o(du)o(pli)o(cat)o(es)t
+Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)18 b Fb(45)1012
+2493 y Fd(rl_ignore_s)o(om)o(e_c)o(om)o(ple)o(ti)o(ons)o(_fu)o(nc)o
+(tio)o(n)8 b Fa(.)e(.)g(.)g(.)g(.)h(.)24 b Fb(44)1012
+2537 y Fd(rl_inhibit_)o(co)o(mpl)o(et)o(ion)8 b Fa(.)f(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25
+b Fb(46)1012 2582 y Fd(rl_initiali)o(ze)8 b Fa(.)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 Fb(35)1012 2626 y Fd(rl_insert_c)o(om)o
+(ple)o(ti)o(ons)8 b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)25 b Fb(42)1012 2670
+y Fd(rl_insert_t)o(ex)o(t)8 b Fa(.)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 Fb(34)p eop
+%%Page: 67 71
+67 70 bop 75 -58 a Ft(F)l(unction)16 b(and)f(V)l(ariable)i(Index)1187
+b(67)75 149 y Fd(rl_instrea)o(m)7 b Fa(.)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 Fb(25)75 194 y Fd(rl_invokin)o(g_)o(key)o
+(se)o(qs)t Fa(.)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 Fb(31)75
+238 y Fd(rl_invokin)o(g_)o(key)o(se)o(qs_)o(in_)o(ma)o(p)8
+b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)21
+b Fb(31)75 282 y Fd(rl_kill_te)o(xt)6 b Fa(.)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 Fb(34)75 326 y Fd(rl_last_fu)o(nc)6
+b Fa(.)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 Fb(25)75 371 y Fd(rl_library)o(_v)o(ers)o(io)o(n)5
+b Fa(.)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 Fb(25)75 415 y Fd(rl_line_bu)o(ff)
+o(er)8 b Fa(.)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 Fb(24)75 459 y Fd(rl_list_fu)o(nm)o(ap_)o(na)o(mes)s
+Fa(.)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 Fb(31)75 503 y Fd(rl_macro_b)o(in)o(d)9
+b Fa(.)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 Fb(36)75 548 y Fd(rl_macro_d)o(um)o(per)6 b Fa(.)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 Fb(36)75 592 y Fd(rl_make_ba)o(re)o(_ke)o(ym)o
+(ap)t Fa(.)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 Fb(28)75 636
+y Fd(rl_make_ke)o(ym)o(ap)8 b Fa(.)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 Fb(28)75 680 y Fd(rl_mark)t Fa(.)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 Fb(24)75 725 y Fd(rl_message)7 b Fa(.)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 Fb(33)75 769 y Fd(rl_modifyi)o(ng)6
+b Fa(.)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 Fb(32)75 813 y Fd(rl_named_f)o(un)o(cti)o(on)5 b Fa(.)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 Fb(31)75 858 y Fd(rl_num_cha)o(rs)o(_to)o(_r)o
+(ead)s Fa(.)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 Fb(24)75 902 y Fd(rl_numeric)o(_a)o
+(rg)8 b Fa(.)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 Fb(28)75 946 y Fd(rl_on_new_)o(li)o(ne)8 b Fa(.)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 Fb(33)75 990 y Fd(rl_on_new_)o(li)o(ne_)o(wi)o
+(th_)o(pro)o(mp)o(t)8 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)21 b Fb(33)75 1035 y Fd(rl_outstre)o(am)6
+b Fa(.)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 Fb(25)75 1079 y Fd(rl_parse_a)o(nd)o(_bi)o(nd)5 b Fa(.)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 Fb(30)75 1123 y Fd(rl_pending)o(_i)o(npu)o(t)6
+b Fa(.)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 Fb(24)75
+1167 y Fd(rl_point)s Fa(.)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 Fb(24)75 1212 y Fd(rl_possibl)o(e_)o
+(com)o(pl)o(eti)o(ons)7 b Fa(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)23 b Fb(42)75 1256 y
+Fd(rl_pre_inp)o(ut)o(_ho)o(ok)5 b Fa(.)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 Fb(25)75 1300 y Fd(rl_prep_te)o(rm)o(_fu)o(nc)o(tio)o(n)9
+b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)25 b Fb(26)75 1344 y Fd(rl_prep_te)o(rm)o(ina)o(l)6
+b Fa(.)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 Fb(35)75
+1389 y Fd(rl_prompt)8 b Fa(.)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 Fb(25)75 1433 y Fd(rl_push_ma)o(cr)o(o_i)o(np)
+o(ut)t Fa(.)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 Fb(34)75 1477
+y Fd(rl_read_in)o(it)o(_fi)o(le)5 b Fa(.)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 Fb(31)75 1521 y Fd(rl_read_ke)o(y)7 b Fa(.)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 Fb(34)75 1566 y
+Fd(rl_readlin)o(e_)o(nam)o(e)6 b Fa(.)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 Fb(25)75 1610 y Fd(rl_readlin)o(e_)o(sta)o(te)5
+b Fa(.)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 Fb(26)75 1654
+y Fd(rl_readlin)o(e_)o(ver)o(si)o(on)t Fa(.)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 Fb(25)75 1698 y Fd(rl_redispl)o(ay)6 b Fa(.)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 Fb(32)75 1743 y Fd(rl_redispl)o(ay)o(_fu)o
+(nc)o(tio)o(n)9 b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)25 b Fb(26)75 1787 y
+Fd(rl_replace)o(_l)o(ine)6 b Fa(.)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 Fb(35)75 1831 y Fd(rl_reset_a)o(ft)o(er_)o(si)o(gna)o(l)9
+b Fa(.)d(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)25 b Fb(40)75 1875 y Fd(rl_reset_l)o(in)o(e_s)o(ta)o
+(te)t Fa(.)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 Fb(33)75 1920
+y Fd(rl_reset_t)o(er)o(min)o(al)5 b Fa(.)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 Fb(35)75 1964 y Fd(rl_resize_)o(te)o(rmi)o(na)o(l)5
+b Fa(.)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 Fb(40)75 2008 y
+Fd(rl_restore)o(_p)o(rom)o(pt)5 b Fa(.)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 Fb(33)75 2052 y Fd(rl_save_pr)o(om)o(pt)8 b Fa(.)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 Fb(33)75 2097 y Fd(rl_set_key)7
+b Fa(.)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 Fb(30)75 2141 y Fd(rl_set_key)o(bo)o(ard)o(_i)o(npu)o(t_t)o(im)o(eou)
+o(t)6 b Fa(.)s(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)19
+b Fb(35)75 2185 y Fd(rl_set_key)o(ma)o(p)9 b Fa(.)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 Fb(29)75 2229 y Fd(rl_set_par)o(en)o(_bl)o
+(in)o(k_t)o(ime)o(ou)o(t)8 b Fa(.)t(.)e(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)21 b Fb(37)75 2274 y Fd(rl_set_pro)o(mp)o(t)9
+b Fa(.)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 Fb(34)75 2318 y Fd(rl_set_scr)o(ee)o(n_s)o(iz)o(e)5
+b Fa(.)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 Fb(40)1012 149 y
+Fd(rl_set_sign)o(al)o(s)8 b Fa(.)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 Fb(41)1012 193 y Fd(rl_show_cha)o(r)6 b Fa(.)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 Fb(33)1012 237 y
+Fd(rl_special_)o(pr)o(efi)o(xe)o(s)t Fa(.)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 Fb(45)1012 280 y Fd(rl_startup_)o(ho)o(ok)7 b Fa(.)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 Fb(25)1012 324 y Fd(rl_stuff_ch)o(ar)8
+b Fa(.)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 Fb(34)1012 367 y Fd(rl_terminal)o(_n)o(ame)6 b Fa(.)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 Fb(25)1012 411 y Fd(rl_tty_set_)o(de)o(fau)o(lt)o
+(_bi)o(nd)o(ing)o(s)8 b Fa(.)s(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)21 b Fb(35)1012 455 y Fd(rl_tty_unse)o(t_)o(def)o(au)o
+(lt_)o(bi)o(ndi)o(ngs)5 b Fa(.)t(.)h(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)20 b Fb(35)1012 498 y Fd(rl_unbind_c)o(om)o(man)o(d_)o(in_)o
+(ma)o(p)7 b Fa(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)23 b Fb(30)1012 542 y Fd(rl_unbind_f)o(un)o(cti)o(on)o
+(_in)o(_m)o(ap)9 b Fa(.)s(.)d(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)23 b Fb(30)1012 585 y Fd(rl_unbind_k)o(ey)8
+b Fa(.)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 Fb(30)1012 629 y Fd(rl_unbind_k)o(ey)o(_in)o(_m)o(ap)s
+Fa(.)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 Fb(30)1012 673 y Fd(rl_username)o(_c)o
+(omp)o(le)o(tio)o(n_)o(fun)o(cti)o(on)t Fa(.)s(.)7 b(.)f(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)18 b Fb(43)1012 716 y Fd(rl_variable)o(_b)o(ind)6
+b Fa(.)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 Fb(37)1012
+760 y Fd(rl_variable)o(_d)o(ump)o(er)t Fa(.)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 Fb(37)1012 886 y Fr(S)1012 944 y Fd(self-insert)9
+b(\(a,)j(b,)g(A,)g(1,)g(!,)g(...)o(\))6 b Fa(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 987 y Fd(set-mark)10
+b(\(C-@\))g Fa(.)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 Fb(18)1012 1031 y(sho)o(w-all-if-am)o(bigu)q(ous)14
+b Fa(.)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 Fb(7)1012 1074
+y(sho)o(w-all-if-unmo)q(di)q(\014ed)7 b Fa(.)i(.)d(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+19 b Fb(7)1012 1118 y Fd(start-kbd-m)o(ac)o(ro)9 b(\(C-x)j(\(\))c
+Fa(.)d(.)i(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)22 b Fb(18)1012 1238 y Fr(T)1012 1296 y Fd(tab-insert)9
+b(\(M-)1281 1294 y Fk(h)p 1292 1268 74 2 v 1292 1296
+a Fj(T)m(AB)p 1292 1304 V 1364 1294 a Fk(i)1379 1296
+y Fd(\))e Fa(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)20 b Fb(15)1012 1340
+y Fd(tilde-expan)o(d)10 b(\(M-~\))f Fa(.)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 Fb(18)1012 1384 y Fd(transpose-c)o(ha)o(rs)9 b(\(C-t\))d
+Fa(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 1427 y Fd(transpose-w)o(or)o(ds)9
+b(\(M-t\))d Fa(.)f(.)h(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Fb(15)1012 1553 y
+Fr(U)1012 1611 y Fd(undo)12 b(\(C-_)f(or)h(C-x)g(C-u\))c
+Fa(.)t(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)21 b Fb(18)1012 1655 y Fd(universal-a)o(rg)o
+(ume)o(nt)9 b(\(\))d Fa(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)20 b Fb(17)1012
+1698 y Fd(unix-line-d)o(is)o(car)o(d)10 b(\(C-u\))5 b
+Fa(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)18 b Fb(16)1012 1742 y Fd(unix-word-r)o(ub)o(out)9
+b(\(C-w\))d Fa(.)t(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)19 b Fb(16)1012 1785 y Fd(upcase-word)9
+b(\(M-u\))e Fa(.)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 Fb(15)1012
+1911 y Fr(V)1012 1969 y Fd(vi-editing-)o(mo)o(de)9 b(\(M-C-j\))c
+Fa(.)t(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)18 b Fb(19)1012 2013 y(visible-stats)c Fa(.)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 Fb(7)1012 2129 y Fr(Y)1012 2187 y Fd(yank)12 b(\(C-y\))5
+b Fa(.)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 Fb(16)1012 2231 y Fd(yank-last-a)o(rg)9 b(\(M-.)i(or)h(M-_\))c
+Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)23
+b Fb(14)1012 2274 y Fd(yank-nth-ar)o(g)10 b(\(M-C-y\))d
+Fa(.)s(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)h(.)20 b Fb(14)1012 2318 y Fd(yank-pop)10
+b(\(M-y\))g Fa(.)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 Fb(17)p eop
+%%Page: 68 72
+68 71 bop 75 -58 a Ft(68)1299 b(GNU)15 b(Readline)h(Library)p
+eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/lib/readline/doc/rlman.aux b/lib/readline/doc/rlman.aux
new file mode 100644
index 00000000..b54c096c
--- /dev/null
+++ b/lib/readline/doc/rlman.aux
@@ -0,0 +1,156 @@
+@xrdef{Command Line Editing-title}{Command Line Editing}
+@xrdef{Command Line Editing-pg}{1}
+@xrdef{Command Line Editing-snt}{Chapter@tie 1}
+@xrdef{Introduction and Notation-title}{Introduction to Line Editing}
+@xrdef{Introduction and Notation-pg}{1}
+@xrdef{Introduction and Notation-snt}{Section@tie 1.1}
+@xrdef{Readline Interaction-title}{Readline Interaction}
+@xrdef{Readline Interaction-pg}{1}
+@xrdef{Readline Interaction-snt}{Section@tie 1.2}
+@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials}
+@xrdef{Readline Bare Essentials-pg}{1}
+@xrdef{Readline Bare Essentials-snt}{Section@tie 1.2.1}
+@xrdef{Readline Movement Commands-title}{Readline Movement Commands}
+@xrdef{Readline Movement Commands-pg}{2}
+@xrdef{Readline Movement Commands-snt}{Section@tie 1.2.2}
+@xrdef{Readline Killing Commands-title}{Readline Killing Commands}
+@xrdef{Readline Killing Commands-pg}{2}
+@xrdef{Readline Killing Commands-snt}{Section@tie 1.2.3}
+@xrdef{Readline Arguments-title}{Readline Arguments}
+@xrdef{Readline Arguments-pg}{3}
+@xrdef{Readline Arguments-snt}{Section@tie 1.2.4}
+@xrdef{Searching-title}{Searching for Commands in the History}
+@xrdef{Searching-pg}{3}
+@xrdef{Searching-snt}{Section@tie 1.2.5}
+@xrdef{Readline Init File-title}{Readline Init File}
+@xrdef{Readline Init File-pg}{4}
+@xrdef{Readline Init File-snt}{Section@tie 1.3}
+@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax}
+@xrdef{Readline Init File Syntax-pg}{4}
+@xrdef{Readline Init File Syntax-snt}{Section@tie 1.3.1}
+@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs}
+@xrdef{Conditional Init Constructs-pg}{9}
+@xrdef{Conditional Init Constructs-snt}{Section@tie 1.3.2}
+@xrdef{Sample Init File-title}{Sample Init File}
+@xrdef{Sample Init File-pg}{10}
+@xrdef{Sample Init File-snt}{Section@tie 1.3.3}
+@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
+@xrdef{Bindable Readline Commands-pg}{13}
+@xrdef{Bindable Readline Commands-snt}{Section@tie 1.4}
+@xrdef{Commands For Moving-title}{Commands For Moving}
+@xrdef{Commands For Moving-pg}{13}
+@xrdef{Commands For Moving-snt}{Section@tie 1.4.1}
+@xrdef{Commands For History-title}{Commands For Manipulating The History}
+@xrdef{Commands For History-pg}{13}
+@xrdef{Commands For History-snt}{Section@tie 1.4.2}
+@xrdef{Commands For Text-title}{Commands For Changing Text}
+@xrdef{Commands For Text-pg}{15}
+@xrdef{Commands For Text-snt}{Section@tie 1.4.3}
+@xrdef{Commands For Killing-title}{Killing And Yanking}
+@xrdef{Commands For Killing-pg}{16}
+@xrdef{Commands For Killing-snt}{Section@tie 1.4.4}
+@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
+@xrdef{Numeric Arguments-pg}{17}
+@xrdef{Numeric Arguments-snt}{Section@tie 1.4.5}
+@xrdef{Commands For Completion-title}{Letting Readline Type For You}
+@xrdef{Commands For Completion-pg}{17}
+@xrdef{Commands For Completion-snt}{Section@tie 1.4.6}
+@xrdef{Keyboard Macros-title}{Keyboard Macros}
+@xrdef{Keyboard Macros-pg}{18}
+@xrdef{Keyboard Macros-snt}{Section@tie 1.4.7}
+@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
+@xrdef{Miscellaneous Commands-pg}{18}
+@xrdef{Miscellaneous Commands-snt}{Section@tie 1.4.8}
+@xrdef{Readline vi Mode-title}{Readline vi Mode}
+@xrdef{Readline vi Mode-pg}{19}
+@xrdef{Readline vi Mode-snt}{Section@tie 1.5}
+@xrdef{Programming with GNU Readline-title}{Programming with GNU Readline}
+@xrdef{Programming with GNU Readline-pg}{21}
+@xrdef{Programming with GNU Readline-snt}{Chapter@tie 2}
+@xrdef{Basic Behavior-title}{Basic Behavior}
+@xrdef{Basic Behavior-pg}{21}
+@xrdef{Basic Behavior-snt}{Section@tie 2.1}
+@xrdef{Custom Functions-title}{Custom Functions}
+@xrdef{Custom Functions-pg}{22}
+@xrdef{Custom Functions-snt}{Section@tie 2.2}
+@xrdef{Readline Typedefs-title}{Readline Typedefs}
+@xrdef{Readline Typedefs-pg}{23}
+@xrdef{Readline Typedefs-snt}{Section@tie 2.2.1}
+@xrdef{Function Writing-title}{Writing a New Function}
+@xrdef{Function Writing-pg}{23}
+@xrdef{Function Writing-snt}{Section@tie 2.2.2}
+@xrdef{Readline Variables-title}{Readline Variables}
+@xrdef{Readline Variables-pg}{24}
+@xrdef{Readline Variables-snt}{Section@tie 2.3}
+@xrdef{Readline Convenience Functions-title}{Readline Convenience Functions}
+@xrdef{Readline Convenience Functions-pg}{28}
+@xrdef{Readline Convenience Functions-snt}{Section@tie 2.4}
+@xrdef{Function Naming-title}{Naming a Function}
+@xrdef{Function Naming-pg}{28}
+@xrdef{Function Naming-snt}{Section@tie 2.4.1}
+@xrdef{Keymaps-title}{Selecting a Keymap}
+@xrdef{Keymaps-pg}{28}
+@xrdef{Keymaps-snt}{Section@tie 2.4.2}
+@xrdef{Binding Keys-title}{Binding Keys}
+@xrdef{Binding Keys-pg}{29}
+@xrdef{Binding Keys-snt}{Section@tie 2.4.3}
+@xrdef{Associating Function Names and Bindings-title}{Associating Function Names and Bindings}
+@xrdef{Associating Function Names and Bindings-pg}{31}
+@xrdef{Associating Function Names and Bindings-snt}{Section@tie 2.4.4}
+@xrdef{Allowing Undoing-title}{Allowing Undoing}
+@xrdef{Allowing Undoing-pg}{32}
+@xrdef{Allowing Undoing-snt}{Section@tie 2.4.5}
+@xrdef{Redisplay-title}{Redisplay}
+@xrdef{Redisplay-pg}{32}
+@xrdef{Redisplay-snt}{Section@tie 2.4.6}
+@xrdef{Modifying Text-title}{Modifying Text}
+@xrdef{Modifying Text-pg}{34}
+@xrdef{Modifying Text-snt}{Section@tie 2.4.7}
+@xrdef{Character Input-title}{Character Input}
+@xrdef{Character Input-pg}{34}
+@xrdef{Character Input-snt}{Section@tie 2.4.8}
+@xrdef{Terminal Management-title}{Terminal Management}
+@xrdef{Terminal Management-pg}{35}
+@xrdef{Terminal Management-snt}{Section@tie 2.4.9}
+@xrdef{Utility Functions-title}{Utility Functions}
+@xrdef{Utility Functions-pg}{35}
+@xrdef{Utility Functions-snt}{Section@tie 2.4.10}
+@xrdef{Miscellaneous Functions-title}{Miscellaneous Functions}
+@xrdef{Miscellaneous Functions-pg}{36}
+@xrdef{Miscellaneous Functions-snt}{Section@tie 2.4.11}
+@xrdef{Alternate Interface-title}{Alternate Interface}
+@xrdef{Alternate Interface-pg}{37}
+@xrdef{Alternate Interface-snt}{Section@tie 2.4.12}
+@xrdef{A Readline Example-title}{A Readline Example}
+@xrdef{A Readline Example-pg}{38}
+@xrdef{A Readline Example-snt}{Section@tie 2.4.13}
+@xrdef{Readline Signal Handling-title}{Readline Signal Handling}
+@xrdef{Readline Signal Handling-pg}{39}
+@xrdef{Readline Signal Handling-snt}{Section@tie 2.5}
+@xrdef{Custom Completers-title}{Custom Completers}
+@xrdef{Custom Completers-pg}{41}
+@xrdef{Custom Completers-snt}{Section@tie 2.6}
+@xrdef{How Completing Works-title}{How Completing Works}
+@xrdef{How Completing Works-pg}{41}
+@xrdef{How Completing Works-snt}{Section@tie 2.6.1}
+@xrdef{Completion Functions-title}{Completion Functions}
+@xrdef{Completion Functions-pg}{42}
+@xrdef{Completion Functions-snt}{Section@tie 2.6.2}
+@xrdef{Completion Variables-title}{Completion Variables}
+@xrdef{Completion Variables-pg}{43}
+@xrdef{Completion Variables-snt}{Section@tie 2.6.3}
+@xrdef{A Short Completion Example-title}{A Short Completion Example}
+@xrdef{A Short Completion Example-pg}{46}
+@xrdef{A Short Completion Example-snt}{Section@tie 2.6.4}
+@xrdef{Copying This Manual-title}{Copying This Manual}
+@xrdef{Copying This Manual-pg}{55}
+@xrdef{Copying This Manual-snt}{Appendix@tie @char65{}}
+@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
+@xrdef{GNU Free Documentation License-pg}{55}
+@xrdef{GNU Free Documentation License-snt}{Section@tie @char65.1}
+@xrdef{Concept Index-title}{Concept Index}
+@xrdef{Concept Index-pg}{63}
+@xrdef{Concept Index-snt}{}
+@xrdef{Function and Variable Index-title}{Function and Variable Index}
+@xrdef{Function and Variable Index-pg}{65}
+@xrdef{Function and Variable Index-snt}{}
diff --git a/lib/readline/doc/rlman.bt b/lib/readline/doc/rlman.bt
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/rlman.bt
diff --git a/lib/readline/doc/rlman.cp b/lib/readline/doc/rlman.cp
new file mode 100644
index 00000000..8b165829
--- /dev/null
+++ b/lib/readline/doc/rlman.cp
@@ -0,0 +1,12 @@
+\entry{interaction, readline}{1}{interaction, readline}
+\entry{notation, readline}{1}{notation, readline}
+\entry{command editing}{1}{command editing}
+\entry{editing command lines}{1}{editing command lines}
+\entry{killing text}{2}{killing text}
+\entry{yanking text}{2}{yanking text}
+\entry{kill ring}{3}{kill ring}
+\entry{initialization file, readline}{4}{initialization file, readline}
+\entry{variables, readline}{5}{variables, readline}
+\entry{readline, function}{21}{readline, function}
+\entry{application-specific completion functions}{41}{application-specific completion functions}
+\entry{FDL, GNU Free Documentation License}{55}{FDL, GNU Free Documentation License}
diff --git a/lib/readline/doc/rlman.cps b/lib/readline/doc/rlman.cps
new file mode 100644
index 00000000..f4ec8c77
--- /dev/null
+++ b/lib/readline/doc/rlman.cps
@@ -0,0 +1,22 @@
+\initial {A}
+\entry {application-specific completion functions}{41}
+\initial {C}
+\entry {command editing}{1}
+\initial {E}
+\entry {editing command lines}{1}
+\initial {F}
+\entry {FDL, GNU Free Documentation License}{55}
+\initial {I}
+\entry {initialization file, readline}{4}
+\entry {interaction, readline}{1}
+\initial {K}
+\entry {kill ring}{3}
+\entry {killing text}{2}
+\initial {N}
+\entry {notation, readline}{1}
+\initial {R}
+\entry {readline, function}{21}
+\initial {V}
+\entry {variables, readline}{5}
+\initial {Y}
+\entry {yanking text}{2}
diff --git a/lib/readline/doc/rlman.fn b/lib/readline/doc/rlman.fn
new file mode 100644
index 00000000..114fdd07
--- /dev/null
+++ b/lib/readline/doc/rlman.fn
@@ -0,0 +1,263 @@
+\entry{bell-style}{5}{bell-style}
+\entry{comment-begin}{5}{comment-begin}
+\entry{completion-query-items}{5}{completion-query-items}
+\entry{convert-meta}{5}{convert-meta}
+\entry{disable-completion}{5}{disable-completion}
+\entry{editing-mode}{5}{editing-mode}
+\entry{enable-keypad}{5}{enable-keypad}
+\entry{expand-tilde}{5}{expand-tilde}
+\entry{history-preserve-point}{5}{history-preserve-point}
+\entry{horizontal-scroll-mode}{6}{horizontal-scroll-mode}
+\entry{input-meta}{6}{input-meta}
+\entry{meta-flag}{6}{meta-flag}
+\entry{isearch-terminators}{6}{isearch-terminators}
+\entry{keymap}{6}{keymap}
+\entry{mark-modified-lines}{6}{mark-modified-lines}
+\entry{mark-symlinked-directories}{6}{mark-symlinked-directories}
+\entry{match-hidden-files}{6}{match-hidden-files}
+\entry{output-meta}{7}{output-meta}
+\entry{page-completions}{7}{page-completions}
+\entry{show-all-if-ambiguous}{7}{show-all-if-ambiguous}
+\entry{show-all-if-unmodified}{7}{show-all-if-unmodified}
+\entry{visible-stats}{7}{visible-stats}
+\entry{beginning-of-line (C-a)}{13}{\code {beginning-of-line (C-a)}}
+\entry{end-of-line (C-e)}{13}{\code {end-of-line (C-e)}}
+\entry{forward-char (C-f)}{13}{\code {forward-char (C-f)}}
+\entry{backward-char (C-b)}{13}{\code {backward-char (C-b)}}
+\entry{forward-word (M-f)}{13}{\code {forward-word (M-f)}}
+\entry{backward-word (M-b)}{13}{\code {backward-word (M-b)}}
+\entry{clear-screen (C-l)}{13}{\code {clear-screen (C-l)}}
+\entry{redraw-current-line ()}{13}{\code {redraw-current-line ()}}
+\entry{accept-line (Newline or Return)}{13}{\code {accept-line (Newline or Return)}}
+\entry{previous-history (C-p)}{14}{\code {previous-history (C-p)}}
+\entry{next-history (C-n)}{14}{\code {next-history (C-n)}}
+\entry{beginning-of-history (M-<)}{14}{\code {beginning-of-history (M-<)}}
+\entry{end-of-history (M->)}{14}{\code {end-of-history (M->)}}
+\entry{reverse-search-history (C-r)}{14}{\code {reverse-search-history (C-r)}}
+\entry{forward-search-history (C-s)}{14}{\code {forward-search-history (C-s)}}
+\entry{non-incremental-reverse-search-history (M-p)}{14}{\code {non-incremental-reverse-search-history (M-p)}}
+\entry{non-incremental-forward-search-history (M-n)}{14}{\code {non-incremental-forward-search-history (M-n)}}
+\entry{history-search-forward ()}{14}{\code {history-search-forward ()}}
+\entry{history-search-backward ()}{14}{\code {history-search-backward ()}}
+\entry{yank-nth-arg (M-C-y)}{14}{\code {yank-nth-arg (M-C-y)}}
+\entry{yank-last-arg (M-. or M-_)}{14}{\code {yank-last-arg (M-. or M-_)}}
+\entry{delete-char (C-d)}{15}{\code {delete-char (C-d)}}
+\entry{backward-delete-char (Rubout)}{15}{\code {backward-delete-char (Rubout)}}
+\entry{forward-backward-delete-char ()}{15}{\code {forward-backward-delete-char ()}}
+\entry{quoted-insert (C-q or C-v)}{15}{\code {quoted-insert (C-q or C-v)}}
+\entry{tab-insert (M-TAB)}{15}{\code {tab-insert (M-\key {TAB})}}
+\entry{self-insert (a, b, A, 1, !, ...{})}{15}{\code {self-insert (a, b, A, 1, !, \dots {})}}
+\entry{transpose-chars (C-t)}{15}{\code {transpose-chars (C-t)}}
+\entry{transpose-words (M-t)}{15}{\code {transpose-words (M-t)}}
+\entry{upcase-word (M-u)}{15}{\code {upcase-word (M-u)}}
+\entry{downcase-word (M-l)}{15}{\code {downcase-word (M-l)}}
+\entry{capitalize-word (M-c)}{15}{\code {capitalize-word (M-c)}}
+\entry{overwrite-mode ()}{15}{\code {overwrite-mode ()}}
+\entry{kill-line (C-k)}{16}{\code {kill-line (C-k)}}
+\entry{backward-kill-line (C-x Rubout)}{16}{\code {backward-kill-line (C-x Rubout)}}
+\entry{unix-line-discard (C-u)}{16}{\code {unix-line-discard (C-u)}}
+\entry{kill-whole-line ()}{16}{\code {kill-whole-line ()}}
+\entry{kill-word (M-d)}{16}{\code {kill-word (M-d)}}
+\entry{backward-kill-word (M-DEL)}{16}{\code {backward-kill-word (M-\key {DEL})}}
+\entry{unix-word-rubout (C-w)}{16}{\code {unix-word-rubout (C-w)}}
+\entry{delete-horizontal-space ()}{16}{\code {delete-horizontal-space ()}}
+\entry{kill-region ()}{16}{\code {kill-region ()}}
+\entry{copy-region-as-kill ()}{16}{\code {copy-region-as-kill ()}}
+\entry{copy-backward-word ()}{16}{\code {copy-backward-word ()}}
+\entry{copy-forward-word ()}{16}{\code {copy-forward-word ()}}
+\entry{yank (C-y)}{16}{\code {yank (C-y)}}
+\entry{yank-pop (M-y)}{17}{\code {yank-pop (M-y)}}
+\entry{digit-argument (M-0, M-1, ...{} M--)}{17}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
+\entry{universal-argument ()}{17}{\code {universal-argument ()}}
+\entry{complete (TAB)}{17}{\code {complete (\key {TAB})}}
+\entry{possible-completions (M-?)}{17}{\code {possible-completions (M-?)}}
+\entry{insert-completions (M-*)}{17}{\code {insert-completions (M-*)}}
+\entry{menu-complete ()}{17}{\code {menu-complete ()}}
+\entry{delete-char-or-list ()}{17}{\code {delete-char-or-list ()}}
+\entry{start-kbd-macro (C-x ()}{18}{\code {start-kbd-macro (C-x ()}}
+\entry{end-kbd-macro (C-x ))}{18}{\code {end-kbd-macro (C-x ))}}
+\entry{call-last-kbd-macro (C-x e)}{18}{\code {call-last-kbd-macro (C-x e)}}
+\entry{re-read-init-file (C-x C-r)}{18}{\code {re-read-init-file (C-x C-r)}}
+\entry{abort (C-g)}{18}{\code {abort (C-g)}}
+\entry{do-uppercase-version (M-a, M-b, M-x, ...{})}{18}{\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}
+\entry{prefix-meta (ESC)}{18}{\code {prefix-meta (\key {ESC})}}
+\entry{undo (C-_ or C-x C-u)}{18}{\code {undo (C-_ or C-x C-u)}}
+\entry{revert-line (M-r)}{18}{\code {revert-line (M-r)}}
+\entry{tilde-expand (M-~)}{18}{\code {tilde-expand (M-~)}}
+\entry{set-mark (C-@)}{18}{\code {set-mark (C-@)}}
+\entry{exchange-point-and-mark (C-x C-x)}{18}{\code {exchange-point-and-mark (C-x C-x)}}
+\entry{character-search (C-])}{18}{\code {character-search (C-])}}
+\entry{character-search-backward (M-C-])}{19}{\code {character-search-backward (M-C-])}}
+\entry{insert-comment (M-#)}{19}{\code {insert-comment (M-#)}}
+\entry{dump-functions ()}{19}{\code {dump-functions ()}}
+\entry{dump-variables ()}{19}{\code {dump-variables ()}}
+\entry{dump-macros ()}{19}{\code {dump-macros ()}}
+\entry{emacs-editing-mode (C-e)}{19}{\code {emacs-editing-mode (C-e)}}
+\entry{vi-editing-mode (M-C-j)}{19}{\code {vi-editing-mode (M-C-j)}}
+\entry{readline}{21}{\code {readline}}
+\entry{rl_line_buffer}{24}{\code {rl_line_buffer}}
+\entry{rl_point}{24}{\code {rl_point}}
+\entry{rl_end}{24}{\code {rl_end}}
+\entry{rl_mark}{24}{\code {rl_mark}}
+\entry{rl_done}{24}{\code {rl_done}}
+\entry{rl_num_chars_to_read}{24}{\code {rl_num_chars_to_read}}
+\entry{rl_pending_input}{24}{\code {rl_pending_input}}
+\entry{rl_dispatching}{24}{\code {rl_dispatching}}
+\entry{rl_erase_empty_line}{24}{\code {rl_erase_empty_line}}
+\entry{rl_prompt}{25}{\code {rl_prompt}}
+\entry{rl_already_prompted}{25}{\code {rl_already_prompted}}
+\entry{rl_library_version}{25}{\code {rl_library_version}}
+\entry{rl_readline_version}{25}{\code {rl_readline_version}}
+\entry{rl_gnu_readline_p}{25}{\code {rl_gnu_readline_p}}
+\entry{rl_terminal_name}{25}{\code {rl_terminal_name}}
+\entry{rl_readline_name}{25}{\code {rl_readline_name}}
+\entry{rl_instream}{25}{\code {rl_instream}}
+\entry{rl_outstream}{25}{\code {rl_outstream}}
+\entry{rl_last_func}{25}{\code {rl_last_func}}
+\entry{rl_startup_hook}{25}{\code {rl_startup_hook}}
+\entry{rl_pre_input_hook}{25}{\code {rl_pre_input_hook}}
+\entry{rl_event_hook}{26}{\code {rl_event_hook}}
+\entry{rl_getc_function}{26}{\code {rl_getc_function}}
+\entry{rl_redisplay_function}{26}{\code {rl_redisplay_function}}
+\entry{rl_prep_term_function}{26}{\code {rl_prep_term_function}}
+\entry{rl_deprep_term_function}{26}{\code {rl_deprep_term_function}}
+\entry{rl_executing_keymap}{26}{\code {rl_executing_keymap}}
+\entry{rl_binding_keymap}{26}{\code {rl_binding_keymap}}
+\entry{rl_executing_macro}{26}{\code {rl_executing_macro}}
+\entry{rl_readline_state}{26}{\code {rl_readline_state}}
+\entry{rl_explicit_arg}{27}{\code {rl_explicit_arg}}
+\entry{rl_numeric_arg}{28}{\code {rl_numeric_arg}}
+\entry{rl_editing_mode}{28}{\code {rl_editing_mode}}
+\entry{rl_add_defun}{28}{\code {rl_add_defun}}
+\entry{rl_make_bare_keymap}{28}{\code {rl_make_bare_keymap}}
+\entry{rl_copy_keymap}{28}{\code {rl_copy_keymap}}
+\entry{rl_make_keymap}{28}{\code {rl_make_keymap}}
+\entry{rl_discard_keymap}{29}{\code {rl_discard_keymap}}
+\entry{rl_get_keymap}{29}{\code {rl_get_keymap}}
+\entry{rl_set_keymap}{29}{\code {rl_set_keymap}}
+\entry{rl_get_keymap_by_name}{29}{\code {rl_get_keymap_by_name}}
+\entry{rl_get_keymap_name}{29}{\code {rl_get_keymap_name}}
+\entry{rl_bind_key}{29}{\code {rl_bind_key}}
+\entry{rl_bind_key_in_map}{29}{\code {rl_bind_key_in_map}}
+\entry{rl_bind_key_if_unbound}{29}{\code {rl_bind_key_if_unbound}}
+\entry{rl_bind_key_if_unbound_in_map}{29}{\code {rl_bind_key_if_unbound_in_map}}
+\entry{rl_unbind_key}{30}{\code {rl_unbind_key}}
+\entry{rl_unbind_key_in_map}{30}{\code {rl_unbind_key_in_map}}
+\entry{rl_unbind_function_in_map}{30}{\code {rl_unbind_function_in_map}}
+\entry{rl_unbind_command_in_map}{30}{\code {rl_unbind_command_in_map}}
+\entry{rl_bind_keyseq}{30}{\code {rl_bind_keyseq}}
+\entry{rl_bind_keyseq_in_map}{30}{\code {rl_bind_keyseq_in_map}}
+\entry{rl_set_key}{30}{\code {rl_set_key}}
+\entry{rl_bind_keyseq_if_unbound}{30}{\code {rl_bind_keyseq_if_unbound}}
+\entry{rl_bind_keyseq_if_unbound_in_map}{30}{\code {rl_bind_keyseq_if_unbound_in_map}}
+\entry{rl_generic_bind}{30}{\code {rl_generic_bind}}
+\entry{rl_parse_and_bind}{30}{\code {rl_parse_and_bind}}
+\entry{rl_read_init_file}{31}{\code {rl_read_init_file}}
+\entry{rl_named_function}{31}{\code {rl_named_function}}
+\entry{rl_function_of_keyseq}{31}{\code {rl_function_of_keyseq}}
+\entry{rl_invoking_keyseqs}{31}{\code {rl_invoking_keyseqs}}
+\entry{rl_invoking_keyseqs_in_map}{31}{\code {rl_invoking_keyseqs_in_map}}
+\entry{rl_function_dumper}{31}{\code {rl_function_dumper}}
+\entry{rl_list_funmap_names}{31}{\code {rl_list_funmap_names}}
+\entry{rl_funmap_names}{31}{\code {rl_funmap_names}}
+\entry{rl_add_funmap_entry}{31}{\code {rl_add_funmap_entry}}
+\entry{rl_begin_undo_group}{32}{\code {rl_begin_undo_group}}
+\entry{rl_end_undo_group}{32}{\code {rl_end_undo_group}}
+\entry{rl_add_undo}{32}{\code {rl_add_undo}}
+\entry{rl_free_undo_list}{32}{\code {rl_free_undo_list}}
+\entry{rl_do_undo}{32}{\code {rl_do_undo}}
+\entry{rl_modifying}{32}{\code {rl_modifying}}
+\entry{rl_redisplay}{32}{\code {rl_redisplay}}
+\entry{rl_forced_update_display}{33}{\code {rl_forced_update_display}}
+\entry{rl_on_new_line}{33}{\code {rl_on_new_line}}
+\entry{rl_on_new_line_with_prompt}{33}{\code {rl_on_new_line_with_prompt}}
+\entry{rl_reset_line_state}{33}{\code {rl_reset_line_state}}
+\entry{rl_crlf}{33}{\code {rl_crlf}}
+\entry{rl_show_char}{33}{\code {rl_show_char}}
+\entry{rl_message}{33}{\code {rl_message}}
+\entry{rl_clear_message}{33}{\code {rl_clear_message}}
+\entry{rl_save_prompt}{33}{\code {rl_save_prompt}}
+\entry{rl_restore_prompt}{33}{\code {rl_restore_prompt}}
+\entry{rl_expand_prompt}{33}{\code {rl_expand_prompt}}
+\entry{rl_set_prompt}{34}{\code {rl_set_prompt}}
+\entry{rl_insert_text}{34}{\code {rl_insert_text}}
+\entry{rl_delete_text}{34}{\code {rl_delete_text}}
+\entry{rl_copy_text}{34}{\code {rl_copy_text}}
+\entry{rl_kill_text}{34}{\code {rl_kill_text}}
+\entry{rl_push_macro_input}{34}{\code {rl_push_macro_input}}
+\entry{rl_read_key}{34}{\code {rl_read_key}}
+\entry{rl_getc}{34}{\code {rl_getc}}
+\entry{rl_stuff_char}{34}{\code {rl_stuff_char}}
+\entry{rl_execute_next}{34}{\code {rl_execute_next}}
+\entry{rl_clear_pending_input}{35}{\code {rl_clear_pending_input}}
+\entry{rl_set_keyboard_input_timeout}{35}{\code {rl_set_keyboard_input_timeout}}
+\entry{rl_prep_terminal}{35}{\code {rl_prep_terminal}}
+\entry{rl_deprep_terminal}{35}{\code {rl_deprep_terminal}}
+\entry{rl_tty_set_default_bindings}{35}{\code {rl_tty_set_default_bindings}}
+\entry{rl_tty_unset_default_bindings}{35}{\code {rl_tty_unset_default_bindings}}
+\entry{rl_reset_terminal}{35}{\code {rl_reset_terminal}}
+\entry{rl_replace_line}{35}{\code {rl_replace_line}}
+\entry{rl_extend_line_buffer}{35}{\code {rl_extend_line_buffer}}
+\entry{rl_initialize}{35}{\code {rl_initialize}}
+\entry{rl_ding}{36}{\code {rl_ding}}
+\entry{rl_alphabetic}{36}{\code {rl_alphabetic}}
+\entry{rl_display_match_list}{36}{\code {rl_display_match_list}}
+\entry{_rl_uppercase_p}{36}{\code {_rl_uppercase_p}}
+\entry{_rl_lowercase_p}{36}{\code {_rl_lowercase_p}}
+\entry{_rl_digit_p}{36}{\code {_rl_digit_p}}
+\entry{_rl_to_upper}{36}{\code {_rl_to_upper}}
+\entry{_rl_to_lower}{36}{\code {_rl_to_lower}}
+\entry{_rl_digit_value}{36}{\code {_rl_digit_value}}
+\entry{rl_macro_bind}{36}{\code {rl_macro_bind}}
+\entry{rl_macro_dumper}{36}{\code {rl_macro_dumper}}
+\entry{rl_variable_bind}{37}{\code {rl_variable_bind}}
+\entry{rl_variable_dumper}{37}{\code {rl_variable_dumper}}
+\entry{rl_set_paren_blink_timeout}{37}{\code {rl_set_paren_blink_timeout}}
+\entry{rl_get_termcap}{37}{\code {rl_get_termcap}}
+\entry{rl_callback_handler_install}{37}{\code {rl_callback_handler_install}}
+\entry{rl_callback_read_char}{37}{\code {rl_callback_read_char}}
+\entry{rl_callback_handler_remove}{37}{\code {rl_callback_handler_remove}}
+\entry{rl_catch_signals}{40}{\code {rl_catch_signals}}
+\entry{rl_catch_sigwinch}{40}{\code {rl_catch_sigwinch}}
+\entry{rl_cleanup_after_signal}{40}{\code {rl_cleanup_after_signal}}
+\entry{rl_free_line_state}{40}{\code {rl_free_line_state}}
+\entry{rl_reset_after_signal}{40}{\code {rl_reset_after_signal}}
+\entry{rl_resize_terminal}{40}{\code {rl_resize_terminal}}
+\entry{rl_set_screen_size}{40}{\code {rl_set_screen_size}}
+\entry{rl_get_screen_size}{40}{\code {rl_get_screen_size}}
+\entry{rl_set_signals}{41}{\code {rl_set_signals}}
+\entry{rl_clear_signals}{41}{\code {rl_clear_signals}}
+\entry{rl_complete}{42}{\code {rl_complete}}
+\entry{rl_completion_entry_function}{42}{\code {rl_completion_entry_function}}
+\entry{rl_complete_internal}{42}{\code {rl_complete_internal}}
+\entry{rl_complete}{42}{\code {rl_complete}}
+\entry{rl_possible_completions}{42}{\code {rl_possible_completions}}
+\entry{rl_insert_completions}{42}{\code {rl_insert_completions}}
+\entry{rl_completion_mode}{42}{\code {rl_completion_mode}}
+\entry{rl_completion_matches}{42}{\code {rl_completion_matches}}
+\entry{rl_filename_completion_function}{43}{\code {rl_filename_completion_function}}
+\entry{rl_username_completion_function}{43}{\code {rl_username_completion_function}}
+\entry{rl_completion_entry_function}{43}{\code {rl_completion_entry_function}}
+\entry{rl_attempted_completion_function}{43}{\code {rl_attempted_completion_function}}
+\entry{rl_filename_quoting_function}{43}{\code {rl_filename_quoting_function}}
+\entry{rl_filename_dequoting_function}{43}{\code {rl_filename_dequoting_function}}
+\entry{rl_char_is_quoted_p}{44}{\code {rl_char_is_quoted_p}}
+\entry{rl_ignore_some_completions_function}{44}{\code {rl_ignore_some_completions_function}}
+\entry{rl_directory_completion_hook}{44}{\code {rl_directory_completion_hook}}
+\entry{rl_completion_display_matches_hook}{44}{\code {rl_completion_display_matches_hook}}
+\entry{rl_basic_word_break_characters}{44}{\code {rl_basic_word_break_characters}}
+\entry{rl_basic_quote_characters}{44}{\code {rl_basic_quote_characters}}
+\entry{rl_completer_word_break_characters}{45}{\code {rl_completer_word_break_characters}}
+\entry{rl_completer_quote_characters}{45}{\code {rl_completer_quote_characters}}
+\entry{rl_filename_quote_characters}{45}{\code {rl_filename_quote_characters}}
+\entry{rl_special_prefixes}{45}{\code {rl_special_prefixes}}
+\entry{rl_completion_query_items}{45}{\code {rl_completion_query_items}}
+\entry{rl_completion_append_character}{45}{\code {rl_completion_append_character}}
+\entry{rl_completion_suppress_append}{45}{\code {rl_completion_suppress_append}}
+\entry{rl_completion_mark_symlink_dirs}{45}{\code {rl_completion_mark_symlink_dirs}}
+\entry{rl_ignore_completion_duplicates}{45}{\code {rl_ignore_completion_duplicates}}
+\entry{rl_filename_completion_desired}{46}{\code {rl_filename_completion_desired}}
+\entry{rl_filename_quoting_desired}{46}{\code {rl_filename_quoting_desired}}
+\entry{rl_attempted_completion_over}{46}{\code {rl_attempted_completion_over}}
+\entry{rl_completion_type}{46}{\code {rl_completion_type}}
+\entry{rl_inhibit_completion}{46}{\code {rl_inhibit_completion}}
diff --git a/lib/readline/doc/rlman.fns b/lib/readline/doc/rlman.fns
new file mode 100644
index 00000000..b1dfd486
--- /dev/null
+++ b/lib/readline/doc/rlman.fns
@@ -0,0 +1,282 @@
+\initial {_}
+\entry {\code {_rl_digit_p}}{36}
+\entry {\code {_rl_digit_value}}{36}
+\entry {\code {_rl_lowercase_p}}{36}
+\entry {\code {_rl_to_lower}}{36}
+\entry {\code {_rl_to_upper}}{36}
+\entry {\code {_rl_uppercase_p}}{36}
+\initial {A}
+\entry {\code {abort (C-g)}}{18}
+\entry {\code {accept-line (Newline or Return)}}{13}
+\initial {B}
+\entry {\code {backward-char (C-b)}}{13}
+\entry {\code {backward-delete-char (Rubout)}}{15}
+\entry {\code {backward-kill-line (C-x Rubout)}}{16}
+\entry {\code {backward-kill-word (M-\key {DEL})}}{16}
+\entry {\code {backward-word (M-b)}}{13}
+\entry {\code {beginning-of-history (M-<)}}{14}
+\entry {\code {beginning-of-line (C-a)}}{13}
+\entry {bell-style}{5}
+\initial {C}
+\entry {\code {call-last-kbd-macro (C-x e)}}{18}
+\entry {\code {capitalize-word (M-c)}}{15}
+\entry {\code {character-search (C-])}}{18}
+\entry {\code {character-search-backward (M-C-])}}{19}
+\entry {\code {clear-screen (C-l)}}{13}
+\entry {comment-begin}{5}
+\entry {\code {complete (\key {TAB})}}{17}
+\entry {completion-query-items}{5}
+\entry {convert-meta}{5}
+\entry {\code {copy-backward-word ()}}{16}
+\entry {\code {copy-forward-word ()}}{16}
+\entry {\code {copy-region-as-kill ()}}{16}
+\initial {D}
+\entry {\code {delete-char (C-d)}}{15}
+\entry {\code {delete-char-or-list ()}}{17}
+\entry {\code {delete-horizontal-space ()}}{16}
+\entry {\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{17}
+\entry {disable-completion}{5}
+\entry {\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}{18}
+\entry {\code {downcase-word (M-l)}}{15}
+\entry {\code {dump-functions ()}}{19}
+\entry {\code {dump-macros ()}}{19}
+\entry {\code {dump-variables ()}}{19}
+\initial {E}
+\entry {editing-mode}{5}
+\entry {\code {emacs-editing-mode (C-e)}}{19}
+\entry {enable-keypad}{5}
+\entry {\code {end-kbd-macro (C-x ))}}{18}
+\entry {\code {end-of-history (M->)}}{14}
+\entry {\code {end-of-line (C-e)}}{13}
+\entry {\code {exchange-point-and-mark (C-x C-x)}}{18}
+\entry {expand-tilde}{5}
+\initial {F}
+\entry {\code {forward-backward-delete-char ()}}{15}
+\entry {\code {forward-char (C-f)}}{13}
+\entry {\code {forward-search-history (C-s)}}{14}
+\entry {\code {forward-word (M-f)}}{13}
+\initial {H}
+\entry {history-preserve-point}{5}
+\entry {\code {history-search-backward ()}}{14}
+\entry {\code {history-search-forward ()}}{14}
+\entry {horizontal-scroll-mode}{6}
+\initial {I}
+\entry {input-meta}{6}
+\entry {\code {insert-comment (M-#)}}{19}
+\entry {\code {insert-completions (M-*)}}{17}
+\entry {isearch-terminators}{6}
+\initial {K}
+\entry {keymap}{6}
+\entry {\code {kill-line (C-k)}}{16}
+\entry {\code {kill-region ()}}{16}
+\entry {\code {kill-whole-line ()}}{16}
+\entry {\code {kill-word (M-d)}}{16}
+\initial {M}
+\entry {mark-modified-lines}{6}
+\entry {mark-symlinked-directories}{6}
+\entry {match-hidden-files}{6}
+\entry {\code {menu-complete ()}}{17}
+\entry {meta-flag}{6}
+\initial {N}
+\entry {\code {next-history (C-n)}}{14}
+\entry {\code {non-incremental-forward-search-history (M-n)}}{14}
+\entry {\code {non-incremental-reverse-search-history (M-p)}}{14}
+\initial {O}
+\entry {output-meta}{7}
+\entry {\code {overwrite-mode ()}}{15}
+\initial {P}
+\entry {page-completions}{7}
+\entry {\code {possible-completions (M-?)}}{17}
+\entry {\code {prefix-meta (\key {ESC})}}{18}
+\entry {\code {previous-history (C-p)}}{14}
+\initial {Q}
+\entry {\code {quoted-insert (C-q or C-v)}}{15}
+\initial {R}
+\entry {\code {re-read-init-file (C-x C-r)}}{18}
+\entry {\code {readline}}{21}
+\entry {\code {redraw-current-line ()}}{13}
+\entry {\code {reverse-search-history (C-r)}}{14}
+\entry {\code {revert-line (M-r)}}{18}
+\entry {\code {rl_add_defun}}{28}
+\entry {\code {rl_add_funmap_entry}}{31}
+\entry {\code {rl_add_undo}}{32}
+\entry {\code {rl_alphabetic}}{36}
+\entry {\code {rl_already_prompted}}{25}
+\entry {\code {rl_attempted_completion_function}}{43}
+\entry {\code {rl_attempted_completion_over}}{46}
+\entry {\code {rl_basic_quote_characters}}{44}
+\entry {\code {rl_basic_word_break_characters}}{44}
+\entry {\code {rl_begin_undo_group}}{32}
+\entry {\code {rl_bind_key}}{29}
+\entry {\code {rl_bind_key_if_unbound}}{29}
+\entry {\code {rl_bind_key_if_unbound_in_map}}{29}
+\entry {\code {rl_bind_key_in_map}}{29}
+\entry {\code {rl_bind_keyseq}}{30}
+\entry {\code {rl_bind_keyseq_if_unbound}}{30}
+\entry {\code {rl_bind_keyseq_if_unbound_in_map}}{30}
+\entry {\code {rl_bind_keyseq_in_map}}{30}
+\entry {\code {rl_binding_keymap}}{26}
+\entry {\code {rl_callback_handler_install}}{37}
+\entry {\code {rl_callback_handler_remove}}{37}
+\entry {\code {rl_callback_read_char}}{37}
+\entry {\code {rl_catch_signals}}{40}
+\entry {\code {rl_catch_sigwinch}}{40}
+\entry {\code {rl_char_is_quoted_p}}{44}
+\entry {\code {rl_cleanup_after_signal}}{40}
+\entry {\code {rl_clear_message}}{33}
+\entry {\code {rl_clear_pending_input}}{35}
+\entry {\code {rl_clear_signals}}{41}
+\entry {\code {rl_complete}}{42}
+\entry {\code {rl_complete_internal}}{42}
+\entry {\code {rl_completer_quote_characters}}{45}
+\entry {\code {rl_completer_word_break_characters}}{45}
+\entry {\code {rl_completion_append_character}}{45}
+\entry {\code {rl_completion_display_matches_hook}}{44}
+\entry {\code {rl_completion_entry_function}}{42, 43}
+\entry {\code {rl_completion_mark_symlink_dirs}}{45}
+\entry {\code {rl_completion_matches}}{42}
+\entry {\code {rl_completion_mode}}{42}
+\entry {\code {rl_completion_query_items}}{45}
+\entry {\code {rl_completion_suppress_append}}{45}
+\entry {\code {rl_completion_type}}{46}
+\entry {\code {rl_copy_keymap}}{28}
+\entry {\code {rl_copy_text}}{34}
+\entry {\code {rl_crlf}}{33}
+\entry {\code {rl_delete_text}}{34}
+\entry {\code {rl_deprep_term_function}}{26}
+\entry {\code {rl_deprep_terminal}}{35}
+\entry {\code {rl_ding}}{36}
+\entry {\code {rl_directory_completion_hook}}{44}
+\entry {\code {rl_discard_keymap}}{29}
+\entry {\code {rl_dispatching}}{24}
+\entry {\code {rl_display_match_list}}{36}
+\entry {\code {rl_do_undo}}{32}
+\entry {\code {rl_done}}{24}
+\entry {\code {rl_editing_mode}}{28}
+\entry {\code {rl_end}}{24}
+\entry {\code {rl_end_undo_group}}{32}
+\entry {\code {rl_erase_empty_line}}{24}
+\entry {\code {rl_event_hook}}{26}
+\entry {\code {rl_execute_next}}{34}
+\entry {\code {rl_executing_keymap}}{26}
+\entry {\code {rl_executing_macro}}{26}
+\entry {\code {rl_expand_prompt}}{33}
+\entry {\code {rl_explicit_arg}}{27}
+\entry {\code {rl_extend_line_buffer}}{35}
+\entry {\code {rl_filename_completion_desired}}{46}
+\entry {\code {rl_filename_completion_function}}{43}
+\entry {\code {rl_filename_dequoting_function}}{43}
+\entry {\code {rl_filename_quote_characters}}{45}
+\entry {\code {rl_filename_quoting_desired}}{46}
+\entry {\code {rl_filename_quoting_function}}{43}
+\entry {\code {rl_forced_update_display}}{33}
+\entry {\code {rl_free_line_state}}{40}
+\entry {\code {rl_free_undo_list}}{32}
+\entry {\code {rl_function_dumper}}{31}
+\entry {\code {rl_function_of_keyseq}}{31}
+\entry {\code {rl_funmap_names}}{31}
+\entry {\code {rl_generic_bind}}{30}
+\entry {\code {rl_get_keymap}}{29}
+\entry {\code {rl_get_keymap_by_name}}{29}
+\entry {\code {rl_get_keymap_name}}{29}
+\entry {\code {rl_get_screen_size}}{40}
+\entry {\code {rl_get_termcap}}{37}
+\entry {\code {rl_getc}}{34}
+\entry {\code {rl_getc_function}}{26}
+\entry {\code {rl_gnu_readline_p}}{25}
+\entry {\code {rl_ignore_completion_duplicates}}{45}
+\entry {\code {rl_ignore_some_completions_function}}{44}
+\entry {\code {rl_inhibit_completion}}{46}
+\entry {\code {rl_initialize}}{35}
+\entry {\code {rl_insert_completions}}{42}
+\entry {\code {rl_insert_text}}{34}
+\entry {\code {rl_instream}}{25}
+\entry {\code {rl_invoking_keyseqs}}{31}
+\entry {\code {rl_invoking_keyseqs_in_map}}{31}
+\entry {\code {rl_kill_text}}{34}
+\entry {\code {rl_last_func}}{25}
+\entry {\code {rl_library_version}}{25}
+\entry {\code {rl_line_buffer}}{24}
+\entry {\code {rl_list_funmap_names}}{31}
+\entry {\code {rl_macro_bind}}{36}
+\entry {\code {rl_macro_dumper}}{36}
+\entry {\code {rl_make_bare_keymap}}{28}
+\entry {\code {rl_make_keymap}}{28}
+\entry {\code {rl_mark}}{24}
+\entry {\code {rl_message}}{33}
+\entry {\code {rl_modifying}}{32}
+\entry {\code {rl_named_function}}{31}
+\entry {\code {rl_num_chars_to_read}}{24}
+\entry {\code {rl_numeric_arg}}{28}
+\entry {\code {rl_on_new_line}}{33}
+\entry {\code {rl_on_new_line_with_prompt}}{33}
+\entry {\code {rl_outstream}}{25}
+\entry {\code {rl_parse_and_bind}}{30}
+\entry {\code {rl_pending_input}}{24}
+\entry {\code {rl_point}}{24}
+\entry {\code {rl_possible_completions}}{42}
+\entry {\code {rl_pre_input_hook}}{25}
+\entry {\code {rl_prep_term_function}}{26}
+\entry {\code {rl_prep_terminal}}{35}
+\entry {\code {rl_prompt}}{25}
+\entry {\code {rl_push_macro_input}}{34}
+\entry {\code {rl_read_init_file}}{31}
+\entry {\code {rl_read_key}}{34}
+\entry {\code {rl_readline_name}}{25}
+\entry {\code {rl_readline_state}}{26}
+\entry {\code {rl_readline_version}}{25}
+\entry {\code {rl_redisplay}}{32}
+\entry {\code {rl_redisplay_function}}{26}
+\entry {\code {rl_replace_line}}{35}
+\entry {\code {rl_reset_after_signal}}{40}
+\entry {\code {rl_reset_line_state}}{33}
+\entry {\code {rl_reset_terminal}}{35}
+\entry {\code {rl_resize_terminal}}{40}
+\entry {\code {rl_restore_prompt}}{33}
+\entry {\code {rl_save_prompt}}{33}
+\entry {\code {rl_set_key}}{30}
+\entry {\code {rl_set_keyboard_input_timeout}}{35}
+\entry {\code {rl_set_keymap}}{29}
+\entry {\code {rl_set_paren_blink_timeout}}{37}
+\entry {\code {rl_set_prompt}}{34}
+\entry {\code {rl_set_screen_size}}{40}
+\entry {\code {rl_set_signals}}{41}
+\entry {\code {rl_show_char}}{33}
+\entry {\code {rl_special_prefixes}}{45}
+\entry {\code {rl_startup_hook}}{25}
+\entry {\code {rl_stuff_char}}{34}
+\entry {\code {rl_terminal_name}}{25}
+\entry {\code {rl_tty_set_default_bindings}}{35}
+\entry {\code {rl_tty_unset_default_bindings}}{35}
+\entry {\code {rl_unbind_command_in_map}}{30}
+\entry {\code {rl_unbind_function_in_map}}{30}
+\entry {\code {rl_unbind_key}}{30}
+\entry {\code {rl_unbind_key_in_map}}{30}
+\entry {\code {rl_username_completion_function}}{43}
+\entry {\code {rl_variable_bind}}{37}
+\entry {\code {rl_variable_dumper}}{37}
+\initial {S}
+\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{15}
+\entry {\code {set-mark (C-@)}}{18}
+\entry {show-all-if-ambiguous}{7}
+\entry {show-all-if-unmodified}{7}
+\entry {\code {start-kbd-macro (C-x ()}}{18}
+\initial {T}
+\entry {\code {tab-insert (M-\key {TAB})}}{15}
+\entry {\code {tilde-expand (M-~)}}{18}
+\entry {\code {transpose-chars (C-t)}}{15}
+\entry {\code {transpose-words (M-t)}}{15}
+\initial {U}
+\entry {\code {undo (C-_ or C-x C-u)}}{18}
+\entry {\code {universal-argument ()}}{17}
+\entry {\code {unix-line-discard (C-u)}}{16}
+\entry {\code {unix-word-rubout (C-w)}}{16}
+\entry {\code {upcase-word (M-u)}}{15}
+\initial {V}
+\entry {\code {vi-editing-mode (M-C-j)}}{19}
+\entry {visible-stats}{7}
+\initial {Y}
+\entry {\code {yank (C-y)}}{16}
+\entry {\code {yank-last-arg (M-. or M-_)}}{14}
+\entry {\code {yank-nth-arg (M-C-y)}}{14}
+\entry {\code {yank-pop (M-y)}}{17}
diff --git a/lib/readline/doc/rlman.ky b/lib/readline/doc/rlman.ky
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/rlman.ky
diff --git a/lib/readline/doc/rlman.log b/lib/readline/doc/rlman.log
new file mode 100644
index 00000000..08f7ef0e
--- /dev/null
+++ b/lib/readline/doc/rlman.log
@@ -0,0 +1,213 @@
+This is TeX, Version 3.14159 (Web2C 7.3.1) (format=tex 2001.2.12) 22 SEP 2003 09:04
+**/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rlman.te
+xi
+
+(/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rlman.tex
+i (texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics,
+\bindingoffset=\dimen16
+\normaloffset=\dimen17
+\pagewidth=\dimen18
+\pageheight=\dimen19
+\outerhsize=\dimen20
+\outervsize=\dimen21
+\cornerlong=\dimen22
+\cornerthick=\dimen23
+\topandbottommargin=\dimen24
+\headlinebox=\box16
+\footlinebox=\box17
+\margin=\insert252
+\EMsimple=\toks12
+\groupbox=\box18
+\groupinvalidhelp=\toks13
+\mil=\dimen25
+\exdentamount=\skip18
+\inmarginspacing=\skip19
+ pdf,
+\tempnum=\count26
+\lnkcount=\count27
+\filename=\toks14
+\filenamelength=\count28
+\pgn=\count29
+\toksA=\toks15
+\toksB=\toks16
+\toksC=\toks17
+\toksD=\toks18
+\boxA=\box19
+\countA=\count30
+ fonts,
+\sffam=\fam8
+\textleading=\dimen26
+\mainmagstep=\count31
+\fontdepth=\count32
+
+page headings,
+\titlepagetopglue=\skip20
+\titlepagebottomglue=\skip21
+\evenheadline=\toks19
+\oddheadline=\toks20
+\evenfootline=\toks21
+\oddfootline=\toks22
+ tables,
+\tableindent=\dimen27
+\itemindent=\dimen28
+\itemmargin=\dimen29
+\itemmax=\dimen30
+\itemno=\count33
+\multitableparskip=\skip22
+\multitableparindent=\skip23
+\multitablecolspace=\dimen31
+\multitablelinespace=\skip24
+\colcount=\count34
+\savedfootnotes=\box20
+ conditionals, indexing,
+\secondaryindent=\skip25
+\partialpage=\box21
+\doublecolumnhsize=\dimen32
+ sectioning,
+\chapno=\count35
+\secno=\count36
+\subsecno=\count37
+\subsubsecno=\count38
+\appendixno=\count39
+\absseclevel=\count40
+\secbase=\count41
+\chapheadingskip=\skip26
+\secheadingskip=\skip27
+\subsecheadingskip=\skip28
+ toc,
+\tocfile=\write0
+\contentsrightmargin=\skip29
+\savepageno=\count42
+\lastnegativepageno=\count43
+\shortappendixwidth=\dimen33
+\tocindent=\dimen34
+ environments,
+\errorbox=\box22
+\lispnarrowing=\skip30
+\envskipamount=\skip31
+\circthick=\dimen35
+\cartouter=\dimen36
+\cartinner=\dimen37
+\normbskip=\skip32
+\normpskip=\skip33
+\normlskip=\skip34
+\lskip=\skip35
+\rskip=\skip36
+\tabw=\dimen38
+
+defuns,
+\defbodyindent=\skip37
+\defargsindent=\skip38
+\deflastargmargin=\skip39
+\parencount=\count44
+ macros,
+\macscribble=\write1
+\paramno=\count45
+\macname=\toks23
+ cross references,
+\auxfile=\write2
+\savesfregister=\count46
+\footnoteno=\count47
+
+(/usr/local/share/texmf/tex/plain/dvips/epsf.tex
+\epsffilein=\read0
+\epsfframemargin=\dimen39
+\epsfframethickness=\dimen40
+\epsfrsize=\dimen41
+\epsftmp=\dimen42
+\epsftsize=\dimen43
+\epsfxsize=\dimen44
+\epsfysize=\dimen45
+\pspoints=\dimen46
+\epsfnoopenhelp=\toks24
+)
+\noepsfhelp=\toks25
+ localization,
+\nolanghelp=\toks26
+\defaultparindent=\dimen47
+
+and turning on texinfo input format.) (rlman.aux)
+@cpindfile=@write3
+@fnindfile=@write4
+@vrindfile=@write5
+@tpindfile=@write6
+@kyindfile=@write7
+@pgindfile=@write8
+ (version.texi) [1
+\openout2 = `rlman.aux'.
+
+\openout3 = `rlman.cp'.
+
+\openout4 = `rlman.fn'.
+
+\openout5 = `rlman.vr'.
+
+\openout6 = `rlman.tp'.
+
+\openout7 = `rlman.ky'.
+
+\openout8 = `rlman.pg'.
+
+] [2]
+(rlman.toc [-1]) [-2] (rluser.texi
+@btindfile=@write9
+ Chapter 1
+\openout0 = `rlman.toc'.
+
+ [1
+\openout9 = `rlman.bt'.
+
+] [2] [3] [4] [5]
+Underfull \hbox (badness 5231) in paragraph at lines 488--504
+ @texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr
+m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and
+
+@hbox(7.60416+2.12917)x433.62, glue set 3.7426
+.@glue(@leftskip) 115.63242
+.@texttt e
+.@texttt m
+.@texttt a
+.@texttt c
+.etc.
+
+[6] [7] [8] [9] [10]
+Overfull \hbox (26.43913pt too wide) in paragraph at lines 801--801
+ []@texttt Meta-Control-h: backward-kill-word Text after the function name is i
+gnored[] |
+
+@hbox(6.69167+2.43333)x433.62
+.@glue(@leftskip) 28.90755
+.@hbox(0.0+0.0)x0.0
+.@texttt M
+.@texttt e
+.@texttt t
+.etc.
+
+[11] [12] [13] [14] [15] [16] [17] [18]) (rltech.texi Chapter 2 [19] [20]
+[21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35]
+[36] [37] [38] [39] [40] [41] [42] [43] [44] [45]
+Underfull \hbox (badness 7379) in paragraph at lines 1757--1762
+ []@textrm If an application-specific com-ple-tion func-tion as-signed to @text
+tt rl_attempted_
+
+@hbox(7.60416+2.43333)x433.62, glue set 4.19675
+.@glue(@leftskip) 28.90755
+.@hbox(0.0+0.0)x0.0
+.@textrm I
+.@textrm f
+.@glue 3.65 plus 1.825 minus 1.21666
+.etc.
+
+[46] [47] [48] [49] [50] [51] [52] [53]) Appendix A [54] (fdl.texi [55]
+[56] [57] [58] [59] [60]) (Concept Index) [61] [62] (rlman.cps)
+(Function and Variable Index) [63] [64] (rlman.fns [65] [66]) [67] [68] )
+Here is how much of TeX's memory you used:
+ 1489 strings out of 13013
+ 18350 string characters out of 97233
+ 56934 words of memory out of 263001
+ 2361 multiletter control sequences out of 10000+0
+ 31953 words of font info for 111 fonts, out of 400000 for 1000
+ 19 hyphenation exceptions out of 1000
+ 15i,8n,17p,304b,695s stack positions out of 300i,100n,500p,50000b,4000s
+
+Output written on rlman.dvi (72 pages, 270424 bytes).
diff --git a/lib/readline/doc/rlman.pg b/lib/readline/doc/rlman.pg
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/rlman.pg
diff --git a/lib/readline/doc/rlman.toc b/lib/readline/doc/rlman.toc
new file mode 100644
index 00000000..9d08ef50
--- /dev/null
+++ b/lib/readline/doc/rlman.toc
@@ -0,0 +1,53 @@
+\chapentry{Command Line Editing}{1}{1}
+\secentry{Introduction to Line Editing}{1}{1}{1}
+\secentry{Readline Interaction}{1}{2}{1}
+\subsecentry{Readline Bare Essentials}{1}{2}{1}{1}
+\subsecentry{Readline Movement Commands}{1}{2}{2}{2}
+\subsecentry{Readline Killing Commands}{1}{2}{3}{2}
+\subsecentry{Readline Arguments}{1}{2}{4}{3}
+\subsecentry{Searching for Commands in the History}{1}{2}{5}{3}
+\secentry{Readline Init File}{1}{3}{4}
+\subsecentry{Readline Init File Syntax}{1}{3}{1}{4}
+\subsecentry{Conditional Init Constructs}{1}{3}{2}{9}
+\subsecentry{Sample Init File}{1}{3}{3}{10}
+\secentry{Bindable Readline Commands}{1}{4}{13}
+\subsecentry{Commands For Moving}{1}{4}{1}{13}
+\subsecentry{Commands For Manipulating The History}{1}{4}{2}{13}
+\subsecentry{Commands For Changing Text}{1}{4}{3}{14}
+\subsecentry{Killing And Yanking}{1}{4}{4}{16}
+\subsecentry{Specifying Numeric Arguments}{1}{4}{5}{17}
+\subsecentry{Letting Readline Type For You}{1}{4}{6}{17}
+\subsecentry{Keyboard Macros}{1}{4}{7}{17}
+\subsecentry{Some Miscellaneous Commands}{1}{4}{8}{18}
+\secentry{Readline vi Mode}{1}{5}{19}
+\chapentry{Programming with GNU Readline}{2}{21}
+\secentry{Basic Behavior}{2}{1}{21}
+\secentry{Custom Functions}{2}{2}{22}
+\subsecentry{Readline Typedefs}{2}{2}{1}{22}
+\subsecentry{Writing a New Function}{2}{2}{2}{23}
+\secentry{Readline Variables}{2}{3}{24}
+\secentry{Readline Convenience Functions}{2}{4}{28}
+\subsecentry{Naming a Function}{2}{4}{1}{28}
+\subsecentry{Selecting a Keymap}{2}{4}{2}{28}
+\subsecentry{Binding Keys}{2}{4}{3}{29}
+\subsecentry{Associating Function Names and Bindings}{2}{4}{4}{31}
+\subsecentry{Allowing Undoing}{2}{4}{5}{31}
+\subsecentry{Redisplay}{2}{4}{6}{32}
+\subsecentry{Modifying Text}{2}{4}{7}{34}
+\subsecentry{Character Input}{2}{4}{8}{34}
+\subsecentry{Terminal Management}{2}{4}{9}{35}
+\subsecentry{Utility Functions}{2}{4}{10}{35}
+\subsecentry{Miscellaneous Functions}{2}{4}{11}{36}
+\subsecentry{Alternate Interface}{2}{4}{12}{37}
+\subsecentry{A Readline Example}{2}{4}{13}{38}
+\secentry{Readline Signal Handling}{2}{5}{39}
+\secentry{Custom Completers}{2}{6}{41}
+\subsecentry{How Completing Works}{2}{6}{1}{41}
+\subsecentry{Completion Functions}{2}{6}{2}{42}
+\subsecentry{Completion Variables}{2}{6}{3}{43}
+\subsecentry{A Short Completion Example}{2}{6}{4}{46}
+\appendixentry{Copying This Manual}{A}{55}
+\secentry{GNU Free Documentation License}{A}{1}{55}
+\subsecentry{ADDENDUM: How to use this License for your documents}{A}{1}{1}{61}
+\unnumbchapentry{Concept Index}{2}{63}
+\unnumbchapentry{Function and Variable Index}{2}{65}
diff --git a/lib/readline/doc/rlman.tp b/lib/readline/doc/rlman.tp
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/rlman.tp
diff --git a/lib/readline/doc/rlman.vr b/lib/readline/doc/rlman.vr
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/rlman.vr
diff --git a/lib/readline/doc/rltech.texi b/lib/readline/doc/rltech.texi
index 95c41775..007a8d75 100644
--- a/lib/readline/doc/rltech.texi
+++ b/lib/readline/doc/rltech.texi
@@ -1709,9 +1709,23 @@ an application-specific command line syntax specification.
@deftypevar int rl_completion_suppress_append
If non-zero, @var{rl_completion_append_character} is not appended to
-matches at the end of the command line, as described above. It is
-set to 0 before any application-specific completion function is called,
-and may only be changed within such a function.
+matches at the end of the command line, as described above.
+It is set to 0 before any application-specific completion function
+is called, and may only be changed within such a function.
+@end deftypevar
+
+@deftypevar int rl_completion_quote_character
+When Readline is completing quoted text, as delimited by one of the
+characters in @var{rl_completer_quote_characters}, it sets this variable
+to the quoting character found.
+This is set before any application-specific completion function is called.
+@end deftypevar
+
+@deftypevar int rl_completion_suppress_quote
+If non-zero, Readline does not append a matching quote character when
+performing completion on a quoted string.
+It is set to 0 before any application-specific completion function
+is called, and may only be changed within such a function.
@end deftypevar
@deftypevar int rl_completion_mark_symlink_dirs
diff --git a/lib/readline/doc/rluserman.aux b/lib/readline/doc/rluserman.aux
new file mode 100644
index 00000000..ef7577cd
--- /dev/null
+++ b/lib/readline/doc/rluserman.aux
@@ -0,0 +1,72 @@
+@xrdef{Command Line Editing-title}{Command Line Editing}
+@xrdef{Command Line Editing-pg}{1}
+@xrdef{Command Line Editing-snt}{Chapter@tie 1}
+@xrdef{Introduction and Notation-title}{Introduction to Line Editing}
+@xrdef{Introduction and Notation-pg}{1}
+@xrdef{Introduction and Notation-snt}{Section@tie 1.1}
+@xrdef{Readline Interaction-title}{Readline Interaction}
+@xrdef{Readline Interaction-pg}{1}
+@xrdef{Readline Interaction-snt}{Section@tie 1.2}
+@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials}
+@xrdef{Readline Bare Essentials-pg}{1}
+@xrdef{Readline Bare Essentials-snt}{Section@tie 1.2.1}
+@xrdef{Readline Movement Commands-title}{Readline Movement Commands}
+@xrdef{Readline Movement Commands-pg}{2}
+@xrdef{Readline Movement Commands-snt}{Section@tie 1.2.2}
+@xrdef{Readline Killing Commands-title}{Readline Killing Commands}
+@xrdef{Readline Killing Commands-pg}{2}
+@xrdef{Readline Killing Commands-snt}{Section@tie 1.2.3}
+@xrdef{Readline Arguments-title}{Readline Arguments}
+@xrdef{Readline Arguments-pg}{3}
+@xrdef{Readline Arguments-snt}{Section@tie 1.2.4}
+@xrdef{Searching-title}{Searching for Commands in the History}
+@xrdef{Searching-pg}{3}
+@xrdef{Searching-snt}{Section@tie 1.2.5}
+@xrdef{Readline Init File-title}{Readline Init File}
+@xrdef{Readline Init File-pg}{4}
+@xrdef{Readline Init File-snt}{Section@tie 1.3}
+@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax}
+@xrdef{Readline Init File Syntax-pg}{4}
+@xrdef{Readline Init File Syntax-snt}{Section@tie 1.3.1}
+@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs}
+@xrdef{Conditional Init Constructs-pg}{9}
+@xrdef{Conditional Init Constructs-snt}{Section@tie 1.3.2}
+@xrdef{Sample Init File-title}{Sample Init File}
+@xrdef{Sample Init File-pg}{10}
+@xrdef{Sample Init File-snt}{Section@tie 1.3.3}
+@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
+@xrdef{Bindable Readline Commands-pg}{13}
+@xrdef{Bindable Readline Commands-snt}{Section@tie 1.4}
+@xrdef{Commands For Moving-title}{Commands For Moving}
+@xrdef{Commands For Moving-pg}{13}
+@xrdef{Commands For Moving-snt}{Section@tie 1.4.1}
+@xrdef{Commands For History-title}{Commands For Manipulating The History}
+@xrdef{Commands For History-pg}{13}
+@xrdef{Commands For History-snt}{Section@tie 1.4.2}
+@xrdef{Commands For Text-title}{Commands For Changing Text}
+@xrdef{Commands For Text-pg}{15}
+@xrdef{Commands For Text-snt}{Section@tie 1.4.3}
+@xrdef{Commands For Killing-title}{Killing And Yanking}
+@xrdef{Commands For Killing-pg}{16}
+@xrdef{Commands For Killing-snt}{Section@tie 1.4.4}
+@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
+@xrdef{Numeric Arguments-pg}{17}
+@xrdef{Numeric Arguments-snt}{Section@tie 1.4.5}
+@xrdef{Commands For Completion-title}{Letting Readline Type For You}
+@xrdef{Commands For Completion-pg}{17}
+@xrdef{Commands For Completion-snt}{Section@tie 1.4.6}
+@xrdef{Keyboard Macros-title}{Keyboard Macros}
+@xrdef{Keyboard Macros-pg}{18}
+@xrdef{Keyboard Macros-snt}{Section@tie 1.4.7}
+@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
+@xrdef{Miscellaneous Commands-pg}{18}
+@xrdef{Miscellaneous Commands-snt}{Section@tie 1.4.8}
+@xrdef{Readline vi Mode-title}{Readline vi Mode}
+@xrdef{Readline vi Mode-pg}{19}
+@xrdef{Readline vi Mode-snt}{Section@tie 1.5}
+@xrdef{Copying This Manual-title}{Copying This Manual}
+@xrdef{Copying This Manual-pg}{21}
+@xrdef{Copying This Manual-snt}{Appendix@tie @char65{}}
+@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
+@xrdef{GNU Free Documentation License-pg}{21}
+@xrdef{GNU Free Documentation License-snt}{Section@tie @char65.1}
diff --git a/lib/readline/doc/rluserman.bt b/lib/readline/doc/rluserman.bt
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/rluserman.bt
diff --git a/lib/readline/doc/rluserman.cp b/lib/readline/doc/rluserman.cp
new file mode 100644
index 00000000..7a1c35e0
--- /dev/null
+++ b/lib/readline/doc/rluserman.cp
@@ -0,0 +1,10 @@
+\entry{interaction, readline}{1}{interaction, readline}
+\entry{notation, readline}{1}{notation, readline}
+\entry{command editing}{1}{command editing}
+\entry{editing command lines}{1}{editing command lines}
+\entry{killing text}{2}{killing text}
+\entry{yanking text}{2}{yanking text}
+\entry{kill ring}{3}{kill ring}
+\entry{initialization file, readline}{4}{initialization file, readline}
+\entry{variables, readline}{5}{variables, readline}
+\entry{FDL, GNU Free Documentation License}{21}{FDL, GNU Free Documentation License}
diff --git a/lib/readline/doc/rluserman.cps b/lib/readline/doc/rluserman.cps
new file mode 100644
index 00000000..53f1331d
--- /dev/null
+++ b/lib/readline/doc/rluserman.cps
@@ -0,0 +1,18 @@
+\initial {C}
+\entry {command editing}{1}
+\initial {E}
+\entry {editing command lines}{1}
+\initial {F}
+\entry {FDL, GNU Free Documentation License}{21}
+\initial {I}
+\entry {initialization file, readline}{4}
+\entry {interaction, readline}{1}
+\initial {K}
+\entry {kill ring}{3}
+\entry {killing text}{2}
+\initial {N}
+\entry {notation, readline}{1}
+\initial {V}
+\entry {variables, readline}{5}
+\initial {Y}
+\entry {yanking text}{2}
diff --git a/lib/readline/doc/rluserman.dvi b/lib/readline/doc/rluserman.dvi
new file mode 100644
index 00000000..f77eb4e6
--- /dev/null
+++ b/lib/readline/doc/rluserman.dvi
Binary files differ
diff --git a/lib/readline/doc/rluserman.fn b/lib/readline/doc/rluserman.fn
new file mode 100644
index 00000000..e073421a
--- /dev/null
+++ b/lib/readline/doc/rluserman.fn
@@ -0,0 +1,74 @@
+\entry{beginning-of-line (C-a)}{13}{\code {beginning-of-line (C-a)}}
+\entry{end-of-line (C-e)}{13}{\code {end-of-line (C-e)}}
+\entry{forward-char (C-f)}{13}{\code {forward-char (C-f)}}
+\entry{backward-char (C-b)}{13}{\code {backward-char (C-b)}}
+\entry{forward-word (M-f)}{13}{\code {forward-word (M-f)}}
+\entry{backward-word (M-b)}{13}{\code {backward-word (M-b)}}
+\entry{clear-screen (C-l)}{13}{\code {clear-screen (C-l)}}
+\entry{redraw-current-line ()}{13}{\code {redraw-current-line ()}}
+\entry{accept-line (Newline or Return)}{13}{\code {accept-line (Newline or Return)}}
+\entry{previous-history (C-p)}{14}{\code {previous-history (C-p)}}
+\entry{next-history (C-n)}{14}{\code {next-history (C-n)}}
+\entry{beginning-of-history (M-<)}{14}{\code {beginning-of-history (M-<)}}
+\entry{end-of-history (M->)}{14}{\code {end-of-history (M->)}}
+\entry{reverse-search-history (C-r)}{14}{\code {reverse-search-history (C-r)}}
+\entry{forward-search-history (C-s)}{14}{\code {forward-search-history (C-s)}}
+\entry{non-incremental-reverse-search-history (M-p)}{14}{\code {non-incremental-reverse-search-history (M-p)}}
+\entry{non-incremental-forward-search-history (M-n)}{14}{\code {non-incremental-forward-search-history (M-n)}}
+\entry{history-search-forward ()}{14}{\code {history-search-forward ()}}
+\entry{history-search-backward ()}{14}{\code {history-search-backward ()}}
+\entry{yank-nth-arg (M-C-y)}{14}{\code {yank-nth-arg (M-C-y)}}
+\entry{yank-last-arg (M-. or M-_)}{14}{\code {yank-last-arg (M-. or M-_)}}
+\entry{delete-char (C-d)}{15}{\code {delete-char (C-d)}}
+\entry{backward-delete-char (Rubout)}{15}{\code {backward-delete-char (Rubout)}}
+\entry{forward-backward-delete-char ()}{15}{\code {forward-backward-delete-char ()}}
+\entry{quoted-insert (C-q or C-v)}{15}{\code {quoted-insert (C-q or C-v)}}
+\entry{tab-insert (M-TAB)}{15}{\code {tab-insert (M-\key {TAB})}}
+\entry{self-insert (a, b, A, 1, !, ...{})}{15}{\code {self-insert (a, b, A, 1, !, \dots {})}}
+\entry{transpose-chars (C-t)}{15}{\code {transpose-chars (C-t)}}
+\entry{transpose-words (M-t)}{15}{\code {transpose-words (M-t)}}
+\entry{upcase-word (M-u)}{15}{\code {upcase-word (M-u)}}
+\entry{downcase-word (M-l)}{15}{\code {downcase-word (M-l)}}
+\entry{capitalize-word (M-c)}{15}{\code {capitalize-word (M-c)}}
+\entry{overwrite-mode ()}{15}{\code {overwrite-mode ()}}
+\entry{kill-line (C-k)}{16}{\code {kill-line (C-k)}}
+\entry{backward-kill-line (C-x Rubout)}{16}{\code {backward-kill-line (C-x Rubout)}}
+\entry{unix-line-discard (C-u)}{16}{\code {unix-line-discard (C-u)}}
+\entry{kill-whole-line ()}{16}{\code {kill-whole-line ()}}
+\entry{kill-word (M-d)}{16}{\code {kill-word (M-d)}}
+\entry{backward-kill-word (M-DEL)}{16}{\code {backward-kill-word (M-\key {DEL})}}
+\entry{unix-word-rubout (C-w)}{16}{\code {unix-word-rubout (C-w)}}
+\entry{delete-horizontal-space ()}{16}{\code {delete-horizontal-space ()}}
+\entry{kill-region ()}{16}{\code {kill-region ()}}
+\entry{copy-region-as-kill ()}{16}{\code {copy-region-as-kill ()}}
+\entry{copy-backward-word ()}{16}{\code {copy-backward-word ()}}
+\entry{copy-forward-word ()}{16}{\code {copy-forward-word ()}}
+\entry{yank (C-y)}{16}{\code {yank (C-y)}}
+\entry{yank-pop (M-y)}{17}{\code {yank-pop (M-y)}}
+\entry{digit-argument (M-0, M-1, ...{} M--)}{17}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
+\entry{universal-argument ()}{17}{\code {universal-argument ()}}
+\entry{complete (TAB)}{17}{\code {complete (\key {TAB})}}
+\entry{possible-completions (M-?)}{17}{\code {possible-completions (M-?)}}
+\entry{insert-completions (M-*)}{17}{\code {insert-completions (M-*)}}
+\entry{menu-complete ()}{17}{\code {menu-complete ()}}
+\entry{delete-char-or-list ()}{17}{\code {delete-char-or-list ()}}
+\entry{start-kbd-macro (C-x ()}{18}{\code {start-kbd-macro (C-x ()}}
+\entry{end-kbd-macro (C-x ))}{18}{\code {end-kbd-macro (C-x ))}}
+\entry{call-last-kbd-macro (C-x e)}{18}{\code {call-last-kbd-macro (C-x e)}}
+\entry{re-read-init-file (C-x C-r)}{18}{\code {re-read-init-file (C-x C-r)}}
+\entry{abort (C-g)}{18}{\code {abort (C-g)}}
+\entry{do-uppercase-version (M-a, M-b, M-x, ...{})}{18}{\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}
+\entry{prefix-meta (ESC)}{18}{\code {prefix-meta (\key {ESC})}}
+\entry{undo (C-_ or C-x C-u)}{18}{\code {undo (C-_ or C-x C-u)}}
+\entry{revert-line (M-r)}{18}{\code {revert-line (M-r)}}
+\entry{tilde-expand (M-~)}{18}{\code {tilde-expand (M-~)}}
+\entry{set-mark (C-@)}{18}{\code {set-mark (C-@)}}
+\entry{exchange-point-and-mark (C-x C-x)}{18}{\code {exchange-point-and-mark (C-x C-x)}}
+\entry{character-search (C-])}{18}{\code {character-search (C-])}}
+\entry{character-search-backward (M-C-])}{19}{\code {character-search-backward (M-C-])}}
+\entry{insert-comment (M-#)}{19}{\code {insert-comment (M-#)}}
+\entry{dump-functions ()}{19}{\code {dump-functions ()}}
+\entry{dump-variables ()}{19}{\code {dump-variables ()}}
+\entry{dump-macros ()}{19}{\code {dump-macros ()}}
+\entry{emacs-editing-mode (C-e)}{19}{\code {emacs-editing-mode (C-e)}}
+\entry{vi-editing-mode (M-C-j)}{19}{\code {vi-editing-mode (M-C-j)}}
diff --git a/lib/readline/doc/rluserman.fns b/lib/readline/doc/rluserman.fns
new file mode 100644
index 00000000..95140153
--- /dev/null
+++ b/lib/readline/doc/rluserman.fns
@@ -0,0 +1,94 @@
+\initial {A}
+\entry {\code {abort (C-g)}}{18}
+\entry {\code {accept-line (Newline or Return)}}{13}
+\initial {B}
+\entry {\code {backward-char (C-b)}}{13}
+\entry {\code {backward-delete-char (Rubout)}}{15}
+\entry {\code {backward-kill-line (C-x Rubout)}}{16}
+\entry {\code {backward-kill-word (M-\key {DEL})}}{16}
+\entry {\code {backward-word (M-b)}}{13}
+\entry {\code {beginning-of-history (M-<)}}{14}
+\entry {\code {beginning-of-line (C-a)}}{13}
+\initial {C}
+\entry {\code {call-last-kbd-macro (C-x e)}}{18}
+\entry {\code {capitalize-word (M-c)}}{15}
+\entry {\code {character-search (C-])}}{18}
+\entry {\code {character-search-backward (M-C-])}}{19}
+\entry {\code {clear-screen (C-l)}}{13}
+\entry {\code {complete (\key {TAB})}}{17}
+\entry {\code {copy-backward-word ()}}{16}
+\entry {\code {copy-forward-word ()}}{16}
+\entry {\code {copy-region-as-kill ()}}{16}
+\initial {D}
+\entry {\code {delete-char (C-d)}}{15}
+\entry {\code {delete-char-or-list ()}}{17}
+\entry {\code {delete-horizontal-space ()}}{16}
+\entry {\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{17}
+\entry {\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}{18}
+\entry {\code {downcase-word (M-l)}}{15}
+\entry {\code {dump-functions ()}}{19}
+\entry {\code {dump-macros ()}}{19}
+\entry {\code {dump-variables ()}}{19}
+\initial {E}
+\entry {\code {emacs-editing-mode (C-e)}}{19}
+\entry {\code {end-kbd-macro (C-x ))}}{18}
+\entry {\code {end-of-history (M->)}}{14}
+\entry {\code {end-of-line (C-e)}}{13}
+\entry {\code {exchange-point-and-mark (C-x C-x)}}{18}
+\initial {F}
+\entry {\code {forward-backward-delete-char ()}}{15}
+\entry {\code {forward-char (C-f)}}{13}
+\entry {\code {forward-search-history (C-s)}}{14}
+\entry {\code {forward-word (M-f)}}{13}
+\initial {H}
+\entry {\code {history-search-backward ()}}{14}
+\entry {\code {history-search-forward ()}}{14}
+\initial {I}
+\entry {\code {insert-comment (M-#)}}{19}
+\entry {\code {insert-completions (M-*)}}{17}
+\initial {K}
+\entry {\code {kill-line (C-k)}}{16}
+\entry {\code {kill-region ()}}{16}
+\entry {\code {kill-whole-line ()}}{16}
+\entry {\code {kill-word (M-d)}}{16}
+\initial {M}
+\entry {\code {menu-complete ()}}{17}
+\initial {N}
+\entry {\code {next-history (C-n)}}{14}
+\entry {\code {non-incremental-forward-search-history (M-n)}}{14}
+\entry {\code {non-incremental-reverse-search-history (M-p)}}{14}
+\initial {O}
+\entry {\code {overwrite-mode ()}}{15}
+\initial {P}
+\entry {\code {possible-completions (M-?)}}{17}
+\entry {\code {prefix-meta (\key {ESC})}}{18}
+\entry {\code {previous-history (C-p)}}{14}
+\initial {Q}
+\entry {\code {quoted-insert (C-q or C-v)}}{15}
+\initial {R}
+\entry {\code {re-read-init-file (C-x C-r)}}{18}
+\entry {\code {redraw-current-line ()}}{13}
+\entry {\code {reverse-search-history (C-r)}}{14}
+\entry {\code {revert-line (M-r)}}{18}
+\initial {S}
+\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{15}
+\entry {\code {set-mark (C-@)}}{18}
+\entry {\code {start-kbd-macro (C-x ()}}{18}
+\initial {T}
+\entry {\code {tab-insert (M-\key {TAB})}}{15}
+\entry {\code {tilde-expand (M-~)}}{18}
+\entry {\code {transpose-chars (C-t)}}{15}
+\entry {\code {transpose-words (M-t)}}{15}
+\initial {U}
+\entry {\code {undo (C-_ or C-x C-u)}}{18}
+\entry {\code {universal-argument ()}}{17}
+\entry {\code {unix-line-discard (C-u)}}{16}
+\entry {\code {unix-word-rubout (C-w)}}{16}
+\entry {\code {upcase-word (M-u)}}{15}
+\initial {V}
+\entry {\code {vi-editing-mode (M-C-j)}}{19}
+\initial {Y}
+\entry {\code {yank (C-y)}}{16}
+\entry {\code {yank-last-arg (M-. or M-_)}}{14}
+\entry {\code {yank-nth-arg (M-C-y)}}{14}
+\entry {\code {yank-pop (M-y)}}{17}
diff --git a/lib/readline/doc/rluserman.html b/lib/readline/doc/rluserman.html
new file mode 100644
index 00000000..1aa77787
--- /dev/null
+++ b/lib/readline/doc/rluserman.html
@@ -0,0 +1,2770 @@
+<HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- Created on September, 22 2003 by texi2html 1.64 -->
+<!--
+Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
+ Karl Berry <karl@freefriends.org>
+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
+ and many others.
+Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
+Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
+
+-->
+<HEAD>
+<TITLE>GNU Readline Library: </TITLE>
+
+<META NAME="description" CONTENT="GNU Readline Library: ">
+<META NAME="keywords" CONTENT="GNU Readline Library: ">
+<META NAME="resource-type" CONTENT="document">
+<META NAME="distribution" CONTENT="global">
+<META NAME="Generator" CONTENT="texi2html 1.64">
+
+</HEAD>
+
+<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
+
+<A NAME="SEC_Top"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>GNU Readline Library</H1></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 which provide a command line interface.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC1">1. Command Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">GNU Readline User's Manual.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC23">A. Copying This Manual</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<HR SIZE=1>
+<A NAME="SEC1"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<A NAME="Command Line Editing"></A>
+<H1> 1. Command Line Editing </H1>
+<!--docid::SEC1::-->
+<P>
+
+This chapter describes the basic features of the GNU
+command line editing interface.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC3">1.2 Readline Interaction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The minimum set of commands for editing a line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC9">1.3 Readline Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Customizing Readline from a user's view.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A description of most of the Readline commands
+ available for binding</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">A short description of how to make Readline
+ behave like the vi editor.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Introduction and Notation"></A>
+<HR SIZE="6">
+<A NAME="SEC2"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.1 Introduction to Line Editing </H2>
+<!--docid::SEC2::-->
+<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">1.3 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><P>
+
+<A NAME="Readline Interaction"></A>
+<HR SIZE="6">
+<A NAME="SEC3"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC2"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.2 Readline Interaction </H2>
+<!--docid::SEC3::-->
+<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><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The least you need to know about Readline.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the input line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">How to delete text, and how to get it back!</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Giving numeric arguments to commands.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Readline Bare Essentials"></A>
+<HR SIZE="6">
+<A NAME="SEC4"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.1 Readline Bare Essentials </H3>
+<!--docid::SEC4::-->
+<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><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><P>
+
+<A NAME="Readline Movement Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC5"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC4"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.2 Readline Movement Commands </H3>
+<!--docid::SEC5::-->
+<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><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><P>
+
+<A NAME="Readline Killing Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC6"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC5"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.3 Readline Killing Commands </H3>
+<!--docid::SEC6::-->
+<P>
+
+<A NAME="IDX1"></A>
+<A NAME="IDX2"></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="IDX3"></A>
+</P><P>
+
+Here is the list of commands for killing text.
+</P><P>
+
+<DL COMPACT>
+<DT><KBD>C-k</KBD>
+<DD>Kill the text from the current cursor position to the end of the line.
+<P>
+
+<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>.
+<P>
+
+<DT><KBD>M-<KBD>DEL</KBD></KBD>
+<DD>Kill from the cursor the start of the current 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>.
+<P>
+
+<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.
+<P>
+
+</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><P>
+
+<DL COMPACT>
+<DT><KBD>C-y</KBD>
+<DD>Yank the most recently killed text back into the buffer at the cursor.
+<P>
+
+<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>
+<P>
+
+<A NAME="Readline Arguments"></A>
+<HR SIZE="6">
+<A NAME="SEC7"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC6"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.4 Readline Arguments </H3>
+<!--docid::SEC7::-->
+<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><P>
+
+<A NAME="Searching"></A>
+<HR SIZE="6">
+<A NAME="SEC8"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC7"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC3"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.2.5 Searching for Commands in the History </H3>
+<!--docid::SEC8::-->
+<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>
+
+Readline remembers the last incremental search string. If two
+<KBD>C-r</KBD>s are typed without any intervening characters defining a new
+search string, any remembered search string is used.
+</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><P>
+
+<A NAME="Readline Init File"></A>
+<HR SIZE="6">
+<A NAME="SEC9"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC8"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.3 Readline Init File </H2>
+<!--docid::SEC9::-->
+<P>
+
+Although the Readline library comes with a set of Emacs-like
+keybindings installed by default, it is possible to use a different set
+of keybindings.
+Any user can customize programs that use Readline by putting
+commands in an <EM>inputrc</EM> file, conventionally in his home directory.
+The name of this
+file is taken from the value of the environment variable <CODE>INPUTRC</CODE>. If
+that variable is unset, the default is <TT>`~/.inputrc'</TT>.
+</P><P>
+
+When a program which uses the Readline library starts up, the
+init file is read, and the key bindings are set.
+</P><P>
+
+In addition, the <CODE>C-x C-r</CODE> command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+</P><P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR>
+</TABLE>
+
+<br>
+<TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR>
+</TABLE>
+
+<br>
+<TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="Readline Init File Syntax"></A>
+<HR SIZE="6">
+<A NAME="SEC10"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.1 Readline Init File Syntax </H3>
+<!--docid::SEC10::-->
+<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">1.3.2 Conditional Init Constructs</A>). Other lines
+denote variable settings and key bindings.
+</P><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:
+<P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR>
+</pre></td></tr></table></P><P>
+
+Here, for example, is how to
+change from the default Emacs-like key binding to use
+<CODE>vi</CODE> line editing commands:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>set editing-mode vi
+</pre></td></tr></table></P><P>
+
+Variable names and values, where appropriate, are recognized without regard
+to case.
+</P><P>
+
+A great deal of run-time behavior is changeable with the following
+variables.
+</P><P>
+
+<A NAME="IDX4"></A>
+<DL COMPACT>
+
+<DT><CODE>bell-style</CODE>
+<DD><A NAME="IDX5"></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.
+<P>
+
+<DT><CODE>comment-begin</CODE>
+<DD><A NAME="IDX6"></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>.
+<P>
+
+<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>.
+<P>
+
+<DT><CODE>completion-query-items</CODE>
+<DD><A NAME="IDX7"></A>
+The number of possible completions that determines when the user is
+asked whether the list of possibilities should be displayed.
+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>.
+<P>
+
+<DT><CODE>convert-meta</CODE>
+<DD><A NAME="IDX8"></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>.
+<P>
+
+<DT><CODE>disable-completion</CODE>
+<DD><A NAME="IDX9"></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>.
+<P>
+
+<DT><CODE>editing-mode</CODE>
+<DD><A NAME="IDX10"></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>.
+<P>
+
+<DT><CODE>enable-keypad</CODE>
+<DD><A NAME="IDX11"></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>.
+<P>
+
+<DT><CODE>expand-tilde</CODE>
+<DD><A NAME="IDX12"></A>
+If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline
+attempts word completion. The default is <SAMP>`off'</SAMP>.
+<P>
+
+<A NAME="IDX13"></A>
+If set to <SAMP>`on'</SAMP>, the history code attempts to place point at the
+same location on each history line retrieved with <CODE>previous-history</CODE>
+or <CODE>next-history</CODE>.
+</P><P>
+
+<DT><CODE>horizontal-scroll-mode</CODE>
+<DD><A NAME="IDX14"></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>.
+<P>
+
+<DT><CODE>input-meta</CODE>
+<DD><A NAME="IDX15"></A>
+<A NAME="IDX16"></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.
+<P>
+
+<DT><CODE>isearch-terminators</CODE>
+<DD><A NAME="IDX17"></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">1.2.5 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.
+<P>
+
+<DT><CODE>keymap</CODE>
+<DD><A NAME="IDX18"></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.
+<P>
+
+<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>.
+<P>
+
+<DT><CODE>mark-modified-lines</CODE>
+<DD><A NAME="IDX19"></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.
+<P>
+
+<DT><CODE>mark-symlinked-directories</CODE>
+<DD><A NAME="IDX20"></A>
+If set to <SAMP>`on'</SAMP>, completed names which are symbolic links
+to directories have a slash appended (subject to the value of
+<CODE>mark-directories</CODE>).
+The default is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>match-hidden-files</CODE>
+<DD><A NAME="IDX21"></A>
+This variable, when set to <SAMP>`on'</SAMP>, causes Readline to match files whose
+names begin with a <SAMP>`.'</SAMP> (hidden files) when performing filename
+completion, unless the leading <SAMP>`.'</SAMP> is
+supplied by the user in the filename to be completed.
+This variable is <SAMP>`on'</SAMP> by default.
+<P>
+
+<DT><CODE>output-meta</CODE>
+<DD><A NAME="IDX22"></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>.
+<P>
+
+<DT><CODE>page-completions</CODE>
+<DD><A NAME="IDX23"></A>
+If set to <SAMP>`on'</SAMP>, Readline uses an internal <CODE>more</CODE>-like pager
+to display a screenful of possible completions at a time.
+This variable is <SAMP>`on'</SAMP> by default.
+<P>
+
+<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>.
+<P>
+
+<DT><CODE>show-all-if-ambiguous</CODE>
+<DD><A NAME="IDX24"></A>
+This alters the default behavior of the completion functions. If
+set to <SAMP>`on'</SAMP>,
+words which have more than one possible completion cause the
+matches to be listed immediately instead of ringing the bell.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<DT><CODE>show-all-if-unmodified</CODE>
+<DD><A NAME="IDX25"></A>
+This alters the default behavior of the completion functions in
+a fashion similar to <VAR>show-all-if-ambiguous</VAR>.
+If set to <SAMP>`on'</SAMP>,
+words which have more than one possible completion without any
+possible partial completion (the possible completions don't share
+a common prefix) cause the matches to be listed immediately instead
+of ringing the bell.
+The default value is <SAMP>`off'</SAMP>.
+<P>
+
+<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>.
+<P>
+
+</DL>
+<P>
+
+<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.
+<P>
+
+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.
+</P><P>
+
+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>).
+</P><P>
+
+<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:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>Control-u: universal-argument
+Meta-Rubout: backward-kill-word
+Control-o: "&#62; output"
+</pre></td></tr></table><P>
+
+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>`&#62; output'</SAMP> into the line).
+</P><P>
+
+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>.
+</P><P>
+
+<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.
+<P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-u": universal-argument
+"\C-x\C-r": re-read-init-file
+"\e[11~": "Function Key 1"
+</pre></td></tr></table></P><P>
+
+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>.
+</P><P>
+
+</DL>
+<P>
+
+The following GNU Emacs style escape sequences are available when
+specifying key sequences:
+</P><P>
+
+<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>
+<P>
+
+In addition to the GNU Emacs style escape sequences, a second
+set of backslash escapes is available:
+</P><P>
+
+<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 eight-bit character whose value is the octal value <VAR>nnn</VAR>
+(one to three digits)
+<DT><CODE>\x<VAR>HH</VAR></CODE>
+<DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR>
+(one or two hex digits)
+</DL>
+<P>
+
+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:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>"\C-x\\": "\\"
+</pre></td></tr></table></P><P>
+
+</DL>
+<P>
+
+<A NAME="Conditional Init Constructs"></A>
+<HR SIZE="6">
+<A NAME="SEC11"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC10"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.2 Conditional Init Constructs </H3>
+<!--docid::SEC11::-->
+<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><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.
+<P>
+
+<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.
+<P>
+
+<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.
+<P>
+
+<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:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if Bash
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+$endif
+</pre></td></tr></table></DL>
+<P>
+
+<DT><CODE>$endif</CODE>
+<DD>This command, as seen in the previous example, terminates an
+<CODE>$if</CODE> command.
+<P>
+
+<DT><CODE>$else</CODE>
+<DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if
+the test fails.
+<P>
+
+<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>:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$include /etc/inputrc
+</pre></td></tr></table></DL>
+<P>
+
+<A NAME="Sample Init File"></A>
+<HR SIZE="6">
+<A NAME="SEC12"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC11"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC9"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.3.3 Sample Init File </H3>
+<!--docid::SEC12::-->
+<P>
+
+Here is an example of an <VAR>inputrc</VAR> file. This illustrates key
+binding, variable assignment, and conditional syntax.
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=example><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></td></tr></table></P><P>
+
+<A NAME="Bindable Readline Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC13"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC12"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.4 Bindable Readline Commands </H2>
+<!--docid::SEC13::-->
+<P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Moving about the line.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Specifying numeric arguments, repeat counts.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Getting Readline to do the typing for you.</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Saving and re-executing typed characters</TD></TR>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<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><P>
+
+<A NAME="Commands For Moving"></A>
+<HR SIZE="6">
+<A NAME="SEC14"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.1 Commands For Moving </H3>
+<!--docid::SEC14::-->
+<DL COMPACT>
+<A NAME="IDX27"></A>
+<DT><CODE>beginning-of-line (C-a)</CODE>
+<DD><A NAME="IDX28"></A>
+Move to the start of the current line.
+<P>
+
+<A NAME="IDX29"></A>
+<DT><CODE>end-of-line (C-e)</CODE>
+<DD><A NAME="IDX30"></A>
+Move to the end of the line.
+<P>
+
+<A NAME="IDX31"></A>
+<DT><CODE>forward-char (C-f)</CODE>
+<DD><A NAME="IDX32"></A>
+Move forward a character.
+<P>
+
+<A NAME="IDX33"></A>
+<DT><CODE>backward-char (C-b)</CODE>
+<DD><A NAME="IDX34"></A>
+Move back a character.
+<P>
+
+<A NAME="IDX35"></A>
+<DT><CODE>forward-word (M-f)</CODE>
+<DD><A NAME="IDX36"></A>
+Move forward to the end of the next word. Words are composed of
+letters and digits.
+<P>
+
+<A NAME="IDX37"></A>
+<DT><CODE>backward-word (M-b)</CODE>
+<DD><A NAME="IDX38"></A>
+Move back to the start of the current or previous word. Words are
+composed of letters and digits.
+<P>
+
+<A NAME="IDX39"></A>
+<DT><CODE>clear-screen (C-l)</CODE>
+<DD><A NAME="IDX40"></A>
+Clear the screen and redraw the current line,
+leaving the current line at the top of the screen.
+<P>
+
+<A NAME="IDX41"></A>
+<DT><CODE>redraw-current-line ()</CODE>
+<DD><A NAME="IDX42"></A>
+Refresh the current line. By default, this is unbound.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Commands For History"></A>
+<HR SIZE="6">
+<A NAME="SEC15"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC14"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.2 Commands For Manipulating The History </H3>
+<!--docid::SEC15::-->
+<P>
+
+<DL COMPACT>
+<A NAME="IDX43"></A>
+<DT><CODE>accept-line (Newline or Return)</CODE>
+<DD><A NAME="IDX44"></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.
+<P>
+
+<A NAME="IDX45"></A>
+<DT><CODE>previous-history (C-p)</CODE>
+<DD><A NAME="IDX46"></A>
+Move `back' through the history list, fetching the previous command.
+<P>
+
+<A NAME="IDX47"></A>
+<DT><CODE>next-history (C-n)</CODE>
+<DD><A NAME="IDX48"></A>
+Move `forward' through the history list, fetching the next command.
+<P>
+
+<A NAME="IDX49"></A>
+<DT><CODE>beginning-of-history (M-&#60;)</CODE>
+<DD><A NAME="IDX50"></A>
+Move to the first line in the history.
+<P>
+
+<A NAME="IDX51"></A>
+<DT><CODE>end-of-history (M-&#62;)</CODE>
+<DD><A NAME="IDX52"></A>
+Move to the end of the input history, i.e., the line currently
+being entered.
+<P>
+
+<A NAME="IDX53"></A>
+<DT><CODE>reverse-search-history (C-r)</CODE>
+<DD><A NAME="IDX54"></A>
+Search backward starting at the current line and moving `up' through
+the history as necessary. This is an incremental search.
+<P>
+
+<A NAME="IDX55"></A>
+<DT><CODE>forward-search-history (C-s)</CODE>
+<DD><A NAME="IDX56"></A>
+Search forward starting at the current line and moving `down' through
+the the history as necessary. This is an incremental search.
+<P>
+
+<A NAME="IDX57"></A>
+<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
+<DD><A NAME="IDX58"></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.
+<P>
+
+<A NAME="IDX59"></A>
+<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
+<DD><A NAME="IDX60"></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.
+<P>
+
+<A NAME="IDX61"></A>
+<DT><CODE>history-search-forward ()</CODE>
+<DD><A NAME="IDX62"></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.
+<P>
+
+<A NAME="IDX63"></A>
+<DT><CODE>history-search-backward ()</CODE>
+<DD><A NAME="IDX64"></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.
+<P>
+
+<A NAME="IDX65"></A>
+<DT><CODE>yank-nth-arg (M-C-y)</CODE>
+<DD><A NAME="IDX66"></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.
+<P>
+
+<A NAME="IDX67"></A>
+<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
+<DD><A NAME="IDX68"></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.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Commands For Text"></A>
+<HR SIZE="6">
+<A NAME="SEC16"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC15"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.3 Commands For Changing Text </H3>
+<!--docid::SEC16::-->
+<P>
+
+<DL COMPACT>
+<A NAME="IDX69"></A>
+<DT><CODE>delete-char (C-d)</CODE>
+<DD><A NAME="IDX70"></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.
+<P>
+
+<A NAME="IDX71"></A>
+<DT><CODE>backward-delete-char (Rubout)</CODE>
+<DD><A NAME="IDX72"></A>
+Delete the character behind the cursor. A numeric argument means
+to kill the characters instead of deleting them.
+<P>
+
+<A NAME="IDX73"></A>
+<DT><CODE>forward-backward-delete-char ()</CODE>
+<DD><A NAME="IDX74"></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.
+<P>
+
+<A NAME="IDX75"></A>
+<DT><CODE>quoted-insert (C-q or C-v)</CODE>
+<DD><A NAME="IDX76"></A>
+Add the next character typed to the line verbatim. This is
+how to insert key sequences like <KBD>C-q</KBD>, for example.
+<P>
+
+<A NAME="IDX77"></A>
+<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
+<DD><A NAME="IDX78"></A>
+Insert a tab character.
+<P>
+
+<A NAME="IDX79"></A>
+<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
+<DD><A NAME="IDX80"></A>
+Insert yourself.
+<P>
+
+<A NAME="IDX81"></A>
+<DT><CODE>transpose-chars (C-t)</CODE>
+<DD><A NAME="IDX82"></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.
+<P>
+
+<A NAME="IDX83"></A>
+<DT><CODE>transpose-words (M-t)</CODE>
+<DD><A NAME="IDX84"></A>
+Drag the word before point past the word after point,
+moving point past that word as well.
+If the insertion point is at the end of the line, this transposes
+the last two words on the line.
+<P>
+
+<A NAME="IDX85"></A>
+<DT><CODE>upcase-word (M-u)</CODE>
+<DD><A NAME="IDX86"></A>
+Uppercase the current (or following) word. With a negative argument,
+uppercase the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX87"></A>
+<DT><CODE>downcase-word (M-l)</CODE>
+<DD><A NAME="IDX88"></A>
+Lowercase the current (or following) word. With a negative argument,
+lowercase the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX89"></A>
+<DT><CODE>capitalize-word (M-c)</CODE>
+<DD><A NAME="IDX90"></A>
+Capitalize the current (or following) word. With a negative argument,
+capitalize the previous word, but do not move the cursor.
+<P>
+
+<A NAME="IDX91"></A>
+<DT><CODE>overwrite-mode ()</CODE>
+<DD><A NAME="IDX92"></A>
+Toggle overwrite mode. With an explicit positive numeric argument,
+switches to overwrite mode. With an explicit non-positive numeric
+argument, switches to insert mode. This command affects only
+<CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently.
+Each call to <CODE>readline()</CODE> starts in insert mode.
+<P>
+
+In overwrite mode, characters bound to <CODE>self-insert</CODE> replace
+the text at point rather than pushing the text to the right.
+Characters bound to <CODE>backward-delete-char</CODE> replace the character
+before point with a space.
+</P><P>
+
+By default, this command is unbound.
+</P><P>
+
+</DL>
+<P>
+
+<A NAME="Commands For Killing"></A>
+<HR SIZE="6">
+<A NAME="SEC17"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC16"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.4 Killing And Yanking </H3>
+<!--docid::SEC17::-->
+<P>
+
+<DL COMPACT>
+
+<A NAME="IDX93"></A>
+<DT><CODE>kill-line (C-k)</CODE>
+<DD><A NAME="IDX94"></A>
+Kill the text from point to the end of the line.
+<P>
+
+<A NAME="IDX95"></A>
+<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
+<DD><A NAME="IDX96"></A>
+Kill backward to the beginning of the line.
+<P>
+
+<A NAME="IDX97"></A>
+<DT><CODE>unix-line-discard (C-u)</CODE>
+<DD><A NAME="IDX98"></A>
+Kill backward from the cursor to the beginning of the current line.
+<P>
+
+<A NAME="IDX99"></A>
+<DT><CODE>kill-whole-line ()</CODE>
+<DD><A NAME="IDX100"></A>
+Kill all characters on the current line, no matter where point is.
+By default, this is unbound.
+<P>
+
+<A NAME="IDX101"></A>
+<DT><CODE>kill-word (M-d)</CODE>
+<DD><A NAME="IDX102"></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>.
+<P>
+
+<A NAME="IDX103"></A>
+<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
+<DD><A NAME="IDX104"></A>
+Kill the word behind point.
+Word boundaries are the same as <CODE>backward-word</CODE>.
+<P>
+
+<A NAME="IDX105"></A>
+<DT><CODE>unix-word-rubout (C-w)</CODE>
+<DD><A NAME="IDX106"></A>
+Kill the word behind point, using white space as a word boundary.
+The killed text is saved on the kill-ring.
+<P>
+
+<A NAME="IDX107"></A>
+<DT><CODE>delete-horizontal-space ()</CODE>
+<DD><A NAME="IDX108"></A>
+Delete all spaces and tabs around point. By default, this is unbound.
+<P>
+
+<A NAME="IDX109"></A>
+<DT><CODE>kill-region ()</CODE>
+<DD><A NAME="IDX110"></A>
+Kill the text in the current region.
+By default, this command is unbound.
+<P>
+
+<A NAME="IDX111"></A>
+<DT><CODE>copy-region-as-kill ()</CODE>
+<DD><A NAME="IDX112"></A>
+Copy the text in the region to the kill buffer, so it can be yanked
+right away. By default, this command is unbound.
+<P>
+
+<A NAME="IDX113"></A>
+<DT><CODE>copy-backward-word ()</CODE>
+<DD><A NAME="IDX114"></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.
+<P>
+
+<A NAME="IDX115"></A>
+<DT><CODE>copy-forward-word ()</CODE>
+<DD><A NAME="IDX116"></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.
+<P>
+
+<A NAME="IDX117"></A>
+<DT><CODE>yank (C-y)</CODE>
+<DD><A NAME="IDX118"></A>
+Yank the top of the kill ring into the buffer at point.
+<P>
+
+<A NAME="IDX119"></A>
+<DT><CODE>yank-pop (M-y)</CODE>
+<DD><A NAME="IDX120"></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>
+<P>
+
+<A NAME="Numeric Arguments"></A>
+<HR SIZE="6">
+<A NAME="SEC18"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC17"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.5 Specifying Numeric Arguments </H3>
+<!--docid::SEC18::-->
+<DL COMPACT>
+
+<A NAME="IDX121"></A>
+<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
+<DD><A NAME="IDX122"></A>
+Add this digit to the argument already accumulating, or start a new
+argument. <KBD>M--</KBD> starts a negative argument.
+<P>
+
+<A NAME="IDX123"></A>
+<DT><CODE>universal-argument ()</CODE>
+<DD><A NAME="IDX124"></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>
+<P>
+
+<A NAME="Commands For Completion"></A>
+<HR SIZE="6">
+<A NAME="SEC19"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC18"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.6 Letting Readline Type For You </H3>
+<!--docid::SEC19::-->
+<P>
+
+<DL COMPACT>
+<A NAME="IDX125"></A>
+<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
+<DD><A NAME="IDX126"></A>
+Attempt to perform completion on the text before point.
+The actual completion performed is application-specific.
+The default is filename completion.
+<P>
+
+<A NAME="IDX127"></A>
+<DT><CODE>possible-completions (M-?)</CODE>
+<DD><A NAME="IDX128"></A>
+List the possible completions of the text before point.
+<P>
+
+<A NAME="IDX129"></A>
+<DT><CODE>insert-completions (M-*)</CODE>
+<DD><A NAME="IDX130"></A>
+Insert all completions of the text before point that would have
+been generated by <CODE>possible-completions</CODE>.
+<P>
+
+<A NAME="IDX131"></A>
+<DT><CODE>menu-complete ()</CODE>
+<DD><A NAME="IDX132"></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.
+<P>
+
+<A NAME="IDX133"></A>
+<DT><CODE>delete-char-or-list ()</CODE>
+<DD><A NAME="IDX134"></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.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Keyboard Macros"></A>
+<HR SIZE="6">
+<A NAME="SEC20"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC19"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.7 Keyboard Macros </H3>
+<!--docid::SEC20::-->
+<DL COMPACT>
+
+<A NAME="IDX135"></A>
+<DT><CODE>start-kbd-macro (C-x ()</CODE>
+<DD><A NAME="IDX136"></A>
+Begin saving the characters typed into the current keyboard macro.
+<P>
+
+<A NAME="IDX137"></A>
+<DT><CODE>end-kbd-macro (C-x ))</CODE>
+<DD><A NAME="IDX138"></A>
+Stop saving the characters typed into the current keyboard macro
+and save the definition.
+<P>
+
+<A NAME="IDX139"></A>
+<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
+<DD><A NAME="IDX140"></A>
+Re-execute the last keyboard macro defined, by making the characters
+in the macro appear as if typed at the keyboard.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Miscellaneous Commands"></A>
+<HR SIZE="6">
+<A NAME="SEC21"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC20"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC13"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> 1.4.8 Some Miscellaneous Commands </H3>
+<!--docid::SEC21::-->
+<DL COMPACT>
+
+<A NAME="IDX141"></A>
+<DT><CODE>re-read-init-file (C-x C-r)</CODE>
+<DD><A NAME="IDX142"></A>
+Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
+any bindings or variable assignments found there.
+<P>
+
+<A NAME="IDX143"></A>
+<DT><CODE>abort (C-g)</CODE>
+<DD><A NAME="IDX144"></A>
+Abort the current editing command and
+ring the terminal's bell (subject to the setting of
+<CODE>bell-style</CODE>).
+<P>
+
+<A NAME="IDX145"></A>
+<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
+<DD><A NAME="IDX146"></A>
+If the metafied character <VAR>x</VAR> is lowercase, run the command
+that is bound to the corresponding uppercase character.
+<P>
+
+<A NAME="IDX147"></A>
+<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
+<DD><A NAME="IDX148"></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>.
+<P>
+
+<A NAME="IDX149"></A>
+<DT><CODE>undo (C-_ or C-x C-u)</CODE>
+<DD><A NAME="IDX150"></A>
+Incremental undo, separately remembered for each line.
+<P>
+
+<A NAME="IDX151"></A>
+<DT><CODE>revert-line (M-r)</CODE>
+<DD><A NAME="IDX152"></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.
+<P>
+
+<A NAME="IDX153"></A>
+<DT><CODE>tilde-expand (M-~)</CODE>
+<DD><A NAME="IDX154"></A>
+Perform tilde expansion on the current word.
+<P>
+
+<A NAME="IDX155"></A>
+<DT><CODE>set-mark (C-@)</CODE>
+<DD><A NAME="IDX156"></A>
+Set the mark to the point. If a
+numeric argument is supplied, the mark is set to that position.
+<P>
+
+<A NAME="IDX157"></A>
+<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
+<DD><A NAME="IDX158"></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.
+<P>
+
+<A NAME="IDX159"></A>
+<DT><CODE>character-search (C-])</CODE>
+<DD><A NAME="IDX160"></A>
+A character is read and point is moved to the next occurrence of that
+character. A negative count searches for previous occurrences.
+<P>
+
+<A NAME="IDX161"></A>
+<DT><CODE>character-search-backward (M-C-])</CODE>
+<DD><A NAME="IDX162"></A>
+A character is read and point is moved to the previous occurrence
+of that character. A negative count searches for subsequent
+occurrences.
+<P>
+
+<A NAME="IDX163"></A>
+<DT><CODE>insert-comment (M-#)</CODE>
+<DD><A NAME="IDX164"></A>
+Without a numeric argument, the value of the <CODE>comment-begin</CODE>
+variable is inserted at the beginning of the current line.
+If a numeric argument is supplied, this command acts as a toggle: if
+the characters at the beginning of the line do not match the value
+of <CODE>comment-begin</CODE>, the value is inserted, otherwise
+the characters in <CODE>comment-begin</CODE> are deleted from the beginning of
+the line.
+In either case, the line is accepted as if a newline had been typed.
+<P>
+
+<A NAME="IDX165"></A>
+<DT><CODE>dump-functions ()</CODE>
+<DD><A NAME="IDX166"></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.
+<P>
+
+<A NAME="IDX167"></A>
+<DT><CODE>dump-variables ()</CODE>
+<DD><A NAME="IDX168"></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.
+<P>
+
+<A NAME="IDX169"></A>
+<DT><CODE>dump-macros ()</CODE>
+<DD><A NAME="IDX170"></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.
+<P>
+
+<A NAME="IDX171"></A>
+<DT><CODE>emacs-editing-mode (C-e)</CODE>
+<DD><A NAME="IDX172"></A>
+When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
+editing mode.
+<P>
+
+<A NAME="IDX173"></A>
+<DT><CODE>vi-editing-mode (M-C-j)</CODE>
+<DD><A NAME="IDX174"></A>
+When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
+editing mode.
+<P>
+
+</DL>
+<P>
+
+<A NAME="Readline vi Mode"></A>
+<HR SIZE="6">
+<A NAME="SEC22"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC21"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &gt;&gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> 1.5 Readline vi Mode </H2>
+<!--docid::SEC22::-->
+<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>
+
+<A NAME="Copying This Manual"></A>
+<HR SIZE="6">
+<A NAME="SEC23"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC22"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC24"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC1"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1> A. Copying This Manual </H1>
+<!--docid::SEC23::-->
+<P>
+
+<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
+<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="rluserman.html#SEC24">A.1 GNU Free Documentation License</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">License for copying this manual.</TD></TR>
+</TABLE></BLOCKQUOTE>
+<P>
+
+<A NAME="GNU Free Documentation License"></A>
+<HR SIZE="6">
+<A NAME="SEC24"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC25"> &gt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H2> A.1 GNU Free Documentation License </H2>
+<!--docid::SEC24::-->
+<P>
+
+<A NAME="IDX175"></A>
+<center>
+ Version 1.2, November 2002
+</center>
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=display><pre style="font-family: serif">Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+</pre></td></tr></table></P><P>
+
+<OL>
+<LI>
+PREAMBLE
+<P>
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document <EM>free</EM> in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+</P><P>
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+</P><P>
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+</P><P>
+
+<LI>
+APPLICABILITY AND DEFINITIONS
+<P>
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The "Document", below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as "you". You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+</P><P>
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+</P><P>
+
+A "Secondary Section" is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+</P><P>
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+</P><P>
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+</P><P>
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not "Transparent" is called "Opaque".
+</P><P>
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input
+format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available
+<FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification. Examples
+of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and
+<FONT SIZE="-1">JPG</FONT>. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or
+<FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are
+not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>,
+PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for
+output purposes only.
+</P><P>
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+</P><P>
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".) To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+</P><P>
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+</P><P>
+
+<LI>
+VERBATIM COPYING
+<P>
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+</P><P>
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+</P><P>
+
+<LI>
+COPYING IN QUANTITY
+<P>
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+</P><P>
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+</P><P>
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+</P><P>
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+</P><P>
+
+<LI>
+MODIFICATIONS
+<P>
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+</P><P>
+
+<OL>
+<LI>
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+<P>
+
+<LI>
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+<P>
+
+<LI>
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+<P>
+
+<LI>
+Preserve all the copyright notices of the Document.
+<P>
+
+<LI>
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+<P>
+
+<LI>
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+<P>
+
+<LI>
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+<P>
+
+<LI>
+Include an unaltered copy of this License.
+<P>
+
+<LI>
+Preserve the section Entitled "History", Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled "History" in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+<P>
+
+<LI>
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the "History" section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+<P>
+
+<LI>
+For any section Entitled "Acknowledgements" or "Dedications", Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+<P>
+
+<LI>
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+<P>
+
+<LI>
+Delete any section Entitled "Endorsements". Such a section
+may not be included in the Modified Version.
+<P>
+
+<LI>
+Do not retitle any existing section to be Entitled "Endorsements" or
+to conflict in title with any Invariant Section.
+<P>
+
+<LI>
+Preserve any Warranty Disclaimers.
+</OL>
+<P>
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+</P><P>
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+</P><P>
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+</P><P>
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+</P><P>
+
+<LI>
+COMBINING DOCUMENTS
+<P>
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+</P><P>
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+</P><P>
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications". You must delete all
+sections Entitled "Endorsements."
+</P><P>
+
+<LI>
+COLLECTIONS OF DOCUMENTS
+<P>
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+</P><P>
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+</P><P>
+
+<LI>
+AGGREGATION WITH INDEPENDENT WORKS
+<P>
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+</P><P>
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+</P><P>
+
+<LI>
+TRANSLATION
+<P>
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+</P><P>
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+</P><P>
+
+<LI>
+TERMINATION
+<P>
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+</P><P>
+
+<LI>
+FUTURE REVISIONS OF THIS LICENSE
+<P>
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+<A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>.
+</P><P>
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+</OL>
+<P>
+
+<HR SIZE="6">
+<A NAME="SEC25"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC24"> &lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC23"> &lt;&lt; </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC24"> Up </A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H3> A.1.1 ADDENDUM: How to use this License for your documents </H3>
+<!--docid::SEC25::-->
+<P>
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+</P><P>
+
+<TABLE><tr><td>&nbsp;</td><td class=smallexample><FONT SIZE=-1><pre> with the Invariant Sections being <VAR>list their titles</VAR>, with
+ the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts
+ being <VAR>list</VAR>.
+</FONT></pre></td></tr></table></P><P>
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+</P><P>
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+</P><P>
+
+<HR SIZE="6">
+<A NAME="SEC_Contents"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Table of Contents</H1>
+<UL>
+<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A>
+<BR>
+<UL>
+<A NAME="TOC2" HREF="rluserman.html#SEC2">1.1 Introduction to Line Editing</A>
+<BR>
+<A NAME="TOC3" HREF="rluserman.html#SEC3">1.2 Readline Interaction</A>
+<BR>
+<UL>
+<A NAME="TOC4" HREF="rluserman.html#SEC4">1.2.1 Readline Bare Essentials</A>
+<BR>
+<A NAME="TOC5" HREF="rluserman.html#SEC5">1.2.2 Readline Movement Commands</A>
+<BR>
+<A NAME="TOC6" HREF="rluserman.html#SEC6">1.2.3 Readline Killing Commands</A>
+<BR>
+<A NAME="TOC7" HREF="rluserman.html#SEC7">1.2.4 Readline Arguments</A>
+<BR>
+<A NAME="TOC8" HREF="rluserman.html#SEC8">1.2.5 Searching for Commands in the History</A>
+<BR>
+</UL>
+<A NAME="TOC9" HREF="rluserman.html#SEC9">1.3 Readline Init File</A>
+<BR>
+<UL>
+<A NAME="TOC10" HREF="rluserman.html#SEC10">1.3.1 Readline Init File Syntax</A>
+<BR>
+<A NAME="TOC11" HREF="rluserman.html#SEC11">1.3.2 Conditional Init Constructs</A>
+<BR>
+<A NAME="TOC12" HREF="rluserman.html#SEC12">1.3.3 Sample Init File</A>
+<BR>
+</UL>
+<A NAME="TOC13" HREF="rluserman.html#SEC13">1.4 Bindable Readline Commands</A>
+<BR>
+<UL>
+<A NAME="TOC14" HREF="rluserman.html#SEC14">1.4.1 Commands For Moving</A>
+<BR>
+<A NAME="TOC15" HREF="rluserman.html#SEC15">1.4.2 Commands For Manipulating The History</A>
+<BR>
+<A NAME="TOC16" HREF="rluserman.html#SEC16">1.4.3 Commands For Changing Text</A>
+<BR>
+<A NAME="TOC17" HREF="rluserman.html#SEC17">1.4.4 Killing And Yanking</A>
+<BR>
+<A NAME="TOC18" HREF="rluserman.html#SEC18">1.4.5 Specifying Numeric Arguments</A>
+<BR>
+<A NAME="TOC19" HREF="rluserman.html#SEC19">1.4.6 Letting Readline Type For You</A>
+<BR>
+<A NAME="TOC20" HREF="rluserman.html#SEC20">1.4.7 Keyboard Macros</A>
+<BR>
+<A NAME="TOC21" HREF="rluserman.html#SEC21">1.4.8 Some Miscellaneous Commands</A>
+<BR>
+</UL>
+<A NAME="TOC22" HREF="rluserman.html#SEC22">1.5 Readline vi Mode</A>
+<BR>
+</UL>
+<A NAME="TOC23" HREF="rluserman.html#SEC23">A. Copying This Manual</A>
+<BR>
+<UL>
+<A NAME="TOC24" HREF="rluserman.html#SEC24">A.1 GNU Free Documentation License</A>
+<BR>
+<UL>
+<A NAME="TOC25" HREF="rluserman.html#SEC25">A.1.1 ADDENDUM: How to use this License for your documents</A>
+<BR>
+</UL>
+</UL>
+</UL>
+<HR SIZE=1>
+<A NAME="SEC_OVERVIEW"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>Short Table of Contents</H1>
+<BLOCKQUOTE>
+<A NAME="TOC1" HREF="rluserman.html#SEC1">1. Command Line Editing</A>
+<BR>
+<A NAME="TOC23" HREF="rluserman.html#SEC23">A. Copying This Manual</A>
+<BR>
+
+</BLOCKQUOTE>
+<HR SIZE=1>
+<A NAME="SEC_About"></A>
+<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
+<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Top">Top</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_Contents">Contents</A>]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
+<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="rluserman.html#SEC_About"> ? </A>]</TD>
+</TR></TABLE>
+<H1>About this document</H1>
+This document was generated by <I>Chet Ramey</I> on <I>September, 22 2003</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+<P></P>
+The buttons in the navigation panels have the following meaning:
+<P></P>
+<table border = "1">
+<TR>
+<TH> Button </TH>
+<TH> Name </TH>
+<TH> Go to </TH>
+<TH> From 1.2.3 go to</TH>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt; ] </TD>
+<TD ALIGN="CENTER">
+Back
+</TD>
+<TD>
+previous section in reading order
+</TD>
+<TD>
+1.2.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt; ] </TD>
+<TD ALIGN="CENTER">
+Forward
+</TD>
+<TD>
+next section in reading order
+</TD>
+<TD>
+1.2.4
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &lt;&lt; ] </TD>
+<TD ALIGN="CENTER">
+FastBack
+</TD>
+<TD>
+previous or up-and-previous section
+</TD>
+<TD>
+1.1
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ Up ] </TD>
+<TD ALIGN="CENTER">
+Up
+</TD>
+<TD>
+up section
+</TD>
+<TD>
+1.2
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ &gt;&gt; ] </TD>
+<TD ALIGN="CENTER">
+FastForward
+</TD>
+<TD>
+next or up-and-next section
+</TD>
+<TD>
+1.3
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Top] </TD>
+<TD ALIGN="CENTER">
+Top
+</TD>
+<TD>
+cover (top) of document
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Contents] </TD>
+<TD ALIGN="CENTER">
+Contents
+</TD>
+<TD>
+table of contents
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [Index] </TD>
+<TD ALIGN="CENTER">
+Index
+</TD>
+<TD>
+concept index
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+<TR>
+<TD ALIGN="CENTER">
+ [ ? ] </TD>
+<TD ALIGN="CENTER">
+About
+</TD>
+<TD>
+this page
+</TD>
+<TD>
+ &nbsp;
+</TD>
+</TR>
+</TABLE>
+<P></P>
+where the <STRONG> Example </STRONG> assumes that the current position
+is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
+the following structure:
+<UL>
+<LI> 1. Section One </LI>
+<UL>
+<LI>1.1 Subsection One-One</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.2 Subsection One-Two</LI>
+<UL>
+<LI>1.2.1 Subsubsection One-Two-One
+</LI><LI>1.2.2 Subsubsection One-Two-Two
+</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
+&lt;== Current Position </STRONG>
+</LI><LI>1.2.4 Subsubsection One-Two-Four
+</LI></UL>
+<LI>1.3 Subsection One-Three</LI>
+<UL>
+<LI> ... </LI>
+</UL>
+<LI>1.4 Subsection One-Four</LI>
+</UL>
+</UL>
+
+<HR SIZE=1>
+<BR>
+<FONT SIZE="-1">
+This document was generated
+by <I>Chet Ramey</I> on <I>September, 22 2003</I>
+using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
+"><I>texi2html</I></A>
+
+</BODY>
+</HTML>
diff --git a/lib/readline/doc/rluserman.info b/lib/readline/doc/rluserman.info
new file mode 100644
index 00000000..50c6b174
--- /dev/null
+++ b/lib/readline/doc/rluserman.info
@@ -0,0 +1,1726 @@
+This is rluserman.info, produced by makeinfo version 4.5 from
+./rluserman.texi.
+
+This manual describes the end user interface of the GNU Readline Library
+(version 5.0, 19 September 2003), a library which aids in the
+consistency of user interface across discrete programs which provide a
+command line interface.
+
+ Copyright (C) 1988-2003 Free Software Foundation, Inc.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.1 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, with the Front-Cover texts
+ being "A GNU Manual," and with the Back-Cover Texts as in (a)
+ below. A copy of the license is included in the section entitled
+ "GNU Free Documentation License."
+
+ (a) The FSF's Back-Cover Text is: "You have freedom to copy and
+ modify this GNU Manual, like GNU software. Copies published by
+ the Free Software Foundation raise funds for GNU development."
+
+INFO-DIR-SECTION Libraries
+START-INFO-DIR-ENTRY
+* RLuserman: (rluserman). The GNU readline library User's Manual.
+END-INFO-DIR-ENTRY
+
+
+File: rluserman.info, Node: Top, Next: Command Line Editing, Up: (dir)
+
+GNU Readline Library
+********************
+
+ This document describes the end user interface of the GNU Readline
+Library, a utility which aids in the consistency of user interface
+across discrete programs which provide a command line interface.
+
+* Menu:
+
+* Command Line Editing:: GNU Readline User's Manual.
+* Copying This Manual:: Copying This Manual.
+
+
+File: rluserman.info, Node: Command Line Editing, Next: Copying This Manual, Prev: Top, Up: Top
+
+Command Line Editing
+********************
+
+ This chapter describes the basic features of the GNU command line
+editing interface.
+
+* Menu:
+
+* Introduction and Notation:: Notation used in this text.
+* Readline Interaction:: The minimum set of commands for editing a line.
+* Readline Init File:: Customizing Readline from a user's view.
+* Bindable Readline Commands:: A description of most of the Readline commands
+ available for binding
+* Readline vi Mode:: A short description of how to make Readline
+ behave like the vi editor.
+
+
+File: rluserman.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
+
+Introduction to Line Editing
+============================
+
+ The following paragraphs describe the notation used to represent
+keystrokes.
+
+ The text `C-k' is read as `Control-K' and describes the character
+produced when the <k> key is pressed while the Control key is depressed.
+
+ The text `M-k' is read as `Meta-K' and describes the character
+produced when the Meta key (if you have one) is depressed, and the <k>
+key is pressed. The Meta key is labeled <ALT> on many keyboards. On
+keyboards with two keys labeled <ALT> (usually to either side of the
+space bar), the <ALT> on the left side is generally set to work as a
+Meta key. The <ALT> key on the right may also be configured to work as
+a Meta key or may be configured as some other modifier, such as a
+Compose key for typing accented characters.
+
+ If you do not have a Meta or <ALT> key, or another key working as a
+Meta key, the identical keystroke can be generated by typing <ESC>
+_first_, and then typing <k>. Either process is known as "metafying"
+the <k> key.
+
+ The text `M-C-k' is read as `Meta-Control-k' and describes the
+character produced by "metafying" `C-k'.
+
+ In addition, several keys have their own names. Specifically,
+<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves
+when seen in this text, or in an init file (*note Readline Init File::).
+If your keyboard lacks a <LFD> key, typing <C-j> will produce the
+desired character. The <RET> key may be labeled <Return> or <Enter> on
+some keyboards.
+
+
+File: rluserman.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
+
+Readline Interaction
+====================
+
+ Often during an interactive session you type in a long line of text,
+only to notice that the first word on the line is misspelled. The
+Readline library gives you a set of commands for manipulating the text
+as you type it in, allowing you to just fix your typo, and not forcing
+you to retype the majority of the line. Using these editing commands,
+you move the cursor to the place that needs correction, and delete or
+insert the text of the corrections. Then, when you are satisfied with
+the line, you simply press <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: rluserman.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
+
+Readline Bare Essentials
+------------------------
+
+ In order to enter characters into the line, simply type them. The
+typed character appears where the cursor was, and then the cursor moves
+one space to the right. If you mistype a character, you can use your
+erase character to back up and delete the mistyped character.
+
+ Sometimes you may mistype a character, and not notice the error
+until you have typed several other characters. In that case, you can
+type `C-b' to move the cursor to the left, and then correct your
+mistake. Afterwards, you can move the cursor to the right with `C-f'.
+
+ When you add text in the middle of a line, you will notice that
+characters to the right of the cursor are `pushed over' to make room
+for the text that you have inserted. Likewise, when you delete text
+behind the cursor, characters to the right of the cursor are `pulled
+back' to fill in the blank space created by the removal of the text. A
+list of the bare essentials for editing the text of an input line
+follows.
+
+`C-b'
+ Move back one character.
+
+`C-f'
+ Move forward one character.
+
+<DEL> or <Backspace>
+ Delete the character to the left of the cursor.
+
+`C-d'
+ Delete the character underneath the cursor.
+
+Printing characters
+ Insert the character into the line at the cursor.
+
+`C-_' or `C-x C-u'
+ Undo the last editing command. You can undo all the way back to an
+ empty line.
+
+(Depending on your configuration, the <Backspace> key be set to delete
+the character to the left of the cursor and the <DEL> key set to delete
+the character underneath the cursor, like `C-d', rather than the
+character to the left of the cursor.)
+
+
+File: rluserman.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
+
+Readline Movement Commands
+--------------------------
+
+ The above table describes the most basic keystrokes that you need in
+order to do editing of the input line. For your convenience, many
+other commands have been added in addition to `C-b', `C-f', `C-d', and
+<DEL>. Here are some commands for moving more rapidly about the line.
+
+`C-a'
+ Move to the start of the line.
+
+`C-e'
+ Move to the end of the line.
+
+`M-f'
+ Move forward a word, where a word is composed of letters and
+ digits.
+
+`M-b'
+ Move backward a word.
+
+`C-l'
+ Clear the screen, reprinting the current line at the top.
+
+ Notice how `C-f' moves forward a character, while `M-f' moves
+forward a word. It is a loose convention that control keystrokes
+operate on characters while meta keystrokes operate on words.
+
+
+File: rluserman.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
+
+Readline Killing Commands
+-------------------------
+
+ "Killing" text means to delete the text from the line, but to save
+it away for later use, usually by "yanking" (re-inserting) it back into
+the line. (`Cut' and `paste' are more recent jargon for `kill' and
+`yank'.)
+
+ If the description for a command says that it `kills' text, then you
+can be sure that you can get the text back in a different (or the same)
+place later.
+
+ When you use a kill command, the text is saved in a "kill-ring".
+Any number of consecutive kills save all of the killed text together, so
+that when you yank it back, you get it all. The kill ring is not line
+specific; the text that you killed on a previously typed line is
+available to be yanked back later, when you are typing another line.
+
+ Here is the list of commands for killing text.
+
+`C-k'
+ Kill the text from the current cursor position to the end of the
+ line.
+
+`M-d'
+ Kill from the cursor to the end of the current word, or, if between
+ words, to the end of the next word. Word boundaries are the same
+ as those used by `M-f'.
+
+`M-<DEL>'
+ Kill from the cursor the start of the current word, or, if between
+ words, to the start of the previous word. Word boundaries are the
+ same as those used by `M-b'.
+
+`C-w'
+ Kill from the cursor to the previous whitespace. This is
+ different than `M-<DEL>' because the word boundaries differ.
+
+
+ Here is how to "yank" the text back into the line. Yanking means to
+copy the most-recently-killed text from the kill buffer.
+
+`C-y'
+ Yank the most recently killed text back into the buffer at the
+ cursor.
+
+`M-y'
+ Rotate the kill-ring, and yank the new top. You can only do this
+ if the prior command is `C-y' or `M-y'.
+
+
+File: rluserman.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
+
+Readline Arguments
+------------------
+
+ You can pass numeric arguments to Readline commands. Sometimes the
+argument acts as a repeat count, other times it is the sign of the
+argument that is significant. If you pass a negative argument to a
+command which normally acts in a forward direction, that command will
+act in a backward direction. For example, to kill text back to the
+start of the line, you might type `M-- C-k'.
+
+ The general way to pass numeric arguments to a command is to type
+meta digits before the command. If the first `digit' typed is a minus
+sign (`-'), then the sign of the argument will be negative. Once you
+have typed one meta digit to get the argument started, you can type the
+remainder of the digits, and then the command. For example, to give
+the `C-d' command an argument of 10, you could type `M-1 0 C-d', which
+will delete the next ten characters on the input line.
+
+
+File: rluserman.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction
+
+Searching for Commands in the History
+-------------------------------------
+
+ Readline provides commands for searching through the command history
+for lines containing a specified string. There are two search modes:
+"incremental" and "non-incremental".
+
+ Incremental searches begin before the user has finished typing the
+search string. As each character of the search string is typed,
+Readline displays the next entry from the history matching the string
+typed so far. An incremental search requires only as many characters
+as needed to find the desired history entry. To search backward in the
+history for a particular string, type `C-r'. Typing `C-s' searches
+forward through the history. The characters present in the value of
+the `isearch-terminators' variable are used to terminate an incremental
+search. If that variable has not been assigned a value, the <ESC> and
+`C-J' characters will terminate an incremental search. `C-g' will
+abort an incremental search and restore the original line. When the
+search is terminated, the history entry containing the search string
+becomes the current line.
+
+ To find other matching entries in the history list, type `C-r' or
+`C-s' as appropriate. This will search backward or forward in the
+history for the next entry matching the search string typed so far.
+Any other key sequence bound to a Readline command will terminate the
+search and execute that command. For instance, a <RET> will terminate
+the search and accept the line, thereby executing the command from the
+history list. A movement command will terminate the search, make the
+last line found the current line, and begin editing.
+
+ Readline remembers the last incremental search string. If two
+`C-r's are typed without any intervening characters defining a new
+search string, any remembered search string is used.
+
+ Non-incremental searches read the entire search string before
+starting to search for matching history lines. The search string may be
+typed by the user or be part of the contents of the current line.
+
+
+File: rluserman.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
+
+Readline Init File
+==================
+
+ Although the Readline library comes with a set of Emacs-like
+keybindings installed by default, it is possible to use a different set
+of keybindings. Any user can customize programs that use Readline by
+putting commands in an "inputrc" file, conventionally in his home
+directory. The name of this file is taken from the value of the
+environment variable `INPUTRC'. If that variable is unset, the default
+is `~/.inputrc'.
+
+ When a program which uses the Readline library starts up, the init
+file is read, and the key bindings are set.
+
+ In addition, the `C-x C-r' command re-reads this init file, thus
+incorporating any changes that you might have made to it.
+
+* Menu:
+
+* Readline Init File Syntax:: Syntax for the commands in the inputrc file.
+
+* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
+
+* Sample Init File:: An example inputrc file.
+
+
+File: rluserman.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File
+
+Readline Init File Syntax
+-------------------------
+
+ There are only a few basic constructs allowed in the Readline init
+file. Blank lines are ignored. Lines beginning with a `#' are
+comments. Lines beginning with a `$' indicate conditional constructs
+(*note Conditional Init Constructs::). Other lines denote variable
+settings and key bindings.
+
+Variable Settings
+ You can modify the run-time behavior of Readline by altering the
+ values of variables in Readline using the `set' command within the
+ init file. 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 the list of possibilities should be
+ displayed. 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'.
+
+ If set to `on', the history code attempts to place point at
+ the same location on each history line retrieved with
+ `previous-history' or `next-history'.
+
+ `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.
+
+ `mark-symlinked-directories'
+ If set to `on', completed names which are symbolic links to
+ directories have a slash appended (subject to the value of
+ `mark-directories'). The default is `off'.
+
+ `match-hidden-files'
+ This variable, when set to `on', causes Readline to match
+ files whose names begin with a `.' (hidden files) when
+ performing filename completion, unless the leading `.' is
+ supplied by the user in the filename to be completed. This
+ variable is `on' 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'.
+
+ `page-completions'
+ If set to `on', Readline uses an internal `more'-like pager
+ to display a screenful of possible completions at a time.
+ This variable is `on' by default.
+
+ `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'.
+
+ `show-all-if-unmodified'
+ This alters the default behavior of the completion functions
+ in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to
+ `on', words which have more than one possible completion
+ without any possible partial completion (the possible
+ completions don't share a common prefix) 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 eight-bit character whose value is the octal value NNN
+ (one to three digits)
+
+ `\xHH'
+ the eight-bit character whose value is the hexadecimal value
+ HH (one or two hex digits)
+
+ When entering the text of a macro, single or double quotes must be
+ used to indicate a macro definition. Unquoted text is assumed to
+ be a function name. In the macro body, the backslash escapes
+ described above are expanded. Backslash will quote any other
+ character in the macro text, including `"' and `''. For example,
+ the following binding will make `C-x \' insert a single `\' into
+ the line:
+ "\C-x\\": "\\"
+
+
+
+File: rluserman.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File
+
+Conditional Init Constructs
+---------------------------
+
+ Readline implements a facility similar in spirit to the conditional
+compilation features of the C preprocessor which allows key bindings
+and variable settings to be performed as the result of tests. There
+are four parser directives used.
+
+`$if'
+ The `$if' construct allows bindings to be made based on the
+ editing mode, the terminal being used, or the application using
+ Readline. The text of the test extends to the end of the line; no
+ characters are required to isolate it.
+
+ `mode'
+ The `mode=' form of the `$if' directive is used to test
+ whether Readline is in `emacs' or `vi' mode. This may be
+ used in conjunction with the `set keymap' command, for
+ instance, to set bindings in the `emacs-standard' and
+ `emacs-ctlx' keymaps only if Readline is starting out in
+ `emacs' mode.
+
+ `term'
+ The `term=' form may be used to include terminal-specific key
+ bindings, perhaps to bind the key sequences output by the
+ terminal's function keys. The word on the right side of the
+ `=' is tested against both the full name of the terminal and
+ the portion of the terminal name before the first `-'. This
+ allows `sun' to match both `sun' and `sun-cmd', for instance.
+
+ `application'
+ The APPLICATION construct is used to include
+ application-specific settings. Each program using the
+ Readline library sets the APPLICATION NAME, and you can test
+ for 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: rluserman.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File
+
+Sample Init File
+----------------
+
+ Here is an example of an INPUTRC file. This illustrates key
+binding, variable assignment, and conditional syntax.
+
+
+ # This file controls the behaviour of line input editing for
+ # programs that use the GNU Readline library. Existing
+ # programs include FTP, Bash, and GDB.
+ #
+ # You can re-read the inputrc file with C-x C-r.
+ # Lines beginning with '#' are comments.
+ #
+ # First, include any systemwide bindings and variable
+ # assignments from /etc/Inputrc
+ $include /etc/Inputrc
+
+ #
+ # Set various bindings for emacs mode.
+
+ set editing-mode emacs
+
+ $if mode=emacs
+
+ Meta-Control-h: backward-kill-word Text after the function name is ignored
+
+ #
+ # Arrow keys in keypad mode
+ #
+ #"\M-OD": backward-char
+ #"\M-OC": forward-char
+ #"\M-OA": previous-history
+ #"\M-OB": next-history
+ #
+ # Arrow keys in ANSI mode
+ #
+ "\M-[D": backward-char
+ "\M-[C": forward-char
+ "\M-[A": previous-history
+ "\M-[B": next-history
+ #
+ # Arrow keys in 8 bit keypad mode
+ #
+ #"\M-\C-OD": backward-char
+ #"\M-\C-OC": forward-char
+ #"\M-\C-OA": previous-history
+ #"\M-\C-OB": next-history
+ #
+ # Arrow keys in 8 bit ANSI mode
+ #
+ #"\M-\C-[D": backward-char
+ #"\M-\C-[C": forward-char
+ #"\M-\C-[A": previous-history
+ #"\M-\C-[B": next-history
+
+ C-q: quoted-insert
+
+ $endif
+
+ # An old-style binding. This happens to be the default.
+ TAB: complete
+
+ # Macros that are convenient for shell interaction
+ $if Bash
+ # edit the path
+ "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+ # prepare to type a quoted word --
+ # insert open and close double quotes
+ # and move to just after the open quote
+ "\C-x\"": "\"\"\C-b"
+ # insert a backslash (testing backslash escapes
+ # in sequences and macros)
+ "\C-x\\": "\\"
+ # Quote the current or previous word
+ "\C-xq": "\eb\"\ef\""
+ # Add a binding to refresh the line, which is unbound
+ "\C-xr": redraw-current-line
+ # Edit variable on current line.
+ "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+ $endif
+
+ # use a visible bell if one is available
+ set bell-style visible
+
+ # don't strip characters to 7 bits when reading
+ set input-meta on
+
+ # allow iso-latin1 characters to be inserted rather
+ # than converted to prefix-meta sequences
+ set convert-meta off
+
+ # display characters with the eighth bit set directly
+ # rather than as meta-prefixed characters
+ set output-meta on
+
+ # if there are more than 150 possible completions for
+ # a word, ask the user if he wants to see all of them
+ set completion-query-items 150
+
+ # For FTP
+ $if Ftp
+ "\C-xg": "get \M-?"
+ "\C-xt": "put \M-?"
+ "\M-.": yank-last-arg
+ $endif
+
+
+File: rluserman.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
+
+Bindable Readline Commands
+==========================
+
+* Menu:
+
+* Commands For Moving:: Moving about the line.
+* Commands For History:: Getting at previous lines.
+* Commands For Text:: Commands for changing text.
+* Commands For Killing:: Commands for killing and yanking.
+* Numeric Arguments:: Specifying numeric arguments, repeat counts.
+* Commands For Completion:: Getting Readline to do the typing for you.
+* Keyboard Macros:: Saving and re-executing typed characters
+* Miscellaneous Commands:: Other miscellaneous commands.
+
+ This section describes Readline commands that may be bound to key
+sequences. Command names without an accompanying key sequence are
+unbound by default.
+
+ In the following descriptions, "point" refers to the current cursor
+position, and "mark" refers to a cursor position saved by the
+`set-mark' command. The text between the point and mark is referred to
+as the "region".
+
+
+File: rluserman.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
+
+Commands For Moving
+-------------------
+
+`beginning-of-line (C-a)'
+ Move to the start of the current line.
+
+`end-of-line (C-e)'
+ Move to the end of the line.
+
+`forward-char (C-f)'
+ Move forward a character.
+
+`backward-char (C-b)'
+ Move back a character.
+
+`forward-word (M-f)'
+ Move forward to the end of the next word. Words are composed of
+ letters and digits.
+
+`backward-word (M-b)'
+ Move back to the start of the current or previous word. Words are
+ composed of letters and digits.
+
+`clear-screen (C-l)'
+ Clear the screen and redraw the current line, leaving the current
+ line at the top of the screen.
+
+`redraw-current-line ()'
+ Refresh the current line. By default, this is unbound.
+
+
+
+File: rluserman.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
+
+Commands For Manipulating The History
+-------------------------------------
+
+`accept-line (Newline 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: rluserman.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
+
+Commands For Changing Text
+--------------------------
+
+`delete-char (C-d)'
+ Delete the character 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. If the insertion point is at the end of
+ the line, this transposes the last two words on the line.
+
+`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.
+
+`overwrite-mode ()'
+ Toggle overwrite mode. With an explicit positive numeric argument,
+ switches to overwrite mode. With an explicit non-positive numeric
+ argument, switches to insert mode. This command affects only
+ `emacs' mode; `vi' mode does overwrite differently. Each call to
+ `readline()' starts in insert mode.
+
+ In overwrite mode, characters bound to `self-insert' replace the
+ text at point rather than pushing the text to the right.
+ Characters bound to `backward-delete-char' replace the character
+ before point with a space.
+
+ By default, this command is unbound.
+
+
+
+File: rluserman.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
+
+Killing And Yanking
+-------------------
+
+`kill-line (C-k)'
+ Kill the text from point to the end of the line.
+
+`backward-kill-line (C-x Rubout)'
+ Kill backward to the beginning of the line.
+
+`unix-line-discard (C-u)'
+ Kill backward from the cursor to the beginning of the current line.
+
+`kill-whole-line ()'
+ Kill all characters on the current line, no matter 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: rluserman.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
+
+Specifying Numeric Arguments
+----------------------------
+
+`digit-argument (M-0, M-1, ... M--)'
+ Add this digit to the argument already accumulating, or start a new
+ argument. `M--' starts a negative argument.
+
+`universal-argument ()'
+ This is another way to specify an argument. If this command is
+ followed by one or more digits, optionally with a leading minus
+ sign, those digits define the argument. If the command is
+ followed by digits, executing `universal-argument' again ends the
+ numeric argument, but is otherwise ignored. As a special case, if
+ this command is immediately followed by a character that is
+ neither a digit or minus sign, the argument count for the next
+ command is multiplied by four. The argument count is initially
+ one, so executing this function the first time makes the argument
+ count four, a second time makes the argument count sixteen, and so
+ on. By default, this is not bound to a key.
+
+
+File: rluserman.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
+
+Letting Readline Type For You
+-----------------------------
+
+`complete (<TAB>)'
+ Attempt to 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: rluserman.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
+
+Keyboard Macros
+---------------
+
+`start-kbd-macro (C-x ()'
+ Begin saving the characters typed into the current keyboard macro.
+
+`end-kbd-macro (C-x ))'
+ Stop saving the characters typed into the current keyboard macro
+ and save the definition.
+
+`call-last-kbd-macro (C-x e)'
+ Re-execute the last keyboard macro defined, by making the
+ characters in the macro appear as if typed at the keyboard.
+
+
+
+File: rluserman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
+
+Some Miscellaneous Commands
+---------------------------
+
+`re-read-init-file (C-x C-r)'
+ Read in the contents of the INPUTRC file, and incorporate any
+ bindings or variable assignments found there.
+
+`abort (C-g)'
+ Abort the current editing command and ring the terminal's bell
+ (subject to the setting of `bell-style').
+
+`do-uppercase-version (M-a, M-b, M-X, ...)'
+ If the metafied character X is lowercase, run the command that is
+ bound to the corresponding uppercase character.
+
+`prefix-meta (<ESC>)'
+ 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-#)'
+ Without a numeric argument, the value of the `comment-begin'
+ variable is inserted at the beginning of the current line. If a
+ numeric argument is supplied, this command acts as a toggle: if
+ the characters at the beginning of the line do not match the value
+ of `comment-begin', the value is inserted, otherwise the
+ characters in `comment-begin' are deleted from the beginning of
+ the line. In either case, 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.
+
+`emacs-editing-mode (C-e)'
+ When in `vi' command mode, this causes a switch to `emacs' editing
+ mode.
+
+`vi-editing-mode (M-C-j)'
+ When in `emacs' editing mode, this causes a switch to `vi' editing
+ mode.
+
+
+
+File: rluserman.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
+
+Readline vi Mode
+================
+
+ While the Readline library does not have a full set of `vi' editing
+functions, it does contain enough to allow simple editing of the line.
+The Readline `vi' mode behaves as specified in the POSIX 1003.2
+standard.
+
+ In order to switch interactively between `emacs' and `vi' editing
+modes, use the command `M-C-j' (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.
+
+
+File: rluserman.info, Node: Copying This Manual, Prev: Command Line Editing, Up: Top
+
+Copying This Manual
+*******************
+
+* Menu:
+
+* GNU Free Documentation License:: License for copying this manual.
+
+
+File: rluserman.info, Node: GNU Free Documentation License, Up: Copying This Manual
+
+GNU Free Documentation License
+==============================
+
+ Version 1.2, November 2002
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book.
+ We recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it
+ can be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You
+ accept the license if you copy, modify or distribute the work in a
+ way requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in
+ the notice that says that the Document is released under this
+ License. If a section does not fit the above definition of
+ Secondary then it is not allowed to be designated as Invariant.
+ The Document may contain zero Invariant Sections. If the Document
+ does not identify any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images
+ composed of pixels) generic paint programs or (for drawings) some
+ widely available drawing editor, and that is suitable for input to
+ text formatters or for automatic translation to a variety of
+ formats suitable for input to text formatters. A copy made in an
+ otherwise Transparent file format whose markup, or absence of
+ markup, has been arranged to thwart or discourage subsequent
+ modification by readers is not Transparent. An image format is
+ not Transparent if used for any substantial amount of text. A
+ copy that is not "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML, PostScript or PDF designed for
+ human modification. Examples of transparent image formats include
+ PNG, XCF and JPG. Opaque formats include proprietary formats that
+ can be read and edited only by proprietary word processors, SGML or
+ XML for which the DTD and/or processing tools are not generally
+ available, and the machine-generated HTML, PostScript or PDF
+ produced by some word processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow
+ the conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the
+ title equally prominent and visible. You may add other material
+ on the covers in addition. Copying with changes limited to the
+ covers, as long as they preserve the title of the Document and
+ satisfy these conditions, can be treated as verbatim copying in
+ other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a
+ machine-readable Transparent copy along with each Opaque copy, or
+ state in or with each Opaque copy a computer-network location from
+ which the general network-using public has access to download
+ using public-standard network protocols a complete Transparent
+ copy of the Document, free of added material. If you use the
+ latter option, you must take reasonably prudent steps, when you
+ begin distribution of Opaque copies in quantity, to ensure that
+ this Transparent copy will remain thus accessible at the stated
+ location until at least one year after the last time you
+ distribute an Opaque copy (directly or through your agents or
+ retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of
+ copies, to give them a chance to provide you with an updated
+ version of the Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with
+ the Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version to
+ whoever possesses a copy of it. In addition, you must do these
+ things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of
+ previous versions (which should, if there were any, be listed
+ in the History section of the Document). You may use the
+ same title as a previous version if the original publisher of
+ that version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on
+ the Title Page. If there is no section Entitled "History" in
+ the Document, create one stating the title, year, authors,
+ and publisher of the Document as given on its Title Page,
+ then add an item describing the Modified Version as stated in
+ the previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in
+ the "History" section. You may omit a network location for a
+ work that was published at least four years before the
+ Document itself, or if the original publisher of the version
+ it refers to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the
+ section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section
+ titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option
+ designate some or all of these sections as invariant. To do this,
+ add their titles to the list of Invariant Sections in the Modified
+ Version's license notice. These titles must be distinct from any
+ other section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end
+ of the list of Cover Texts in the Modified Version. Only one
+ passage of Front-Cover Text and one of Back-Cover Text may be
+ added by (or through arrangements made by) any one entity. If the
+ Document already includes a cover text for the same cover,
+ previously added by you or by arrangement made by the same entity
+ you are acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination
+ all of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow
+ this License in all other respects regarding verbatim copying of
+ that document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of
+ a storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided for under this License. Any other
+ attempt to copy, modify, sublicense or distribute the Document is
+ void, and will automatically terminate your rights under this
+ License. However, parties who have received copies, or rights,
+ from you under this License will not have their licenses
+ terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ `http://www.gnu.org/copyleft/'.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by the
+ Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+----------------------------------------------------
+
+ To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+ A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+
+
+Tag Table:
+Node: Top1341
+Node: Command Line Editing1776
+Node: Introduction and Notation2418
+Node: Readline Interaction4037
+Node: Readline Bare Essentials5225
+Node: Readline Movement Commands7007
+Node: Readline Killing Commands7965
+Node: Readline Arguments9876
+Node: Searching10913
+Node: Readline Init File13057
+Node: Readline Init File Syntax14119
+Node: Conditional Init Constructs25483
+Node: Sample Init File28009
+Node: Bindable Readline Commands31194
+Node: Commands For Moving32245
+Node: Commands For History33096
+Node: Commands For Text35956
+Node: Commands For Killing38672
+Node: Numeric Arguments40624
+Node: Commands For Completion41753
+Node: Keyboard Macros43287
+Node: Miscellaneous Commands43848
+Node: Readline vi Mode47199
+Node: Copying This Manual48115
+Node: GNU Free Documentation License48325
+
+End Tag Table
diff --git a/lib/readline/doc/rluserman.ky b/lib/readline/doc/rluserman.ky
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/rluserman.ky
diff --git a/lib/readline/doc/rluserman.log b/lib/readline/doc/rluserman.log
new file mode 100644
index 00000000..01f9a4dc
--- /dev/null
+++ b/lib/readline/doc/rluserman.log
@@ -0,0 +1,197 @@
+This is TeX, Version 3.14159 (Web2C 7.3.1) (format=tex 2001.2.12) 22 SEP 2003 09:04
+**/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rluserma
+n.texi
+
+(/net/granite/fs4/src/ns-engr/work/chet/src/bash/src/lib/readline/doc/rluserman
+.texi (texinfo.tex Loading texinfo [version 2003-02-03.16]: Basics,
+\bindingoffset=\dimen16
+\normaloffset=\dimen17
+\pagewidth=\dimen18
+\pageheight=\dimen19
+\outerhsize=\dimen20
+\outervsize=\dimen21
+\cornerlong=\dimen22
+\cornerthick=\dimen23
+\topandbottommargin=\dimen24
+\headlinebox=\box16
+\footlinebox=\box17
+\margin=\insert252
+\EMsimple=\toks12
+\groupbox=\box18
+\groupinvalidhelp=\toks13
+\mil=\dimen25
+\exdentamount=\skip18
+\inmarginspacing=\skip19
+ pdf,
+\tempnum=\count26
+\lnkcount=\count27
+\filename=\toks14
+\filenamelength=\count28
+\pgn=\count29
+\toksA=\toks15
+\toksB=\toks16
+\toksC=\toks17
+\toksD=\toks18
+\boxA=\box19
+\countA=\count30
+
+fonts,
+\sffam=\fam8
+\textleading=\dimen26
+\mainmagstep=\count31
+\fontdepth=\count32
+ page headings,
+\titlepagetopglue=\skip20
+\titlepagebottomglue=\skip21
+\evenheadline=\toks19
+\oddheadline=\toks20
+\evenfootline=\toks21
+\oddfootline=\toks22
+ tables,
+\tableindent=\dimen27
+\itemindent=\dimen28
+\itemmargin=\dimen29
+\itemmax=\dimen30
+\itemno=\count33
+\multitableparskip=\skip22
+\multitableparindent=\skip23
+\multitablecolspace=\dimen31
+\multitablelinespace=\skip24
+\colcount=\count34
+\savedfootnotes=\box20
+ conditionals, indexing,
+\secondaryindent=\skip25
+\partialpage=\box21
+\doublecolumnhsize=\dimen32
+ sectioning,
+\chapno=\count35
+\secno=\count36
+\subsecno=\count37
+\subsubsecno=\count38
+\appendixno=\count39
+\absseclevel=\count40
+\secbase=\count41
+\chapheadingskip=\skip26
+\secheadingskip=\skip27
+\subsecheadingskip=\skip28
+ toc,
+\tocfile=\write0
+\contentsrightmargin=\skip29
+\savepageno=\count42
+\lastnegativepageno=\count43
+\shortappendixwidth=\dimen33
+\tocindent=\dimen34
+
+environments,
+\errorbox=\box22
+\lispnarrowing=\skip30
+\envskipamount=\skip31
+\circthick=\dimen35
+\cartouter=\dimen36
+\cartinner=\dimen37
+\normbskip=\skip32
+\normpskip=\skip33
+\normlskip=\skip34
+\lskip=\skip35
+\rskip=\skip36
+\tabw=\dimen38
+ defuns,
+\defbodyindent=\skip37
+\defargsindent=\skip38
+\deflastargmargin=\skip39
+\parencount=\count44
+ macros,
+\macscribble=\write1
+\paramno=\count45
+\macname=\toks23
+ cross references,
+\auxfile=\write2
+\savesfregister=\count46
+\footnoteno=\count47
+
+(/usr/local/share/texmf/tex/plain/dvips/epsf.tex
+\epsffilein=\read0
+\epsfframemargin=\dimen39
+\epsfframethickness=\dimen40
+\epsfrsize=\dimen41
+\epsftmp=\dimen42
+\epsftsize=\dimen43
+\epsfxsize=\dimen44
+\epsfysize=\dimen45
+\pspoints=\dimen46
+\epsfnoopenhelp=\toks24
+)
+\noepsfhelp=\toks25
+ localization,
+\nolanghelp=\toks26
+\defaultparindent=\dimen47
+
+and turning on texinfo input format.) (rluserman.aux)
+@cpindfile=@write3
+@fnindfile=@write4
+@vrindfile=@write5
+@tpindfile=@write6
+@kyindfile=@write7
+@pgindfile=@write8
+ (version.texi) [1
+\openout2 = `rluserman.aux'.
+
+\openout3 = `rluserman.cp'.
+
+\openout4 = `rluserman.fn'.
+
+\openout5 = `rluserman.vr'.
+
+\openout6 = `rluserman.tp'.
+
+\openout7 = `rluserman.ky'.
+
+\openout8 = `rluserman.pg'.
+
+]
+[2] (rluserman.toc) [-1] [-2] (rluser.texi
+@btindfile=@write9
+ Chapter 1
+\openout0 = `rluserman.toc'.
+
+ [1
+\openout9 = `rluserman.bt'.
+
+] [2] [3] [4] [5]
+Underfull \hbox (badness 5231) in paragraph at lines 488--504
+ @texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr
+m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and
+
+@hbox(7.60416+2.12917)x433.62, glue set 3.7426
+.@glue(@leftskip) 115.63242
+.@texttt e
+.@texttt m
+.@texttt a
+.@texttt c
+.etc.
+
+[6] [7] [8] [9] [10]
+Overfull \hbox (26.43913pt too wide) in paragraph at lines 801--801
+ []@texttt Meta-Control-h: backward-kill-word Text after the function name is i
+gnored[] |
+
+@hbox(6.69167+2.43333)x433.62
+.@glue(@leftskip) 28.90755
+.@hbox(0.0+0.0)x0.0
+.@texttt M
+.@texttt e
+.@texttt t
+.etc.
+
+[11] [12] [13] [14] [15] [16] [17] [18]) Appendix A [19] [20] (fdl.texi
+[21] [22] [23] [24] [25] [26]) [27] [28] )
+Here is how much of TeX's memory you used:
+ 1398 strings out of 13013
+ 16279 string characters out of 97233
+ 44937 words of memory out of 263001
+ 2276 multiletter control sequences out of 10000+0
+ 31953 words of font info for 111 fonts, out of 400000 for 1000
+ 19 hyphenation exceptions out of 1000
+ 13i,8n,10p,308b,695s stack positions out of 300i,100n,500p,50000b,4000s
+
+Output written on rluserman.dvi (32 pages, 91652 bytes).
diff --git a/lib/readline/doc/rluserman.pg b/lib/readline/doc/rluserman.pg
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/rluserman.pg
diff --git a/lib/readline/doc/rluserman.ps b/lib/readline/doc/rluserman.ps
new file mode 100644
index 00000000..eb65adcf
--- /dev/null
+++ b/lib/readline/doc/rluserman.ps
@@ -0,0 +1,2702 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: rluserman.dvi
+%%Pages: 32
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -D 300 -o rluserman.ps rluserman.dvi
+%DVIPSParameters: dpi=300, compressed
+%DVIPSSource: TeX output 2003.09.22:0904
+%%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 39158280 55380996 1000 300 300 (rluserman.dvi)
+@start
+%DVIPSBitmapFont: Fa cmsltt10 9 13
+/Fa 13 122 df<EA0FE0EA1FF8EA381CEA100E1200A2EA03FEEA1FFCEA3C1C127012E0A2
+133C1378EA7FFFEA1F8F10107D8F14>97 D<EA01F0EA07F8EA0E0CEA1C0E1238EA7006A2
+EAFFFEA2EAE000A21270130CEA381CEA1FF8EA07F00F107D8F14>101
+D<121F7F0007C7FCA5133EEA0EFF380FC3801303120EA3381C0700A6EA380E38FF1FC0A2
+12177F9614>104 D<136013F013E013401300A4EA3FC0A21201A5EA0380A6EA0700EAFF
+F8A20D187C9714>I<EA1FE013F0EA00E0A6EA01C0A6EA0380A6EA0700EAFFFCA20E177D
+9614>108 D<383CE380383FFFC0EA1F7DEA1E79EA1C71A33838E380A63871C70038FDF7
+C0EAFCF312107F8F14>I<EA3E3E13FF380FC3801303120EA3381C0700A6EA380E38FF1F
+C0A212107F8F14>I<EA03F0EA07F8EA1E1CEA3C0E12381270A212E0A3131EEA701C1338
+EA7870EA3FE0EA0F800F107D8F14>I<381F87C0EB9FE0EA03B8EBE040EBC0005BA21207
+90C7FCA5120EEAFFF0A213107F8F14>114 D<EA03FAEA0FFEEA1C0E1230A2EA3800EA1F
+E0EA0FF8EA01FEEA000FEA600312701306EAF80CEAFFF8EA4FE010107E8F14>I<120612
+0EA4EAFFF8A2EA1C00A55AA313301338A21370EA1FE0EA0F800D157C9414>I<EAF83EA2
+EA380EA5EA701CA5133C1378EA3FFFEA1F9F10107D8F14>I<381FCFE0A238070380EB07
+00A2130EEA038EA2139CA213B8A2EA01B013F05BA25BA2485AA200E7C7FC12EE12FC1278
+13187F8F14>121 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fb cmtt9 9 48
+/Fb 48 122 df<126012F012F812781218A31230A2126012C01280050C789614>39
+D<EA01801203EA06005A121C121812385AA35AA91270A37E1218121C120C7EEA03801201
+091D799914>I<128012C01260123012381218121C120EA31207A9120EA3121C12181238
+1230126012C01280081D7C9914>I<127012F812FCA2127C120C1218123012E012C0060A
+798414>44 D<EAFFFEA30F037E8C14>I<127012F8A312700505798414>I<1306130EA213
+1CA21338A21370A213E0A2EA01C0A2EA0380A3EA0700A2120EA25AA25AA25AA25AA25A0F
+1D7E9914>I<1203A25A5A123F12F712471207AEEA7FF0A20C177C9614>49
+D<EA0FC0EA1FF0EA3838EA701CEAE00EA312401200131CA213381330137013E0EA01C0EA
+030012065AEA180E1230EA7FFEA20F177E9614>I<127012F8A312701200A6126012F012
+F8A2127812181230127012E012800515798F14>59 D<EA01C0487EA21360A2EA0770A4EA
+0630EA0E38A4487EEA1FFCA2EA1C1CA2487EA238FE3F80A211177F9614>65
+D<EAFFF013FCEA381E130E1307A4130E131EEA3FFCA2EA381E130E1307A5130E131EEAFF
+FC13F810177F9614>I<3801F180EA07FFEA0E1FEA1C071238EA7003A348C7FCA7387003
+80A338380700121CEA0E0EEA07FCEA01F011177F9614>I<EAFFE013F8EA383C7F130E7F
+A3EB0380A8EB0700A2130E131E5BEAFFF813E011177F9614>I<B51280A2EA3803A490C7
+FCA21338A2EA3FF8A2EA3838A290C7FCA7B4FCA211177F9614>70
+D<EA03C6EA0FFEEA1C3EEA181E1238EA700EA21260EAE000A4137FA2130E12601270A2EA
+381E1218EA1C3EEA0FFEEA03CE10177F9614>I<EAFFF8A2EA0700B3EAFFF8A20D177D96
+14>73 D<B4FCA21238AF1307A4B5FCA210177E9614>76 D<38FE3F80A2383E0E00123BA4
+138E1239A213CEA31238A213EE136EA4133E12FEA211177F9614>78
+D<EAFFF013FCEA381E130E1307A5130E131EEA3FFC13F0EA3800A812FEA210177F9614>
+80 D<EA0FCCEA1FFCEA307CEA603CEAE01CA313001270127EEA3FE0EA0FF0EA01F8EA00
+1C131E130E126012E0A2EAF01CEAF838EAFFF0EAC7E00F177E9614>83
+D<387FFF80B5FCEAE1C3A43801C000AFEA0FF8A211177F9614>I<38FE0FE0A238380380
+B0381C0700A2EA0E0EEA07FCEA01F01317809614>I<38FC1F80A238380E00A3EA3C1EEA
+1C1CA46C5AA4EA0630EA0770A3EA0360A213E0A26C5A11177F9614>I<12081218123012
+60A212C0A312F012F812781230050C799914>96 D<EA1FC0EA7FF0EA7078EA2018EA001C
+A2EA07FC121FEA3C1C127012E0A3EA707C383FFF80EA0F8F11107E8F14>I<12FCA2121C
+A513F8EA1DFEEA1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1DFCEA0CF8
+1217809614>I<EA03F8EA0FFEEA1C0EEA3804EA7000126012E0A412601270EA380EEA1C
+1EEA0FFCEA03F00F107E8F14>I<137EA2130EA5EA07CEEA0FFEEA1C3EEA301EEA700E12
+E0A61270EA301EEA383E381FEFC0EA07CF12177F9614>I<EA07E0EA0FF0EA1C38EA301C
+EA700CEAE00EA2EAFFFEA2EAE00012601270EA380EEA1C1EEA0FFCEA03F00F107E8F14>
+I<13FCEA01FEEA038EEA07041300A3EA7FFE12FFEA0700ACEAFFF8A20F177F9614>I<EA
+07CF381FFF80EA383B38301800EA701CA3EA3018EA3838EA3FF0EA37C00070C7FCA2EA3F
+F86C7E487EEA700F38E00380A438700700EA3C1EEA1FFCEA07F011197F8F14>I<12FCA2
+121CA51378EA1DFEEA1F86EA1E07121CAA38FF8FE0A21317809614>I<1206120FA21206
+C7FCA4B4FCA21207ACEAFFF8A20D187C9714>I<12FCA2121CA5EBFF80A2EB1C005B5B5B
+EA1DC0EA1FE0A2EA1E70EA1C38133C131C7F38FF1F80A21117809614>107
+D<EAFF80A21203B3EAFFFEA20F177E9614>I<EAFB8EEAFFDF383CF380A2EA38E3AA38FE
+FBE013791310808F14>I<EAFC78EAFDFEEA1F86EA1E07121CAA38FF8FE0A21310808F14>
+I<EA07C0EA1FF0EA3C78EA701CA2EAE00EA6EA701CEA783CEA3C78EA1FF0EA07C00F107E
+8F14>I<EAFCF8EAFDFEEA1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1D
+FCEA1CF890C7FCA6B47EA21218808F14>I<EAFE1FEB7F80EA0EE3380F810090C7FCA212
+0EA8EAFFF0A211107F8F14>114 D<EA0FD8EA3FF8EA603812C0A2EAF000EA7F80EA3FF0
+EA07F8EA001CEA600612E012F0EAF81CEAFFF8EACFE00F107E8F14>I<1206120EA4EA7F
+FC12FFEA0E00A8130EA3131CEA07F8EA01F00F157F9414>I<EAFC3FA2EA1C07AB131F38
+0FFFE0EA03E71310808F14>I<38FE3F80A2383C1E00EA1C1CA36C5AA3EA0630EA0770A3
+6C5AA311107F8F14>I<38FE3F80A238700700EA380EA3EA39CEA3EA1B6C121AA3EA1E7C
+A2EA0E3811107F8F14>I<EA7E3FA2EA1E3CEA0E78EA07705B12036C5A12037FEA0770EA
+0E781338487E38FE3F80A211107F8F14>I<38FE3F80A2381C0E005BA2120E5BA2120713
+30A2EA0370A25B1201A25BA3485A12730077C7FC127E123C11187F8F14>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fc cmbx12 13.14 50
+/Fc 50 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<123C127E12FFA4127E123C1200A8123C
+127E12FFA4127E123C08187C9711>58 D<141CA2143EA3147FA24A7EA39038019FC0A290
+38031FE0140F01077FEB0607A2010C7F1403011C7FEB1801A2496C7EA2017FB5FCA29039
+E0007F8049133FA2484880151F00038190C7120FA2486E7ED8FFF090B51280A229257EA4
+2E>65 D<B612E015FC3903F0007FED3F80ED1FC0ED0FE0A216F0A21507150FA216E0151F
+16C0ED7F80913801FE0090B512F815FF9039F0003FC0ED0FE0ED07F016F8150316FCA616
+F81507ED0FF0ED1FE0ED7FC0B7120015F826257EA42C>I<9138FF8008010FEBF0189039
+3FC03C789039FE0006F8D801F81303484813014848130048481478121F48481438A2007F
+151890C8FCA2481500A97E16187F123FA26C6C1430120F6C6C14606C6C14C06C6CEB0180
+D800FEEB070090383FC01E90380FFFF8010013C025257DA42C>I<B612E015FC3903F800
+FFED1FC0ED07E06F7E6F7E82150082A2167FA31780AA1700A316FEA24B5A5E4B5A4B5AED
+1FC0EDFF80B648C7FC15E029257EA42F>I<B7FCA23903F8007FED0F8015071503A21501
+A3ED00C01406A21600A2140E141EEBFFFEA2EBF81E140E1406A21660A291C7FC16C0A415
+011503A2ED0F80153FB7FCA223257EA428>I<B612FEA23803F800151F8181A281A3ED01
+801403A292C7FCA25C5C90B5FCA2EBF80F8080A491C8FCAAB512F0A221257EA427>I<B5
+00E0B512E0A23B03F80003F800AF90B6FCA29038F80003B0B500E0B512E0A22B257EA430
+>72 D<B512E0A23803F800B3AFB512E0A213257EA417>I<B539E007FF80A2D803F8C7EA
+780016605E4B5A0307C7FC150E15185D5D5DEC03804AC8FC140E141F4A7E147FECDFC090
+38FB8FE09038FF0FF0EBFC07496C7E816E7E1400157F82153F6F7E6F7E8215076F7E82B5
+39E03FFFC0A22A257EA430>75 D<B512F0A2D803F8C7FCB3A31503A31506A3150EA2151E
+153E157CEC03FCB6FCA220257EA425>I<D8FFF8EDFFF86D5C0003EEFE00017EEC037EA3
+6D1406A26D6C130CA26D6C1318A26D6C1330A36D6C1360A26D6C13C0A2903900FC0180A2
+91387E0300A3EC3F06A2EC1F8CA2EC0FD8A2EC07F0A36E5AEA07803CFFFC01C01FFFF8A2
+35257EA43A>I<D8FFF8903807FFE07FD803FE9038003C006D14187F6D7E6D7E806D7E6D
+7E13036D7E6D7E80EC7F80EC3FC0141FEC0FE015F0EC07F8EC03FC1401EC00FE157F1698
+ED3FD8ED1FF8150F15071503A2150115001678486C1438D8FFFC1418A22B257EA430>I<
+B67E15F83903F801FEEC007F6F7E6F7EA282A55EA24B5A4BC7FCEC01FE90B512F815C090
+38F803F06E7E6E7E157EA2157FA482A31760ED3FC017C0ED1FE1B539E00FFF80923801FE
+002B257EA42E>82 D<01FF1380000713E3380F80F7381E001F48130F481307140312F814
+01A27E91C7FCB4FCEA7FE013FE383FFFE014F86C13FE00077F6C1480C67E010313C0EB00
+3FEC0FE01407A200C01303A315C07E6C13076C14806CEB0F0038FFC03E38E3FFF838803F
+E01B257DA422>I<007FB612F8A2397E00FE010078EC00780070153800601518A200E015
+1C160C5AA4C71400B3A390B512FEA226247EA32B>I<B539E00FFFC0A2D803F8C7EA7800
+1630B3A700015D7F00005D137C6D495A6D0107C7FC90380FE03E903803FFF89038007FC0
+2A257EA42F>I<B539C001FFE0A2D807F8C7EA1C006C6C141816386C6C14306C6C5C16E0
+6D6C5B6D6C485A1503D91FE090C7FC90380FF006150E903807F80C6D6C5A15386D6C5A90
+3800FF6015E06E5A6E5AAE90380FFFFCA22B257FA42E>89 D<EA07FF001F13E0383E03F0
+383F00F880147E121EC7FCA3EB1FFE3803FE7EEA0FC0EA1F00123E127E5AA314BEEA7E01
+383F073E391FFE1FE03807F00F1B187E971E>97 D<EAFFC0A2120FACEBC1FCEBCFFF9038
+FC0FC09038F007E09038C003F0A2EC01F8A215FCA815F8A2EC03F013E09038F007E09038
+1C1F80390E0FFF00380C03F81E267FA522>I<EB7FE03803FFF83807C07C381F80FC1300
+5A007E1378140012FEA8127E127F6C130CEA1F80EBC0183807E0703803FFE038007F0016
+187E971B>I<ECFFC0A2140FAC137F3803FFCF380FE0FF381F803F383F000FA2127EA212
+FEA8127EA27E141F381F803F380FC0EF3903FFCFFC3800FE0F1E267EA522>I<137F3803
+FFC03807C1F0380F80F8EA1F0048137C127E147E12FEA2B512FEA248C7FCA3127EA21406
+7E6C130C380F80183807E0703803FFE038007F8017187E971C>I<EB1FC0EB7FF0EA01F8
+3803E1F8120713C1380FC0F01400A7B5FCA2EA0FC0B3A2EAFFFEA215267EA513>I<3901
+FF07C00007EBDFE0380F83F1EA1F01393E00F800007E7FA6003E5B6C485A380F83E0EBFF
+C0001190C7FC0030C8FCA21238123C383FFFE06C13FC806C7F481480383C003F48EB0FC0
+00F81307A4007CEB0F806CEB1F00381F807E3807FFF8C613C01B247E971F>I<EAFFC0A2
+120FAC14FE9038C3FF809038CE0FC013D89038D007E013E0A213C0AF39FFFC7FFEA21F26
+7EA522>I<120FEA1F80EA3FC0A4EA1F80EA0F00C7FCA7EA7FC0A2120FB3A2EAFFF8A20D
+277EA611>I<EAFFC0A2120FACEC1FF0A2EC0780EC0E005C14305CEBC1C0EBC38013C713
+DFEBFFC0EBE7E0EBC3F0138180EB80FC147E80A2EC1F80EC0FC039FFF83FF8A21D267FA5
+20>107 D<EAFFC0A2120FB3B0EAFFFCA20E267EA511>I<26FF80FE137F903A83FF81FFC0
+3B0F8E0FC707E0019813CC903A9007E803F001A013F0A201C013E0AF3BFFFC7FFE3FFFA2
+30187E9733>I<38FF80FE903883FF80390F8E0FC0139890389007E013A0A213C0AF39FF
+FC7FFEA21F187E9722>I<EB7F803803FFF03807C0F8381F807E48487EA2007EEB1F80A2
+00FE14C0A8007E1480A26CEB3F00A2381F807E6C6C5A3803FFF038007F801A187E971F>
+I<38FFC1FCEBCFFF390FFC1FC09038F007E001C013F0140315F8140115FCA8EC03F8A215
+F0EBE0079038F00FE09038DC1F809038CFFF00EBC3F801C0C7FCA9EAFFFCA21E237F9722
+>I<38FF83E0EB8FF8380F8C7CEB90FC13B013A01478EBE0005BAEEAFFFEA216187F9719>
+114 D<3807F8C0EA1FFFEA3C07EA7001EAF000A300FC1300B47EEA7FFC7F383FFF80000F
+13C0120338001FE01303EAC001A212E014C0EAF00338FC078038EFFF00EAC3FC13187E97
+18>I<13C0A41201A312031207120F121FB512C0A2380FC000AC1460A63807E0C013E138
+01FF8038007E0013237FA218>I<39FFC07FE0A2000F1307B0140FA200071317EBE06739
+03FFC7FE38007F071F187E9722>I<39FFF80FF8A2390FC001C015803907E00300A26D5A
+00031306EBF80E0001130C13FC00005B13FEEB7E30A26D5AA214E06D5AA26D5AA26DC7FC
+A21D187F9720>I<3BFFF9FFE0FF80A23B1FC03F001C00000F6D13181580D807E05CA290
+39F03FC07000030137136015E02601F8635BA29038FCE3F1000001C15B15F990267F80FB
+C7FCA215FF90383F007EA2011E133CA3010C131829187F972C>I<39FFF83FF0A2390FC0
+0F003807E00E6C6C5A6D5A6C6C5A00001360EB7EC06D5AA2131F6D7E497E80EB33F81361
+EBE0FC3801C07E3803807F3907003F8048131F39FFC07FF8A21D187F9720>I<39FFF80F
+F8A2390FC001C015803907E00300A26D5A00031306EBF80E0001130C13FC00005B13FEEB
+7E30A26D5AA214E06D5AA26D5AA26DC7FCA21306A25B1230EA781CEAFC185B1370EA68E0
+EA7FC0001FC8FC1D237F9720>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fd cmsl10 10.95 41
+/Fd 41 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<3A07FF83FFC03A00F8007C000178133CA2495BA648485BA490B5FCEBE000
+4848485AA64848485AA64848485A01807F39FFF07FF8221F7E9E22>72
+D<3807FF803800F8001378A25BA6485AA6485AA6485AA648C7FC7FEAFFF0111F7E9E10>
+I<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<13F8EA070EEA0E07381C038012381278127012F0B5FC00F0C7FCA25AA46C5AEA
+7002EA3004EA1C18EA07E011147D9314>101 D<EB07C0EB1C60EB30F01360EBE0E0EBC0
+001201A5485AEA3FFCEA0380A448C7FCA6120EA65A121EEAFFC014207F9F0E>I<140EEB
+3E11EBE1A33801C1C2380381E0EA07801301120FA3380703C01480EB8700EA04FC48C7FC
+A21218121CEA0FFF14C014E0381800F04813305A5AA3006013606C13C0381C0700EA07FC
+181F809417>I<13E0120712011200A2485AA6485AEB8F80EB90E013A0EBC06013800007
+13E01300A5380E01C0A6381C0380001E13C038FF8FF014207E9F19>I<EA01C0EA03E0A2
+13C0EA0180C7FCA6EA0380121F12071203A2EA0700A6120EA65A121EEAFF800B1F7F9E0C
+>I<13E0120712011200A2485AA6485AEB81FCEB80F014C0EB81801400EA07045B131813
+38137C131C120E7FA2130F7F1480EA1C03381E07C038FF8FF016207E9F18>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<39FF9FE1FC393C078070391C030060148015401580EA0E0790380D81001309
+EB19C21311380F21C4EA0720EB40C814E8EB80F0A26C485A1460000213401E147C9321>
+119 D<381FF0FF3803C0780001137014403800E0C0EBE180EB73001376133CA2131C132E
+134E1387EA0107380203801204380C01C0383C03E038FE07FC18147F9318>I<390FF83F
+803901E00E00EBC00C140813E000005B143014205C13705CA20171C7FC1339133A133E13
+3C133813181310A25BA25BEA70C0EAF08000F1C8FC12E61278191D809318>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 33
+/Fg 33 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<3907F87F80A33901C01C00A448485AA5EBFFF8485BA2EB0070A4000E5BA6
+387F87F8EAFF8FEA7F87191C7F9B18>72 D<EB1FF8EB3FFCEB1FF8EB01C0A4EB0380A6EB
+0700A6130EA2124012E06C5AEAE03CEAFFF86C5AEA1FC0161C7C9B18>74
+D<EA07FC487E6C5AEA01C0A4485AA648C7FCA6120E14301470A4B512E0A3141C7E9B18>
+76 D<3907E01F80000FEB3FC0000714803903B02E00146EA214CE380730DC1331149CA2
+1333141C000E5B13371336133E133C131848C65AA638FE03F800FF7F00FE5B1A1C7F9B18
+>I<126012F0A37E1278A3127C123CA3123E121EA3121F7EA313801207A313C01203A413
+E01201A313F0120013600C24789F18>92 D<387FFFC0B512E0A26C13C013047E7F18>95
+D<EA03FC48B4FC4813801303380601C01200A2137FEA07FF121FEA3F813878038012F012
+E0A21307EA701F387FFFF0EA3FFBEA0FE114147D9318>97 D<127EA3120EA45A137CEA1D
+FF001F13801383381E01C0123CEB00E01238A4387801C0A2EB0380A2EB0F00EA7C1FEAFF
+FCEAEFF8EA63E0131C7C9B18>I<EB07E0A31300A4EB01C0EA01F1EA07FDEA0FFFEA1E0F
+EA3C0738780380127012E0A4EB0700A25B5B6C5AEA787F383FFFC0381FEFE0380F87C013
+1C7C9B18>100 D<13F8EA07FE487E381F0780EA3C03387801C0127012E0A2B5FCA21480
+00E0C7FCA213033870078038780F00EA3FFE6C5AEA07F012147B9318>I<EB01F8EB07FC
+131FEB1E3CEB38181400A25B381FFFF05A7E38007000A25BA6485AA6EA7FFE12FF127F16
+1C7E9B18>I<EB1E1F90387FFF8090B5FC3901E1E3003803C0E01380EA0700A3495AA238
+038780EA07FF49C7FCEA0E7890C8FCA26CB47E4813E0487F383C007848133812705AA214
+7800705B387C03E0383FFFC0000F90C7FCEA03FC191F809318>I<1318133C137C133C13
+1890C7FCA4EA0FF8121F120FEA0038A25BA65BA6EA7FFFB512806C1300111D7C9C18>
+105 D<14C0EB01E013031301EB00C01400A4EBFFC0A31301A2EB0380A6EB0700A6130EA6
+5BA2EA6038EAF078B45A5BEA3F8013277F9C18>I<EA07E0120F12071200A4485AEBC7FE
+A3EBC1E0EBC3C038038780EB8F00139E13BC13FE13EEEA07CF1387EB0780130314C01301
+387FC7F838FFE7FC387FC7F8171C7F9B18>I<EA0FFCA3EA001CA45BA65BA65BA6B51280
+14C01480121C7D9B18>I<381F8F80383FBFE0381FFFF03803F07013E0EA07C013801300
+A4000E13E0A638FF87F8EBCFFCEB87F816147F9318>110 D<13FCEA03FF000F1380EA1F
+07383C03C0EA7801007013E0EAE000A4EB01C0A2EB0380EAF007EB0F00EA7C3EEA3FFC6C
+5AEA07E013147C9318>I<EBF8C0EA03FDEA0FFFEA1F0FEA3C0738780380127012E0A4EB
+0700A25BA26C5AEA787FEA3FFEEA1FEEEA078EEA000EA35BA43801FF80A3121E7C9318>
+113 D<381FE1F8EBE7FCEBEFFE3800FE1EEBFC0C3801F8005B5B5BA3485AA6EAFFFC7F5B
+17147E9318>I<EBFE603807FFE05AEA1F01121C003813C0EA3C00001F1300EA0FF8EA07
+FE3800FF801307383001C01270A238780380EA7C07B51200EAEFFEEA63F813147D9318>
+I<387E07E0EAFE0FEA7E07EA0E00A2381C01C0A638380380A41307131F383FFFE06C13F0
+3807E3E014147D9318>117 D<387F8FF000FF13F8007F13F0381C0380A2EB0700121EEA
+0E0F130E131E131CA25BA26C5AA2136013E05B6C5A15147C9318>I<38FF87F8138F1387
+383800E0EB01C0A3148013E3EA39F31233EB7700A212371376EA3666136EEA3C7CA2EA38
+3815147C9318>I<381FE3FC13E713E33803C3C000011380EBE700EA00EE13FC137C1338
+137813FCEA01DCEA038E12071307120E38FF1FE0EB9FF0EB1FE016147E9318>I<380FF1
+FE381FF9FF380FF1FE3803807013C0000113E0A213C114C0A23800E380A2EBE700A213E6
+136E136C137C1378A21370A25BA2485A12F3EAF780B4C7FC5A1278181E7F9318>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fh cmcsc10 10.95 18
+/Fh 18 121 df<1318A2133CA3134EA213CF1387A238010380A2000313C0EA0201A23807
+FFE0EA0400A2481370A2001813380038137838FE01FF18177F961C>97
+D<EB7E083803819838070078000C1338001C13185A00781308127000F01300A700701308
+127812386C1310120C000713603803818038007E0015177E961B>99
+D<EAFFFE381C0780EB01C0EB00E01470A21438A2143CA71438A21478147014E0EB01C0EB
+038038FFFE0016177E961C>I<B512C0EA1C011300144014601420A213081400A21318EA
+1FF8EA1C1813081410A2130014301420A21460EB01E0B5FC14177E9619>I<B512C0EA1C
+011300144014601420A213081400A21318EA1FF8EA1C181308A390C7FCA6EAFFC013177E
+9618>I<EB7E083803819838070078000C1338001C13185A00781308127000F01300A5EB
+03FEEB00381270127812387E120C1207380380D838007F0817177E961D>I<38FF87FC38
+1C00E0AAEA1FFFEA1C00AA38FF87FC16177E961C>I<EAFF80EA1C00B3A3EAFF8009177E
+960E>I<EA1FF0EA01C0B112E1A2EAC180EA4300123E0C177E9613>I<EAFFC0001CC7FCAD
+1440A314C0A2148013011307B5FC12177E9617>108 D<00FCEB07F0001C1480A2001613
+0BA200131313A338118023A23810C043A3EB6083A2EB3103A3131AA2130C123800FEEB1F
+F01C177E9622>I<38FC01FC381E007014201217EA1380A2EA11C0EA10E0A213701338A2
+131C130E1307A2EB03A0EB01E0A213001460123800FE132016177E961C>I<13FE380383
+80380E00E0481370003C1378003813380078133C0070131C00F0131EA70070131C007813
+3C00381338003C1378001C13706C13E0380383803800FE0017177E961D>I<EAFFFCEA1C
+07EB03C0130114E0A414C01303EB0700EA1FFC001CC7FCAAB47E13177E9619>I<EA0FC4
+EA302CEA601CEA400CEAC004A3EAE0001270127FEA3FE0EA0FF8EA01FCEA001C130E1306
+1280A3EAC004EAE008EAD810EA87E00F177E9615>115 D<387FFFFC3870381C00401304
+A200C0130600801302A300001300AE3803FF8017177F961B>I<38FF81FC381C00701420
+B0000C1340120E6C138038018300EA007C16177E961C>I<38FF80FE381F0070000E1360
+6C1340EB80803803C100EA01C3EA00E213F4137813387F133E134E13C7EB8780380103C0
+EA0201380600E0000413F0000C1370003C137800FE13FF18177F961C>120
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fi cmti10 10.95 8
+/Fi 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: Fj cmbxti10 14.4 1
+/Fj 1 47 df<120E123FEA7F80A212FFA21300127E123C0909798815>46
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fk cmbx12 17.28 25
+/Fk 25 122 df<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1007FB512F0A3
+1C2E7AAD28>49 D<1578A215FCA34A7EA24A7EA24A7FA34A7FEC0E7F021E7FEC1C3FA202
+387F151F02787FEC700FA202E07F1507010180ECC003A249486C7EA201078191C7FC4981
+91B6FCA24981011CC7123F013C810138141FA24981160F01F081491407A2484881486C14
+03B549B512FCA336317DB03D>65 D<913A03FF800180023FEBF00349B5EAFC0701079038
+003F0FD91FF8EB079FD93FC0EB01FFD9FF807F4848C8127F4848153F0007161F49150F48
+5A001F1607A2485A1703127FA24992C7FCA212FFA9127FA27FEF0380123FA26C7E170700
+0F17006C7E6D150E0003161E6C6C151C6C6C6C1478D93FC05CD91FF8EB03E0D907FFEB3F
+800101D9FFFEC7FCD9003F13F80203138031317CB03A>67 D<B812F0A3C6903880003FEE
+07F816031600A21778A21738A3171C1507A31700A25D5D5D91B5FCA3EC803F818181A217
+07A392C7120EA4171EA2173CA2177C17FC16011607163FB812F8A330317EB035>69
+D<B67EA3000190C9FCB3A9EE0380A416071700A25EA35E5E5E5E4B5A150FB7FCA329317D
+B030>76 D<B500C00303B5FCA26E5DC61900D9EFF0150EA3D9E7F85DA2D9E3FC5DA2D9E1
+FE5DA2D9E0FF5DA26E6C495AA26E6C495AA36E6C495AA26E6C130EA26E6C5BA26E6C5BA2
+6E6C5BA26E6C5BA392387F81C0A292383FC380A2DB1FE7C7FCA2ED0FFEA26F5AA36F5A48
+7EB526E001F090B6FCA26F5A48317EB04D>I<007FB8FCA39039C00FF801D87E00EC003F
+007C82007882A200708200F01780A3481603A5C792C7FCB3AA017FB6FCA331307DAF38>
+84 D<EBFFF0000313FF390F803F809038C00FE0486C6C7EA26E7ED80FC07FEA0780C7FC
+A414FF131FEBFFE33803FC03EA0FF0EA1FC0123FEA7F80A2EAFF00A31407A2387F800D39
+3FC01DFE3A1FE078FFF03907FFE07FC6EB803F24207E9F27>97 D<EA01F812FFA3120F12
+07ADEC3FE0ECFFFC9038FBE07F9039FF001F8049EB0FC04914E049EB07F016F8A2ED03FC
+A316FEA816FCA3ED07F8A216F06DEB0FE06D14C001E7EB3F809039C3C0FE00903880FFF8
+9038003FC027327EB12D>I<ED0FC0EC07FFA3EC007F153FADEB07F8EB3FFF9038FE07BF
+3903F801FF3907E0007F120F4848133F123FA2485AA312FFA8127FA36C7EA2121F6C6C13
+7F000714FF2603F00313E03A01FC0F3FFE38007FFEEB0FF027327DB12D>100
+D<EB0FFC90387FFF803901FC0FC03903F003E03907E001F0000F14F8391FC000FC003F14
+FEA24848137E157FA212FFA290B6FCA20180C7FCA4127FA36C6C1307121F150E6C7E6C6C
+131C6C6C13783900FE03E090383FFFC0903807FE0020207E9F25>I<EB01FE90380FFF80
+90381FC3C090387F07E09038FE0FF0120113FC1203EC07E0EC018091C7FCA8B512FCA3D8
+03FCC7FCB3A8387FFFF0A31C327EB119>I<90391FF007C09039FFFE3FE03A01F83F79F0
+3907E00FC3000F14E19039C007E0E0001FECF000A2003F80A5001F5CA2000F5CEBE00F00
+075C2603F83FC7FC3806FFFE380E1FF090C9FC121EA2121F7F90B57E6C14F015FC6C806C
+801680000F15C0003FC7127F007EEC1FE0007C140F00FC1407A4007EEC0FC0003E158000
+3F141FD80FC0EB7E003907F803FC0001B512F0D8001F90C7FC242F7E9F28>I<EA01F812
+FFA3120F1207ADEC07F8EC3FFEEC783F02C013809039F9801FC0EBFB0001FE14E05BA35B
+B3B500C3B5FCA328327DB12D>I<EA03C0487E487E487EA46C5A6C5A6C5AC8FCA9EA01F8
+127FA31207B3A7B51280A311337DB217>I<EA01F812FFA3120F1207B3B3A6B512C0A312
+327DB117>108 D<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01E0FC02C0903883
+00FE280FF1801FC6137F2607F30013CC01F602F8148001FC5CA3495CB3B500C3B5380FFF
+FCA33E207D9F43>I<3903F007F800FFEB3FFEEC783F02C013803A0FF1801FC03807F300
+01F614E013FCA35BB3B500C3B5FCA328207D9F2D>I<EB07FC90387FFFC03901FC07F039
+03F001F848486C7E4848137E001F147F003F158049133F007F15C0A300FF15E0A8007F15
+C0A36C6CEB7F80A2001F15006C6C13FE00075C3903F803F83901FE0FF039007FFFC0D907
+FCC7FC23207E9F28>I<3901F83FE000FFEBFFFC9038FBE07F9039FF003F80D80FFEEB1F
+C06C48EB0FE04914F0ED07F8A216FC1503A216FEA816FC1507A216F8A2ED0FF06D14E06D
+EB1FC06DEB3F809039FBC0FE009038F8FFF8EC3FC091C8FCABB512C0A3272E7E9F2D>I<
+3801FF86000713FEEA1F00003C133E48131E140E12F8A36C90C7FCB47E13FC387FFFC06C
+13F0806C7F00077F00017FEA003F01001380143F0060131F00E0130FA27E15007E6C131E
+6C131C38FF807838F3FFF038C07F8019207D9F20>115 D<131CA5133CA3137CA213FC12
+0112031207381FFFFEB5FCA2D803FCC7FCB0EC0380A71201EC0700EA00FEEB7F0EEB3FFC
+EB07F0192E7FAD1F>I<D801F8EB07E000FFEB03FFA3000FEB003F0007141FB3153FA200
+03147FA26C6CEBDFF03A00FE039FFF90387FFF1FEB0FFC28207D9F2D>I<3A7FFF807FFC
+A33A03FC000F006C6C131E6C6C5BEC803890387FC078013F5B90381FE1E090380FF3C0EC
+FF806D90C7FC6D5A13016D7E81815B903803DFE09038078FF08190380F07FC90381E03FE
+EB3C01496C7E4914804848EB7FC00003EC3FE026FFFC01B5FCA328207F9F2B>120
+D<B5EB1FFCA3D80FF8EB03C0000715806D1307000315007F0001140E7F6C5CA2EC803C01
+7F1338ECC078013F1370ECE0F0011F5B14F1010F5B14F9903807FB80A214FF6D90C7FCA2
+6D5AA26D5AA21478A21470A214F05C1301007C5BEAFE035C49C8FC5BEAFC1EEA787CEA3F
+F0EA0FC0262E7E9F2B>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fl cmsy10 10.95 1
+/Fl 1 14 df<14FE903807FFC090381F01F0903878003C01E0130ED80180130348C7EA01
+800006EC00C0481560A2481530481518A248150CA4481506A90060150CA46C1518A26C15
+306C1560A26C15C06CEC01806C6CEB0300D800E0130E0178133C90381F01F0903807FFC0
+D900FEC7FC272B7DA02E>13 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fm cmbx12 14.4 45
+/Fm 45 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<B612FCEDFF8016E03A03
+FC001FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0
+A217C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0
+A33903FC001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3
+EBFC0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327
+297EA82C>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A31600
+1403A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<91387F
+E003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F48488048488048
+4880485A82485A82127FA290CAFC5AA892B512F87E7F03001300123FA26C7EA26C7E6C7E
+6C7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F9039007FF0032D297CA835>I<B5
+12F0A33803FC00B3B1B512F0A314297EA819>73 D<B512FCA3D803FCC8FCB3A3ED01C0A4
+15031680A21507A2150FA2151F157F913801FF00B7FCA322297EA828>76
+D<D8FFFE92383FFF80A26D5D0003EFE000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB03
+8FA3D987F0EB070FA2D983F8130EA2D981FC131CA3D980FE1338A2027F1370A291383F80
+E0A391381FC1C0A291380FE380A2913807F700A3EC03FEA26E5AA26E5AD8FFFE0203B512
+80A2157039297DA840>I<D8FFFCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB
+87FCEB83FEEB81FF01801380147F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E
+1381ED7FC1ED3FE1ED1FF1150F16F9ED07FDED03FF8181167FA2163F161F160F1607D8FF
+FE14031601A230297EA835>I<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182
+A65E4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA917
+0EA21503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>82
+D<9038FF80600003EBF0E0000F13F8381F80FD383F001F003E1307481303A200FC1301A2
+14007EA26C140013C0EA7FFCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB
+007FEC1FF0140F140700E01303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE00
+00E15B38C01FF01C297CA825>I<007FB71280A39039807F807FD87C00140F00781507A2
+0070150300F016C0A2481501A5C791C7FCB3A490B612C0A32A287EA72F>I<B500F0EBFF
+FEA3D803FCC7EA0380B3AA0001ED07007F0000150E137F6D143CD91FC05B90390FF003F0
+6DB55A01001480DA1FFCC7FC2F297EA834>I<B53CE07FFFE01FFFC0A32803FC0003FCC7
+EA7000A26D6D7E000160A26D6E13016C604B138002801503017F5F4B13C0D93FC0013F49
+C7FCA2913AE00E1FE00F011F160E17F09126F01C0F131E010F161C033C13F8902707F838
+075BA2037813FC902703FC70035BA2913AFEE001FEF001015E02FF14FF4B7E6D5EA26E48
+6D5AA36EC76CC8FCA2023E80021E141EA242297FA845>87 D<3803FF80000F13F0381F01
+FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA0FE0EA1F80EA3F00127E5AA4
+145F007E13DF393F839FFC381FFE0F3803FC031E1B7E9A21>97 D<EAFFE0A3120FACEBE1
+FE9038EFFF809038FE07E09038F803F09038F001F89038E000FCA2157EA2157FA8157EA3
+15FCA29038F001F89038F803F090389C0FE090380FFF80390E01FC00202A7EA925>I<EB
+3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A248133E007E90C7FCA212FEA7127EA2
+127F6CEB03801380001FEB0700380FE00E3803F83C3801FFF838003FC0191B7E9A1E>I<
+EC7FF0A31407ACEB3F873801FFF73807F03F380FC00F381F8007EA3F00A2127EA312FEA8
+127EA27EA2381F800F380FC01F3907E07FFF3801FFE738007F87202A7EA925>I<EB3FC0
+3801FFF03803E07C380F803E001F7F130048EB0F80127E15C0A200FE1307A2B6FCA248C8
+FCA3127EA2127F6CEB01C07E390F8003803907C007003803F01E3800FFFCEB3FE01A1B7E
+9A1F>I<EB07F8EB3FFCEB7E3E3801FC7FEA03F813F01207143E1400A7B512C0A33807F0
+00B3A3387FFF80A3182A7EA915>I<9038FF80F00003EBE3F8390FC1FE1C391F007C7C48
+137E003EEB3E10007EEB3F00A6003E133E003F137E6C137C380FC1F8380BFFE000181380
+90C8FC1238A2123C383FFFF814FF6C14C06C14E06C14F0121F383C0007007CEB01F84813
+00A4007CEB01F0A2003FEB07E0390FC01F806CB5120038007FF01E287E9A22>I<EAFFE0
+A3120FAC147E9038E1FF809038E30FC001E413E0EBE80701F813F013F0A213E0B039FFFE
+3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FCA7EAFF
+E0A3120FB3A3EAFFFEA30F2B7EAA12>I<EAFFE0A3120FB3B2EAFFFEA30F2A7EA912>108
+D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D80FC49038F101FC9039C803F200
+01D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A3331B7D9A38>I<38FFC07E9038C1
+FF809038C30FC0D80FC413E0EBC80701D813F013D0A213E0B039FFFE3FFFA3201B7D9A25
+>I<EB3FE03801FFFC3803F07E390FC01F80391F800FC0393F0007E0A2007EEB03F0A300
+FE14F8A8007E14F0A26CEB07E0A2391F800FC0390FC01F803907F07F003801FFFC38003F
+E01D1B7E9A22>I<38FFE1FE9038EFFF809038FE0FE0390FF803F09038F001F801E013FC
+140015FEA2157FA8157E15FEA215FC140101F013F89038F807F09038FC0FE09038EFFF80
+9038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FFC1F0EBC7FCEBC63E380FCC7F13
+D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114 D<3803FE30380FFFF0EA3E03EA78
+00127000F01370A27E00FE1300EAFFE06CB4FC14C06C13E06C13F0000713F8C6FCEB07FC
+130000E0137C143C7E14387E6C137038FF01E038E7FFC000C11300161B7E9A1B>I<13E0
+A41201A31203A21207120F381FFFE0B5FCA2380FE000AD1470A73807F0E0000313C03801
+FF8038007F0014267FA51A>I<39FFE07FF0A3000F1307B2140FA2000713173903F067FF
+3801FFC738007F87201B7D9A25>I<39FFFC03FFA3390FF000F0000714E07F0003EB01C0
+A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB3F9C14FC6D5AA26D5AA36D5A
+A26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B0FE00FE001C02607F007EB0380A201F8
+EBF00700031600EC0FF801FC5C0001150EEC1FFC2600FE1C5B15FE9039FF387E3C017F14
+38EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2EC800701075CA22E1B7F9A31>I<
+39FFFC1FFEA33907F003803803F8079038FC0F003801FE1E00005BEB7F3814F86D5A6D5A
+130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F803901E01FC0D803C013E0EB800F
+39FFF03FFFA3201B7F9A23>I<39FFFC03FFA3390FF000F0000714E07F0003EB01C0A2EB
+FC0300011480EBFE070000140013FFEB7F0EA2149EEB3F9C14FC6D5AA26D5AA36D5AA26D
+5AA25CA21307003890C7FCEA7C0FEAFE0E131E131C5BEA74F0EA3FE0EA0F8020277F9A23
+>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fn cmtt10 10.95 77
+/Fn 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: Fo cmr10 10.95 80
+/Fo 80 125 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7
+B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701
+A290C7FCA6B512E0EA0700B2383FC3FC1620809F19>I<EB3FE013E0EA01C1EA0381EA07
+00A8B5FCEA0700B2383FE7FC1620809F19>I<EA7038EAF87CEAFC7EA2EA743AEA0402A3
+EA0804A2EA1008A2EA2010EA40200F0E7F9F17>34 D<127012F812FCA212741204A31208
+A21210A212201240060E7C9F0D>39 D<13401380EA01005A12061204120C5AA212381230
+A212701260A412E0AC1260A412701230A212381218A27E120412067E7EEA008013400A2E
+7BA112>I<7E12407E12307E1208120C7EA212077EA213801201A413C0AC1380A4120313
+00A25A1206A25A120812185A12205A5A0A2E7EA112>I<127012F012F8A212781208A312
+10A31220A21240050E7C840D>44 D<EAFFF0A20C02808A0F>I<127012F8A3127005057C
+840D>I<144014C0EB0180A3EB0300A31306A25BA35BA35BA25BA35BA3485AA348C7FCA2
+1206A35AA35AA25AA35AA35AA2122D7EA117>I<EA03F0EA0E1C487EEA1806EA38073870
+0380A400F013C0AD00701380A3EA780700381300EA1806EA1C0E6C5AEA03F0121F7E9D17
+>I<13801203120F12F31203B3A6EA07C0EA7FFE0F1E7C9D17>I<EA03F0EA0C1CEA100E48
+7E00401380128000F013C0EAF803A3EA200712001480A2EB0F00130E5B5B5B13605B485A
+48C7FC000613405A5A00101380EA3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA
+200F007813801307A2EA380F12001400A2131E131C1370EA07F0EA003C130E130FEB0780
+A214C0122012F8A300F013801240EB0F00EA200EEA183CEA07F0121F7E9D17>I<1306A2
+130EA2131E132EA2134E138EA2EA010E1202A212041208A212101220A2124012C0B512F0
+38000E00A7EBFFE0141E7F9D17>I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161C
+EA180EEA10071480EA0003A214C0A3127012F0A200E013801240EB0700EA20066C5AEA08
+38EA07E0121F7E9D17>I<137CEA0182EA0701380E0380EA0C0712183838030090C7FC12
+781270A2EAF1F0EAF21CEAF406EAF807EB0380A200F013C0A51270A214801238EB070012
+18EA0C0E6C5AEA01F0121F7E9D17>I<1240387FFFE014C0A23840008038800100A21302
+485AA25B5BA25BA21360A213E05B1201A41203A76C5A131F7E9D17>I<EA03F0EA0C0CEA
+1006EA3003382001801260A3127038780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C
+7EEA103F38300F80EA6007EB01C012C01300A31480EA600100201300EA1002EA0C0CEA03
+F0121F7E9D17>I<EA03F0EA0E18487E487E13071270EB038012F0A214C0A5EA7007A212
+38EA180BEA0E13EA03E338000380A3EB07001230EA7806130EEA700CEA2018EA1070EA0F
+C0121F7E9D17>I<127012F8A312701200AA127012F8A3127005147C930D>I<127012F8A3
+12701200AA127012F012F8A212781208A31210A31220A21240051D7C930D>I<5B497EA3
+497EA3EB09E0A3EB10F0A3EB2078A3497EA2EBC03EEB801EA248B5FCEB000FA20002EB07
+80A348EB03C0A2120C001E14E039FF801FFE1F207F9F22>65 D<B512E0380F0078141EA2
+801580A515005C141E147CEBFFF0EB007C141FEC0F80EC07C0140315E0A515C014071580
+EC0F00143EB512F01B1F7E9E20>I<90380FE0109038381C309038E002703803C0013907
+8000F048C71270121E15305A1510127C127800F81400A91278007C1410123CA26C1420A2
+7E6C6C13406C6C13803900E00300EB380CEB0FF01C217E9F21>I<B512F83807801EEC07
+80EC03C0EC01E0EC00F015701578A2153CA3153EA8153CA2157C1578A215F0EC01E0EC03
+C0EC0780EC1E00B512F81F1F7F9E23>I<B61280380F000F14031401140015C01540A314
+401500A214C0130113FF130113001440A3EC0020A31540A315C01401EC0380140FB6FC1B
+1F7E9E1F>I<B61280380780071401A2140015C01540A4EC2000A3146014E013FF138014
+601420A391C7FCA87FEAFFFE1A1F7F9E1E>I<90380FE02090387818609038E004E03803
+800238070001481300001E1460A25A1520127C127800F81400A7EC7FFCEC03E000781301
+127C123CA27EA27E7E380380023900E00460903878182090380FE0001E217D9F24>I<39
+FFF07FF8390F000780AD90B5FCEB0007AF39FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3
+ABEAFFF00C1F7E9E10>I<3807FFC038003E00131EB3A3122012F8A3EAF01CEA403CEA60
+38EA1070EA0FC012207F9E17>I<39FFF007FC390F0003E0EC0180150014025C5C5C5C5C
+5C49C7FC5B497E130FEB13C0EB21E01341EB80F0EB0078A28080A280EC0780A2EC03C015
+E015F039FFF01FFE1F1F7E9E23>I<EAFFF8EA0F8090C7FCB21402A414061404A2140C14
+1C147CB512FC171F7E9E1C>I<B46CEB07FE000715C0A2D805C0130BA2D804E01313A301
+701323A26D1343A36D1383A290380E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460
+121FD8FFE0EB7FFE271F7F9E2A>I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08
+F01378A27F7FA27FEB0780A2EB03C0EB01E0A2EB00F01478A2143C141EA2140F1407A214
+031401123E38FF80001D1F7E9E22>I<EB1FE0EB70383801C00E48487E39070003804814
+C0001EEB01E048EB00F0A2007C14F8A20078147800F8147CA900781478007C14F8A2003C
+14F0003E1301001E14E06CEB03C06C148039038007003801E01E38007038EB1FE01E217E
+9F23>I<B512E0380F007C141E80EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8
+FCAEEAFFF01A1F7E9E1F>I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB
+01E0003E14F0003C1300007C14F8A20078147800F8147CA900781478007C14F8A2003C14
+F0383E0781391E0841E0390F1023C00007148039039017003801D01E3900783804EB1FF8
+EB001CEC0C0CEC0E1CEC0FF8A2140715F0EC01E01E297E9F23>I<B512E0380F80780007
+131E80EC0780A215C0A41580A2EC0F00141E1478EBFFE0EB80601438143C141C141EA314
+1FA315011581140F390FC0078239FFFC03C4C812F820207F9E22>I<3803F040380C0CC0
+EA1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF86CB4FC00071380C613
+C0EB1FE013031301EB00F014707EA46C136014E06C13C038F8018038C60300EA81FC1421
+7E9F19>I<007FB512E038780F010060EB006000401420A200C0143000801410A4000014
+00B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC0080B3A46CEB01001380
+120314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003FE391F8000F86CC712
+6015206C6C1340A36C6C1380A2EBE00100011400A23800F002A213F8EB7804A26D5AA36D
+5AA2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF07FF81FF03B1F000FC0
+07C06C903907800180170015C001805C00071502EC09E013C000035DEC19F01410D801E0
+5CA2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C144090383D000F133F6D
+5CA2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<397FF81FF8390FE007C0
+3907C0030000031302EBE0063801F00400005BEBF818EB78106D5AEB3E60EB1E406D5AA2
+13076D7E497E1305EB08F0EB18F8EB1078EB207CEB603EEB401EEB801F3901000F801407
+000214C000061303001FEB07E039FFC01FFE1F1F7F9E22>I<39FFF001FF391F80007800
+0F146012076D1340000314807F3901F001001200EBF802EB7C06EB3C04EB3E08131EEB1F
+10EB0FB0EB07A014E06D5AACEB3FFC201F7F9E22>I<387FFFFE387E003C127800701378
+006013F814F0384001E0130314C0EB07801200EB0F00131EA25B137C13785B1201EBE002
+EA03C0A2EA0780000F13061300001E1304003E130C123C48133C14FCB5FC171F7E9E1C>
+I<12FFA212C0B3B3A512FFA2082D7CA10D>I<EA0804EA1008EA2010A2EA4020A2EA8040
+A3EAB85CEAFC7EA2EA7C3EEA381C0F0E7A9F17>I<12FFA21203B3B3A512FFA2082D80A1
+0D>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<B812F82D01808C2E>124 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fp cmbx12 20.736 19
+/Fp 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
+%%PaperSize: A4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 75 659 a Fp(GNU)33 b(Readline)h(Library)e(User)h(In)m(terface)p
+75 709 1800 17 v 936 757 a Fo(Edition)17 b(5.0,)c(for)i
+Fn(Readline)f(Library)g Fo(V)l(ersion)i(5.0.)1559 811
+y(Septem)o(b)q(er)g(2003)75 2467 y Fm(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)75
+2534 y(Brian)h(F)-6 b(o)n(x,)23 b(F)-6 b(ree)23 b(Soft)n(w)n(are)f(F)-6
+b(oundation)p 75 2570 1800 9 v eop
+%%Page: 2 2
+2 1 bop 75 1512 a Fo(This)15 b(man)o(ual)g(describ)q(es)i(the)d(end)i
+(user)f(in)o(terface)g(of)f(the)h(GNU)f(Readline)i(Library)f(\(v)o
+(ersion)g(5.0,)f(19)75 1567 y(Septem)o(b)q(er)19 b(2003\),)e(a)h
+(library)h(whic)o(h)g(aids)g(in)g(the)f(consistency)h(of)f(user)g(in)o
+(terface)h(across)e(discrete)75 1621 y(programs)d(whic)o(h)i(pro)o
+(vide)g(a)f(command)g(line)i(in)o(terface.)75 1689 y(Cop)o(yrigh)o(t)
+301 1688 y(c)289 1689 y Fl(\015)d Fo(1988-2003)f(F)l(ree)i(Soft)o(w)o
+(are)f(F)l(oundation,)h(Inc.)75 1756 y(P)o(ermission)i(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 1811 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.)195 1878 y(P)o(ermission)i(is)g(gran)o(ted)f(to)g(cop)o(y)l(,)
+h(distribute)h(and/or)e(mo)q(dify)h(this)g(do)q(cumen)o(t)g(under)195
+1933 y(the)h(terms)f(of)h(the)g(GNU)g(F)l(ree)g(Do)q(cumen)o(tation)g
+(License,)i(V)l(ersion)f(1.1)e(or)g(an)o(y)h(later)195
+1988 y(v)o(ersion)14 b(published)i(b)o(y)e(the)g(F)l(ree)f(Soft)o(w)o
+(are)g(F)l(oundation;)h(with)g(no)f(In)o(v)m(arian)o(t)i(Sections,)195
+2042 y(with)h(the)f(F)l(ron)o(t-Co)o(v)o(er)e(texts)i(b)q(eing)i(\\A)e
+(GNU)g(Man)o(ual,")g(and)g(with)h(the)f(Bac)o(k-Co)o(v)o(er)195
+2097 y(T)l(exts)h(as)g(in)h(\(a\))e(b)q(elo)o(w.)24 b(A)16
+b(cop)o(y)g(of)g(the)g(license)i(is)f(included)i(in)e(the)f(section)h
+(en)o(titled)195 2152 y(\\GNU)e(F)l(ree)g(Do)q(cumen)o(tation)g
+(License.")195 2219 y(\(a\))j(The)h(FSF's)f(Bac)o(k-Co)o(v)o(er)g(T)l
+(ext)h(is:)28 b(\\Y)l(ou)19 b(ha)o(v)o(e)g(freedom)g(to)f(cop)o(y)h
+(and)g(mo)q(dify)195 2274 y(this)e(GNU)f(Man)o(ual,)g(lik)o(e)h(GNU)f
+(soft)o(w)o(are.)22 b(Copies)17 b(published)h(b)o(y)f(the)f(F)l(ree)g
+(Soft)o(w)o(are)195 2329 y(F)l(oundation)g(raise)f(funds)h(for)e(GNU)h
+(dev)o(elopmen)o(t.")75 2451 y(Published)i(b)o(y)f(the)f(F)l(ree)g
+(Soft)o(w)o(are)f(F)l(oundation)75 2506 y(59)h(T)l(emple)h(Place,)f
+(Suite)i(330,)75 2560 y(Boston,)d(MA)h(02111-1307)75
+2615 y(USA)p eop
+%%Page: -1 3
+-1 2 bop 1862 -58 a Fo(i)75 149 y Fk(T)-7 b(able)27 b(of)f(Con)n(ten)n
+(ts)75 320 y Fm(1)67 b(Command)22 b(Line)i(Editing)d
+Fj(.)10 b(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h
+(.)f(.)g(.)g(.)42 b Fm(1)224 389 y Fo(1.1)j(In)o(tro)q(duction)16
+b(to)f(Line)h(Editing)e Fi(.)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 Fo(1)224 444 y(1.2)45 b(Readline)16 b(In)o(teraction)8
+b Fi(.)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 Fo(1)374 499 y(1.2.1)44 b(Readline)16
+b(Bare)f(Essen)o(tials)f Fi(.)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 Fo(1)374 553 y(1.2.2)44 b(Readline)16 b(Mo)o(v)o(emen)o(t)e(Commands)
+7 b Fi(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
+(.)h(.)21 b Fo(2)374 608 y(1.2.3)44 b(Readline)16 b(Killing)i(Commands)
+11 b Fi(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)f(.)h(.)f(.)h(.)25 b Fo(2)374 663 y(1.2.4)44 b(Readline)16
+b(Argumen)o(ts)c Fi(.)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 Fo(3)374 718 y(1.2.5)44 b(Searc)o(hing)16 b(for)e(Commands)h(in)h
+(the)f(History)e Fi(.)8 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)27
+b Fo(3)224 773 y(1.3)45 b(Readline)16 b(Init)h(File)e
+Fi(.)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 Fo(4)374 827 y(1.3.1)44 b(Readline)16
+b(Init)g(File)h(Syn)o(tax)7 b Fi(.)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 Fo(4)374 882 y(1.3.2)44 b(Conditional)16 b(Init)g(Constructs)5
+b Fi(.)i(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)g(.)f(.)19 b Fo(9)374 937 y(1.3.3)44 b(Sample)16
+b(Init)g(File)11 b Fi(.)d(.)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(.)26 b Fo(10)224 992 y(1.4)45 b(Bindable)17 b(Readline)g(Commands)6
+b Fi(.)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 Fo(13)374
+1046 y(1.4.1)44 b(Commands)14 b(F)l(or)h(Mo)o(ving)e
+Fi(.)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 Fo(13)374 1101 y(1.4.2)44
+b(Commands)14 b(F)l(or)h(Manipulating)i(The)e(History)9
+b Fi(.)e(.)h(.)f(.)h(.)f(.)h(.)24 b Fo(13)374 1156 y(1.4.3)44
+b(Commands)14 b(F)l(or)h(Changing)h(T)l(ext)e Fi(.)8
+b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)30
+b Fo(14)374 1211 y(1.4.4)44 b(Killing)18 b(And)e(Y)l(anking)9
+b Fi(.)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 Fo(16)374
+1266 y(1.4.5)44 b(Sp)q(ecifying)17 b(Numeric)f(Argumen)o(ts)c
+Fi(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)27
+b Fo(17)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 Fi(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)25 b Fo(17)374 1375 y(1.4.7)44 b(Keyb)q(oard)15
+b(Macros)6 b Fi(.)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 Fo(17)374 1430 y(1.4.8)44 b(Some)15 b(Miscellaneous)i(Commands)7
+b Fi(.)g(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
+22 b Fo(18)224 1485 y(1.5)45 b(Readline)16 b(vi)g(Mo)q(de)e
+Fi(.)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 Fo(19)75 1606 y Fm(App)r(endix)c(A)50
+b(Cop)n(ying)23 b(This)g(Man)n(ual)15 b Fj(.)c(.)f(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)h(.)37 b Fm(21)224 1675 y Fo(A.1)45 b(GNU)15
+b(F)l(ree)h(Do)q(cumen)o(tation)f(License)g Fi(.)7 b(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)28
+b Fo(21)374 1729 y(A.1.1)44 b(ADDENDUM:)14 b(Ho)o(w)g(to)h(use)h(this)f
+(License)i(for)e(y)o(our)465 1784 y(do)q(cumen)o(ts)f
+Fi(.)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(.)f(.)29 b Fo(27)p eop
+%%Page: -2 4
+-2 3 bop 75 -58 a Fo(ii)1321 b(GNU)15 b(Readline)h(Library)p
+eop
+%%Page: 1 5
+1 4 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(1)75 149 y Fk(1)41 b(Command)28 b(Line)e(Editing)137
+255 y Fo(This)16 b(c)o(hapter)f(describ)q(es)i(the)e(basic)h(features)f
+(of)g(the)g Fh(gnu)g Fo(command)g(line)i(editing)f(in)o(terface.)75
+378 y Fm(1.1)33 b(In)n(tro)r(duction)24 b(to)e(Line)i(Editing)137
+497 y Fo(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
+562 y(The)h(text)f Fg(C-k)h Fo(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
+560 y Ff(h)p 1844 534 19 2 v 1844 562 a Fe(k)p 1844 570
+V 1860 560 a Ff(i)75 617 y Fo(k)o(ey)d(is)h(pressed)g(while)g(the)f
+(Con)o(trol)g(k)o(ey)g(is)h(depressed.)137 682 y(The)g(text)g
+Fg(M-k)f Fo(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 737 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
+735 y Ff(h)p 942 709 V 942 737 a Fe(k)p 942 745 V 958
+735 a Ff(i)987 737 y Fo(k)o(ey)g(is)h(pressed.)20 b(The)15
+b(Meta)e(k)o(ey)h(is)h(lab)q(eled)1779 735 y Ff(h)p 1791
+709 72 2 v 1791 737 a Fe(AL)m(T)p 1791 745 V 1860 735
+a Ff(i)75 792 y Fo(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 790 y Ff(h)p 1225 764 V 1225 792 a Fe(AL)m(T)p 1225
+800 V 1294 790 a Ff(i)1322 792 y Fo(\(usually)i(to)e(either)i(side)g
+(of)f(the)75 847 y(space)j(bar\),)f(the)388 845 y Ff(h)p
+400 819 V 400 847 a Fe(AL)m(T)p 400 854 V 469 845 a Ff(i)499
+847 y Fo(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 845 y Ff(h)p
+1709 819 V 1709 847 a Fe(AL)m(T)p 1709 854 V 1778 845
+a Ff(i)1808 847 y Fo(k)o(ey)75 901 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 956
+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 1021
+y(If)c(y)o(ou)g(do)g(not)f(ha)o(v)o(e)h(a)f(Meta)h(or)694
+1019 y Ff(h)p 706 993 V 706 1021 a Fe(AL)m(T)p 706 1029
+V 775 1019 a Ff(i)801 1021 y Fo(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
+1076 y(k)o(eystrok)o(e)f(can)i(b)q(e)g(generated)f(b)o(y)g(t)o(yping)
+809 1074 y Ff(h)p 822 1048 70 2 v 822 1076 a Fe(ESC)p
+822 1084 V 888 1074 a Ff(i)915 1076 y Fi(\014rst)p Fo(,)g(and)g(then)h
+(t)o(yping)1339 1074 y Ff(h)p 1351 1048 19 2 v 1351 1076
+a Fe(k)p 1351 1084 V 1368 1074 a Ff(i)1383 1076 y Fo(.)18
+b(Either)12 b(pro)q(cess)f(is)h(kno)o(wn)75 1131 y(as)j
+Fd(metafying)k Fo(the)425 1129 y Ff(h)p 437 1103 V 437
+1131 a Fe(k)p 437 1139 V 454 1129 a Ff(i)484 1131 y Fo(k)o(ey)l(.)137
+1196 y(The)i(text)e Fg(M-C-k)h Fo(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
+1251 y Fd(metafying)e Fg(C-k)p Fo(.)137 1316 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 1314 y Ff(h)p 1396 1288
+73 2 v 1396 1316 a Fe(DEL)p 1396 1323 V 1467 1314 a Ff(i)1482
+1316 y Fo(,)1514 1314 y Ff(h)p 1526 1288 70 2 v 1526
+1316 a Fe(ESC)p 1526 1323 V 1593 1314 a Ff(i)1608 1316
+y Fo(,)1640 1314 y Ff(h)p 1652 1288 72 2 v 1652 1316
+a Fe(LFD)p 1652 1323 V 1722 1314 a Ff(i)1737 1316 y Fo(,)1768
+1314 y Ff(h)p 1780 1288 70 2 v 1780 1316 a Fe(SPC)p 1780
+1323 V 1847 1314 a Ff(i)1862 1316 y Fo(,)75 1369 y Ff(h)p
+87 1343 76 2 v 87 1371 a Fe(RET)p 87 1378 V 160 1369
+a Ff(i)175 1371 y Fo(,)23 b(and)306 1369 y Ff(h)p 318
+1343 74 2 v 318 1371 a Fe(T)m(AB)p 318 1378 V 390 1369
+a Ff(i)427 1371 y Fo(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
+1425 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
+1423 y Ff(h)p 1456 1397 72 2 v 1456 1425 a Fe(LFD)p 1456
+1433 V 1526 1423 a Ff(i)1560 1425 y Fo(k)o(ey)l(,)h(t)o(yping)1802
+1423 y Ff(h)p 1814 1397 49 2 v 1814 1425 a Fe(C-j)p 1814
+1433 V 1860 1423 a Ff(i)75 1480 y Fo(will)c(pro)q(duce)g(the)f(desired)
+h(c)o(haracter.)j(The)874 1478 y Ff(h)p 886 1452 76 2
+v 886 1480 a Fe(RET)p 886 1488 V 959 1478 a Ff(i)989
+1480 y Fo(k)o(ey)c(ma)o(y)f(b)q(e)h(lab)q(eled)1385 1478
+y Ff(h)p 1397 1452 109 2 v 1397 1480 a Fe(Return)p 1397
+1488 V 1503 1478 a Ff(i)1533 1480 y Fo(or)1588 1478 y
+Ff(h)p 1600 1452 86 2 v 1600 1480 a Fe(En)o(ter)p 1600
+1488 V 1684 1478 a Ff(i)1714 1480 y Fo(on)f(some)75 1535
+y(k)o(eyb)q(oards.)75 1657 y Fm(1.2)33 b(Readline)23
+b(In)n(teraction)137 1777 y Fo(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 1832 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
+1886 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 1941 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 1996
+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
+2051 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 2049 y Ff(h)p 1172 2023 76
+2 v 1172 2051 a Fe(RET)p 1172 2059 V 1245 2049 a Ff(i)1260
+2051 y Fo(.)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 2106 y(end)k(of)e(the)h(line)i(to)d(press)563
+2104 y Ff(h)p 575 2078 V 575 2106 a Fe(RET)p 575 2113
+V 648 2104 a Ff(i)663 2106 y Fo(;)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
+2160 y(cursor)d(within)h(the)g(line.)75 2266 y Fc(1.2.1)30
+b(Readline)20 b(Bare)g(Essen)n(tials)137 2386 y Fo(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 2441 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 2495 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
+Fo(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 Fo(.)p eop
+%%Page: 2 6
+2 5 bop 75 -58 a Fo(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 446 y Fg(C-b)168 b Fo(Mo)o(v)o(e)14 b(bac)o(k)h(one)h(c)o
+(haracter.)75 524 y Fg(C-f)168 b Fo(Mo)o(v)o(e)14 b(forw)o(ard)g(one)h
+(c)o(haracter.)75 599 y Ff(h)p 87 573 73 2 v 87 601 a
+Fe(DEL)p 87 609 V 158 599 a Ff(i)188 601 y Fo(or)244
+599 y Ff(h)p 256 573 159 2 v 256 601 a Fe(Bac)o(kspace)p
+256 609 V 412 599 a Ff(i)315 656 y Fo(Delete)h(the)f(c)o(haracter)g(to)
+f(the)h(left)h(of)f(the)g(cursor.)75 734 y Fg(C-d)168
+b Fo(Delete)16 b(the)f(c)o(haracter)g(underneath)h(the)f(cursor.)75
+811 y(Prin)o(ting)h(c)o(haracters)315 866 y(Insert)f(the)h(c)o
+(haracter)e(in)o(to)h(the)h(line)h(at)d(the)h(cursor.)75
+944 y Fg(C-_)g Fo(or)f Fg(C-x)h(C-u)315 998 y Fo(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 1053 y(line.)75
+1131 y(\(Dep)q(ending)i(on)f(y)o(our)g(con\014guration,)g(the)863
+1129 y Ff(h)p 875 1103 V 875 1131 a Fe(Bac)o(kspace)p
+875 1138 V 1032 1129 a Ff(i)1063 1131 y Fo(k)o(ey)g(b)q(e)h(set)f(to)f
+(delete)i(the)f(c)o(haracter)g(to)f(the)75 1186 y(left)h(of)f(the)h
+(cursor)f(and)g(the)596 1184 y Ff(h)p 608 1158 73 2 v
+608 1186 a Fe(DEL)p 608 1193 V 679 1184 a Ff(i)710 1186
+y Fo(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 1240 y Fg(C-d)p Fo(,)e(rather)h(than)g(the)
+g(c)o(haracter)g(to)f(the)i(left)f(of)g(the)g(cursor.\))75
+1349 y Fc(1.2.2)30 b(Readline)20 b(Mo)n(v)n(emen)n(t)i(Commands)137
+1470 y Fo(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 1525 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
+Fo(,)h Fg(C-f)p Fo(,)f Fg(C-d)p Fo(,)g(and)522 1578 y
+Ff(h)p 534 1552 V 534 1580 a Fe(DEL)p 534 1587 V 605
+1578 a Ff(i)619 1580 y Fo(.)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 1712 y Fg(C-a)168 b Fo(Mo)o(v)o(e)14 b(to)h(the)g(start)f
+(of)h(the)g(line.)75 1790 y Fg(C-e)168 b Fo(Mo)o(v)o(e)14
+b(to)h(the)g(end)h(of)f(the)g(line.)75 1867 y Fg(M-f)168
+b Fo(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 1945
+y Fg(M-b)168 b Fo(Mo)o(v)o(e)14 b(bac)o(kw)o(ard)h(a)g(w)o(ord.)75
+2022 y Fg(C-l)168 b Fo(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 2100 y(Notice)e(ho)o(w)f
+Fg(C-f)g Fo(mo)o(v)o(es)f(forw)o(ard)g(a)h(c)o(haracter,)g(while)i
+Fg(M-f)e Fo(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 2155 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 2210 y(w)o(ords.)75
+2318 y Fc(1.2.3)30 b(Readline)20 b(Killing)h(Commands)137
+2439 y Fd(Killing)26 b Fo(text)18 b(means)g(to)g(delete)i(the)f(text)f
+(from)g(the)h(line,)i(but)d(to)g(sa)o(v)o(e)g(it)h(a)o(w)o(a)o(y)e(for)
+h(later)h(use,)75 2494 y(usually)f(b)o(y)f Fd(y)o(anking)22
+b Fo(\(re-inserting\))17 b(it)g(bac)o(k)g(in)o(to)g(the)h(line.)27
+b(\(`Cut')15 b(and)j(`paste')e(are)g(more)h(recen)o(t)75
+2549 y(jargon)d(for)h(`kill')h(and)g(`y)o(ank'.\))137
+2615 y(If)g(the)f(description)h(for)f(a)g(command)g(sa)o(ys)f(that)h
+(it)g(`kills')h(text,)e(then)i(y)o(ou)f(can)g(b)q(e)h(sure)f(that)f(y)o
+(ou)75 2670 y(can)h(get)g(the)g(text)g(bac)o(k)g(in)h(a)f(di\013eren)o
+(t)g(\(or)g(the)g(same\))g(place)h(later.)p eop
+%%Page: 3 7
+3 6 bop 75 -58 a Fo(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 Fd(kill-ring)p Fo(.)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 Fo(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 536 y
+Fg(M-d)168 b Fo(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 591 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 Fo(.)75 669 y Fg(M-)123 667 y Ff(h)p 135 641
+73 2 v 135 669 a Fe(DEL)p 135 676 V 206 667 a Ff(i)315
+669 y Fo(Kill)i(from)e(the)g(cursor)g(the)h(start)e(of)h(the)g(curren)o
+(t)g(w)o(ord,)f(or,)h(if)g(b)q(et)o(w)o(een)h(w)o(ords,)e(to)h(the)315
+723 y(start)j(of)h(the)g(previous)h(w)o(ord.)31 b(W)l(ord)19
+b(b)q(oundaries)h(are)f(the)h(same)e(as)h(those)g(used)h(b)o(y)315
+778 y Fg(M-b)p Fo(.)75 856 y Fg(C-w)168 b Fo(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 854
+y Ff(h)p 1789 828 V 1789 856 a Fe(DEL)p 1789 864 V 1860
+854 a Ff(i)315 911 y Fo(b)q(ecause)h(the)f(w)o(ord)g(b)q(oundaries)h
+(di\013er.)137 989 y(Here)21 b(is)h(ho)o(w)e(to)g Fd(y)o(ank)j
+Fo(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 1044 y(recen)o(tly-killed)d
+(text)d(from)f(the)i(kill)h(bu\013er.)75 1122 y Fg(C-y)168
+b Fo(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 1200
+y Fg(M-y)168 b Fo(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 1254 y(command)d(is)h Fg(C-y)f Fo(or)f Fg(M-y)p Fo(.)75
+1364 y Fc(1.2.4)30 b(Readline)20 b(Argumen)n(ts)137 1485
+y Fo(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
+1540 y(as)20 b(a)f(rep)q(eat)i(coun)o(t,)f(other)g(times)g(it)h(is)f
+(the)g Fi(sign)j Fo(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 1594 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 1649 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 1704 y(the)f(line,)i(y)o(ou)e(migh)o(t)g
+(t)o(yp)q(e)g(`)p Fn(M--)f(C-k)p Fo('.)137 1770 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 1825
+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 Fn(-)p Fo('\),)d(then)j(the)f(sign)h(of)f
+(the)h(argumen)o(t)75 1880 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
+1935 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 1990 y Fo(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 Fn(M-1)14 b(0)h(C-d)p Fo(',)k(whic)o(h)g
+(will)h(delete)g(the)f(next)g(ten)75 2044 y(c)o(haracters)14
+b(on)i(the)f(input)h(line.)75 2154 y Fc(1.2.5)30 b(Searc)n(hing)21
+b(for)f(Commands)h(in)f(the)h(History)137 2275 y Fo(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 2330 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 Fd(incremen)o(tal)e Fo(and)e Fd(non-incremen)o(tal)p
+Fo(.)137 2396 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 2451 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 2506 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
+2560 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 2615 y(string,)g(t)o(yp)q(e)h Fg(C-r)p
+Fo(.)k(T)o(yping)d Fg(C-s)e Fo(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
+2670 y(in)20 b(the)f(v)m(alue)h(of)f(the)g Fn(isearch-terminators)d
+Fo(v)m(ariable)k(are)f(used)h(to)e(terminate)h(an)g(incremen)o(tal)p
+eop
+%%Page: 4 8
+4 7 bop 75 -58 a Fo(4)1322 b(GNU)15 b(Readline)h(Library)75
+149 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 147 y Ff(h)p 1301
+121 70 2 v 1301 149 a Fe(ESC)p 1301 157 V 1368 147 a
+Ff(i)1402 149 y Fo(and)e Fg(C-J)f Fo(c)o(haracters)g(will)75
+204 y(terminate)j(an)g(incremen)o(tal)i(searc)o(h.)37
+b Fg(C-g)21 b Fo(will)i(ab)q(ort)e(an)g(incremen)o(tal)h(searc)o(h)f
+(and)g(restore)g(the)75 259 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 314
+y(b)q(ecomes)i(the)f(curren)o(t)g(line.)137 384 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 Fo(or)g Fg(C-s)g Fo(as)h(appropriate.)k(This)75
+439 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 494 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 549 y(searc)o(h)10
+b(and)h(execute)g(that)f(command.)18 b(F)l(or)10 b(instance,)i(a)1063
+547 y Ff(h)p 1076 521 76 2 v 1076 549 a Fe(RET)p 1076
+556 V 1149 547 a Ff(i)1174 549 y Fo(will)g(terminate)f(the)g(searc)o(h)
+f(and)h(accept)75 604 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 658 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 729 y(Readline)j(remem)o(b)q(ers)e(the)h(last)f(incremen)
+o(tal)i(searc)o(h)e(string.)27 b(If)17 b(t)o(w)o(o)f
+Fg(C-r)p Fo(s)h(are)g(t)o(yp)q(ed)h(without)75 784 y(an)o(y)g(in)o
+(terv)o(ening)h(c)o(haracters)f(de\014ning)h(a)f(new)h(searc)o(h)f
+(string,)g(an)o(y)g(remem)o(b)q(ered)h(searc)o(h)f(string)g(is)75
+839 y(used.)137 909 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 964 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 1019 y(con)o(ten)o(ts)15
+b(of)f(the)i(curren)o(t)f(line.)75 1156 y Fm(1.3)33 b(Readline)23
+b(Init)h(File)137 1281 y Fo(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 1336 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 1391 y(programs)15
+b(that)h(use)g(Readline)i(b)o(y)e(putting)g(commands)g(in)i(an)e
+Fd(inputrc)k Fo(\014le,)d(con)o(v)o(en)o(tionally)g(in)g(his)75
+1445 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 1500 y Fn(INPUTRC)p Fo(.)i(If)c(that)g(v)m(ariable)h
+(is)g(unset,)f(the)g(default)h(is)g(`)p Fn(~/.inputrc)p
+Fo('.)137 1571 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 1626 y(k)o(ey)g(bindings)i(are)e(set.)137 1696
+y(In)f(addition,)h(the)e Fn(C-x)i(C-r)e Fo(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
+1751 y(that)h(y)o(ou)h(migh)o(t)g(ha)o(v)o(e)g(made)g(to)g(it.)75
+1870 y Fc(1.3.1)30 b(Readline)20 b(Init)g(File)h(Syn)n(tax)137
+1995 y Fo(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 2050 y(ignored.)36 b(Lines)22 b(b)q(eginning)h(with)d
+(a)h(`)p Fn(#)p Fo(')e(are)h(commen)o(ts.)35 b(Lines)22
+b(b)q(eginning)h(with)e(a)f(`)p Fn($)p Fo(')f(indicate)75
+2105 y(conditional)c(constructs)f(\(see)g(Section)g(1.3.2)f
+([Conditional)h(Init)h(Constructs],)e(page)h(9\).)k(Other)c(lines)75
+2159 y(denote)h(v)m(ariable)i(settings)e(and)h(k)o(ey)f(bindings.)75
+2244 y(V)l(ariable)h(Settings)315 2299 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 2354 y(v)m(ariables)d(in)g(Readline)g(using)f
+(the)g Fn(set)g Fo(command)f(within)i(the)f(init)h(\014le.)26
+b(The)17 b(syn)o(tax)315 2408 y(is)f(simple:)435 2477
+y Fn(set)23 b Fg(variable)28 b(value)315 2546 y Fo(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 2601 y(use)g
+Fn(vi)e Fo(line)j(editing)g(commands:)435 2670 y Fn(set)23
+b(editing-mode)g(vi)p eop
+%%Page: 5 9
+5 8 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(5)315 149 y(V)l(ariable)19 b(names)e(and)h(v)m(alues,)h(where)e
+(appropriate,)h(are)f(recognized)i(without)e(regard)315
+204 y(to)e(case.)315 271 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 348 y Fn(bell-style)555 403 y Fo(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
+458 y(nal)d(b)q(ell.)32 b(If)19 b(set)f(to)g(`)p Fn(none)p
+Fo(',)g(Readline)i(nev)o(er)f(rings)g(the)f(b)q(ell.)32
+b(If)19 b(set)g(to)555 513 y(`)p Fn(visible)p Fo(',)c(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 568 y(`)p Fn(audible)p Fo(')g(\(the)h
+(default\),)i(Readline)g(attempts)e(to)g(ring)h(the)g(terminal's)555
+622 y(b)q(ell.)315 700 y Fn(comment-begin)555 755 y Fo(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
+Fn(insert-)555 810 y(comment)f Fo(command)h(is)h(executed.)21
+b(The)15 b(default)h(v)m(alue)g(is)g Fn("#")p Fo(.)315
+888 y Fn(completion-ignore-case)555 943 y Fo(If)e(set)f(to)g(`)p
+Fn(on)p Fo(',)g(Readline)i(p)q(erforms)e(\014lename)i(matc)o(hing)f
+(and)g(completion)555 997 y(in)i(a)f(case-insensitiv)o(e)i(fashion.)k
+(The)15 b(default)h(v)m(alue)g(is)g(`)p Fn(off)p Fo('.)315
+1075 y Fn(completion-query-items)555 1130 y Fo(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 1185 y(is)i(ask)o(ed)g(whether)g(the)f(list)i(of)e(p)q
+(ossibilities)k(should)e(b)q(e)f(displa)o(y)o(ed.)21
+b(If)15 b(the)555 1240 y(n)o(um)o(b)q(er)f(of)f(p)q(ossible)i
+(completions)f(is)g(greater)f(than)g(this)h(v)m(alue,)h(Readline)555
+1294 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 1349 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 1404 y(greater)h(than)h(or)g(equal)h(to)f(0.)k(The)d
+(default)f(limit)i(is)f Fn(100)p Fo(.)315 1482 y Fn(convert-meta)555
+1537 y Fo(If)11 b(set)g(to)g(`)p Fn(on)p Fo(',)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
+1591 y(to)f(an)h Fh(asci)q(i)e Fo(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
+1644 y Ff(h)p 567 1618 70 2 v 567 1646 a Fe(ESC)p 567
+1654 V 634 1644 a Ff(i)666 1646 y Fo(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
+1701 y(The)e(default)h(v)m(alue)h(is)e(`)p Fn(on)p Fo('.)315
+1779 y Fn(disable-completion)555 1834 y Fo(If)k(set)f(to)f(`)p
+Fn(On)p Fo(',)h(Readline)i(will)g(inhibit)g(w)o(ord)e(completion.)30
+b(Completion)555 1888 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
+1943 y(to)h Fn(self-insert)p Fo(.)j(The)d(default)h(is)g(`)p
+Fn(off)p Fo('.)315 2021 y Fn(editing-mode)555 2076 y
+Fo(The)f Fn(editing-mode)d Fo(v)m(ariable)k(con)o(trols)e(whic)o(h)h
+(default)g(set)f(of)g(k)o(ey)g(bind-)555 2131 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 2185 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
+2240 y(b)q(e)g(set)f(to)f(either)i(`)p Fn(emacs)p Fo(')e(or)h(`)p
+Fn(vi)p Fo('.)315 2318 y Fn(enable-keypad)555 2373 y
+Fo(When)d(set)f(to)h(`)p Fn(on)p Fo(',)e(Readline)j(will)h(try)d(to)g
+(enable)i(the)f(application)h(k)o(eypad)555 2428 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 2483 y(The)j(default)h(is)g(`)p
+Fn(off)p Fo('.)315 2560 y Fn(expand-tilde)555 2615 y
+Fo(If)e(set)g(to)f(`)p Fn(on)p Fo(',)f(tilde)k(expansion)e(is)h(p)q
+(erformed)f(when)g(Readline)h(attempts)555 2670 y(w)o(ord)g
+(completion.)21 b(The)15 b(default)h(is)f(`)p Fn(off)p
+Fo('.)p eop
+%%Page: 6 10
+6 9 bop 75 -58 a Fo(6)1322 b(GNU)15 b(Readline)h(Library)555
+149 y(If)f(set)g(to)f(`)p Fn(on)p Fo(',)g(the)g(history)h(co)q(de)h
+(attempts)e(to)g(place)i(p)q(oin)o(t)f(at)f(the)h(same)555
+204 y(lo)q(cation)i(on)g(eac)o(h)g(history)g(line)h(retriev)o(ed)f
+(with)g Fn(previous-history)d Fo(or)555 259 y Fn(next-history)p
+Fo(.)315 348 y Fn(horizontal-scroll-mode)555 403 y Fo(This)19
+b(v)m(ariable)g(can)f(b)q(e)g(set)g(to)f(either)i(`)p
+Fn(on)p Fo(')e(or)g(`)p Fn(off)p Fo('.)27 b(Setting)19
+b(it)f(to)f(`)p Fn(on)p Fo(')555 458 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
+512 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 567 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 622 y(v)m(ariable)j(is)e(set)g(to)g(`)p
+Fn(off)p Fo('.)315 711 y Fn(input-meta)555 766 y Fo(If)h(set)f(to)g(`)p
+Fn(on)p Fo(',)f(Readline)j(will)h(enable)e(eigh)o(t-bit)h(input)f(\(it)
+g(will)h(not)e(clear)555 821 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
+875 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 Fn(off)p Fo('.)33 b(The)555
+930 y(name)15 b Fn(meta-flag)f Fo(is)i(a)f(synon)o(ym)g(for)f(this)i(v)
+m(ariable.)315 1019 y Fn(isearch-terminators)555 1074
+y Fo(The)26 b(string)g(of)f(c)o(haracters)g(that)g(should)i(terminate)f
+(an)g(incremen)o(tal)555 1129 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
+1184 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 1238 y(b)q(een)17
+b(giv)o(en)f(a)g(v)m(alue,)g(the)g(c)o(haracters)1247
+1236 y Ff(h)p 1259 1210 70 2 v 1259 1238 a Fe(ESC)p 1259
+1246 V 1326 1236 a Ff(i)1357 1238 y Fo(and)g Fg(C-J)f
+Fo(will)i(terminate)f(an)555 1293 y(incremen)o(tal)g(searc)o(h.)315
+1382 y Fn(keymap)96 b Fo(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
+1437 y(mands.)41 b(Acceptable)23 b Fn(keymap)f Fo(names)g(are)f
+Fn(emacs)p Fo(,)i Fn(emacs-standard)p Fo(,)555 1492 y
+Fn(emacs-meta)p Fo(,)49 b Fn(emacs-ctlx)p Fo(,)g Fn(vi)p
+Fo(,)h Fn(vi-move)p Fo(,)f Fn(vi-command)p Fo(,)g(and)555
+1547 y Fn(vi-insert)p Fo(.)31 b Fn(vi)20 b Fo(is)g(equiv)m(alen)o(t)h
+(to)e Fn(vi-command)p Fo(;)g Fn(emacs)g Fo(is)h(equiv)m(alen)o(t)555
+1601 y(to)15 b Fn(emacs-standard)p Fo(.)20 b(The)d(default)f(v)m(alue)h
+(is)g Fn(emacs)p Fo(.)k(The)16 b(v)m(alue)h(of)f(the)555
+1656 y Fn(editing-mode)e Fo(v)m(ariable)i(also)f(a\013ects)g(the)g
+(default)h(k)o(eymap.)315 1745 y Fn(mark-directories)555
+1800 y Fo(If)j(set)g(to)g(`)p Fn(on)p Fo(',)f(completed)i(directory)g
+(names)f(ha)o(v)o(e)f(a)h(slash)h(app)q(ended.)555 1855
+y(The)15 b(default)h(is)g(`)p Fn(on)p Fo('.)315 1944
+y Fn(mark-modified-lines)555 1999 y Fo(This)j(v)m(ariable,)g(when)g
+(set)e(to)h(`)p Fn(on)p Fo(',)f(causes)h(Readline)h(to)e(displa)o(y)i
+(an)f(as-)555 2054 y(terisk)f(\(`)p Fn(*)p Fo('\))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 2108 y(This)e(v)m(ariable)g(is)g(`)p Fn(off)p
+Fo(')e(b)o(y)h(default.)315 2197 y Fn(mark-symlinked-directories)555
+2252 y Fo(If)23 b(set)f(to)f(`)p Fn(on)p Fo(',)i(completed)g(names)g
+(whic)o(h)g(are)f(sym)o(b)q(olic)i(links)f(to)f(di-)555
+2307 y(rectories)h(ha)o(v)o(e)g(a)g(slash)g(app)q(ended)i(\(sub)s(ject)
+e(to)f(the)i(v)m(alue)g(of)f Fn(mark-)555 2362 y(directories)p
+Fo(\).)18 b(The)d(default)h(is)g(`)p Fn(off)p Fo('.)315
+2451 y Fn(match-hidden-files)555 2506 y Fo(This)c(v)m(ariable,)h(when)e
+(set)g(to)g(`)p Fn(on)p Fo(',)f(causes)h(Readline)i(to)d(matc)o(h)h
+(\014les)h(whose)555 2560 y(names)22 b(b)q(egin)h(with)g(a)e(`)p
+Fn(.)p Fo(')h(\(hidden)h(\014les\))g(when)f(p)q(erforming)h(\014lename)
+555 2615 y(completion,)g(unless)f(the)f(leading)h(`)p
+Fn(.)p Fo(')e(is)h(supplied)i(b)o(y)e(the)f(user)h(in)h(the)555
+2670 y(\014lename)16 b(to)f(b)q(e)h(completed.)21 b(This)15
+b(v)m(ariable)i(is)f(`)p Fn(on)p Fo(')e(b)o(y)h(default.)p
+eop
+%%Page: 7 11
+7 10 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(7)315 149 y Fn(output-meta)555 204 y Fo(If)18 b(set)f(to)g(`)p
+Fn(on)p Fo(',)g(Readline)i(will)h(displa)o(y)f(c)o(haracters)d(with)j
+(the)e(eigh)o(th)h(bit)555 259 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
+314 y(default)16 b(is)f(`)p Fn(off)p Fo('.)315 394 y
+Fn(page-completions)555 449 y Fo(If)i(set)g(to)f(`)p
+Fn(on)p Fo(',)g(Readline)i(uses)g(an)e(in)o(ternal)i
+Fn(more)p Fo(-lik)o(e)g(pager)f(to)f(displa)o(y)555 504
+y(a)g(screenful)h(of)f(p)q(ossible)i(completions)f(at)f(a)g(time.)23
+b(This)17 b(v)m(ariable)g(is)g(`)p Fn(on)p Fo(')555 559
+y(b)o(y)e(default.)315 639 y Fn(print-completions-horizont)o(ally)555
+694 y Fo(If)d(set)g(to)f(`)p Fn(on)p Fo(',)h(Readline)h(will)g(displa)o
+(y)h(completions)f(with)f(matc)o(hes)f(sorted)555 749
+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 804 y(The)15 b(default)h(is)g(`)p
+Fn(off)p Fo('.)315 884 y Fn(show-all-if-ambiguous)555
+939 y Fo(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 994 y(to)e(`)p
+Fn(on)p Fo(',)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 1049 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 1104 y(The)c(default)h(v)m(alue)h(is)e(`)p
+Fn(off)p Fo('.)315 1184 y Fn(show-all-if-unmodified)555
+1239 y Fo(This)20 b(alters)f(the)h(default)f(b)q(eha)o(vior)h(of)f(the)
+h(completion)g(functions)g(in)g(a)555 1294 y(fashion)13
+b(similar)h(to)e Fd(sho)o(w-all-if-am)o(biguous)p Fo(.)21
+b(If)13 b(set)f(to)g(`)p Fn(on)p Fo(',)g(w)o(ords)g(whic)o(h)555
+1348 y(ha)o(v)o(e)j(more)g(than)g(one)h(p)q(ossible)h(completion)f
+(without)g(an)o(y)f(p)q(ossible)i(par-)555 1403 y(tial)22
+b(completion)g(\(the)f(p)q(ossible)i(completions)f(don't)f(share)g(a)f
+(common)555 1458 y(pre\014x\))15 b(cause)h(the)f(matc)o(hes)g(to)f(b)q
+(e)i(listed)g(immediately)h(instead)f(of)e(ring-)555
+1513 y(ing)i(the)f(b)q(ell.)22 b(The)15 b(default)h(v)m(alue)g(is)g(`)p
+Fn(off)p Fo('.)315 1593 y Fn(visible-stats)555 1648 y
+Fo(If)g(set)g(to)f(`)p Fn(on)p Fo(',)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
+1703 y(\014lename)h(when)g(listing)h(p)q(ossible)g(completions.)j(The)c
+(default)g(is)f(`)p Fn(off)p Fo('.)75 1784 y(Key)h(Bindings)315
+1838 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 1893 y(need)15 b(to)e(\014nd)h(the)g(name)g(of)g(the)f
+(command)h(that)f(y)o(ou)h(w)o(an)o(t)f(to)g(c)o(hange.)19
+b(The)14 b(follo)o(wing)315 1948 y(sections)k(con)o(tain)h(tables)f(of)
+f(the)h(command)g(name,)g(the)g(default)h(k)o(eybinding,)h(if)e(an)o(y)
+l(,)315 2003 y(and)d(a)g(short)g(description)i(of)d(what)h(the)g
+(command)g(do)q(es.)315 2070 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 2125 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
+2180 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
+2235 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 2303 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 2357 y(that)c(is)i(inserted)g(when)g(the)f(k)o(ey)g(is)h
+(pressed)g(\(a)e Fd(macro)r Fo(\).)315 2438 y Fd(k)o(eyname)s
+Fo(:)19 b Fd(function-name)g Fo(or)c Fd(macro)555 2493
+y(k)o(eyname)i Fo(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 2560 y
+Fn(Control-u:)22 b(universal-argument)675 2615 y(Meta-Rubout:)g
+(backward-kill-word)675 2670 y(Control-o:)g(">)i(output")p
+eop
+%%Page: 8 12
+8 11 bop 75 -58 a Fo(8)1322 b(GNU)15 b(Readline)h(Library)555
+149 y(In)k(the)f(ab)q(o)o(v)o(e)g(example,)i Fg(C-u)e
+Fo(is)h(b)q(ound)g(to)f(the)g(function)h Fn(universal-)555
+204 y(argument)p Fo(,)e Fg(M-DEL)h Fo(is)g(b)q(ound)h(to)e(the)h
+(function)h Fn(backward-kill-word)p Fo(,)555 259 y(and)g
+Fg(C-o)f Fo(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 314 y(side)c(\(that)e(is,)i(to)e(insert)i
+(the)f(text)g(`)p Fn(>)f(output)p Fo(')g(in)o(to)i(the)f(line\).)555
+382 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 437 y(cessing)13
+b(this)f(k)o(ey)g(binding)h(syn)o(tax:)18 b Fd(DEL)p
+Fo(,)11 b Fd(ESC)p Fo(,)h Fd(ESCAPE)p Fo(,)f Fd(LFD)p
+Fo(,)g Fd(NEW-)555 492 y(LINE)p Fo(,)16 b Fd(RET)p Fo(,)e
+Fd(RETURN)p Fo(,)f Fd(R)o(UBOUT)p Fo(,)i Fd(SP)l(A)o(CE)p
+Fo(,)g Fd(SPC)p Fo(,)f(and)i Fd(T)l(AB)p Fo(.)315 573
+y Fn(")p Fd(k)o(eyseq)q Fn(")p Fo(:)k Fd(function-name)e
+Fo(or)d Fd(macro)555 628 y(k)o(eyseq)i Fo(di\013ers)e(from)g
+Fd(k)o(eyname)j Fo(ab)q(o)o(v)o(e)d(in)i(that)d(strings)i(denoting)g
+(an)f(en-)555 683 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
+737 y(double)e(quotes.)j(Some)c Fh(gnu)g Fo(Emacs)f(st)o(yle)h(k)o(ey)g
+(escap)q(es)g(can)g(b)q(e)g(used,)g(as)555 792 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 847 y(recognized.)675 915 y Fn("\\C-u":)23
+b(universal-argument)675 970 y("\\C-x\\C-r":)f(re-read-init-file)675
+1025 y("\\e[11~":)h("Function)f(Key)i(1")555 1093 y Fo(In)33
+b(the)f(ab)q(o)o(v)o(e)g(example,)37 b Fg(C-u)32 b Fo(is)h(again)f(b)q
+(ound)h(to)f(the)g(function)555 1148 y Fn(universal-argument)19
+b Fo(\(just)j(as)f(it)h(w)o(as)f(in)i(the)f(\014rst)f(example\),)j(`)p
+Fg(C-x)555 1202 y(C-r)p Fo(')c(is)h(b)q(ound)g(to)f(the)h(function)g
+Fn(re-read-init-file)p Fo(,)f(and)g(`)1731 1200 y Ff(h)p
+1743 1174 70 2 v 1743 1202 a Fe(ESC)p 1743 1210 V 1810
+1200 a Ff(i)15 b(h)p 1852 1174 10 2 v 1852 1202 a Fe([)p
+1852 1211 V 1860 1200 a Ff(i)555 1255 y(h)p 567 1229
+18 2 v 567 1257 a Fe(1)p 567 1265 V 583 1255 a Ff(i)g(h)p
+625 1229 V 625 1257 a Fe(1)p 625 1265 V 640 1255 a Ff(i)g(h)p
+683 1229 24 2 v 683 1257 a Fn(~)p 683 1265 V 704 1255
+a Ff(i)719 1257 y Fo(')g(is)h(b)q(ound)g(to)e(insert)i(the)f(text)g(`)p
+Fn(Function)f(Key)g(1)p Fo('.)315 1339 y(The)h(follo)o(wing)h
+Fh(gnu)e Fo(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 1393 y(k)o(ey)g(sequences:)315
+1475 y Fg(\\C-)168 b Fo(con)o(trol)15 b(pre\014x)315
+1556 y Fg(\\M-)168 b Fo(meta)15 b(pre\014x)315 1638 y
+Fg(\\e)192 b Fo(an)15 b(escap)q(e)h(c)o(haracter)315
+1719 y Fg(\\\\)192 b Fo(bac)o(kslash)315 1801 y Fg(\\)p
+Fn(")555 1799 y Ff(h)p 567 1773 V 567 1801 a Fn(")p 567
+1808 V 589 1799 a Ff(i)604 1801 y Fo(,)15 b(a)f(double)j(quotation)e
+(mark)315 1882 y Fg(\\')555 1880 y Ff(h)p 567 1854 10
+2 v 567 1882 a Fe(')p 567 1890 V 575 1880 a Ff(i)590
+1882 y Fo(,)g(a)f(single)j(quote)e(or)g(ap)q(ostrophe)315
+1964 y(In)f(addition)h(to)f(the)f Fh(gnu)h Fo(Emacs)g(st)o(yle)f(escap)
+q(e)i(sequences,)g(a)e(second)i(set)e(of)h(bac)o(kslash)315
+2018 y(escap)q(es)i(is)g(a)o(v)m(ailable:)315 2100 y
+Fn(\\a)192 b Fo(alert)15 b(\(b)q(ell\))315 2181 y Fn(\\b)192
+b Fo(bac)o(kspace)315 2263 y Fn(\\d)g Fo(delete)315 2344
+y Fn(\\f)g Fo(form)14 b(feed)315 2426 y Fn(\\n)192 b
+Fo(newline)315 2507 y Fn(\\r)g Fo(carriage)15 b(return)315
+2589 y Fn(\\t)192 b Fo(horizon)o(tal)16 b(tab)315 2670
+y Fn(\\v)192 b Fo(v)o(ertical)16 b(tab)p eop
+%%Page: 9 13
+9 12 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1077
+b(9)315 149 y Fn(\\)p Fg(nnn)144 b Fo(the)17 b(eigh)o(t-bit)h(c)o
+(haracter)f(whose)g(v)m(alue)i(is)e(the)h(o)q(ctal)f(v)m(alue)i
+Fd(nnn)f Fo(\(one)f(to)555 204 y(three)e(digits\))315
+282 y Fn(\\x)p Fg(HH)144 b Fo(the)20 b(eigh)o(t-bit)g(c)o(haracter)f
+(whose)h(v)m(alue)h(is)f(the)g(hexadecimal)h(v)m(alue)g
+Fd(HH)555 337 y Fo(\(one)15 b(or)g(t)o(w)o(o)f(hex)h(digits\))315
+415 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 470
+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 524 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 579 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 Fn(")p Fo(')c(and)h(`)p
+Fn(')p Fo('.)34 b(F)l(or)315 634 y(example,)14 b(the)f(follo)o(wing)g
+(binding)i(will)g(mak)o(e)d(`)p Fg(C-x)i Fn(\\)p Fo(')f(insert)g(a)g
+(single)h(`)p Fn(\\)p Fo(')e(in)o(to)h(the)g(line:)435
+700 y Fn("\\C-x\\\\":)23 b("\\\\")75 810 y Fc(1.3.2)30
+b(Conditional)20 b(Init)g(Constructs)137 931 y Fo(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 986 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 1040 y(the)e(result)h(of)
+f(tests.)k(There)c(are)g(four)g(parser)g(directiv)o(es)h(used.)75
+1118 y Fn($if)168 b Fo(The)16 b Fn($if)f Fo(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 1173 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
+1228 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
+1306 y Fn(mode)144 b Fo(The)11 b Fn(mode=)e Fo(form)h(of)g(the)h
+Fn($if)f Fo(directiv)o(e)h(is)g(used)g(to)f(test)g(whether)h(Readline)
+555 1361 y(is)k(in)h Fn(emacs)e Fo(or)g Fn(vi)g Fo(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
+1415 y(`)p Fn(set)f(keymap)p Fo(')f(command,)g(for)h(instance,)g(to)f
+(set)h(bindings)h(in)g(the)f Fn(emacs-)555 1470 y(standard)d
+Fo(and)i Fn(emacs-ctlx)e Fo(k)o(eymaps)h(only)i(if)f(Readline)g(is)g
+(starting)f(out)555 1525 y(in)k Fn(emacs)f Fo(mo)q(de.)315
+1603 y Fn(term)144 b Fo(The)14 b Fn(term=)e Fo(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
+1658 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 1712 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 Fn(=)p Fo(')f(is)h(tested)g(against)555 1767
+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 1822 y(name)i(b)q(efore)g(the)g
+(\014rst)f(`)p Fn(-)p Fo('.)24 b(This)17 b(allo)o(ws)g
+Fn(sun)f Fo(to)g(matc)o(h)h(b)q(oth)f Fn(sun)h Fo(and)555
+1877 y Fn(sun-cmd)p Fo(,)d(for)g(instance.)315 1955 y
+Fn(application)555 2010 y Fo(The)d Fd(application)i Fo(construct)e(is)g
+(used)h(to)e(include)j(application-sp)q(eci)q(\014c)h(set-)555
+2064 y(tings.)19 b(Eac)o(h)12 b(program)f(using)j(the)e(Readline)i
+(library)f(sets)f(the)g Fd(application)555 2119 y(name)p
+Fo(,)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 2174 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 2229 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 2283 y(the)f(curren)o(t)g(or)g(previous)h(w)o(ord)e(in)j
+(Bash:)675 2350 y Fn($if)23 b(Bash)675 2405 y(#)h(Quote)f(the)g
+(current)g(or)h(previous)f(word)675 2459 y("\\C-xq":)g
+("\\eb\\"\\ef\\"")675 2514 y($endif)75 2592 y($endif)96
+b Fo(This)16 b(command,)e(as)h(seen)h(in)g(the)f(previous)h(example,)g
+(terminates)f(an)g Fn($if)f Fo(command.)75 2670 y Fn($else)120
+b Fo(Commands)15 b(in)h(this)f(branc)o(h)h(of)e(the)i
+Fn($if)e Fo(directiv)o(e)j(are)e(executed)h(if)g(the)f(test)g(fails.)p
+eop
+%%Page: 10 14
+10 13 bop 75 -58 a Fo(10)1299 b(GNU)15 b(Readline)h(Library)75
+149 y Fn($include)48 b Fo(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 204 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
+259 y(`)p Fn(/etc/inputrc)p Fo(':)435 326 y Fn($include)k(/etc/inputrc)
+75 438 y Fc(1.3.3)30 b(Sample)20 b(Init)h(File)137 560
+y Fo(Here)16 b(is)g(an)f(example)h(of)f(an)g Fd(inputrc)k
+Fo(\014le.)i(This)16 b(illustrates)g(k)o(ey)f(binding,)i(v)m(ariable)f
+(assignmen)o(t,)75 615 y(and)f(conditional)i(syn)o(tax.)p
+eop
+%%Page: 11 15
+11 14 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(11)195 204 y Fn(#)24 b(This)f(file)g(controls)g(the)h(behaviour)e(of)
+i(line)f(input)g(editing)g(for)195 259 y(#)h(programs)e(that)i(use)f
+(the)h(GNU)f(Readline)g(library.)47 b(Existing)195 314
+y(#)24 b(programs)e(include)h(FTP,)h(Bash,)f(and)g(GDB.)195
+369 y(#)195 423 y(#)h(You)f(can)h(re-read)f(the)g(inputrc)g(file)g
+(with)h(C-x)f(C-r.)195 478 y(#)h(Lines)f(beginning)g(with)g('#')g(are)h
+(comments.)195 533 y(#)195 588 y(#)g(First,)f(include)g(any)g
+(systemwide)g(bindings)f(and)i(variable)195 643 y(#)g(assignments)e
+(from)h(/etc/Inputrc)195 697 y($include)g(/etc/Inputrc)195
+807 y(#)195 862 y(#)h(Set)f(various)g(bindings)g(for)g(emacs)g(mode.)
+195 971 y(set)g(editing-mode)g(emacs)195 1081 y($if)g(mode=emacs)195
+1191 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 1201 21 38 v
+195 1300 a(#)195 1355 y(#)g(Arrow)f(keys)g(in)h(keypad)f(mode)195
+1410 y(#)195 1465 y(#"\\M-OD":)190 b(backward-char)195
+1519 y(#"\\M-OC":)g(forward-char)195 1574 y(#"\\M-OA":)g
+(previous-history)195 1629 y(#"\\M-OB":)g(next-history)195
+1684 y(#)195 1738 y(#)24 b(Arrow)f(keys)g(in)h(ANSI)f(mode)195
+1793 y(#)195 1848 y("\\M-[D":)190 b(backward-char)195
+1903 y("\\M-[C":)g(forward-char)195 1958 y("\\M-[A":)g
+(previous-history)195 2012 y("\\M-[B":)g(next-history)195
+2067 y(#)195 2122 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(keypad)g(mode)
+195 2177 y(#)195 2232 y(#"\\M-\\C-OD":)165 b(backward-char)195
+2286 y(#"\\M-\\C-OC":)g(forward-char)195 2341 y(#"\\M-\\C-OA":)g
+(previous-history)195 2396 y(#"\\M-\\C-OB":)g(next-history)195
+2451 y(#)195 2506 y(#)24 b(Arrow)f(keys)g(in)h(8)g(bit)f(ANSI)g(mode)
+195 2560 y(#)195 2615 y(#"\\M-\\C-[D":)165 b(backward-char)195
+2670 y(#"\\M-\\C-[C":)g(forward-char)p eop
+%%Page: 12 16
+12 15 bop 75 -58 a Fo(12)1299 b(GNU)15 b(Readline)h(Library)195
+149 y Fn(#"\\M-\\C-[A":)165 b(previous-history)195 204
+y(#"\\M-\\C-[B":)g(next-history)195 314 y(C-q:)23 b(quoted-insert)195
+423 y($endif)195 533 y(#)h(An)f(old-style)g(binding.)47
+b(This)23 b(happens)g(to)g(be)h(the)f(default.)195 588
+y(TAB:)g(complete)195 697 y(#)h(Macros)f(that)g(are)h(convenient)e(for)
+h(shell)h(interaction)195 752 y($if)f(Bash)195 807 y(#)h(edit)f(the)g
+(path)195 862 y("\\C-xp":)g("PATH=${PATH}\\e\\C-e\\C-a\\)o(ef\\C-f")195
+917 y(#)h(prepare)f(to)g(type)h(a)f(quoted)g(word)h(--)195
+971 y(#)g(insert)f(open)g(and)h(close)f(double)g(quotes)195
+1026 y(#)h(and)f(move)g(to)h(just)f(after)h(the)f(open)g(quote)195
+1081 y("\\C-x\\"":)g("\\"\\"\\C-b")195 1136 y(#)h(insert)f(a)g
+(backslash)g(\(testing)g(backslash)g(escapes)195 1191
+y(#)h(in)f(sequences)g(and)g(macros\))195 1245 y("\\C-x\\\\":)g("\\\\")
+195 1300 y(#)h(Quote)f(the)g(current)g(or)h(previous)f(word)195
+1355 y("\\C-xq":)g("\\eb\\"\\ef\\"")195 1410 y(#)h(Add)f(a)h(binding)f
+(to)g(refresh)g(the)h(line,)f(which)g(is)h(unbound)195
+1465 y("\\C-xr":)f(redraw-current-line)195 1519 y(#)h(Edit)f(variable)g
+(on)g(current)g(line.)195 1574 y("\\M-\\C-v":)f
+("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-a\\C-y=)o(")195 1629 y($endif)195
+1738 y(#)i(use)f(a)h(visible)f(bell)g(if)h(one)f(is)h(available)195
+1793 y(set)f(bell-style)g(visible)195 1903 y(#)h(don't)f(strip)g
+(characters)g(to)g(7)h(bits)f(when)h(reading)195 1958
+y(set)f(input-meta)g(on)195 2067 y(#)h(allow)f(iso-latin1)f(characters)
+h(to)g(be)h(inserted)f(rather)195 2122 y(#)h(than)f(converted)g(to)g
+(prefix-meta)g(sequences)195 2177 y(set)g(convert-meta)g(off)195
+2286 y(#)h(display)f(characters)f(with)h(the)h(eighth)f(bit)g(set)h
+(directly)195 2341 y(#)g(rather)f(than)g(as)h(meta-prefixed)e
+(characters)195 2396 y(set)h(output-meta)g(on)195 2506
+y(#)h(if)f(there)g(are)h(more)f(than)h(150)f(possible)g(completions)f
+(for)195 2560 y(#)i(a)f(word,)h(ask)f(the)h(user)f(if)g(he)h(wants)f
+(to)h(see)f(all)h(of)f(them)195 2615 y(set)g(completion-query-items)e
+(150)p eop
+%%Page: 13 17
+13 16 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(13)195 149 y Fn(#)24 b(For)f(FTP)195 204 y($if)g(Ftp)195
+259 y("\\C-xg":)g("get)g(\\M-?")195 314 y("\\C-xt":)g("put)g(\\M-?")195
+369 y("\\M-.":)g(yank-last-arg)195 423 y($endif)75 549
+y Fm(1.4)33 b(Bindable)24 b(Readline)f(Commands)137 670
+y Fo(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 725 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
+791 y(In)f(the)f(follo)o(wing)h(descriptions,)h Fd(p)q(oin)o(t)f
+Fo(refers)f(to)g(the)g(curren)o(t)g(cursor)f(p)q(osition,)j(and)e
+Fd(mark)i Fo(refers)75 846 y(to)k(a)g(cursor)g(p)q(osition)h(sa)o(v)o
+(ed)f(b)o(y)h(the)f Fn(set-mark)g Fo(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
+900 y(mark)15 b(is)g(referred)h(to)e(as)h(the)g Fd(region)p
+Fo(.)75 1009 y Fc(1.4.1)30 b(Commands)21 b(F)-5 b(or)19
+b(Mo)n(ving)75 1130 y Fn(beginning-of-line)13 b(\(C-a\))315
+1185 y Fo(Mo)o(v)o(e)h(to)h(the)g(start)f(of)h(the)g(curren)o(t)g
+(line.)75 1263 y Fn(end-of-line)f(\(C-e\))315 1317 y
+Fo(Mo)o(v)o(e)g(to)h(the)g(end)h(of)f(the)g(line.)75
+1395 y Fn(forward-char)f(\(C-f\))315 1450 y Fo(Mo)o(v)o(e)g(forw)o(ard)
+g(a)h(c)o(haracter.)75 1527 y Fn(backward-char)e(\(C-b\))315
+1582 y Fo(Mo)o(v)o(e)h(bac)o(k)h(a)g(c)o(haracter.)75
+1660 y Fn(forward-word)f(\(M-f\))315 1714 y Fo(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 1769 y(digits.)75 1847
+y Fn(backward-word)e(\(M-b\))315 1902 y Fo(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 1956 y(of)e(letters)g(and)g
+(digits.)75 2034 y Fn(clear-screen)f(\(C-l\))315 2089
+y Fo(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
+2143 y(of)i(the)g(screen.)75 2221 y Fn(redraw-current-line)e(\(\))315
+2276 y Fo(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 2385 y Fc(1.4.2)30
+b(Commands)21 b(F)-5 b(or)19 b(Manipulating)i(The)f(History)75
+2506 y Fn(accept-line)14 b(\(Newline)g(or)h(Return\))315
+2560 y Fo(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
+2615 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 Fn(add_history\(\))p Fo(.)k(If)d(this)315
+2670 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.)p
+eop
+%%Page: 14 18
+14 17 bop 75 -58 a Fo(14)1299 b(GNU)15 b(Readline)h(Library)75
+149 y Fn(previous-history)d(\(C-p\))315 204 y Fo(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 293 y Fn(next-history)e(\(C-n\))315 348
+y Fo(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.)75 437 y Fn(beginning-of-history)c
+(\(M-<\))315 492 y Fo(Mo)o(v)o(e)i(to)h(the)g(\014rst)g(line)i(in)f
+(the)f(history)l(.)75 580 y Fn(end-of-history)e(\(M->\))315
+635 y Fo(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
+724 y Fn(reverse-search-history)c(\(C-r\))315 779 y Fo(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 834 y(tory)e(as)h(necessary)l(.)20
+b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 923
+y Fn(forward-search-history)c(\(C-s\))315 977 y Fo(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 1032 y(history)g(as)g(necessary)l(.)20
+b(This)c(is)g(an)f(incremen)o(tal)h(searc)o(h.)75 1121
+y Fn(non-incremental-reverse-se)o(arch-hi)o(story)c(\(M-p\))315
+1176 y Fo(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
+1231 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 1285
+y(user.)75 1374 y Fn(non-incremental-forward-se)o(arch-hi)o(story)12
+b(\(M-n\))315 1429 y Fo(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 1484 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
+1539 y(user.)75 1627 y Fn(history-search-forward)f(\(\))315
+1682 y Fo(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
+1737 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 1792 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
+1881 y Fn(history-search-backward)c(\(\))315 1935 y Fo(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 1990 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
+2045 y(default,)15 b(this)h(command)f(is)h(un)o(b)q(ound.)75
+2134 y Fn(yank-nth-arg)e(\(M-C-y\))315 2189 y Fo(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 2244 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 Fd(n)p
+Fo(,)h(insert)g(the)g Fd(n)p Fo(th)g(w)o(ord)g(from)f(the)315
+2298 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
+2353 y(negativ)o(e)13 b(argumen)o(t)f(inserts)h(the)g
+Fd(n)p Fo(th)g(w)o(ord)f(from)g(the)h(end)h(of)e(the)h(previous)g
+(command.)75 2442 y Fn(yank-last-arg)g(\(M-.)i(or)g(M-_\))315
+2497 y Fo(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 2552
+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 Fn(yank-nth-arg)p Fo(.)j(Succes-)315
+2606 y(siv)o(e)f(calls)g(to)f Fn(yank-last-arg)e Fo(mo)o(v)o(e)i(bac)o
+(k)g(through)g(the)g(history)g(list,)i(inserting)f(the)315
+2661 y(last)d(argumen)o(t)g(of)f(eac)o(h)i(line)g(in)g(turn.)p
+eop
+%%Page: 15 19
+15 18 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(15)75 149 y Fc(1.4.3)30 b(Commands)21 b(F)-5 b(or)19
+b(Changing)i(T)-5 b(ext)75 273 y Fn(delete-char)14 b(\(C-d\))315
+328 y Fo(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 383 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 438 y Fn(delete-char)p Fo(,)13 b(then)j(return)f
+Fh(eof)p Fo(.)75 521 y Fn(backward-delete-char)d(\(Rubout\))315
+576 y Fo(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
+631 y(c)o(haracters)d(instead)i(of)f(deleting)i(them.)75
+714 y Fn(forward-backward-delete-ch)o(ar)12 b(\(\))315
+769 y Fo(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
+824 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
+878 y(is)f(not)f(b)q(ound)h(to)e(a)h(k)o(ey)l(.)75 962
+y Fn(quoted-insert)e(\(C-q)i(or)g(C-v\))315 1017 y Fo(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 1071
+y(sequences)f(lik)o(e)h Fg(C-q)p Fo(,)d(for)h(example.)75
+1155 y Fn(tab-insert)f(\(M-)401 1153 y Ff(h)p 412 1127
+74 2 v 412 1155 a Fe(T)m(AB)p 412 1162 V 484 1153 a Ff(i)499
+1155 y Fn(\))315 1210 y Fo(Insert)h(a)g(tab)g(c)o(haracter.)75
+1293 y Fn(self-insert)f(\(a,)g(b,)h(A,)g(1,)g(!,)g(...)o(\))315
+1348 y Fo(Insert)g(y)o(ourself.)75 1431 y Fn(transpose-chars)e(\(C-t\))
+315 1486 y Fo(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
+1541 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 1596 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 1650 y(ha)o(v)o(e)k(no)g(e\013ect.)75
+1734 y Fn(transpose-words)e(\(M-t\))315 1789 y Fo(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 1843
+y(w)o(ord)d(as)h(w)o(ell.)21 b(If)14 b(the)g(insertion)i(p)q(oin)o(t)e
+(is)h(at)f(the)g(end)h(of)e(the)i(line,)g(this)g(transp)q(oses)f(the)
+315 1898 y(last)h(t)o(w)o(o)f(w)o(ords)g(on)i(the)f(line.)75
+1981 y Fn(upcase-word)f(\(M-u\))315 2036 y Fo(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 2091
+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 2174 y Fn(downcase-word)d(\(M-l\))315 2229
+y Fo(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 2284 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 2367 y Fn(capitalize-word)e(\(M-c\))315
+2422 y Fo(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
+2477 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 2560 y Fn(overwrite-mode)e(\(\))315
+2615 y Fo(T)l(oggle)j(o)o(v)o(erwrite)g(mo)q(de.)24 b(With)17
+b(an)f(explicit)j(p)q(ositiv)o(e)f(n)o(umeric)f(argumen)o(t,)f(switc)o
+(hes)315 2670 y(to)10 b(o)o(v)o(erwrite)g(mo)q(de.)19
+b(With)11 b(an)g(explicit)i(non-p)q(ositiv)o(e)f(n)o(umeric)g(argumen)o
+(t,)e(switc)o(hes)i(to)p eop
+%%Page: 16 20
+16 19 bop 75 -58 a Fo(16)1299 b(GNU)15 b(Readline)h(Library)315
+149 y(insert)g(mo)q(de.)k(This)c(command)f(a\013ects)g(only)h
+Fn(emacs)e Fo(mo)q(de;)h Fn(vi)g Fo(mo)q(de)h(do)q(es)g(o)o(v)o
+(erwrite)315 204 y(di\013eren)o(tly)l(.)21 b(Eac)o(h)15
+b(call)h(to)f Fn(readline\(\))f Fo(starts)f(in)k(insert)e(mo)q(de.)315
+271 y(In)g(o)o(v)o(erwrite)f(mo)q(de,)h(c)o(haracters)f(b)q(ound)h(to)f
+Fn(self-insert)f Fo(replace)j(the)e(text)h(at)e(p)q(oin)o(t)315
+326 y(rather)20 b(than)h(pushing)h(the)f(text)f(to)g(the)h(righ)o(t.)36
+b(Characters)20 b(b)q(ound)i(to)e Fn(backward-)315 381
+y(delete-char)14 b Fo(replace)i(the)f(c)o(haracter)g(b)q(efore)g(p)q
+(oin)o(t)h(with)f(a)g(space.)315 448 y(By)g(default,)h(this)f(command)g
+(is)h(un)o(b)q(ound.)75 559 y Fc(1.4.4)30 b(Killing)20
+b(And)h(Y)-5 b(anking)75 680 y Fn(kill-line)14 b(\(C-k\))315
+735 y Fo(Kill)j(the)f(text)e(from)h(p)q(oin)o(t)h(to)e(the)h(end)h(of)f
+(the)g(line.)75 814 y Fn(backward-kill-line)e(\(C-x)h(Rubout\))315
+869 y Fo(Kill)j(bac)o(kw)o(ard)e(to)f(the)i(b)q(eginning)h(of)e(the)g
+(line.)75 948 y Fn(unix-line-discard)e(\(C-u\))315 1003
+y Fo(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 1082 y Fn(kill-whole-line)
+e(\(\))315 1137 y Fo(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 1192 y(this)d(is)f(un)o(b)q(ound.)75
+1271 y Fn(kill-word)f(\(M-d\))315 1325 y Fo(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 1380 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
+Fn(forward-word)p Fo(.)75 1459 y Fn(backward-kill-word)e(\(M-)592
+1457 y Ff(h)p 603 1431 73 2 v 603 1459 a Fe(DEL)p 603
+1467 V 674 1457 a Ff(i)689 1459 y Fn(\))315 1514 y Fo(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 Fn(backward-word)p Fo(.)75 1593 y
+Fn(unix-word-rubout)f(\(C-w\))315 1648 y Fo(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 1703 y(text)f(is)g(sa)o(v)o
+(ed)g(on)g(the)h(kill-ring.)75 1782 y Fn(delete-horizontal-space)c
+(\(\))315 1836 y Fo(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
+1915 y Fn(kill-region)e(\(\))315 1970 y Fo(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 2049 y Fn(copy-region-as-kill)d(\(\))315
+2104 y Fo(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 2159 y(By)e(default,)h(this)f(command)g(is)h(un)o(b)q
+(ound.)75 2238 y Fn(copy-backward-word)d(\(\))315 2293
+y Fo(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
+2348 y(same)c(as)g Fn(backward-word)p Fo(.)j(By)d(default,)g(this)h
+(command)f(is)h(un)o(b)q(ound.)75 2427 y Fn(copy-forward-word)d(\(\))
+315 2481 y Fo(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 2536 y(same)g(as)g Fn(forward-word)p Fo(.)j(By)d(default,)h
+(this)f(command)g(is)h(un)o(b)q(ound.)75 2615 y Fn(yank)f(\(C-y\))315
+2670 y Fo(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.)p eop
+%%Page: 17 21
+17 20 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(17)75 149 y Fn(yank-pop)14 b(\(M-y\))315 204 y Fo(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 259 y(command)d(is)h
+Fn(yank)e Fo(or)h Fn(yank-pop)p Fo(.)75 382 y Fc(1.4.5)30
+b(Sp)r(ecifying)20 b(Numeric)h(Argumen)n(ts)75 507 y
+Fn(digit-argument)13 b(\()p Fg(M-0)p Fn(,)i Fg(M-1)p
+Fn(,)f(...)h Fg(M--)p Fn(\))315 562 y Fo(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 616 y Fg(M--)h Fo(starts)f(a)h(negativ)o(e)g(argumen)
+o(t.)75 702 y Fn(universal-argument)e(\(\))315 756 y
+Fo(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
+811 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 866
+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 Fn(universal-argument)315 921
+y Fo(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
+976 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
+1030 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
+1085 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
+1140 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
+1195 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 1318 y Fc(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 1443 y Fn(complete)14 b(\()305 1441 y Ff(h)p
+317 1414 74 2 v 317 1443 a Fe(T)m(AB)p 317 1450 V 389
+1441 a Ff(i)404 1443 y Fn(\))315 1497 y Fo(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 1552 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 1637 y Fn(possible-completions)c(\(M-?\))315
+1692 y Fo(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 1777 y Fn(insert-completions)d(\(M-*\))315
+1832 y Fo(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
+1887 y(b)o(y)f Fn(possible-completions)p Fo(.)75 1972
+y Fn(menu-complete)e(\(\))315 2027 y Fo(Similar)g(to)f
+Fn(complete)p Fo(,)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 2082 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 Fn(menu-complete)315 2136 y Fo(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 2191 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 2246 y(of)f Fn(bell-style)p Fo(\))e(and)i(the)g
+(original)h(text)f(is)g(restored.)28 b(An)19 b(argumen)o(t)e(of)g
+Fd(n)i Fo(mo)o(v)o(es)e Fd(n)315 2301 y Fo(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 2356 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 2408 y Ff(h)p 327 2382 V 327
+2410 a Fe(T)m(AB)p 327 2418 V 399 2408 a Ff(i)414 2410
+y Fo(,)15 b(but)g(is)h(un)o(b)q(ound)g(b)o(y)f(default.)75
+2496 y Fn(delete-char-or-list)e(\(\))315 2550 y Fo(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 2605 y(\(lik)o(e)i Fn(delete-char)p
+Fo(\).)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 Fn(possible-)315 2660 y(completions)p
+Fo(.)k(This)e(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.)p
+eop
+%%Page: 18 22
+18 21 bop 75 -58 a Fo(18)1299 b(GNU)15 b(Readline)h(Library)75
+149 y Fc(1.4.7)30 b(Keyb)r(oard)20 b(Macros)75 272 y
+Fn(start-kbd-macro)13 b(\(C-x)i(\(\))315 327 y Fo(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 409 y Fn(end-kbd-macro)e(\(C-x)i(\)\))315
+464 y Fo(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 519 y(de\014nition.)75 600 y Fn(call-last-kbd-macro)g(\(C-x)h
+(e\))315 655 y Fo(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
+710 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 826 y Fc(1.4.8)30 b(Some)20 b(Miscellaneous)h(Commands)
+75 949 y Fn(re-read-init-file)13 b(\(C-x)h(C-r\))315
+1004 y Fo(Read)d(in)g(the)g(con)o(ten)o(ts)g(of)f(the)h
+Fd(inputrc)k Fo(\014le,)d(and)g(incorp)q(orate)f(an)o(y)f(bindings)j
+(or)e(v)m(ariable)315 1058 y(assignmen)o(ts)k(found)h(there.)75
+1140 y Fn(abort)e(\(C-g\))315 1195 y Fo(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 1250 y(setting)i(of)g Fn(bell-style)p
+Fo(\).)75 1331 y Fn(do-uppercase-version)d(\(M-a,)j(M-b,)f(M-)p
+Fg(x)p Fn(,)h(...\))315 1386 y Fo(If)f(the)g(meta\014ed)g(c)o(haracter)
+f Fd(x)k Fo(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 1441 y(corresp)q(onding)j(upp)q(ercase)g(c)o
+(haracter.)75 1523 y Fn(prefix-meta)e(\()377 1521 y Ff(h)p
+389 1494 70 2 v 389 1523 a Fe(ESC)p 389 1530 V 456 1521
+a Ff(i)471 1523 y Fn(\))315 1577 y Fo(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 1632 y(T)o(yping)e(`)485
+1630 y Ff(h)p 496 1604 V 496 1632 a Fe(ESC)p 496 1640
+V 563 1630 a Ff(i)593 1632 y Fn(f)p Fo(')f(is)h(equiv)m(alen)o(t)h(to)d
+(t)o(yping)i Fg(M-f)p Fo(.)75 1714 y Fn(undo)f(\(C-_)f(or)h(C-x)g
+(C-u\))315 1769 y Fo(Incremen)o(tal)h(undo,)f(separately)h(remem)o(b)q
+(ered)g(for)e(eac)o(h)h(line.)75 1850 y Fn(revert-line)f(\(M-r\))315
+1905 y Fo(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 Fn(undo)f
+Fo(command)315 1960 y(enough)g(times)f(to)g(get)f(bac)o(k)h(to)g(the)g
+(b)q(eginning.)75 2041 y Fn(tilde-expand)f(\(M-~\))315
+2096 y Fo(P)o(erform)g(tilde)j(expansion)f(on)f(the)g(curren)o(t)g(w)o
+(ord.)75 2178 y Fn(set-mark)f(\(C-@\))315 2233 y Fo(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 2287 y(to)e(that)f(p)q
+(osition.)75 2369 y Fn(exchange-point-and-mark)e(\(C-x)j(C-x\))315
+2424 y Fo(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 2479 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 2560 y Fn(character-search)e
+(\(C-]\))315 2615 y Fo(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 2670 y(A)j(negativ)o(e)h(coun)o(t)f(searc)o(hes)g
+(for)f(previous)i(o)q(ccurrences.)p eop
+%%Page: 19 23
+19 22 bop 75 -58 a Fo(Chapter)15 b(1:)k(Command)c(Line)i(Editing)1055
+b(19)75 149 y Fn(character-search-backward)12 b(\(M-C-]\))315
+204 y Fo(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
+259 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 339 y Fn(insert-comment)d(\(M-#\))
+315 394 y Fo(Without)18 b(a)f(n)o(umeric)i(argumen)o(t,)e(the)h(v)m
+(alue)h(of)f(the)f Fn(comment-begin)f Fo(v)m(ariable)k(is)e(in-)315
+448 y(serted)e(at)f(the)h(b)q(eginning)i(of)d(the)h(curren)o(t)g(line.)
+23 b(If)16 b(a)g(n)o(umeric)h(argumen)o(t)e(is)h(supplied,)315
+503 y(this)j(command)f(acts)g(as)f(a)h(toggle:)26 b(if)19
+b(the)f(c)o(haracters)g(at)f(the)i(b)q(eginning)h(of)e(the)g(line)315
+558 y(do)d(not)g(matc)o(h)g(the)g(v)m(alue)i(of)e Fn(comment-begin)p
+Fo(,)e(the)i(v)m(alue)i(is)f(inserted,)f(otherwise)h(the)315
+613 y(c)o(haracters)j(in)i Fn(comment-begin)d Fo(are)i(deleted)i(from)d
+(the)h(b)q(eginning)i(of)e(the)g(line.)36 b(In)315 667
+y(either)16 b(case,)f(the)g(line)i(is)f(accepted)f(as)g(if)h(a)f
+(newline)i(had)e(b)q(een)i(t)o(yp)q(ed.)75 747 y Fn(dump-functions)c
+(\(\))315 802 y Fo(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
+857 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
+912 y(it)g(can)h(b)q(e)g(made)f(part)f(of)h(an)g Fd(inputrc)k
+Fo(\014le.)i(This)16 b(command)f(is)h(un)o(b)q(ound)g(b)o(y)f(default.)
+75 991 y Fn(dump-variables)e(\(\))315 1046 y Fo(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 1101 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 1156 y(it)g(can)h(b)q(e)g(made)f
+(part)f(of)h(an)g Fd(inputrc)k Fo(\014le.)i(This)16 b(command)f(is)h
+(un)o(b)q(ound)g(b)o(y)f(default.)75 1235 y Fn(dump-macros)f(\(\))315
+1290 y Fo(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
+1345 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
+1400 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
+Fd(inputrc)k Fo(\014le.)i(This)15 b(command)g(is)h(un)o(b)q(ound)g(b)o
+(y)315 1455 y(default.)75 1534 y Fn(emacs-editing-mode)d(\(C-e\))315
+1589 y Fo(When)j(in)g Fn(vi)e Fo(command)i(mo)q(de,)f(this)g(causes)h
+(a)f(switc)o(h)g(to)g Fn(emacs)f Fo(editing)j(mo)q(de.)75
+1669 y Fn(vi-editing-mode)c(\(M-C-j\))315 1724 y Fo(When)j(in)g
+Fn(emacs)e Fo(editing)j(mo)q(de,)e(this)g(causes)h(a)f(switc)o(h)g(to)g
+Fn(vi)f Fo(editing)j(mo)q(de.)75 1852 y Fm(1.5)33 b(Readline)23
+b(vi)h(Mo)r(de)137 1974 y Fo(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 Fn(vi)g
+Fo(editing)j(functions,)f(it)f(do)q(es)g(con)o(tain)75
+2029 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 Fn(vi)f Fo(mo)q(de)g(b)q(eha)o(v)o(es)g(as)g
+(sp)q(eci\014ed)i(in)75 2084 y(the)c Fh(posix)g Fo(1003.2)f(standard.)
+137 2151 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 Fn(emacs)e Fo(and)i Fn(vi)f Fo(editing)i(mo)q(des,)f(use)f
+(the)h(command)75 2206 y Fg(M-C-j)j Fo(\(b)q(ound)i(to)e
+(emacs-editing-mo)q(de)j(when)e(in)h Fn(vi)f Fo(mo)q(de)g(and)g(to)f
+(vi-editing-mo)q(de)k(in)e Fn(emacs)75 2261 y Fo(mo)q(de\).)g(The)15
+b(Readline)i(default)f(is)f Fn(emacs)g Fo(mo)q(de.)137
+2328 y(When)h(y)o(ou)e(en)o(ter)h(a)g(line)i(in)e Fn(vi)g
+Fo(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 2383 y(had)e(t)o(yp)q(ed)h(an)f(`)p
+Fn(i)p Fo('.)18 b(Pressing)608 2381 y Ff(h)p 620 2355
+70 2 v 620 2383 a Fe(ESC)p 620 2390 V 687 2381 a Ff(i)715
+2383 y Fo(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 2438 y(text)i(of)h(the)g(line)h
+(with)g(the)f(standard)f Fn(vi)h Fo(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 2492
+y(`)p Fn(k)p Fo(')14 b(and)i(subsequen)o(t)f(lines)i(with)f(`)p
+Fn(j)p Fo(',)e(and)h(so)g(forth.)p eop
+%%Page: 20 24
+20 23 bop 75 -58 a Fo(20)1299 b(GNU)15 b(Readline)h(Library)p
+eop
+%%Page: 21 25
+21 24 bop 75 -58 a Fo(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(21)75 149 y Fk(App)r(endix)25 b(A)20 b(Cop)n(ying)26
+b(This)g(Man)n(ual)75 345 y Fm(A.1)33 b(GNU)21 b(F)-6
+b(ree)23 b(Do)r(cumen)n(tation)g(License)698 455 y Fo(V)l(ersion)16
+b(1.2,)e(No)o(v)o(em)o(b)q(er)h(2002)195 526 y(Cop)o(yrigh)o(t)421
+525 y(c)409 526 y Fl(\015)f Fo(2000,2001,200)o(2)e(F)l(ree)j(Soft)o(w)o
+(are)f(F)l(oundation,)h(Inc.)195 581 y(59)g(T)l(emple)h(Place,)f(Suite)
+i(330,)d(Boston,)g(MA)30 b(02111-1307,)12 b(USA)195 690
+y(Ev)o(ery)o(one)j(is)g(p)q(ermitted)h(to)f(cop)o(y)g(and)g(distribute)
+i(v)o(erbatim)e(copies)195 745 y(of)g(this)g(license)j(do)q(cumen)o(t,)
+d(but)g(c)o(hanging)h(it)f(is)h(not)f(allo)o(w)o(ed.)100
+816 y(0.)29 b(PREAMBLE)165 885 y(The)19 b(purp)q(ose)g(of)f(this)h
+(License)i(is)e(to)f(mak)o(e)g(a)g(man)o(ual,)h(textb)q(o)q(ok,)g(or)f
+(other)g(functional)i(and)165 940 y(useful)c(do)q(cumen)o(t)g
+Fd(free)h Fo(in)f(the)f(sense)h(of)f(freedom:)k(to)c(assure)g(ev)o(ery)
+o(one)f(the)i(e\013ectiv)o(e)f(freedom)165 995 y(to)g(cop)o(y)h(and)g
+(redistribute)h(it,)e(with)h(or)f(without)h(mo)q(difying)h(it,)f
+(either)g(commercially)h(or)f(non-)165 1050 y(commercially)l(.)28
+b(Secondarily)l(,)19 b(this)f(License)h(preserv)o(es)e(for)g(the)g
+(author)g(and)h(publisher)h(a)e(w)o(a)o(y)165 1104 y(to)g(get)h(credit)
+h(for)e(their)i(w)o(ork,)e(while)j(not)e(b)q(eing)h(considered)g(resp)q
+(onsible)h(for)e(mo)q(di\014cations)165 1159 y(made)d(b)o(y)g(others.)
+165 1228 y(This)d(License)i(is)e(a)f(kind)i(of)e(\\cop)o(yleft",)g
+(whic)o(h)i(means)e(that)g(deriv)m(ativ)o(e)i(w)o(orks)e(of)g(the)h(do)
+q(cumen)o(t)165 1283 y(m)o(ust)k(themselv)o(es)i(b)q(e)g(free)e(in)i
+(the)f(same)g(sense.)26 b(It)16 b(complemen)o(ts)i(the)f(GNU)g(General)
+g(Public)165 1338 y(License,)g(whic)o(h)f(is)f(a)g(cop)o(yleft)h
+(license)h(designed)f(for)f(free)g(soft)o(w)o(are.)165
+1407 y(W)l(e)g(ha)o(v)o(e)f(designed)i(this)g(License)g(in)g(order)e
+(to)g(use)h(it)g(for)g(man)o(uals)f(for)g(free)h(soft)o(w)o(are,)e(b)q
+(ecause)165 1462 y(free)21 b(soft)o(w)o(are)e(needs)j(free)f(do)q
+(cumen)o(tation:)32 b(a)21 b(free)g(program)f(should)i(come)f(with)h
+(man)o(uals)165 1517 y(pro)o(viding)15 b(the)g(same)f(freedoms)g(that)g
+(the)g(soft)o(w)o(are)f(do)q(es.)20 b(But)14 b(this)h(License)h(is)f
+(not)f(limited)j(to)165 1571 y(soft)o(w)o(are)d(man)o(uals;)h(it)g(can)
+h(b)q(e)g(used)g(for)e(an)o(y)h(textual)h(w)o(ork,)e(regardless)h(of)g
+(sub)s(ject)g(matter)f(or)165 1626 y(whether)i(it)g(is)g(published)i
+(as)e(a)f(prin)o(ted)i(b)q(o)q(ok.)k(W)l(e)16 b(recommend)g(this)g
+(License)i(principally)h(for)165 1681 y(w)o(orks)14 b(whose)h(purp)q
+(ose)h(is)g(instruction)g(or)f(reference.)100 1750 y(1.)29
+b(APPLICABILITY)17 b(AND)e(DEFINITIONS)165 1819 y(This)21
+b(License)g(applies)h(to)d(an)o(y)h(man)o(ual)g(or)f(other)h(w)o(ork,)g
+(in)h(an)o(y)e(medium,)j(that)d(con)o(tains)h(a)165 1874
+y(notice)h(placed)h(b)o(y)f(the)g(cop)o(yrigh)o(t)f(holder)i(sa)o(ying)
+f(it)g(can)g(b)q(e)g(distributed)h(under)g(the)f(terms)165
+1929 y(of)d(this)h(License.)33 b(Suc)o(h)19 b(a)g(notice)g(gran)o(ts)e
+(a)i(w)o(orld-wide,)h(ro)o(y)o(alt)o(y-free)e(license,)j(unlimited)g
+(in)165 1984 y(duration,)j(to)e(use)h(that)f(w)o(ork)g(under)h(the)g
+(conditions)h(stated)e(herein.)43 b(The)23 b(\\Do)q(cumen)o(t",)165
+2039 y(b)q(elo)o(w,)15 b(refers)f(to)f(an)o(y)h(suc)o(h)g(man)o(ual)h
+(or)e(w)o(ork.)19 b(An)o(y)14 b(mem)o(b)q(er)h(of)e(the)i(public)h(is)f
+(a)f(licensee,)i(and)165 2093 y(is)d(addressed)g(as)f(\\y)o(ou".)18
+b(Y)l(ou)13 b(accept)g(the)f(license)j(if)e(y)o(ou)f(cop)o(y)l(,)h(mo)q
+(dify)g(or)f(distribute)h(the)g(w)o(ork)165 2148 y(in)j(a)f(w)o(a)o(y)f
+(requiring)j(p)q(ermission)f(under)g(cop)o(yrigh)o(t)f(la)o(w.)165
+2217 y(A)i(\\Mo)q(di\014ed)h(V)l(ersion")f(of)f(the)h(Do)q(cumen)o(t)g
+(means)g(an)o(y)f(w)o(ork)g(con)o(taining)i(the)f(Do)q(cumen)o(t)f(or)
+165 2272 y(a)i(p)q(ortion)h(of)g(it,)g(either)h(copied)g(v)o(erbatim,)f
+(or)f(with)h(mo)q(di\014cations)h(and/or)e(translated)h(in)o(to)165
+2327 y(another)c(language.)165 2396 y(A)e(\\Secondary)g(Section")h(is)f
+(a)g(named)g(app)q(endix)i(or)d(a)h(fron)o(t-matter)e(section)i(of)g
+(the)g(Do)q(cumen)o(t)165 2451 y(that)d(deals)h(exclusiv)o(ely)i(with)e
+(the)g(relationship)h(of)f(the)f(publishers)j(or)d(authors)g(of)g(the)h
+(Do)q(cumen)o(t)165 2506 y(to)18 b(the)h(Do)q(cumen)o(t's)f(o)o(v)o
+(erall)h(sub)s(ject)f(\(or)g(to)g(related)h(matters\))e(and)i(con)o
+(tains)g(nothing)g(that)165 2560 y(could)i(fall)g(directly)h(within)f
+(that)e(o)o(v)o(erall)i(sub)s(ject.)34 b(\(Th)o(us,)21
+b(if)g(the)f(Do)q(cumen)o(t)g(is)h(in)g(part)e(a)165
+2615 y(textb)q(o)q(ok)12 b(of)f(mathematics,)h(a)f(Secondary)h(Section)
+h(ma)o(y)e(not)h(explain)h(an)o(y)f(mathematics.\))18
+b(The)165 2670 y(relationship)d(could)g(b)q(e)f(a)g(matter)e(of)i
+(historical)g(connection)h(with)f(the)g(sub)s(ject)f(or)h(with)g
+(related)p eop
+%%Page: 22 26
+22 25 bop 75 -58 a Fo(22)1299 b(GNU)15 b(Readline)h(Library)165
+149 y(matters,)h(or)g(of)g(legal,)i(commercial,)g(philosophical,)i
+(ethical)e(or)e(p)q(olitical)j(p)q(osition)f(regarding)165
+204 y(them.)165 275 y(The)13 b(\\In)o(v)m(arian)o(t)g(Sections")g(are)g
+(certain)g(Secondary)g(Sections)h(whose)f(titles)g(are)g(designated,)g
+(as)165 329 y(b)q(eing)i(those)e(of)g(In)o(v)m(arian)o(t)g(Sections,)h
+(in)h(the)e(notice)h(that)e(sa)o(ys)h(that)g(the)g(Do)q(cumen)o(t)g(is)
+h(released)165 384 y(under)h(this)f(License.)21 b(If)14
+b(a)g(section)g(do)q(es)g(not)g(\014t)f(the)h(ab)q(o)o(v)o(e)g
+(de\014nition)i(of)d(Secondary)h(then)g(it)g(is)165 439
+y(not)i(allo)o(w)o(ed)g(to)f(b)q(e)i(designated)g(as)e(In)o(v)m(arian)o
+(t.)22 b(The)17 b(Do)q(cumen)o(t)e(ma)o(y)h(con)o(tain)g(zero)g(In)o(v)
+m(arian)o(t)165 494 y(Sections.)k(If)12 b(the)h(Do)q(cumen)o(t)f(do)q
+(es)h(not)f(iden)o(tify)h(an)o(y)f(In)o(v)m(arian)o(t)h(Sections)g
+(then)g(there)f(are)g(none.)165 564 y(The)19 b(\\Co)o(v)o(er)e(T)l
+(exts")g(are)h(certain)h(short)f(passages)g(of)f(text)h(that)g(are)g
+(listed,)i(as)e(F)l(ron)o(t-Co)o(v)o(er)165 619 y(T)l(exts)12
+b(or)g(Bac)o(k-Co)o(v)o(er)g(T)l(exts,)g(in)i(the)e(notice)h(that)f(sa)
+o(ys)g(that)g(the)g(Do)q(cumen)o(t)h(is)g(released)g(under)165
+674 y(this)g(License.)21 b(A)13 b(F)l(ron)o(t-Co)o(v)o(er)e(T)l(ext)i
+(ma)o(y)f(b)q(e)i(at)e(most)g(5)h(w)o(ords,)f(and)h(a)g(Bac)o(k-Co)o(v)
+o(er)f(T)l(ext)h(ma)o(y)165 729 y(b)q(e)j(at)e(most)h(25)f(w)o(ords.)
+165 799 y(A)k(\\T)l(ransparen)o(t")e(cop)o(y)i(of)f(the)h(Do)q(cumen)o
+(t)g(means)f(a)h(mac)o(hine-readable)h(cop)o(y)l(,)f(represen)o(ted)165
+854 y(in)h(a)e(format)g(whose)g(sp)q(eci\014cation)j(is)f(a)o(v)m
+(ailable)g(to)e(the)h(general)h(public,)h(that)d(is)h(suitable)i(for)
+165 909 y(revising)d(the)f(do)q(cumen)o(t)g(straigh)o(tforw)o(ardly)f
+(with)h(generic)h(text)e(editors)h(or)f(\(for)g(images)h(com-)165
+964 y(p)q(osed)c(of)g(pixels\))h(generic)g(pain)o(t)f(programs)f(or)g
+(\(for)g(dra)o(wings\))h(some)f(widely)i(a)o(v)m(ailable)h(dra)o(wing)
+165 1018 y(editor,)h(and)f(that)g(is)h(suitable)h(for)e(input)h(to)f
+(text)g(formatters)f(or)h(for)g(automatic)g(translation)h(to)165
+1073 y(a)e(v)m(ariet)o(y)h(of)f(formats)f(suitable)i(for)f(input)i(to)d
+(text)h(formatters.)18 b(A)13 b(cop)o(y)h(made)f(in)h(an)g(otherwise)
+165 1128 y(T)l(ransparen)o(t)k(\014le)i(format)d(whose)i(markup,)g(or)g
+(absence)g(of)g(markup,)g(has)f(b)q(een)i(arranged)f(to)165
+1183 y(th)o(w)o(art)12 b(or)g(discourage)i(subsequen)o(t)g(mo)q
+(di\014cation)h(b)o(y)e(readers)g(is)h(not)f(T)l(ransparen)o(t.)18
+b(An)c(image)165 1238 y(format)i(is)i(not)e(T)l(ransparen)o(t)h(if)h
+(used)f(for)g(an)o(y)g(substan)o(tial)g(amoun)o(t)g(of)f(text.)26
+b(A)17 b(cop)o(y)g(that)f(is)165 1292 y(not)f(\\T)l(ransparen)o(t")f
+(is)i(called)g(\\Opaque".)165 1363 y(Examples)27 b(of)f(suitable)i
+(formats)d(for)h(T)l(ransparen)o(t)g(copies)h(include)i(plain)f
+Fh(asci)q(i)e Fo(without)165 1418 y(markup,)20 b(T)l(exinfo)h(input)g
+(format,)e(LaT)887 1427 y(E)913 1418 y(X)h(input)h(format,)e
+Fh(sgml)h Fo(or)f Fh(xml)h Fo(using)h(a)e(publicly)165
+1472 y(a)o(v)m(ailable)e Fh(dtd)p Fo(,)g(and)f(standard-conforming)f
+(simple)i Fh(html)p Fo(,)f(P)o(ostScript)f(or)h Fh(pdf)g
+Fo(designed)i(for)165 1527 y(h)o(uman)h(mo)q(di\014cation.)33
+b(Examples)19 b(of)g(transparen)o(t)f(image)h(formats)f(include)k
+Fh(png)p Fo(,)e Fh(x)o(cf)f Fo(and)165 1582 y Fh(jpg)p
+Fo(.)32 b(Opaque)20 b(formats)e(include)j(proprietary)e(formats)f(that)
+g(can)h(b)q(e)h(read)f(and)g(edited)h(only)165 1637 y(b)o(y)g
+(proprietary)f(w)o(ord)g(pro)q(cessors,)h Fh(sgml)g Fo(or)f
+Fh(xml)h Fo(for)f(whic)o(h)i(the)f Fh(dtd)g Fo(and/or)f(pro)q(cessing)
+165 1692 y(to)q(ols)c(are)h(not)f(generally)h(a)o(v)m(ailable,)h(and)f
+(the)f(mac)o(hine-generated)i Fh(html)p Fo(,)e(P)o(ostScript)g(or)g
+Fh(pdf)165 1746 y Fo(pro)q(duced)h(b)o(y)f(some)g(w)o(ord)g(pro)q
+(cessors)g(for)f(output)h(purp)q(oses)h(only)l(.)165
+1817 y(The)h(\\Title)h(P)o(age")e(means,)i(for)e(a)h(prin)o(ted)h(b)q
+(o)q(ok,)f(the)g(title)h(page)f(itself,)i(plus)f(suc)o(h)f(follo)o
+(wing)165 1872 y(pages)d(as)f(are)h(needed)h(to)e(hold,)i(legibly)l(,)g
+(the)f(material)g(this)h(License)g(requires)g(to)e(app)q(ear)h(in)h
+(the)165 1926 y(title)f(page.)19 b(F)l(or)13 b(w)o(orks)f(in)i(formats)
+e(whic)o(h)i(do)f(not)g(ha)o(v)o(e)g(an)o(y)g(title)h(page)f(as)g(suc)o
+(h,)h(\\Title)g(P)o(age")165 1981 y(means)h(the)h(text)e(near)i(the)f
+(most)g(prominen)o(t)g(app)q(earance)h(of)f(the)g(w)o(ork's)f(title,)i
+(preceding)h(the)165 2036 y(b)q(eginning)g(of)e(the)g(b)q(o)q(dy)h(of)f
+(the)g(text.)165 2106 y(A)g(section)g(\\En)o(titled)h(XYZ")e(means)h(a)
+g(named)g(subunit)h(of)e(the)h(Do)q(cumen)o(t)g(whose)g(title)g(either)
+165 2161 y(is)f(precisely)i(XYZ)e(or)f(con)o(tains)h(XYZ)g(in)h(paren)o
+(theses)f(follo)o(wing)g(text)g(that)f(translates)g(XYZ)h(in)165
+2216 y(another)e(language.)19 b(\(Here)13 b(XYZ)f(stands)g(for)g(a)g
+(sp)q(eci\014c)j(section)e(name)f(men)o(tioned)h(b)q(elo)o(w,)h(suc)o
+(h)165 2271 y(as)g(\\Ac)o(kno)o(wledgemen)o(ts",)f(\\Dedications",)i
+(\\Endorsemen)o(ts",)e(or)g(\\History".\))19 b(T)l(o)13
+b(\\Preserv)o(e)165 2326 y(the)k(Title")g(of)g(suc)o(h)g(a)f(section)i
+(when)f(y)o(ou)f(mo)q(dify)i(the)f(Do)q(cumen)o(t)f(means)h(that)f(it)h
+(remains)g(a)165 2380 y(section)f(\\En)o(titled)g(XYZ")e(according)i
+(to)f(this)g(de\014nition.)165 2451 y(The)f(Do)q(cumen)o(t)g(ma)o(y)f
+(include)j(W)l(arran)o(t)o(y)c(Disclaimers)j(next)f(to)g(the)g(notice)g
+(whic)o(h)h(states)e(that)165 2506 y(this)k(License)i(applies)g(to)d
+(the)h(Do)q(cumen)o(t.)25 b(These)17 b(W)l(arran)o(t)o(y)e(Disclaimers)
+k(are)d(considered)j(to)165 2560 y(b)q(e)g(included)j(b)o(y)d
+(reference)g(in)h(this)f(License,)i(but)e(only)g(as)g(regards)f
+(disclaiming)j(w)o(arran)o(ties:)165 2615 y(an)o(y)d(other)g
+(implication)j(that)d(these)g(W)l(arran)o(t)o(y)f(Disclaimers)j(ma)o(y)
+d(ha)o(v)o(e)h(is)h(v)o(oid)g(and)g(has)f(no)165 2670
+y(e\013ect)d(on)g(the)g(meaning)h(of)f(this)h(License.)p
+eop
+%%Page: 23 27
+23 26 bop 75 -58 a Fo(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(23)100 149 y(2.)29 b(VERBA)l(TIM)15 b(COPYING)165
+222 y(Y)l(ou)k(ma)o(y)g(cop)o(y)f(and)i(distribute)g(the)f(Do)q(cumen)o
+(t)g(in)h(an)o(y)f(medium,)h(either)g(commercially)g(or)165
+277 y(noncommercially)l(,)k(pro)o(vided)e(that)f(this)h(License,)i(the)
+d(cop)o(yrigh)o(t)g(notices,)i(and)f(the)f(license)165
+332 y(notice)e(sa)o(ying)e(this)i(License)g(applies)h(to)d(the)h(Do)q
+(cumen)o(t)g(are)f(repro)q(duced)i(in)g(all)g(copies,)g(and)165
+387 y(that)13 b(y)o(ou)g(add)g(no)g(other)g(conditions)i(whatso)q(ev)o
+(er)d(to)h(those)g(of)g(this)h(License.)21 b(Y)l(ou)13
+b(ma)o(y)g(not)g(use)165 442 y(tec)o(hnical)18 b(measures)e(to)g
+(obstruct)g(or)g(con)o(trol)g(the)g(reading)h(or)f(further)h(cop)o
+(ying)g(of)f(the)g(copies)165 496 y(y)o(ou)c(mak)o(e)g(or)f
+(distribute.)21 b(Ho)o(w)o(ev)o(er,)11 b(y)o(ou)h(ma)o(y)g(accept)g
+(comp)q(ensation)h(in)g(exc)o(hange)g(for)e(copies.)165
+551 y(If)16 b(y)o(ou)g(distribute)h(a)f(large)g(enough)h(n)o(um)o(b)q
+(er)f(of)g(copies)h(y)o(ou)f(m)o(ust)f(also)h(follo)o(w)h(the)f
+(conditions)165 606 y(in)g(section)g(3.)165 679 y(Y)l(ou)11
+b(ma)o(y)e(also)i(lend)g(copies,)h(under)f(the)g(same)f(conditions)h
+(stated)f(ab)q(o)o(v)o(e,)h(and)f(y)o(ou)g(ma)o(y)g(publicly)165
+734 y(displa)o(y)16 b(copies.)100 807 y(3.)29 b(COPYING)16
+b(IN)f(QUANTITY)165 880 y(If)e(y)o(ou)f(publish)j(prin)o(ted)e(copies)h
+(\(or)d(copies)j(in)f(media)h(that)d(commonly)i(ha)o(v)o(e)f(prin)o
+(ted)i(co)o(v)o(ers\))d(of)165 935 y(the)16 b(Do)q(cumen)o(t,)g(n)o(um)
+o(b)q(ering)g(more)g(than)g(100,)e(and)i(the)g(Do)q(cumen)o(t's)g
+(license)i(notice)e(requires)165 990 y(Co)o(v)o(er)g(T)l(exts,)h(y)o
+(ou)g(m)o(ust)g(enclose)h(the)f(copies)h(in)g(co)o(v)o(ers)f(that)f
+(carry)l(,)h(clearly)h(and)g(legibly)l(,)h(all)165 1044
+y(these)h(Co)o(v)o(er)e(T)l(exts:)29 b(F)l(ron)o(t-Co)o(v)o(er)18
+b(T)l(exts)h(on)g(the)h(fron)o(t)f(co)o(v)o(er,)g(and)h(Bac)o(k-Co)o(v)
+o(er)f(T)l(exts)g(on)165 1099 y(the)c(bac)o(k)f(co)o(v)o(er.)19
+b(Both)14 b(co)o(v)o(ers)g(m)o(ust)g(also)h(clearly)h(and)e(legibly)j
+(iden)o(tify)f(y)o(ou)e(as)g(the)h(publisher)165 1154
+y(of)i(these)g(copies.)27 b(The)17 b(fron)o(t)f(co)o(v)o(er)h(m)o(ust)f
+(presen)o(t)i(the)f(full)h(title)g(with)g(all)g(w)o(ords)e(of)h(the)g
+(title)165 1209 y(equally)g(prominen)o(t)f(and)f(visible.)23
+b(Y)l(ou)16 b(ma)o(y)e(add)i(other)f(material)g(on)h(the)f(co)o(v)o
+(ers)g(in)h(addition.)165 1264 y(Cop)o(ying)i(with)h(c)o(hanges)f
+(limited)i(to)d(the)h(co)o(v)o(ers,)g(as)g(long)g(as)g(they)g(preserv)o
+(e)g(the)g(title)h(of)f(the)165 1318 y(Do)q(cumen)o(t)g(and)h(satisfy)f
+(these)h(conditions,)h(can)f(b)q(e)g(treated)f(as)h(v)o(erbatim)f(cop)o
+(ying)h(in)g(other)165 1373 y(resp)q(ects.)165 1446 y(If)e(the)f
+(required)i(texts)d(for)h(either)h(co)o(v)o(er)f(are)g(to)q(o)g(v)o
+(oluminous)h(to)f(\014t)g(legibly)l(,)i(y)o(ou)e(should)i(put)165
+1501 y(the)f(\014rst)f(ones)g(listed)i(\(as)d(man)o(y)h(as)g(\014t)h
+(reasonably\))f(on)g(the)h(actual)g(co)o(v)o(er,)e(and)i(con)o(tin)o
+(ue)g(the)165 1556 y(rest)e(on)o(to)f(adjacen)o(t)h(pages.)165
+1629 y(If)f(y)o(ou)f(publish)j(or)d(distribute)h(Opaque)h(copies)f(of)f
+(the)h(Do)q(cumen)o(t)f(n)o(um)o(b)q(ering)i(more)e(than)g(100,)165
+1684 y(y)o(ou)h(m)o(ust)f(either)i(include)h(a)e(mac)o(hine-readable)i
+(T)l(ransparen)o(t)d(cop)o(y)h(along)g(with)g(eac)o(h)g(Opaque)165
+1738 y(cop)o(y)l(,)k(or)f(state)g(in)h(or)f(with)h(eac)o(h)f(Opaque)i
+(cop)o(y)e(a)g(computer-net)o(w)o(ork)g(lo)q(cation)h(from)f(whic)o(h)
+165 1793 y(the)12 b(general)h(net)o(w)o(ork-using)f(public)i(has)e
+(access)g(to)g(do)o(wnload)g(using)h(public-standard)h(net)o(w)o(ork)
+165 1848 y(proto)q(cols)19 b(a)g(complete)i(T)l(ransparen)o(t)d(cop)o
+(y)i(of)f(the)g(Do)q(cumen)o(t,)h(free)g(of)f(added)h(material.)33
+b(If)165 1903 y(y)o(ou)19 b(use)h(the)f(latter)g(option,)i(y)o(ou)e(m)o
+(ust)g(tak)o(e)f(reasonably)i(pruden)o(t)g(steps,)g(when)g(y)o(ou)f(b)q
+(egin)165 1958 y(distribution)i(of)d(Opaque)i(copies)g(in)g(quan)o(tit)
+o(y)l(,)g(to)e(ensure)i(that)e(this)i(T)l(ransparen)o(t)e(cop)o(y)h
+(will)165 2012 y(remain)d(th)o(us)e(accessible)j(at)e(the)g(stated)g
+(lo)q(cation)g(un)o(til)i(at)d(least)h(one)h(y)o(ear)e(after)g(the)i
+(last)f(time)165 2067 y(y)o(ou)j(distribute)i(an)e(Opaque)h(cop)o(y)f
+(\(directly)i(or)e(through)g(y)o(our)g(agen)o(ts)f(or)h(retailers\))h
+(of)f(that)165 2122 y(edition)f(to)d(the)h(public.)165
+2195 y(It)i(is)h(requested,)g(but)f(not)g(required,)i(that)d(y)o(ou)h
+(con)o(tact)g(the)g(authors)g(of)f(the)i(Do)q(cumen)o(t)f(w)o(ell)165
+2250 y(b)q(efore)e(redistributing)h(an)o(y)e(large)g(n)o(um)o(b)q(er)h
+(of)e(copies,)i(to)f(giv)o(e)h(them)f(a)g(c)o(hance)h(to)e(pro)o(vide)i
+(y)o(ou)165 2305 y(with)h(an)f(up)q(dated)h(v)o(ersion)f(of)g(the)g(Do)
+q(cumen)o(t.)100 2378 y(4.)29 b(MODIFICA)l(TIONS)165
+2451 y(Y)l(ou)13 b(ma)o(y)f(cop)o(y)h(and)g(distribute)h(a)e(Mo)q
+(di\014ed)i(V)l(ersion)g(of)e(the)h(Do)q(cumen)o(t)f(under)i(the)f
+(conditions)165 2506 y(of)d(sections)h(2)f(and)h(3)f(ab)q(o)o(v)o(e,)h
+(pro)o(vided)g(that)f(y)o(ou)g(release)h(the)g(Mo)q(di\014ed)h(V)l
+(ersion)f(under)g(precisely)165 2560 y(this)k(License,)h(with)f(the)f
+(Mo)q(di\014ed)i(V)l(ersion)f(\014lling)i(the)e(role)f(of)h(the)f(Do)q
+(cumen)o(t,)g(th)o(us)h(licensing)165 2615 y(distribution)k(and)e(mo)q
+(di\014cation)h(of)f(the)g(Mo)q(di\014ed)h(V)l(ersion)g(to)e(who)q(ev)o
+(er)h(p)q(ossesses)h(a)e(cop)o(y)h(of)165 2670 y(it.)j(In)c(addition,)g
+(y)o(ou)f(m)o(ust)f(do)h(these)h(things)g(in)g(the)f(Mo)q(di\014ed)h(V)
+l(ersion:)p eop
+%%Page: 24 28
+24 27 bop 75 -58 a Fo(24)1299 b(GNU)15 b(Readline)h(Library)178
+149 y(A.)30 b(Use)17 b(in)g(the)f(Title)h(P)o(age)f(\(and)g(on)h(the)f
+(co)o(v)o(ers,)g(if)g(an)o(y\))g(a)g(title)h(distinct)h(from)d(that)h
+(of)g(the)255 204 y(Do)q(cumen)o(t,)h(and)g(from)f(those)h(of)f
+(previous)i(v)o(ersions)f(\(whic)o(h)g(should,)h(if)g(there)f(w)o(ere)f
+(an)o(y)l(,)255 259 y(b)q(e)g(listed)h(in)g(the)f(History)f(section)h
+(of)f(the)h(Do)q(cumen)o(t\).)21 b(Y)l(ou)16 b(ma)o(y)f(use)h(the)g
+(same)f(title)h(as)255 314 y(a)f(previous)h(v)o(ersion)f(if)h(the)f
+(original)h(publisher)i(of)d(that)f(v)o(ersion)h(giv)o(es)h(p)q
+(ermission.)180 379 y(B.)30 b(List)16 b(on)f(the)g(Title)i(P)o(age,)d
+(as)h(authors,)f(one)h(or)g(more)g(p)q(ersons)g(or)g(en)o(tities)h
+(resp)q(onsible)i(for)255 434 y(authorship)c(of)e(the)h(mo)q
+(di\014cations)h(in)g(the)f(Mo)q(di\014ed)i(V)l(ersion,)f(together)e
+(with)h(at)g(least)g(\014v)o(e)255 488 y(of)f(the)g(principal)i
+(authors)d(of)h(the)g(Do)q(cumen)o(t)g(\(all)g(of)g(its)g(principal)i
+(authors,)e(if)g(it)g(has)g(few)o(er)255 543 y(than)j(\014v)o(e\),)g
+(unless)h(they)f(release)h(y)o(ou)f(from)f(this)i(requiremen)o(t.)180
+608 y(C.)29 b(State)15 b(on)g(the)h(Title)g(page)f(the)h(name)f(of)g
+(the)g(publisher)j(of)d(the)g(Mo)q(di\014ed)i(V)l(ersion,)f(as)f(the)
+255 663 y(publisher.)178 728 y(D.)29 b(Preserv)o(e)15
+b(all)h(the)f(cop)o(yrigh)o(t)g(notices)h(of)f(the)g(Do)q(cumen)o(t.)
+181 793 y(E.)30 b(Add)16 b(an)g(appropriate)g(cop)o(yrigh)o(t)f(notice)
+h(for)f(y)o(our)g(mo)q(di\014cations)i(adjacen)o(t)f(to)f(the)g(other)
+255 848 y(cop)o(yrigh)o(t)g(notices.)183 913 y(F.)29
+b(Include,)16 b(immediately)g(after)d(the)h(cop)o(yrigh)o(t)f(notices,)
+i(a)e(license)j(notice)f(giving)g(the)f(public)255 968
+y(p)q(ermission)g(to)d(use)i(the)f(Mo)q(di\014ed)i(V)l(ersion)f(under)g
+(the)f(terms)g(of)f(this)i(License,)h(in)f(the)g(form)255
+1023 y(sho)o(wn)i(in)h(the)f(Addendum)i(b)q(elo)o(w.)177
+1088 y(G.)29 b(Preserv)o(e)11 b(in)h(that)f(license)i(notice)g(the)e
+(full)i(lists)f(of)f(In)o(v)m(arian)o(t)h(Sections)g(and)f(required)i
+(Co)o(v)o(er)255 1143 y(T)l(exts)i(giv)o(en)h(in)g(the)f(Do)q(cumen)o
+(t's)g(license)i(notice.)178 1208 y(H.)30 b(Include)17
+b(an)e(unaltered)i(cop)o(y)e(of)f(this)i(License.)196
+1273 y(I.)30 b(Preserv)o(e)16 b(the)g(section)h(En)o(titled)g
+(\\History",)e(Preserv)o(e)g(its)i(Title,)f(and)h(add)f(to)f(it)i(an)f
+(item)255 1328 y(stating)e(at)f(least)h(the)g(title,)h(y)o(ear,)e(new)i
+(authors,)e(and)h(publisher)i(of)e(the)g(Mo)q(di\014ed)h(V)l(ersion)255
+1382 y(as)g(giv)o(en)h(on)g(the)g(Title)g(P)o(age.)21
+b(If)16 b(there)g(is)g(no)g(section)g(En)o(titled)g(\\History")f(in)i
+(the)f(Do)q(cu-)255 1437 y(men)o(t,)h(create)g(one)h(stating)f(the)g
+(title,)i(y)o(ear,)e(authors,)g(and)g(publisher)j(of)d(the)g(Do)q
+(cumen)o(t)255 1492 y(as)h(giv)o(en)g(on)g(its)g(Title)h(P)o(age,)f
+(then)h(add)f(an)g(item)g(describing)i(the)e(Mo)q(di\014ed)h(V)l
+(ersion)g(as)255 1547 y(stated)c(in)h(the)f(previous)h(sen)o(tence.)189
+1612 y(J.)30 b(Preserv)o(e)16 b(the)g(net)o(w)o(ork)f(lo)q(cation,)i
+(if)g(an)o(y)l(,)f(giv)o(en)h(in)g(the)f(Do)q(cumen)o(t)g(for)g(public)
+i(access)f(to)255 1667 y(a)e(T)l(ransparen)o(t)g(cop)o(y)h(of)f(the)g
+(Do)q(cumen)o(t,)h(and)f(lik)o(ewise)j(the)d(net)o(w)o(ork)g(lo)q
+(cations)h(giv)o(en)g(in)255 1721 y(the)g(Do)q(cumen)o(t)g(for)f
+(previous)h(v)o(ersions)g(it)g(w)o(as)f(based)i(on.)k(These)c(ma)o(y)e
+(b)q(e)h(placed)h(in)g(the)255 1776 y(\\History")12 b(section.)19
+b(Y)l(ou)13 b(ma)o(y)f(omit)g(a)g(net)o(w)o(ork)g(lo)q(cation)h(for)f
+(a)g(w)o(ork)g(that)g(w)o(as)f(published)255 1831 y(at)17
+b(least)h(four)g(y)o(ears)f(b)q(efore)h(the)g(Do)q(cumen)o(t)g(itself,)
+h(or)e(if)i(the)e(original)i(publisher)h(of)e(the)255
+1886 y(v)o(ersion)d(it)h(refers)f(to)f(giv)o(es)i(p)q(ermission.)177
+1951 y(K.)30 b(F)l(or)11 b(an)o(y)h(section)g(En)o(titled)h(\\Ac)o(kno)
+o(wledgemen)o(ts")f(or)f(\\Dedications",)h(Preserv)o(e)g(the)g(Title)
+255 2006 y(of)h(the)g(section,)h(and)f(preserv)o(e)h(in)g(the)f
+(section)h(all)g(the)g(substance)f(and)h(tone)f(of)g(eac)o(h)g(of)g
+(the)255 2060 y(con)o(tributor)i(ac)o(kno)o(wledgemen)o(ts)g(and/or)g
+(dedications)h(giv)o(en)g(therein.)184 2125 y(L.)30 b(Preserv)o(e)17
+b(all)i(the)f(In)o(v)m(arian)o(t)g(Sections)g(of)g(the)f(Do)q(cumen)o
+(t,)h(unaltered)h(in)f(their)h(text)e(and)255 2180 y(in)i(their)f
+(titles.)29 b(Section)19 b(n)o(um)o(b)q(ers)f(or)g(the)g(equiv)m(alen)o
+(t)h(are)f(not)g(considered)h(part)e(of)h(the)255 2235
+y(section)e(titles.)171 2300 y(M.)29 b(Delete)16 b(an)o(y)f(section)h
+(En)o(titled)g(\\Endorsemen)o(ts".)k(Suc)o(h)c(a)f(section)h(ma)o(y)e
+(not)h(b)q(e)h(included)255 2355 y(in)g(the)f(Mo)q(di\014ed)i(V)l
+(ersion.)178 2420 y(N.)30 b(Do)14 b(not)f(retitle)i(an)o(y)f(existing)h
+(section)g(to)f(b)q(e)g(En)o(titled)i(\\Endorsemen)o(ts")d(or)h(to)f
+(con\015ict)i(in)255 2475 y(title)h(with)f(an)o(y)g(In)o(v)m(arian)o(t)
+h(Section.)177 2540 y(O.)30 b(Preserv)o(e)15 b(an)o(y)g(W)l(arran)o(t)o
+(y)e(Disclaimers.)165 2615 y(If)k(the)g(Mo)q(di\014ed)h(V)l(ersion)f
+(includes)i(new)e(fron)o(t-matter)e(sections)i(or)f(app)q(endices)j
+(that)d(qualify)165 2670 y(as)e(Secondary)g(Sections)h(and)f(con)o
+(tain)g(no)g(material)g(copied)h(from)e(the)h(Do)q(cumen)o(t,)g(y)o(ou)
+f(ma)o(y)h(at)p eop
+%%Page: 25 29
+25 28 bop 75 -58 a Fo(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(25)165 149 y(y)o(our)16 b(option)g(designate)h(some)f(or)f
+(all)i(of)f(these)h(sections)f(as)g(in)o(v)m(arian)o(t.)24
+b(T)l(o)15 b(do)i(this,)f(add)g(their)165 204 y(titles)i(to)f(the)h
+(list)h(of)e(In)o(v)m(arian)o(t)h(Sections)h(in)f(the)g(Mo)q(di\014ed)h
+(V)l(ersion's)f(license)i(notice.)28 b(These)165 259
+y(titles)16 b(m)o(ust)f(b)q(e)g(distinct)i(from)d(an)o(y)h(other)g
+(section)h(titles.)165 325 y(Y)l(ou)21 b(ma)o(y)g(add)g(a)g(section)h
+(En)o(titled)g(\\Endorsemen)o(ts",)f(pro)o(vided)h(it)g(con)o(tains)f
+(nothing)h(but)165 380 y(endorsemen)o(ts)15 b(of)f(y)o(our)h(Mo)q
+(di\014ed)h(V)l(ersion)f(b)o(y)g(v)m(arious)g(parties|for)f(example,)i
+(statemen)o(ts)d(of)165 434 y(p)q(eer)h(review)g(or)g(that)e(the)i
+(text)f(has)h(b)q(een)g(appro)o(v)o(ed)g(b)o(y)f(an)h(organization)f
+(as)h(the)f(authoritativ)o(e)165 489 y(de\014nition)k(of)e(a)g
+(standard.)165 555 y(Y)l(ou)f(ma)o(y)g(add)g(a)g(passage)g(of)f(up)i
+(to)e(\014v)o(e)i(w)o(ords)e(as)h(a)g(F)l(ron)o(t-Co)o(v)o(er)e(T)l
+(ext,)i(and)g(a)g(passage)g(of)f(up)165 610 y(to)g(25)g(w)o(ords)g(as)g
+(a)g(Bac)o(k-Co)o(v)o(er)g(T)l(ext,)g(to)g(the)g(end)i(of)e(the)g(list)
+i(of)e(Co)o(v)o(er)f(T)l(exts)i(in)g(the)g(Mo)q(di\014ed)165
+665 y(V)l(ersion.)29 b(Only)19 b(one)f(passage)f(of)h(F)l(ron)o(t-Co)o
+(v)o(er)e(T)l(ext)i(and)g(one)g(of)f(Bac)o(k-Co)o(v)o(er)g(T)l(ext)h
+(ma)o(y)f(b)q(e)165 719 y(added)d(b)o(y)g(\(or)f(through)g(arrangemen)o
+(ts)g(made)h(b)o(y\))f(an)o(y)h(one)g(en)o(tit)o(y)l(.)19
+b(If)14 b(the)g(Do)q(cumen)o(t)g(already)165 774 y(includes)19
+b(a)e(co)o(v)o(er)f(text)h(for)f(the)h(same)g(co)o(v)o(er,)f
+(previously)i(added)g(b)o(y)f(y)o(ou)g(or)f(b)o(y)h(arrangemen)o(t)165
+829 y(made)h(b)o(y)f(the)h(same)f(en)o(tit)o(y)h(y)o(ou)f(are)g(acting)
+h(on)f(b)q(ehalf)i(of,)f(y)o(ou)f(ma)o(y)g(not)g(add)h(another;)g(but)
+165 884 y(y)o(ou)f(ma)o(y)f(replace)i(the)f(old)h(one,)f(on)g(explicit)
+i(p)q(ermission)f(from)f(the)g(previous)h(publisher)h(that)165
+938 y(added)d(the)f(old)h(one.)165 1004 y(The)d(author\(s\))e(and)i
+(publisher\(s\))h(of)f(the)g(Do)q(cumen)o(t)f(do)h(not)f(b)o(y)h(this)g
+(License)i(giv)o(e)e(p)q(ermission)165 1059 y(to)i(use)g(their)h(names)
+f(for)f(publicit)o(y)k(for)c(or)h(to)f(assert)h(or)f(imply)j
+(endorsemen)o(t)e(of)g(an)o(y)g(Mo)q(di\014ed)165 1114
+y(V)l(ersion.)100 1180 y(5.)29 b(COMBINING)16 b(DOCUMENTS)165
+1245 y(Y)l(ou)k(ma)o(y)e(com)o(bine)i(the)g(Do)q(cumen)o(t)f(with)h
+(other)f(do)q(cumen)o(ts)g(released)i(under)f(this)g(License,)165
+1300 y(under)g(the)f(terms)g(de\014ned)h(in)g(section)g(4)e(ab)q(o)o(v)
+o(e)h(for)g(mo)q(di\014ed)h(v)o(ersions,)g(pro)o(vided)g(that)e(y)o(ou)
+165 1355 y(include)d(in)e(the)g(com)o(bination)h(all)f(of)f(the)h(In)o
+(v)m(arian)o(t)g(Sections)h(of)e(all)h(of)g(the)f(original)i(do)q
+(cumen)o(ts,)165 1410 y(unmo)q(di\014ed,)h(and)f(list)g(them)f(all)i
+(as)e(In)o(v)m(arian)o(t)g(Sections)i(of)e(y)o(our)f(com)o(bined)j(w)o
+(ork)d(in)i(its)g(license)165 1465 y(notice,)h(and)h(that)e(y)o(ou)h
+(preserv)o(e)g(all)i(their)e(W)l(arran)o(t)o(y)f(Disclaimers.)165
+1530 y(The)h(com)o(bined)i(w)o(ork)d(need)i(only)f(con)o(tain)h(one)f
+(cop)o(y)g(of)g(this)g(License,)i(and)e(m)o(ultiple)i(iden)o(tical)165
+1585 y(In)o(v)m(arian)o(t)g(Sections)g(ma)o(y)e(b)q(e)i(replaced)h
+(with)e(a)g(single)i(cop)o(y)l(.)23 b(If)16 b(there)h(are)f(m)o
+(ultiple)i(In)o(v)m(arian)o(t)165 1640 y(Sections)c(with)g(the)f(same)g
+(name)h(but)f(di\013eren)o(t)h(con)o(ten)o(ts,)f(mak)o(e)g(the)g(title)
+h(of)f(eac)o(h)h(suc)o(h)f(section)165 1695 y(unique)19
+b(b)o(y)d(adding)i(at)f(the)g(end)g(of)g(it,)g(in)h(paren)o(theses,)f
+(the)g(name)g(of)g(the)g(original)h(author)e(or)165 1749
+y(publisher)f(of)d(that)g(section)h(if)g(kno)o(wn,)f(or)g(else)h(a)g
+(unique)h(n)o(um)o(b)q(er.)19 b(Mak)o(e)12 b(the)g(same)h(adjustmen)o
+(t)165 1804 y(to)f(the)g(section)h(titles)g(in)g(the)f(list)h(of)f(In)o
+(v)m(arian)o(t)g(Sections)h(in)g(the)g(license)h(notice)f(of)f(the)g
+(com)o(bined)165 1859 y(w)o(ork.)165 1925 y(In)21 b(the)g(com)o
+(bination,)h(y)o(ou)f(m)o(ust)f(com)o(bine)h(an)o(y)f(sections)i(En)o
+(titled)f(\\History")f(in)h(the)g(v)m(ari-)165 1980 y(ous)16
+b(original)h(do)q(cumen)o(ts,)f(forming)g(one)h(section)f(En)o(titled)h
+(\\History";)f(lik)o(ewise)h(com)o(bine)g(an)o(y)165
+2034 y(sections)f(En)o(titled)h(\\Ac)o(kno)o(wledgemen)o(ts",)f(and)g
+(an)o(y)f(sections)i(En)o(titled)f(\\Dedications".)23
+b(Y)l(ou)165 2089 y(m)o(ust)15 b(delete)h(all)g(sections)g(En)o(titled)
+g(\\Endorsemen)o(ts.")100 2155 y(6.)29 b(COLLECTIONS)17
+b(OF)e(DOCUMENTS)165 2221 y(Y)l(ou)h(ma)o(y)f(mak)o(e)h(a)f(collection)
+j(consisting)f(of)e(the)h(Do)q(cumen)o(t)g(and)g(other)g(do)q(cumen)o
+(ts)g(released)165 2275 y(under)22 b(this)g(License,)i(and)d(replace)h
+(the)f(individual)k(copies)d(of)f(this)g(License)i(in)f(the)f(v)m
+(arious)165 2330 y(do)q(cumen)o(ts)h(with)f(a)g(single)i(cop)o(y)e
+(that)f(is)i(included)i(in)e(the)f(collection,)k(pro)o(vided)d(that)e
+(y)o(ou)165 2385 y(follo)o(w)f(the)f(rules)i(of)e(this)h(License)h(for)
+e(v)o(erbatim)g(cop)o(ying)h(of)f(eac)o(h)h(of)f(the)h(do)q(cumen)o(ts)
+g(in)g(all)165 2440 y(other)c(resp)q(ects.)165 2506 y(Y)l(ou)h(ma)o(y)f
+(extract)g(a)g(single)i(do)q(cumen)o(t)f(from)f(suc)o(h)h(a)g
+(collection,)h(and)f(distribute)h(it)f(individu-)165
+2560 y(ally)i(under)h(this)f(License,)h(pro)o(vided)f(y)o(ou)f(insert)h
+(a)g(cop)o(y)f(of)g(this)h(License)h(in)o(to)f(the)f(extracted)165
+2615 y(do)q(cumen)o(t,)g(and)f(follo)o(w)g(this)h(License)h(in)f(all)h
+(other)d(resp)q(ects)i(regarding)g(v)o(erbatim)f(cop)o(ying)g(of)165
+2670 y(that)e(do)q(cumen)o(t.)p eop
+%%Page: 26 30
+26 29 bop 75 -58 a Fo(26)1299 b(GNU)15 b(Readline)h(Library)100
+149 y(7.)29 b(A)o(GGREGA)l(TION)14 b(WITH)i(INDEPENDENT)e(W)o(ORKS)165
+214 y(A)g(compilation)h(of)f(the)g(Do)q(cumen)o(t)g(or)f(its)i(deriv)m
+(ativ)o(es)g(with)f(other)g(separate)f(and)i(indep)q(enden)o(t)165
+269 y(do)q(cumen)o(ts)i(or)f(w)o(orks,)g(in)h(or)f(on)h(a)f(v)o(olume)h
+(of)f(a)h(storage)e(or)h(distribution)j(medium,)e(is)g(called)165
+324 y(an)e(\\aggregate")e(if)i(the)h(cop)o(yrigh)o(t)e(resulting)i
+(from)f(the)g(compilation)h(is)g(not)e(used)i(to)e(limit)j(the)165
+379 y(legal)d(righ)o(ts)f(of)g(the)g(compilation's)i(users)e(b)q(ey)o
+(ond)h(what)f(the)g(individual)j(w)o(orks)d(p)q(ermit.)20
+b(When)165 433 y(the)14 b(Do)q(cumen)o(t)g(is)g(included)i(an)e
+(aggregate,)e(this)j(License)g(do)q(es)f(not)g(apply)g(to)g(the)g
+(other)f(w)o(orks)165 488 y(in)j(the)f(aggregate)f(whic)o(h)i(are)f
+(not)g(themselv)o(es)h(deriv)m(ativ)o(e)g(w)o(orks)e(of)h(the)g(Do)q
+(cumen)o(t.)165 553 y(If)d(the)f(Co)o(v)o(er)f(T)l(ext)i(requiremen)o
+(t)g(of)f(section)h(3)f(is)h(applicable)h(to)e(these)h(copies)g(of)f
+(the)g(Do)q(cumen)o(t,)165 608 y(then)h(if)f(the)h(Do)q(cumen)o(t)f(is)
+g(less)h(than)f(one)h(half)f(of)g(the)g(en)o(tire)h(aggregate,)e(the)h
+(Do)q(cumen)o(t's)g(Co)o(v)o(er)165 663 y(T)l(exts)i(ma)o(y)g(b)q(e)h
+(placed)g(on)f(co)o(v)o(ers)g(that)f(brac)o(k)o(et)h(the)g(Do)q(cumen)o
+(t)g(within)i(the)e(aggregate,)f(or)h(the)165 717 y(electronic)19
+b(equiv)m(alen)o(t)g(of)e(co)o(v)o(ers)g(if)h(the)g(Do)q(cumen)o(t)f
+(is)h(in)g(electronic)h(form.)27 b(Otherwise)18 b(they)165
+772 y(m)o(ust)d(app)q(ear)g(on)g(prin)o(ted)h(co)o(v)o(ers)f(that)f
+(brac)o(k)o(et)h(the)g(whole)h(aggregate.)100 837 y(8.)29
+b(TRANSLA)l(TION)165 902 y(T)l(ranslation)20 b(is)h(considered)g(a)f
+(kind)h(of)e(mo)q(di\014cation,)j(so)e(y)o(ou)g(ma)o(y)f(distribute)i
+(translations)165 956 y(of)h(the)g(Do)q(cumen)o(t)g(under)h(the)f
+(terms)g(of)g(section)g(4.)41 b(Replacing)23 b(In)o(v)m(arian)o(t)g
+(Sections)g(with)165 1011 y(translations)g(requires)g(sp)q(ecial)i(p)q
+(ermission)f(from)e(their)h(cop)o(yrigh)o(t)f(holders,)j(but)e(y)o(ou)g
+(ma)o(y)165 1066 y(include)15 b(translations)d(of)g(some)g(or)f(all)i
+(In)o(v)m(arian)o(t)g(Sections)g(in)g(addition)h(to)d(the)h(original)i
+(v)o(ersions)165 1121 y(of)h(these)h(In)o(v)m(arian)o(t)g(Sections.)23
+b(Y)l(ou)15 b(ma)o(y)g(include)k(a)c(translation)h(of)f(this)h
+(License,)h(and)f(all)h(the)165 1176 y(license)23 b(notices)e(in)g(the)
+g(Do)q(cumen)o(t,)g(and)g(an)o(y)f(W)l(arran)o(t)o(y)f(Disclaimers,)k
+(pro)o(vided)e(that)f(y)o(ou)165 1230 y(also)g(include)i(the)e
+(original)i(English)f(v)o(ersion)f(of)g(this)g(License)i(and)e(the)g
+(original)h(v)o(ersions)f(of)165 1285 y(those)d(notices)g(and)h
+(disclaimers.)27 b(In)18 b(case)f(of)f(a)h(disagreemen)o(t)g(b)q(et)o
+(w)o(een)h(the)f(translation)g(and)165 1340 y(the)h(original)g(v)o
+(ersion)g(of)f(this)h(License)i(or)d(a)g(notice)h(or)f(disclaimer,)j
+(the)e(original)g(v)o(ersion)g(will)165 1395 y(prev)m(ail.)165
+1460 y(If)d(a)f(section)g(in)i(the)e(Do)q(cumen)o(t)g(is)h(En)o(titled)
+g(\\Ac)o(kno)o(wledgemen)o(ts",)f(\\Dedications",)h(or)e(\\His-)165
+1514 y(tory",)f(the)h(requiremen)o(t)h(\(section)f(4\))g(to)f(Preserv)o
+(e)h(its)h(Title)g(\(section)f(1\))g(will)i(t)o(ypically)f(require)165
+1569 y(c)o(hanging)i(the)f(actual)g(title.)100 1634 y(9.)29
+b(TERMINA)l(TION)165 1699 y(Y)l(ou)15 b(ma)o(y)f(not)h(cop)o(y)l(,)f
+(mo)q(dify)l(,)i(sublicense,)h(or)d(distribute)i(the)f(Do)q(cumen)o(t)g
+(except)h(as)e(expressly)165 1753 y(pro)o(vided)22 b(for)e(under)i
+(this)f(License.)39 b(An)o(y)21 b(other)f(attempt)g(to)g(cop)o(y)l(,)i
+(mo)q(dify)l(,)h(sublicense)g(or)165 1808 y(distribute)d(the)e(Do)q
+(cumen)o(t)g(is)h(v)o(oid,)g(and)f(will)i(automatically)f(terminate)f
+(y)o(our)g(righ)o(ts)g(under)165 1863 y(this)c(License.)22
+b(Ho)o(w)o(ev)o(er,)12 b(parties)i(who)g(ha)o(v)o(e)g(receiv)o(ed)h
+(copies,)f(or)g(righ)o(ts,)f(from)g(y)o(ou)h(under)h(this)165
+1918 y(License)20 b(will)g(not)e(ha)o(v)o(e)g(their)h(licenses)h
+(terminated)f(so)f(long)g(as)g(suc)o(h)h(parties)g(remain)f(in)i(full)
+165 1973 y(compliance.)77 2037 y(10.)29 b(FUTURE)14 b(REVISIONS)j(OF)e
+(THIS)h(LICENSE)165 2102 y(The)21 b(F)l(ree)g(Soft)o(w)o(are)e(F)l
+(oundation)i(ma)o(y)f(publish)j(new,)f(revised)g(v)o(ersions)f(of)f
+(the)h(GNU)g(F)l(ree)165 2157 y(Do)q(cumen)o(tation)16
+b(License)i(from)d(time)h(to)g(time.)22 b(Suc)o(h)17
+b(new)f(v)o(ersions)h(will)g(b)q(e)g(similar)g(in)g(spirit)165
+2212 y(to)g(the)g(presen)o(t)g(v)o(ersion,)h(but)f(ma)o(y)f(di\013er)i
+(in)g(detail)g(to)f(address)g(new)g(problems)h(or)f(concerns.)165
+2266 y(See)f Fn(http://www.gnu.org/copyle)o(ft/)p Fo(.)165
+2331 y(Eac)o(h)f(v)o(ersion)f(of)h(the)g(License)h(is)f(giv)o(en)g(a)g
+(distinguishing)i(v)o(ersion)e(n)o(um)o(b)q(er.)20 b(If)15
+b(the)g(Do)q(cumen)o(t)165 2386 y(sp)q(eci\014es)24 b(that)e(a)h
+(particular)g(n)o(um)o(b)q(ered)h(v)o(ersion)e(of)h(this)g(License)h
+(\\or)e(an)o(y)g(later)h(v)o(ersion")165 2441 y(applies)18
+b(to)d(it,)i(y)o(ou)f(ha)o(v)o(e)g(the)g(option)g(of)g(follo)o(wing)h
+(the)f(terms)g(and)g(conditions)i(either)f(of)f(that)165
+2496 y(sp)q(eci\014ed)21 b(v)o(ersion)e(or)g(of)f(an)o(y)h(later)g(v)o
+(ersion)g(that)f(has)h(b)q(een)h(published)i(\(not)c(as)g(a)h(draft\))f
+(b)o(y)165 2550 y(the)e(F)l(ree)h(Soft)o(w)o(are)e(F)l(oundation.)23
+b(If)17 b(the)g(Do)q(cumen)o(t)f(do)q(es)g(not)g(sp)q(ecify)i(a)e(v)o
+(ersion)h(n)o(um)o(b)q(er)f(of)165 2605 y(this)i(License,)h(y)o(ou)e
+(ma)o(y)f(c)o(ho)q(ose)i(an)o(y)e(v)o(ersion)i(ev)o(er)f(published)j
+(\(not)c(as)h(a)g(draft\))f(b)o(y)i(the)f(F)l(ree)165
+2660 y(Soft)o(w)o(are)d(F)l(oundation.)p eop
+%%Page: 27 31
+27 30 bop 75 -58 a Fo(App)q(endix)17 b(A:)e(Cop)o(ying)g(This)h(Man)o
+(ual)1053 b(27)75 149 y Fc(A.1.1)30 b(ADDENDUM:)22 b(Ho)n(w)f(to)f(use)
+h(this)f(License)h(for)f(y)n(our)h(do)r(cumen)n(ts)137
+271 y Fo(T)l(o)14 b(use)g(this)g(License)h(in)g(a)e(do)q(cumen)o(t)h(y)
+o(ou)f(ha)o(v)o(e)h(written,)f(include)j(a)d(cop)o(y)h(of)f(the)h
+(License)h(in)g(the)75 326 y(do)q(cumen)o(t)h(and)f(put)g(the)h(follo)o
+(wing)g(cop)o(yrigh)o(t)e(and)i(license)h(notices)f(just)f(after)f(the)
+h(title)h(page:)234 382 y Fb(Copyright)g(\(C\))38 b Fa(year)k(your)19
+b(name)p Fb(.)234 426 y(Permission)d(is)j(granted)e(to)i(copy,)e
+(distribute)f(and/or)h(modify)h(this)g(document)234 469
+y(under)g(the)g(terms)g(of)h(the)f(GNU)h(Free)f(Documenta)o(tio)o(n)e
+(License,)h(Version)g(1.2)234 513 y(or)i(any)g(later)e(version)g
+(published)f(by)j(the)g(Free)f(Software)e(Foundation)o(;)234
+557 y(with)i(no)h(Invariant)d(Sections,)g(no)j(Front-Cove)o(r)e(Texts,)
+g(and)h(no)h(Back-Cover)d(Texts.)234 600 y(A)j(copy)g(of)f(the)h
+(license)e(is)i(included)d(in)j(the)f(section)f(entitled)g(``GNU)234
+644 y(Free)h(Documentat)o(ion)e(License'')o(.)137 705
+y Fo(If)k(y)o(ou)g(ha)o(v)o(e)g(In)o(v)m(arian)o(t)g(Sections,)h(F)l
+(ron)o(t-Co)o(v)o(er)e(T)l(exts)g(and)h(Bac)o(k-Co)o(v)o(er)f(T)l
+(exts,)i(replace)g(the)75 760 y(\\with...T)l(exts.")d(line)f(with)f
+(this:)273 816 y Fb(with)j(the)f(Invariant)e(Sections)h(being)g
+Fa(list)h(their)g(titles)p Fb(,)f(with)273 860 y(the)i(Front-Cov)o(er)d
+(Texts)i(being)g Fa(list)p Fb(,)f(and)i(with)f(the)g(Back-Cover)e
+(Texts)273 903 y(being)i Fa(list)p Fb(.)137 964 y Fo(If)g(y)o(ou)f(ha)o
+(v)o(e)h(In)o(v)m(arian)o(t)g(Sections)g(without)g(Co)o(v)o(er)e(T)l
+(exts,)i(or)f(some)g(other)g(com)o(bination)i(of)e(the)75
+1019 y(three,)e(merge)g(those)g(t)o(w)o(o)f(alternativ)o(es)h(to)g
+(suit)g(the)g(situation.)137 1086 y(If)d(y)o(our)g(do)q(cumen)o(t)g
+(con)o(tains)g(non)o(trivial)h(examples)g(of)e(program)g(co)q(de,)i(w)o
+(e)f(recommend)g(releasing)75 1141 y(these)22 b(examples)g(in)g
+(parallel)i(under)e(y)o(our)f(c)o(hoice)h(of)f(free)h(soft)o(w)o(are)e
+(license,)k(suc)o(h)e(as)g(the)f(GNU)75 1196 y(General)16
+b(Public)h(License,)f(to)f(p)q(ermit)h(their)f(use)h(in)g(free)f(soft)o
+(w)o(are.)p eop
+%%Page: 28 32
+28 31 bop 75 -58 a Fo(28)1299 b(GNU)15 b(Readline)h(Library)p
+eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/lib/readline/doc/rluserman.toc b/lib/readline/doc/rluserman.toc
new file mode 100644
index 00000000..e415083f
--- /dev/null
+++ b/lib/readline/doc/rluserman.toc
@@ -0,0 +1,25 @@
+\chapentry{Command Line Editing}{1}{1}
+\secentry{Introduction to Line Editing}{1}{1}{1}
+\secentry{Readline Interaction}{1}{2}{1}
+\subsecentry{Readline Bare Essentials}{1}{2}{1}{1}
+\subsecentry{Readline Movement Commands}{1}{2}{2}{2}
+\subsecentry{Readline Killing Commands}{1}{2}{3}{2}
+\subsecentry{Readline Arguments}{1}{2}{4}{3}
+\subsecentry{Searching for Commands in the History}{1}{2}{5}{3}
+\secentry{Readline Init File}{1}{3}{4}
+\subsecentry{Readline Init File Syntax}{1}{3}{1}{4}
+\subsecentry{Conditional Init Constructs}{1}{3}{2}{9}
+\subsecentry{Sample Init File}{1}{3}{3}{10}
+\secentry{Bindable Readline Commands}{1}{4}{13}
+\subsecentry{Commands For Moving}{1}{4}{1}{13}
+\subsecentry{Commands For Manipulating The History}{1}{4}{2}{13}
+\subsecentry{Commands For Changing Text}{1}{4}{3}{14}
+\subsecentry{Killing And Yanking}{1}{4}{4}{16}
+\subsecentry{Specifying Numeric Arguments}{1}{4}{5}{17}
+\subsecentry{Letting Readline Type For You}{1}{4}{6}{17}
+\subsecentry{Keyboard Macros}{1}{4}{7}{17}
+\subsecentry{Some Miscellaneous Commands}{1}{4}{8}{18}
+\secentry{Readline vi Mode}{1}{5}{19}
+\appendixentry{Copying This Manual}{A}{21}
+\secentry{GNU Free Documentation License}{A}{1}{21}
+\subsecentry{ADDENDUM: How to use this License for your documents}{A}{1}{1}{27}
diff --git a/lib/readline/doc/rluserman.tp b/lib/readline/doc/rluserman.tp
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/readline/doc/rluserman.tp
diff --git a/lib/readline/doc/rluserman.vr b/lib/readline/doc/rluserman.vr
new file mode 100644
index 00000000..75be1936
--- /dev/null
+++ b/lib/readline/doc/rluserman.vr
@@ -0,0 +1,22 @@
+\entry{bell-style}{5}{\code {bell-style}}
+\entry{comment-begin}{5}{\code {comment-begin}}
+\entry{completion-query-items}{5}{\code {completion-query-items}}
+\entry{convert-meta}{5}{\code {convert-meta}}
+\entry{disable-completion}{5}{\code {disable-completion}}
+\entry{editing-mode}{5}{\code {editing-mode}}
+\entry{enable-keypad}{5}{\code {enable-keypad}}
+\entry{expand-tilde}{5}{\code {expand-tilde}}
+\entry{history-preserve-point}{5}{\code {history-preserve-point}}
+\entry{horizontal-scroll-mode}{6}{\code {horizontal-scroll-mode}}
+\entry{input-meta}{6}{\code {input-meta}}
+\entry{meta-flag}{6}{\code {meta-flag}}
+\entry{isearch-terminators}{6}{\code {isearch-terminators}}
+\entry{keymap}{6}{\code {keymap}}
+\entry{mark-modified-lines}{6}{\code {mark-modified-lines}}
+\entry{mark-symlinked-directories}{6}{\code {mark-symlinked-directories}}
+\entry{match-hidden-files}{6}{\code {match-hidden-files}}
+\entry{output-meta}{7}{\code {output-meta}}
+\entry{page-completions}{7}{\code {page-completions}}
+\entry{show-all-if-ambiguous}{7}{\code {show-all-if-ambiguous}}
+\entry{show-all-if-unmodified}{7}{\code {show-all-if-unmodified}}
+\entry{visible-stats}{7}{\code {visible-stats}}
diff --git a/lib/readline/doc/rluserman.vrs b/lib/readline/doc/rluserman.vrs
new file mode 100644
index 00000000..01f471e6
--- /dev/null
+++ b/lib/readline/doc/rluserman.vrs
@@ -0,0 +1,34 @@
+\initial {B}
+\entry {\code {bell-style}}{5}
+\initial {C}
+\entry {\code {comment-begin}}{5}
+\entry {\code {completion-query-items}}{5}
+\entry {\code {convert-meta}}{5}
+\initial {D}
+\entry {\code {disable-completion}}{5}
+\initial {E}
+\entry {\code {editing-mode}}{5}
+\entry {\code {enable-keypad}}{5}
+\entry {\code {expand-tilde}}{5}
+\initial {H}
+\entry {\code {history-preserve-point}}{5}
+\entry {\code {horizontal-scroll-mode}}{6}
+\initial {I}
+\entry {\code {input-meta}}{6}
+\entry {\code {isearch-terminators}}{6}
+\initial {K}
+\entry {\code {keymap}}{6}
+\initial {M}
+\entry {\code {mark-modified-lines}}{6}
+\entry {\code {mark-symlinked-directories}}{6}
+\entry {\code {match-hidden-files}}{6}
+\entry {\code {meta-flag}}{6}
+\initial {O}
+\entry {\code {output-meta}}{7}
+\initial {P}
+\entry {\code {page-completions}}{7}
+\initial {S}
+\entry {\code {show-all-if-ambiguous}}{7}
+\entry {\code {show-all-if-unmodified}}{7}
+\initial {V}
+\entry {\code {visible-stats}}{7}
diff --git a/lib/readline/doc/texi2dvi b/lib/readline/doc/texi2dvi
new file mode 120000
index 00000000..113d526d
--- /dev/null
+++ b/lib/readline/doc/texi2dvi
@@ -0,0 +1 @@
+../../../support/texi2dvi \ No newline at end of file
diff --git a/lib/readline/doc/texi2html b/lib/readline/doc/texi2html
new file mode 120000
index 00000000..93433e50
--- /dev/null
+++ b/lib/readline/doc/texi2html
@@ -0,0 +1 @@
+../../../support/texi2html \ No newline at end of file
diff --git a/lib/readline/doc/texinfo.tex b/lib/readline/doc/texinfo.tex
new file mode 120000
index 00000000..234f085a
--- /dev/null
+++ b/lib/readline/doc/texinfo.tex
@@ -0,0 +1 @@
+../../../doc/texinfo.tex \ No newline at end of file
diff --git a/lib/readline/doc/version.texi b/lib/readline/doc/version.texi
index 20737ab0..dc0c587e 100644
--- a/lib/readline/doc/version.texi
+++ b/lib/readline/doc/version.texi
@@ -4,7 +4,7 @@ Copyright (C) 1988-2003 Free Software Foundation, Inc.
@set EDITION 5.0
@set VERSION 5.0
-@set UPDATED 19 September 2003
-@set UPDATED-MONTH September 2003
+@set UPDATED 11 October 2003
+@set UPDATED-MONTH October 2003
-@set LASTCHANGE Thu Sep 18 09:55:25 EDT 2003
+@set LASTCHANGE Sat Oct 11 23:48:11 EDT 2003
diff --git a/lib/readline/histexpand.c b/lib/readline/histexpand.c
index 584198a7..aed5c722 100644
--- a/lib/readline/histexpand.c
+++ b/lib/readline/histexpand.c
@@ -1283,7 +1283,10 @@ get_history_word_specifier (spec, from, caller_index)
if (spec[i] == '-')
first = 0;
else if (spec[i] == '^')
- first = 1;
+ {
+ first = 1;
+ i++;
+ }
else if (_rl_digit_p (spec[i]) && expecting_word_spec)
{
for (first = 0; _rl_digit_p (spec[i]); i++)
diff --git a/lib/readline/posixdir.h b/lib/readline/posixdir.h
index 505e2795..8b163845 100644..120000
--- a/lib/readline/posixdir.h
+++ b/lib/readline/posixdir.h
@@ -1,57 +1 @@
-/* posixdir.h -- Posix directory reading includes and defines. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Bash; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* This file should be included instead of <dirent.h> or <sys/dir.h>. */
-
-#if !defined (_POSIXDIR_H_)
-#define _POSIXDIR_H_
-
-#if defined (HAVE_DIRENT_H)
-# include <dirent.h>
-# define D_NAMLEN(d) (strlen ((d)->d_name))
-#else
-# if defined (HAVE_SYS_NDIR_H)
-# include <sys/ndir.h>
-# endif
-# if defined (HAVE_SYS_DIR_H)
-# include <sys/dir.h>
-# endif
-# if defined (HAVE_NDIR_H)
-# include <ndir.h>
-# endif
-# if !defined (dirent)
-# define dirent direct
-# endif /* !dirent */
-# define D_NAMLEN(d) ((d)->d_namlen)
-#endif /* !HAVE_DIRENT_H */
-
-#if defined (STRUCT_DIRENT_HAS_D_INO) && !defined (STRUCT_DIRENT_HAS_D_FILENO)
-# define d_fileno d_ino
-#endif
-
-#if defined (_POSIX_SOURCE) && (!defined (STRUCT_DIRENT_HAS_D_INO) || defined (BROKEN_DIRENT_D_INO))
-/* Posix does not require that the d_ino field be present, and some
- systems do not provide it. */
-# define REAL_DIR_ENTRY(dp) 1
-#else
-# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0)
-#endif /* _POSIX_SOURCE */
-
-#endif /* !_POSIXDIR_H_ */
+../../include/posixdir.h \ No newline at end of file
diff --git a/lib/readline/posixjmp.h b/lib/readline/posixjmp.h
index b52aa003..b4d3ee74 100644..120000
--- a/lib/readline/posixjmp.h
+++ b/lib/readline/posixjmp.h
@@ -1,40 +1 @@
-/* posixjmp.h -- wrapper for setjmp.h with changes for POSIX systems. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Bash; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#ifndef _POSIXJMP_H_
-#define _POSIXJMP_H_
-
-#include <setjmp.h>
-
-/* This *must* be included *after* config.h */
-
-#if defined (HAVE_POSIX_SIGSETJMP)
-# define procenv_t sigjmp_buf
-# if !defined (__OPENNT)
-# undef setjmp
-# define setjmp(x) sigsetjmp((x), 1)
-# undef longjmp
-# define longjmp(x, n) siglongjmp((x), (n))
-# endif /* !__OPENNT */
-#else
-# define procenv_t jmp_buf
-#endif
-
-#endif /* _POSIXJMP_H_ */
+../../include/posixjmp.h \ No newline at end of file
diff --git a/lib/readline/posixstat.h b/lib/readline/posixstat.h
index c93b5288..c6164b79 100644..120000
--- a/lib/readline/posixstat.h
+++ b/lib/readline/posixstat.h
@@ -1,142 +1 @@
-/* posixstat.h -- Posix stat(2) definitions for systems that
- don't have them. */
-
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
- Bash is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- Bash is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Bash; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-/* This file should be included instead of <sys/stat.h>.
- It relies on the local sys/stat.h to work though. */
-#if !defined (_POSIXSTAT_H_)
-#define _POSIXSTAT_H_
-
-#include <sys/stat.h>
-
-#if defined (STAT_MACROS_BROKEN)
-# undef S_ISBLK
-# undef S_ISCHR
-# undef S_ISDIR
-# undef S_ISFIFO
-# undef S_ISREG
-# undef S_ISLNK
-#endif /* STAT_MACROS_BROKEN */
-
-/* These are guaranteed to work only on isc386 */
-#if !defined (S_IFDIR) && !defined (S_ISDIR)
-# define S_IFDIR 0040000
-#endif /* !S_IFDIR && !S_ISDIR */
-#if !defined (S_IFMT)
-# define S_IFMT 0170000
-#endif /* !S_IFMT */
-
-/* Posix 1003.1 5.6.1.1 <sys/stat.h> file types */
-
-/* Some Posix-wannabe systems define _S_IF* macros instead of S_IF*, but
- do not provide the S_IS* macros that Posix requires. */
-
-#if defined (_S_IFMT) && !defined (S_IFMT)
-#define S_IFMT _S_IFMT
-#endif
-#if defined (_S_IFIFO) && !defined (S_IFIFO)
-#define S_IFIFO _S_IFIFO
-#endif
-#if defined (_S_IFCHR) && !defined (S_IFCHR)
-#define S_IFCHR _S_IFCHR
-#endif
-#if defined (_S_IFDIR) && !defined (S_IFDIR)
-#define S_IFDIR _S_IFDIR
-#endif
-#if defined (_S_IFBLK) && !defined (S_IFBLK)
-#define S_IFBLK _S_IFBLK
-#endif
-#if defined (_S_IFREG) && !defined (S_IFREG)
-#define S_IFREG _S_IFREG
-#endif
-#if defined (_S_IFLNK) && !defined (S_IFLNK)
-#define S_IFLNK _S_IFLNK
-#endif
-#if defined (_S_IFSOCK) && !defined (S_IFSOCK)
-#define S_IFSOCK _S_IFSOCK
-#endif
-
-/* Test for each symbol individually and define the ones necessary (some
- systems claiming Posix compatibility define some but not all). */
-
-#if defined (S_IFBLK) && !defined (S_ISBLK)
-#define S_ISBLK(m) (((m)&S_IFMT) == S_IFBLK) /* block device */
-#endif
-
-#if defined (S_IFCHR) && !defined (S_ISCHR)
-#define S_ISCHR(m) (((m)&S_IFMT) == S_IFCHR) /* character device */
-#endif
-
-#if defined (S_IFDIR) && !defined (S_ISDIR)
-#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) /* directory */
-#endif
-
-#if defined (S_IFREG) && !defined (S_ISREG)
-#define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) /* file */
-#endif
-
-#if defined (S_IFIFO) && !defined (S_ISFIFO)
-#define S_ISFIFO(m) (((m)&S_IFMT) == S_IFIFO) /* fifo - named pipe */
-#endif
-
-#if defined (S_IFLNK) && !defined (S_ISLNK)
-#define S_ISLNK(m) (((m)&S_IFMT) == S_IFLNK) /* symbolic link */
-#endif
-
-#if defined (S_IFSOCK) && !defined (S_ISSOCK)
-#define S_ISSOCK(m) (((m)&S_IFMT) == S_IFSOCK) /* socket */
-#endif
-
-/*
- * POSIX 1003.1 5.6.1.2 <sys/stat.h> File Modes
- */
-
-#if !defined (S_IRWXU)
-# if !defined (S_IREAD)
-# define S_IREAD 00400
-# define S_IWRITE 00200
-# define S_IEXEC 00100
-# endif /* S_IREAD */
-
-# if !defined (S_IRUSR)
-# define S_IRUSR S_IREAD /* read, owner */
-# define S_IWUSR S_IWRITE /* write, owner */
-# define S_IXUSR S_IEXEC /* execute, owner */
-
-# define S_IRGRP (S_IREAD >> 3) /* read, group */
-# define S_IWGRP (S_IWRITE >> 3) /* write, group */
-# define S_IXGRP (S_IEXEC >> 3) /* execute, group */
-
-# define S_IROTH (S_IREAD >> 6) /* read, other */
-# define S_IWOTH (S_IWRITE >> 6) /* write, other */
-# define S_IXOTH (S_IEXEC >> 6) /* execute, other */
-# endif /* !S_IRUSR */
-
-# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
-# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
-# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
-#endif /* !S_IRWXU */
-
-/* These are non-standard, but are used in builtins.c$symbolic_umask() */
-#define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH)
-#define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH)
-#define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
-
-#endif /* _POSIXSTAT_H_ */
+../../include/posixstat.h \ No newline at end of file
diff --git a/lib/readline/readline.h b/lib/readline/readline.h
index 8bb08508..82a7fe37 100644
--- a/lib/readline/readline.h
+++ b/lib/readline/readline.h
@@ -696,6 +696,11 @@ extern int rl_attempted_completion_over;
functions. */
extern int rl_completion_type;
+/* 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. */
+extern int rl_completion_query_items;
+
/* Character appended to completed words when at the end of the line. The
default is a space. Nothing is added if this is '\0'. */
extern int rl_completion_append_character;
@@ -704,10 +709,18 @@ extern int rl_completion_append_character;
rl_completion_append_character will not be appended. */
extern int rl_completion_suppress_append;
-/* 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. */
-extern int rl_completion_query_items;
+/* Set to any quote character readline thinks it finds before any application
+ completion function is called. */
+extern int rl_completion_quote_character;
+
+/* Set to a non-zero value if readline found quoting anywhere in the word to
+ be completed; set before any application completion function is called. */
+extern int rl_completion_found_quote;
+
+/* If non-zero, the completion functions don't append any closing quote.
+ This is set to 0 by rl_complete_internal and may be changed by an
+ application-specific completion function. */
+extern int rl_completion_suppress_quote;
/* If non-zero, a slash will be appended to completed filenames that are
symbolic links to directory names, subject to the value of the
diff --git a/lib/readline/savestring.c b/lib/readline/savestring.c
index c7ebeb1e..820428d8 100644
--- a/lib/readline/savestring.c
+++ b/lib/readline/savestring.c
@@ -1,6 +1,6 @@
/* savestring.c */
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998,2003 Free Software Foundation, Inc.
This file is part of the GNU Readline Library, a library for
reading lines of text with interactive input and history editing.
@@ -19,6 +19,7 @@
is generally kept in a file called COPYING or LICENSE. If you do not
have a copy of the license, write to the Free Software Foundation,
59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+#define READLINE_LIBRARY
#include <config.h>
#ifdef HAVE_STRING_H
diff --git a/lib/readline/shell.c b/lib/readline/shell.c
index ad27cc14..a07e2b96 100644
--- a/lib/readline/shell.c
+++ b/lib/readline/shell.c
@@ -126,6 +126,7 @@ sh_set_lines_and_columns (lines, cols)
b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("LINES=") + 1);
sprintf (b, "LINES=%d", lines);
putenv (b);
+
b = (char *)xmalloc (INT_STRLEN_BOUND (int) + sizeof ("COLUMNS=") + 1);
sprintf (b, "COLUMNS=%d", cols);
putenv (b);
@@ -134,9 +135,12 @@ sh_set_lines_and_columns (lines, cols)
b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1);
sprintf (b, "%d", lines);
setenv ("LINES", b, 1);
+ free (b);
+
b = (char *)xmalloc (INT_STRLEN_BOUND (int) + 1);
sprintf (b, "%d", cols);
setenv ("COLUMNS", b, 1);
+ free (b);
# endif /* HAVE_SETENV */
#endif /* !HAVE_PUTENV */
}
diff --git a/lib/readline/tilde.c b/lib/readline/tilde.c
index 154f7f81..439ceede 100644..120000
--- a/lib/readline/tilde.c
+++ b/lib/readline/tilde.c
@@ -1,458 +1 @@
-/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
-
-/* Copyright (C) 1988,1989 Free Software Foundation, Inc.
-
- This file is part of GNU Readline, a library for reading lines
- of text with interactive input and history editing.
-
- Readline is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 2, or (at your option) any
- later version.
-
- Readline is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Readline; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if defined (HAVE_CONFIG_H)
-# include <config.h>
-#endif
-
-#if defined (HAVE_UNISTD_H)
-# ifdef _MINIX
-# include <sys/types.h>
-# endif
-# include <unistd.h>
-#endif
-
-#if defined (HAVE_STRING_H)
-# include <string.h>
-#else /* !HAVE_STRING_H */
-# include <strings.h>
-#endif /* !HAVE_STRING_H */
-
-#if defined (HAVE_STDLIB_H)
-# include <stdlib.h>
-#else
-# include "ansi_stdlib.h"
-#endif /* HAVE_STDLIB_H */
-
-#include <sys/types.h>
-#include <pwd.h>
-
-#include "tilde.h"
-
-#if defined (TEST) || defined (STATIC_MALLOC)
-static void *xmalloc (), *xrealloc ();
-#else
-# include "xmalloc.h"
-#endif /* TEST || STATIC_MALLOC */
-
-#if !defined (HAVE_GETPW_DECLS)
-extern struct passwd *getpwuid PARAMS((uid_t));
-extern struct passwd *getpwnam PARAMS((const char *));
-#endif /* !HAVE_GETPW_DECLS */
-
-#if !defined (savestring)
-#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x))
-#endif /* !savestring */
-
-#if !defined (NULL)
-# if defined (__STDC__)
-# define NULL ((void *) 0)
-# else
-# define NULL 0x0
-# endif /* !__STDC__ */
-#endif /* !NULL */
-
-/* If being compiled as part of bash, these will be satisfied from
- variables.o. If being compiled as part of readline, they will
- be satisfied from shell.o. */
-extern char *sh_get_home_dir PARAMS((void));
-extern char *sh_get_env_value PARAMS((const char *));
-
-/* The default value of tilde_additional_prefixes. This is set to
- whitespace preceding a tilde so that simple programs which do not
- perform any word separation get desired behaviour. */
-static const char *default_prefixes[] =
- { " ~", "\t~", (const char *)NULL };
-
-/* The default value of tilde_additional_suffixes. This is set to
- whitespace or newline so that simple programs which do not
- perform any word separation get desired behaviour. */
-static const char *default_suffixes[] =
- { " ", "\n", (const char *)NULL };
-
-/* If non-null, this contains the address of a function that the application
- wants called before trying the standard tilde expansions. The function
- is called with the text sans tilde, and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if the expansion fails. */
-tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *)NULL;
-
-/* If non-null, this contains the address of a function to call if the
- standard meaning for expanding a tilde fails. The function is called
- with the text (sans tilde, as in "foo"), and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if there is no expansion. */
-tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *)NULL;
-
-/* When non-null, this is a NULL terminated array of strings which
- are duplicates for a tilde prefix. Bash uses this to expand
- `=~' and `:~'. */
-char **tilde_additional_prefixes = (char **)default_prefixes;
-
-/* When non-null, this is a NULL terminated array of strings which match
- the end of a username, instead of just "/". Bash sets this to
- `:' and `=~'. */
-char **tilde_additional_suffixes = (char **)default_suffixes;
-
-static int tilde_find_prefix PARAMS((const char *, int *));
-static int tilde_find_suffix PARAMS((const char *));
-static char *isolate_tilde_prefix PARAMS((const char *, int *));
-static char *glue_prefix_and_suffix PARAMS((char *, const char *, int));
-
-/* Find the start of a tilde expansion in STRING, and return the index of
- the tilde which starts the expansion. Place the length of the text
- which identified this tilde starter in LEN, excluding the tilde itself. */
-static int
-tilde_find_prefix (string, len)
- const char *string;
- int *len;
-{
- register int i, j, string_len;
- register char **prefixes;
-
- prefixes = tilde_additional_prefixes;
-
- string_len = strlen (string);
- *len = 0;
-
- if (*string == '\0' || *string == '~')
- return (0);
-
- if (prefixes)
- {
- for (i = 0; i < string_len; i++)
- {
- for (j = 0; prefixes[j]; j++)
- {
- if (strncmp (string + i, prefixes[j], strlen (prefixes[j])) == 0)
- {
- *len = strlen (prefixes[j]) - 1;
- return (i + *len);
- }
- }
- }
- }
- return (string_len);
-}
-
-/* Find the end of a tilde expansion in STRING, and return the index of
- the character which ends the tilde definition. */
-static int
-tilde_find_suffix (string)
- const char *string;
-{
- register int i, j, string_len;
- register char **suffixes;
-
- suffixes = tilde_additional_suffixes;
- string_len = strlen (string);
-
- for (i = 0; i < string_len; i++)
- {
-#if defined (__MSDOS__)
- if (string[i] == '/' || string[i] == '\\' /* || !string[i] */)
-#else
- if (string[i] == '/' /* || !string[i] */)
-#endif
- break;
-
- for (j = 0; suffixes && suffixes[j]; j++)
- {
- if (strncmp (string + i, suffixes[j], strlen (suffixes[j])) == 0)
- return (i);
- }
- }
- return (i);
-}
-
-/* Return a new string which is the result of tilde expanding STRING. */
-char *
-tilde_expand (string)
- const char *string;
-{
- char *result;
- int result_size, result_index;
-
- result_index = result_size = 0;
- if (result = strchr (string, '~'))
- result = (char *)xmalloc (result_size = (strlen (string) + 16));
- else
- result = (char *)xmalloc (result_size = (strlen (string) + 1));
-
- /* Scan through STRING expanding tildes as we come to them. */
- while (1)
- {
- register int start, end;
- char *tilde_word, *expansion;
- int len;
-
- /* Make START point to the tilde which starts the expansion. */
- start = tilde_find_prefix (string, &len);
-
- /* Copy the skipped text into the result. */
- if ((result_index + start + 1) > result_size)
- result = (char *)xrealloc (result, 1 + (result_size += (start + 20)));
-
- strncpy (result + result_index, string, start);
- result_index += start;
-
- /* Advance STRING to the starting tilde. */
- string += start;
-
- /* Make END be the index of one after the last character of the
- username. */
- end = tilde_find_suffix (string);
-
- /* If both START and END are zero, we are all done. */
- if (!start && !end)
- break;
-
- /* Expand the entire tilde word, and copy it into RESULT. */
- tilde_word = (char *)xmalloc (1 + end);
- strncpy (tilde_word, string, end);
- tilde_word[end] = '\0';
- string += end;
-
- expansion = tilde_expand_word (tilde_word);
- free (tilde_word);
-
- len = strlen (expansion);
-#ifdef __CYGWIN__
- /* Fix for Cygwin to prevent ~user/xxx from expanding to //xxx when
- $HOME for `user' is /. On cygwin, // denotes a network drive. */
- if (len > 1 || *expansion != '/' || *string != '/')
-#endif
- {
- if ((result_index + len + 1) > result_size)
- result = (char *)xrealloc (result, 1 + (result_size += (len + 20)));
-
- strcpy (result + result_index, expansion);
- result_index += len;
- }
- free (expansion);
- }
-
- result[result_index] = '\0';
-
- return (result);
-}
-
-/* Take FNAME and return the tilde prefix we want expanded. If LENP is
- non-null, the index of the end of the prefix into FNAME is returned in
- the location it points to. */
-static char *
-isolate_tilde_prefix (fname, lenp)
- const char *fname;
- int *lenp;
-{
- char *ret;
- int i;
-
- ret = (char *)xmalloc (strlen (fname));
-#if defined (__MSDOS__)
- for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++)
-#else
- for (i = 1; fname[i] && fname[i] != '/'; i++)
-#endif
- ret[i - 1] = fname[i];
- ret[i - 1] = '\0';
- if (lenp)
- *lenp = i;
- return ret;
-}
-
-/* Return a string that is PREFIX concatenated with SUFFIX starting at
- SUFFIND. */
-static char *
-glue_prefix_and_suffix (prefix, suffix, suffind)
- char *prefix;
- const char *suffix;
- int suffind;
-{
- char *ret;
- int plen, slen;
-
- plen = (prefix && *prefix) ? strlen (prefix) : 0;
- slen = strlen (suffix + suffind);
- ret = (char *)xmalloc (plen + slen + 1);
- if (plen)
- strcpy (ret, prefix);
- strcpy (ret + plen, suffix + suffind);
- return ret;
-}
-
-/* Do the work of tilde expansion on FILENAME. FILENAME starts with a
- tilde. If there is no expansion, call tilde_expansion_failure_hook.
- This always returns a newly-allocated string, never static storage. */
-char *
-tilde_expand_word (filename)
- const char *filename;
-{
- char *dirname, *expansion, *username;
- int user_len;
- struct passwd *user_entry;
-
- if (filename == 0)
- return ((char *)NULL);
-
- if (*filename != '~')
- return (savestring (filename));
-
- /* A leading `~/' or a bare `~' is *always* translated to the value of
- $HOME or the home directory of the current user, regardless of any
- preexpansion hook. */
- if (filename[1] == '\0' || filename[1] == '/')
- {
- /* Prefix $HOME to the rest of the string. */
- expansion = sh_get_env_value ("HOME");
-
- /* If there is no HOME variable, look up the directory in
- the password database. */
- if (expansion == 0)
- expansion = sh_get_home_dir ();
-
- return (glue_prefix_and_suffix (expansion, filename, 1));
- }
-
- username = isolate_tilde_prefix (filename, &user_len);
-
- if (tilde_expansion_preexpansion_hook)
- {
- expansion = (*tilde_expansion_preexpansion_hook) (username);
- if (expansion)
- {
- dirname = glue_prefix_and_suffix (expansion, filename, user_len);
- free (username);
- free (expansion);
- return (dirname);
- }
- }
-
- /* No preexpansion hook, or the preexpansion hook failed. Look in the
- password database. */
- dirname = (char *)NULL;
- user_entry = getpwnam (username);
- if (user_entry == 0)
- {
- /* If the calling program has a special syntax for expanding tildes,
- and we couldn't find a standard expansion, then let them try. */
- if (tilde_expansion_failure_hook)
- {
- expansion = (*tilde_expansion_failure_hook) (username);
- if (expansion)
- {
- dirname = glue_prefix_and_suffix (expansion, filename, user_len);
- free (expansion);
- }
- }
- free (username);
- /* If we don't have a failure hook, or if the failure hook did not
- expand the tilde, return a copy of what we were passed. */
- if (dirname == 0)
- dirname = savestring (filename);
- }
- else
- {
- free (username);
- dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len);
- }
-
- endpwent ();
- return (dirname);
-}
-
-
-#if defined (TEST)
-#undef NULL
-#include <stdio.h>
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- char *result, line[512];
- int done = 0;
-
- while (!done)
- {
- printf ("~expand: ");
- fflush (stdout);
-
- if (!gets (line))
- strcpy (line, "done");
-
- if ((strcmp (line, "done") == 0) ||
- (strcmp (line, "quit") == 0) ||
- (strcmp (line, "exit") == 0))
- {
- done = 1;
- break;
- }
-
- result = tilde_expand (line);
- printf (" --> %s\n", result);
- free (result);
- }
- exit (0);
-}
-
-static void memory_error_and_abort ();
-
-static void *
-xmalloc (bytes)
- size_t bytes;
-{
- void *temp = (char *)malloc (bytes);
-
- if (!temp)
- memory_error_and_abort ();
- return (temp);
-}
-
-static void *
-xrealloc (pointer, bytes)
- void *pointer;
- int bytes;
-{
- void *temp;
-
- if (!pointer)
- temp = malloc (bytes);
- else
- temp = realloc (pointer, bytes);
-
- if (!temp)
- memory_error_and_abort ();
-
- return (temp);
-}
-
-static void
-memory_error_and_abort ()
-{
- fprintf (stderr, "readline: out of virtual memory\n");
- abort ();
-}
-
-/*
- * Local variables:
- * compile-command: "gcc -g -DTEST -o tilde tilde.c"
- * end:
- */
-#endif /* TEST */
+../tilde/tilde.c \ No newline at end of file
diff --git a/lib/readline/tilde.h b/lib/readline/tilde.h
index f8182c99..6fea2aea 100644..120000
--- a/lib/readline/tilde.h
+++ b/lib/readline/tilde.h
@@ -1,78 +1 @@
-/* tilde.h: Externally available variables and function in libtilde.a. */
-
-/* Copyright (C) 1992 Free Software Foundation, Inc.
-
- This file contains the Readline Library (the Library), a set of
- routines for providing Emacs style line input to programs that ask
- for it.
-
- The Library is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- The Library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- The GNU General Public License is often shipped with GNU software, and
- is generally kept in a file called COPYING or LICENSE. If you do not
- have a copy of the license, write to the Free Software Foundation,
- 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
-
-#if !defined (_TILDE_H_)
-# define _TILDE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* A function can be defined using prototypes and compile on both ANSI C
- and traditional C compilers with something like this:
- extern char *func PARAMS((char *, char *, int)); */
-
-#if !defined (PARAMS)
-# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
-# define PARAMS(protos) protos
-# else
-# define PARAMS(protos) ()
-# endif
-#endif
-
-typedef char *tilde_hook_func_t PARAMS((char *));
-
-/* If non-null, this contains the address of a function that the application
- wants called before trying the standard tilde expansions. The function
- is called with the text sans tilde, and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if the expansion fails. */
-extern tilde_hook_func_t *tilde_expansion_preexpansion_hook;
-
-/* If non-null, this contains the address of a function to call if the
- standard meaning for expanding a tilde fails. The function is called
- with the text (sans tilde, as in "foo"), and returns a malloc()'ed string
- which is the expansion, or a NULL pointer if there is no expansion. */
-extern tilde_hook_func_t *tilde_expansion_failure_hook;
-
-/* When non-null, this is a NULL terminated array of strings which
- are duplicates for a tilde prefix. Bash uses this to expand
- `=~' and `:~'. */
-extern char **tilde_additional_prefixes;
-
-/* When non-null, this is a NULL terminated array of strings which match
- the end of a username, instead of just "/". Bash sets this to
- `:' and `=~'. */
-extern char **tilde_additional_suffixes;
-
-/* Return a new string which is the result of tilde expanding STRING. */
-extern char *tilde_expand PARAMS((const char *));
-
-/* Do the work of tilde expansion on FILENAME. FILENAME starts with a
- tilde. If there is no expansion, call tilde_expansion_failure_hook. */
-extern char *tilde_expand_word PARAMS((const char *));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _TILDE_H_ */
+../tilde/tilde.h \ No newline at end of file
diff --git a/lib/readline/vi_mode.c b/lib/readline/vi_mode.c
index 1050af6a..0dce6324 100644
--- a/lib/readline/vi_mode.c
+++ b/lib/readline/vi_mode.c
@@ -429,7 +429,8 @@ rl_vi_eWord (count, ignore)
/* Move to the next non-whitespace character (to the start of the
next word). */
- while (++rl_point < rl_end && whitespace (rl_line_buffer[rl_point]));
+ while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
+ rl_point++;
if (rl_point && rl_point < rl_end)
{
diff --git a/lib/readline/vi_mode.c.save b/lib/readline/vi_mode.c.save
new file mode 100644
index 00000000..4b299e16
--- /dev/null
+++ b/lib/readline/vi_mode.c.save
@@ -0,0 +1,1485 @@
+/* vi_mode.c -- A vi emulation mode for Bash.
+ Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */
+
+/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
+
+ This file is part of the GNU Readline Library, a library for
+ reading lines of text with interactive input and history editing.
+
+ The GNU Readline Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2, or
+ (at your option) any later version.
+
+ The GNU Readline Library is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+ of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ The GNU General Public License is often shipped with GNU software, and
+ is generally kept in a file called COPYING or LICENSE. If you do not
+ have a copy of the license, write to the Free Software Foundation,
+ 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+#define READLINE_LIBRARY
+
+/* **************************************************************** */
+/* */
+/* VI Emulation Mode */
+/* */
+/* **************************************************************** */
+#include "rlconf.h"
+
+#if defined (VI_MODE)
+
+#if defined (HAVE_CONFIG_H)
+# include <config.h>
+#endif
+
+#include <sys/types.h>
+
+#if defined (HAVE_STDLIB_H)
+# include <stdlib.h>
+#else
+# include "ansi_stdlib.h"
+#endif /* HAVE_STDLIB_H */
+
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#include <stdio.h>
+
+/* Some standard library routines. */
+#include "rldefs.h"
+#include "rlmbutil.h"
+
+#include "readline.h"
+#include "history.h"
+
+#include "rlprivate.h"
+#include "xmalloc.h"
+
+#ifndef member
+#define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0)
+#endif
+
+/* Non-zero means enter insertion mode. */
+static int _rl_vi_doing_insert;
+
+/* Command keys which do movement for xxx_to commands. */
+static const char *vi_motion = " hl^$0ftFT;,%wbeWBE|";
+
+/* Keymap used for vi replace characters. Created dynamically since
+ rarely used. */
+static Keymap vi_replace_map;
+
+/* The number of characters inserted in the last replace operation. */
+static int vi_replace_count;
+
+/* If non-zero, we have text inserted after a c[motion] command that put
+ us implicitly into insert mode. Some people want this text to be
+ attached to the command so that it is `redoable' with `.'. */
+static int vi_continued_command;
+static char *vi_insert_buffer;
+static int vi_insert_buffer_size;
+
+static int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */
+static int _rl_vi_last_repeat = 1;
+static int _rl_vi_last_arg_sign = 1;
+static int _rl_vi_last_motion;
+#if defined (HANDLE_MULTIBYTE)
+static char _rl_vi_last_search_mbchar[MB_LEN_MAX];
+#else
+static int _rl_vi_last_search_char;
+#endif
+static int _rl_vi_last_replacement;
+
+static int _rl_vi_last_key_before_insert;
+
+static int vi_redoing;
+
+/* Text modification commands. These are the `redoable' commands. */
+static const char *vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~";
+
+/* Arrays for the saved marks. */
+static int vi_mark_chars['z' - 'a' + 1];
+
+static void _rl_vi_stuff_insert PARAMS((int));
+static void _rl_vi_save_insert PARAMS((UNDO_LIST *));
+static int rl_digit_loop1 PARAMS((void));
+
+void
+_rl_vi_initialize_line ()
+{
+ register int i;
+
+ for (i = 0; i < sizeof (vi_mark_chars) / sizeof (int); i++)
+ vi_mark_chars[i] = -1;
+}
+
+void
+_rl_vi_reset_last ()
+{
+ _rl_vi_last_command = 'i';
+ _rl_vi_last_repeat = 1;
+ _rl_vi_last_arg_sign = 1;
+ _rl_vi_last_motion = 0;
+}
+
+void
+_rl_vi_set_last (key, repeat, sign)
+ int key, repeat, sign;
+{
+ _rl_vi_last_command = key;
+ _rl_vi_last_repeat = repeat;
+ _rl_vi_last_arg_sign = sign;
+}
+
+/* Is the command C a VI mode text modification command? */
+int
+_rl_vi_textmod_command (c)
+ int c;
+{
+ return (member (c, vi_textmod));
+}
+
+static void
+_rl_vi_stuff_insert (count)
+ int count;
+{
+ rl_begin_undo_group ();
+ while (count--)
+ rl_insert_text (vi_insert_buffer);
+ rl_end_undo_group ();
+}
+
+/* Bound to `.'. Called from command mode, so we know that we have to
+ redo a text modification command. The default for _rl_vi_last_command
+ puts you back into insert mode. */
+int
+rl_vi_redo (count, c)
+ int count, c;
+{
+ int r;
+
+ if (!rl_explicit_arg)
+ {
+ rl_numeric_arg = _rl_vi_last_repeat;
+ rl_arg_sign = _rl_vi_last_arg_sign;
+ }
+
+ r = 0;
+ vi_redoing = 1;
+ /* If we're redoing an insert with `i', stuff in the inserted text
+ and do not go into insertion mode. */
+ if (_rl_vi_last_command == 'i' && vi_insert_buffer && *vi_insert_buffer)
+ {
+ _rl_vi_stuff_insert (count);
+ /* And back up point over the last character inserted. */
+ if (rl_point > 0)
+ rl_point--;
+ }
+ else
+ r = _rl_dispatch (_rl_vi_last_command, _rl_keymap);
+ vi_redoing = 0;
+
+ return (r);
+}
+
+/* A placeholder for further expansion. */
+int
+rl_vi_undo (count, key)
+ int count, key;
+{
+ return (rl_undo_command (count, key));
+}
+
+/* Yank the nth arg from the previous line into this line at point. */
+int
+rl_vi_yank_arg (count, key)
+ int count, key;
+{
+ /* Readline thinks that the first word on a line is the 0th, while vi
+ thinks the first word on a line is the 1st. Compensate. */
+ if (rl_explicit_arg)
+ rl_yank_nth_arg (count - 1, 0);
+ else
+ rl_yank_nth_arg ('$', 0);
+
+ return (0);
+}
+
+/* With an argument, move back that many history lines, else move to the
+ beginning of history. */
+int
+rl_vi_fetch_history (count, c)
+ int count, c;
+{
+ int wanted;
+
+ /* Giving an argument of n means we want the nth command in the history
+ file. The command number is interpreted the same way that the bash
+ `history' command does it -- that is, giving an argument count of 450
+ to this command would get the command listed as number 450 in the
+ output of `history'. */
+ if (rl_explicit_arg)
+ {
+ wanted = history_base + where_history () - count;
+ if (wanted <= 0)
+ rl_beginning_of_history (0, 0);
+ else
+ rl_get_previous_history (wanted, c);
+ }
+ else
+ rl_beginning_of_history (count, 0);
+ return (0);
+}
+
+/* Search again for the last thing searched for. */
+int
+rl_vi_search_again (count, key)
+ int count, key;
+{
+ switch (key)
+ {
+ case 'n':
+ rl_noninc_reverse_search_again (count, key);
+ break;
+
+ case 'N':
+ rl_noninc_forward_search_again (count, key);
+ break;
+ }
+ return (0);
+}
+
+/* Do a vi style search. */
+int
+rl_vi_search (count, key)
+ int count, key;
+{
+ switch (key)
+ {
+ case '?':
+ rl_noninc_forward_search (count, key);
+ break;
+
+ case '/':
+ rl_noninc_reverse_search (count, key);
+ break;
+
+ default:
+ rl_ding ();
+ break;
+ }
+ return (0);
+}
+
+/* Completion, from vi's point of view. */
+int
+rl_vi_complete (ignore, key)
+ int ignore, key;
+{
+ if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point])))
+ {
+ if (!whitespace (rl_line_buffer[rl_point + 1]))
+ rl_vi_end_word (1, 'E');
+ rl_point++;
+ }
+
+ if (key == '*')
+ rl_complete_internal ('*'); /* Expansion and replacement. */
+ else if (key == '=')
+ rl_complete_internal ('?'); /* List possible completions. */
+ else if (key == '\\')
+ rl_complete_internal (TAB); /* Standard Readline completion. */
+ else
+ rl_complete (0, key);
+
+ if (key == '*' || key == '\\')
+ {
+ _rl_vi_set_last (key, 1, rl_arg_sign);
+ rl_vi_insertion_mode (1, key);
+ }
+ return (0);
+}
+
+/* Tilde expansion for vi mode. */
+int
+rl_vi_tilde_expand (ignore, key)
+ int ignore, key;
+{
+ rl_tilde_expand (0, key);
+ _rl_vi_set_last (key, 1, rl_arg_sign); /* XXX */
+ rl_vi_insertion_mode (1, key);
+ return (0);
+}
+
+/* Previous word in vi mode. */
+int
+rl_vi_prev_word (count, key)
+ int count, key;
+{
+ if (count < 0)
+ return (rl_vi_next_word (-count, key));
+
+ if (rl_point == 0)
+ {
+ rl_ding ();
+ return (0);
+ }
+
+ if (_rl_uppercase_p (key))
+ rl_vi_bWord (count, key);
+ else
+ rl_vi_bword (count, key);
+
+ return (0);
+}
+
+/* Next word in vi mode. */
+int
+rl_vi_next_word (count, key)
+ int count, key;
+{
+ if (count < 0)
+ return (rl_vi_prev_word (-count, key));
+
+ if (rl_point >= (rl_end - 1))
+ {
+ rl_ding ();
+ return (0);
+ }
+
+ if (_rl_uppercase_p (key))
+ rl_vi_fWord (count, key);
+ else
+ rl_vi_fword (count, key);
+ return (0);
+}
+
+/* Move to the end of the ?next? word. */
+int
+rl_vi_end_word (count, key)
+ int count, key;
+{
+ if (count < 0)
+ {
+ rl_ding ();
+ return -1;
+ }
+
+ if (_rl_uppercase_p (key))
+ rl_vi_eWord (count, key);
+ else
+ rl_vi_eword (count, key);
+ return (0);
+}
+
+/* Move forward a word the way that 'W' does. */
+int
+rl_vi_fWord (count, ignore)
+ int count, ignore;
+{
+ while (count-- && rl_point < (rl_end - 1))
+ {
+ /* Skip until whitespace. */
+ while (!whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
+ rl_point++;
+
+ /* Now skip whitespace. */
+ while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
+ rl_point++;
+ }
+ return (0);
+}
+
+int
+rl_vi_bWord (count, ignore)
+ int count, ignore;
+{
+ while (count-- && rl_point > 0)
+ {
+ /* If we are at the start of a word, move back to whitespace so
+ we will go back to the start of the previous word. */
+ if (!whitespace (rl_line_buffer[rl_point]) &&
+ whitespace (rl_line_buffer[rl_point - 1]))
+ rl_point--;
+
+ while (rl_point > 0 && whitespace (rl_line_buffer[rl_point]))
+ rl_point--;
+
+ if (rl_point > 0)
+ {
+ while (--rl_point >= 0 && !whitespace (rl_line_buffer[rl_point]));
+ rl_point++;
+ }
+ }
+ return (0);
+}
+
+int
+rl_vi_eWord (count, ignore)
+ int count, ignore;
+{
+ while (count-- && rl_point < (rl_end - 1))
+ {
+ if (!whitespace (rl_line_buffer[rl_point]))
+ rl_point++;
+
+ /* Move to the next non-whitespace character (to the start of the
+ next word). */
+ while (++rl_point < rl_end && whitespace (rl_line_buffer[rl_point]));
+
+ if (rl_point && rl_point < rl_end)
+ {
+ /* Skip whitespace. */
+ while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
+ rl_point++;
+
+ /* Skip until whitespace. */
+ while (rl_point < rl_end && !whitespace (rl_line_buffer[rl_point]))
+ rl_point++;
+
+ /* Move back to the last character of the word. */
+ rl_point--;
+ }
+ }
+ return (0);
+}
+
+int
+rl_vi_fword (count, ignore)
+ int count, ignore;
+{
+ while (count-- && rl_point < (rl_end - 1))
+ {
+ /* Move to white space (really non-identifer). */
+ if (_rl_isident (rl_line_buffer[rl_point]))
+ {
+ while (_rl_isident (rl_line_buffer[rl_point]) && rl_point < rl_end)
+ rl_point++;
+ }
+ else /* if (!whitespace (rl_line_buffer[rl_point])) */
+ {
+ while (!_rl_isident (rl_line_buffer[rl_point]) &&
+ !whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
+ rl_point++;
+ }
+
+ /* Move past whitespace. */
+ while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
+ rl_point++;
+ }
+ return (0);
+}
+
+int
+rl_vi_bword (count, ignore)
+ int count, ignore;
+{
+ while (count-- && rl_point > 0)
+ {
+ int last_is_ident;
+
+ /* If we are at the start of a word, move back to whitespace
+ so we will go back to the start of the previous word. */
+ if (!whitespace (rl_line_buffer[rl_point]) &&
+ whitespace (rl_line_buffer[rl_point - 1]))
+ rl_point--;
+
+ /* If this character and the previous character are `opposite', move
+ back so we don't get messed up by the rl_point++ down there in
+ the while loop. Without this code, words like `l;' screw up the
+ function. */
+ last_is_ident = _rl_isident (rl_line_buffer[rl_point - 1]);
+ if ((_rl_isident (rl_line_buffer[rl_point]) && !last_is_ident) ||
+ (!_rl_isident (rl_line_buffer[rl_point]) && last_is_ident))
+ rl_point--;
+
+ while (rl_point > 0 && whitespace (rl_line_buffer[rl_point]))
+ rl_point--;
+
+ if (rl_point > 0)
+ {
+ if (_rl_isident (rl_line_buffer[rl_point]))
+ while (--rl_point >= 0 && _rl_isident (rl_line_buffer[rl_point]));
+ else
+ while (--rl_point >= 0 && !_rl_isident (rl_line_buffer[rl_point]) &&
+ !whitespace (rl_line_buffer[rl_point]));
+ rl_point++;
+ }
+ }
+ return (0);
+}
+
+int
+rl_vi_eword (count, ignore)
+ int count, ignore;
+{
+ while (count-- && rl_point < rl_end - 1)
+ {
+ if (!whitespace (rl_line_buffer[rl_point]))
+ rl_point++;
+
+ while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
+ rl_point++;
+
+ if (rl_point < rl_end)
+ {
+ if (_rl_isident (rl_line_buffer[rl_point]))
+ while (++rl_point < rl_end && _rl_isident (rl_line_buffer[rl_point]));
+ else
+ while (++rl_point < rl_end && !_rl_isident (rl_line_buffer[rl_point])
+ && !whitespace (rl_line_buffer[rl_point]));
+ }
+ rl_point--;
+ }
+ return (0);
+}
+
+int
+rl_vi_insert_beg (count, key)
+ int count, key;
+{
+ rl_beg_of_line (1, key);
+ rl_vi_insertion_mode (1, key);
+ return (0);
+}
+
+int
+rl_vi_append_mode (count, key)
+ int count, key;
+{
+ if (rl_point < rl_end)
+ {
+ if (MB_CUR_MAX == 1 || rl_byte_oriented)
+ rl_point++;
+ else
+ {
+ int point = rl_point;
+ rl_forward_char (1, key);
+ if (point == rl_point)
+ rl_point = rl_end;
+ }
+ }
+ rl_vi_insertion_mode (1, key);
+ return (0);
+}
+
+int
+rl_vi_append_eol (count, key)
+ int count, key;
+{
+ rl_end_of_line (1, key);
+ rl_vi_append_mode (1, key);
+ return (0);
+}
+
+/* What to do in the case of C-d. */
+int
+rl_vi_eof_maybe (count, c)
+ int count, c;
+{
+ return (rl_newline (1, '\n'));
+}
+
+/* Insertion mode stuff. */
+
+/* Switching from one mode to the other really just involves
+ switching keymaps. */
+int
+rl_vi_insertion_mode (count, key)
+ int count, key;
+{
+ _rl_keymap = vi_insertion_keymap;
+ _rl_vi_last_key_before_insert = key;
+ return (0);
+}
+
+static void
+_rl_vi_save_insert (up)
+ UNDO_LIST *up;
+{
+ int len, start, end;
+
+ if (up == 0)
+ {
+ if (vi_insert_buffer_size >= 1)
+ vi_insert_buffer[0] = '\0';
+ return;
+ }
+
+ start = up->start;
+ end = up->end;
+ len = end - start + 1;
+ if (len >= vi_insert_buffer_size)
+ {
+ vi_insert_buffer_size += (len + 32) - (len % 32);
+ vi_insert_buffer = (char *)xrealloc (vi_insert_buffer, vi_insert_buffer_size);
+ }
+ strncpy (vi_insert_buffer, rl_line_buffer + start, len - 1);
+ vi_insert_buffer[len-1] = '\0';
+}
+
+void
+_rl_vi_done_inserting ()
+{
+ if (_rl_vi_doing_insert)
+ {
+ /* The `C', `s', and `S' commands set this. */
+ rl_end_undo_group ();
+ /* Now, the text between rl_undo_list->next->start and
+ rl_undo_list->next->end is what was inserted while in insert
+ mode. It gets copied to VI_INSERT_BUFFER because it depends
+ on absolute indices into the line which may change (though they
+ probably will not). */
+ _rl_vi_doing_insert = 0;
+ _rl_vi_save_insert (rl_undo_list->next);
+ vi_continued_command = 1;
+ }
+ else
+ {
+ if (_rl_vi_last_key_before_insert == 'i' && rl_undo_list)
+ _rl_vi_save_insert (rl_undo_list);
+ /* XXX - Other keys probably need to be checked. */
+ else if (_rl_vi_last_key_before_insert == 'C')
+ rl_end_undo_group ();
+ while (_rl_undo_group_level > 0)
+ rl_end_undo_group ();
+ vi_continued_command = 0;
+ }
+}
+
+int
+rl_vi_movement_mode (count, key)
+ int count, key;
+{
+ if (rl_point > 0)
+ rl_backward_char (1, key);
+
+ _rl_keymap = vi_movement_keymap;
+ _rl_vi_done_inserting ();
+ return (0);
+}
+
+int
+rl_vi_arg_digit (count, c)
+ int count, c;
+{
+ if (c == '0' && rl_numeric_arg == 1 && !rl_explicit_arg)
+ return (rl_beg_of_line (1, c));
+ else
+ return (rl_digit_argument (count, c));
+}
+
+/* Change the case of the next COUNT characters. */
+#if defined (HANDLE_MULTIBYTE)
+static int
+_rl_vi_change_mbchar_case (count)
+ int count;
+{
+ wchar_t wc;
+ char mb[MB_LEN_MAX];
+ mbstate_t ps;
+
+ memset (&ps, 0, sizeof (mbstate_t));
+ if (_rl_adjust_point (rl_line_buffer, rl_point, &ps) > 0)
+ count--;
+ while (count-- && rl_point < rl_end)
+ {
+ mbrtowc (&wc, rl_line_buffer + rl_point, rl_end - rl_point, &ps);
+ if (iswupper (wc))
+ wc = towlower (wc);
+ else if (iswlower (wc))
+ wc = towupper (wc);
+ else
+ {
+ /* Just skip over chars neither upper nor lower case */
+ rl_forward_char (1, 0);
+ continue;
+ }
+
+ /* Vi is kind of strange here. */
+ if (wc)
+ {
+ wctomb (mb, wc);
+ rl_begin_undo_group ();
+ rl_delete (1, 0);
+ rl_insert_text (mb);
+ rl_end_undo_group ();
+ rl_vi_check ();
+ }
+ else
+ rl_forward_char (1, 0);
+ }
+
+ return 0;
+}
+#endif
+
+int
+rl_vi_change_case (count, ignore)
+ int count, ignore;
+{
+ char c = 0;
+
+ /* Don't try this on an empty line. */
+ if (rl_point >= rl_end)
+ return (0);
+
+#if defined (HANDLE_MULTIBYTE)
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ return (_rl_vi_change_mbchar_case (count));
+#endif
+
+ while (count-- && rl_point < rl_end)
+ {
+ if (_rl_uppercase_p (rl_line_buffer[rl_point]))
+ c = _rl_to_lower (rl_line_buffer[rl_point]);
+ else if (_rl_lowercase_p (rl_line_buffer[rl_point]))
+ c = _rl_to_upper (rl_line_buffer[rl_point]);
+ else
+ {
+ /* Just skip over characters neither upper nor lower case. */
+ rl_forward_char (1, c);
+ continue;
+ }
+
+ /* Vi is kind of strange here. */
+ if (c)
+ {
+ rl_begin_undo_group ();
+ rl_delete (1, c);
+ _rl_insert_char (1, c);
+ rl_end_undo_group ();
+ rl_vi_check ();
+ }
+ else
+ rl_forward_char (1, c);
+ }
+ return (0);
+}
+
+int
+rl_vi_put (count, key)
+ int count, key;
+{
+ if (!_rl_uppercase_p (key) && (rl_point + 1 <= rl_end))
+ rl_point = _rl_find_next_mbchar (rl_line_buffer, rl_point, 1, MB_FIND_NONZERO);
+
+ rl_yank (1, key);
+ rl_backward_char (1, key);
+ return (0);
+}
+
+int
+rl_vi_check ()
+{
+ if (rl_point && rl_point == rl_end)
+ {
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_NONZERO);
+ else
+ rl_point--;
+ }
+ return (0);
+}
+
+int
+rl_vi_column (count, key)
+ int count, key;
+{
+ if (count > rl_end)
+ rl_end_of_line (1, key);
+ else
+ rl_point = count - 1;
+ return (0);
+}
+
+int
+rl_vi_domove (key, nextkey)
+ int key, *nextkey;
+{
+ int c, save;
+ int old_end;
+
+ rl_mark = rl_point;
+ RL_SETSTATE(RL_STATE_MOREINPUT);
+ c = rl_read_key ();
+ RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ *nextkey = c;
+
+ if (!member (c, vi_motion))
+ {
+ if (_rl_digit_p (c))
+ {
+ save = rl_numeric_arg;
+ rl_numeric_arg = _rl_digit_value (c);
+ rl_digit_loop1 ();
+ rl_numeric_arg *= save;
+ RL_SETSTATE(RL_STATE_MOREINPUT);
+ c = rl_read_key (); /* real command */
+ RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ *nextkey = c;
+ }
+ else if (key == c && (key == 'd' || key == 'y' || key == 'c'))
+ {
+ rl_mark = rl_end;
+ rl_beg_of_line (1, c);
+ _rl_vi_last_motion = c;
+ return (0);
+ }
+ else
+ return (-1);
+ }
+
+ _rl_vi_last_motion = c;
+
+ /* Append a blank character temporarily so that the motion routines
+ work right at the end of the line. */
+ old_end = rl_end;
+ rl_line_buffer[rl_end++] = ' ';
+ rl_line_buffer[rl_end] = '\0';
+
+ _rl_dispatch (c, _rl_keymap);
+
+ /* Remove the blank that we added. */
+ rl_end = old_end;
+ rl_line_buffer[rl_end] = '\0';
+ if (rl_point > rl_end)
+ rl_point = rl_end;
+
+ /* No change in position means the command failed. */
+ if (rl_mark == rl_point)
+ return (-1);
+
+ /* rl_vi_f[wW]ord () leaves the cursor on the first character of the next
+ word. If we are not at the end of the line, and we are on a
+ non-whitespace character, move back one (presumably to whitespace). */
+ if ((_rl_to_upper (c) == 'W') && rl_point < rl_end && rl_point > rl_mark &&
+ !whitespace (rl_line_buffer[rl_point]))
+ rl_point--;
+
+ /* If cw or cW, back up to the end of a word, so the behaviour of ce
+ or cE is the actual result. Brute-force, no subtlety. */
+ if (key == 'c' && rl_point >= rl_mark && (_rl_to_upper (c) == 'W'))
+ {
+ /* Don't move farther back than where we started. */
+ while (rl_point > rl_mark && whitespace (rl_line_buffer[rl_point]))
+ rl_point--;
+
+ /* Posix.2 says that if cw or cW moves the cursor towards the end of
+ the line, the character under the cursor should be deleted. */
+ if (rl_point == rl_mark)
+ rl_point++;
+ else
+ {
+ /* Move past the end of the word so that the kill doesn't
+ remove the last letter of the previous word. Only do this
+ if we are not at the end of the line. */
+ if (rl_point >= 0 && rl_point < (rl_end - 1) && !whitespace (rl_line_buffer[rl_point]))
+ rl_point++;
+ }
+ }
+
+ if (rl_mark < rl_point)
+ SWAP (rl_point, rl_mark);
+
+ return (0);
+}
+
+/* A simplified loop for vi. Don't dispatch key at end.
+ Don't recognize minus sign?
+ Should this do rl_save_prompt/rl_restore_prompt? */
+static int
+rl_digit_loop1 ()
+{
+ int key, c;
+
+ RL_SETSTATE(RL_STATE_NUMERICARG);
+ while (1)
+ {
+ if (rl_numeric_arg > 1000000)
+ {
+ rl_explicit_arg = rl_numeric_arg = 0;
+ rl_ding ();
+ rl_clear_message ();
+ RL_UNSETSTATE(RL_STATE_NUMERICARG);
+ return 1;
+ }
+ rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg);
+ RL_SETSTATE(RL_STATE_MOREINPUT);
+ key = c = rl_read_key ();
+ RL_UNSETSTATE(RL_STATE_MOREINPUT);
+
+ if (c >= 0 && _rl_keymap[c].type == ISFUNC &&
+ _rl_keymap[c].function == rl_universal_argument)
+ {
+ rl_numeric_arg *= 4;
+ continue;
+ }
+
+ c = UNMETA (c);
+ if (_rl_digit_p (c))
+ {
+ if (rl_explicit_arg)
+ rl_numeric_arg = (rl_numeric_arg * 10) + _rl_digit_value (c);
+ else
+ rl_numeric_arg = _rl_digit_value (c);
+ rl_explicit_arg = 1;
+ }
+ else
+ {
+ rl_clear_message ();
+ rl_stuff_char (key);
+ break;
+ }
+ }
+
+ RL_UNSETSTATE(RL_STATE_NUMERICARG);
+ return (0);
+}
+
+int
+rl_vi_delete_to (count, key)
+ int count, key;
+{
+ int c;
+
+ if (_rl_uppercase_p (key))
+ rl_stuff_char ('$');
+ else if (vi_redoing)
+ rl_stuff_char (_rl_vi_last_motion);
+
+ if (rl_vi_domove (key, &c))
+ {
+ rl_ding ();
+ return -1;
+ }
+
+ /* These are the motion commands that do not require adjusting the
+ mark. */
+ if ((strchr (" l|h^0bB", c) == 0) && (rl_mark < rl_end))
+ rl_mark++;
+
+ rl_kill_text (rl_point, rl_mark);
+ return (0);
+}
+
+int
+rl_vi_change_to (count, key)
+ int count, key;
+{
+ int c, start_pos;
+
+ if (_rl_uppercase_p (key))
+ rl_stuff_char ('$');
+ else if (vi_redoing)
+ rl_stuff_char (_rl_vi_last_motion);
+
+ start_pos = rl_point;
+
+ if (rl_vi_domove (key, &c))
+ {
+ rl_ding ();
+ return -1;
+ }
+
+ /* These are the motion commands that do not require adjusting the
+ mark. c[wW] are handled by special-case code in rl_vi_domove(),
+ and already leave the mark at the correct location. */
+ if ((strchr (" l|hwW^0bB", c) == 0) && (rl_mark < rl_end))
+ rl_mark++;
+
+ /* The cursor never moves with c[wW]. */
+ if ((_rl_to_upper (c) == 'W') && rl_point < start_pos)
+ rl_point = start_pos;
+
+ if (vi_redoing)
+ {
+ if (vi_insert_buffer && *vi_insert_buffer)
+ rl_begin_undo_group ();
+ rl_delete_text (rl_point, rl_mark);
+ if (vi_insert_buffer && *vi_insert_buffer)
+ {
+ rl_insert_text (vi_insert_buffer);
+ rl_end_undo_group ();
+ }
+ }
+ else
+ {
+ rl_begin_undo_group (); /* to make the `u' command work */
+ rl_kill_text (rl_point, rl_mark);
+ /* `C' does not save the text inserted for undoing or redoing. */
+ if (_rl_uppercase_p (key) == 0)
+ _rl_vi_doing_insert = 1;
+ _rl_vi_set_last (key, count, rl_arg_sign);
+ rl_vi_insertion_mode (1, key);
+ }
+
+ return (0);
+}
+
+int
+rl_vi_yank_to (count, key)
+ int count, key;
+{
+ int c, save = rl_point;
+
+ if (_rl_uppercase_p (key))
+ rl_stuff_char ('$');
+
+ if (rl_vi_domove (key, &c))
+ {
+ rl_ding ();
+ return -1;
+ }
+
+ /* These are the motion commands that do not require adjusting the
+ mark. */
+ if ((strchr (" l|h^0%bB", c) == 0) && (rl_mark < rl_end))
+ rl_mark++;
+
+ rl_begin_undo_group ();
+ rl_kill_text (rl_point, rl_mark);
+ rl_end_undo_group ();
+ rl_do_undo ();
+ rl_point = save;
+
+ return (0);
+}
+
+int
+rl_vi_delete (count, key)
+ int count, key;
+{
+ int end;
+
+ if (rl_end == 0)
+ {
+ rl_ding ();
+ return -1;
+ }
+
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ end = _rl_find_next_mbchar (rl_line_buffer, rl_point, count, MB_FIND_NONZERO);
+ else
+ end = rl_point + count;
+
+ if (end >= rl_end)
+ end = rl_end;
+
+ rl_kill_text (rl_point, end);
+
+ if (rl_point > 0 && rl_point == rl_end)
+ rl_backward_char (1, key);
+ return (0);
+}
+
+int
+rl_vi_back_to_indent (count, key)
+ int count, key;
+{
+ rl_beg_of_line (1, key);
+ while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
+ rl_point++;
+ return (0);
+}
+
+int
+rl_vi_first_print (count, key)
+ int count, key;
+{
+ return (rl_vi_back_to_indent (1, key));
+}
+
+int
+rl_vi_char_search (count, key)
+ int count, key;
+{
+#if defined (HANDLE_MULTIBYTE)
+ static char *target;
+ static int mb_len;
+#else
+ static char target;
+#endif
+ static int orig_dir, dir;
+
+ if (key == ';' || key == ',')
+ dir = key == ';' ? orig_dir : -orig_dir;
+ else
+ {
+ if (vi_redoing)
+#if defined (HANDLE_MULTIBYTE)
+ target = _rl_vi_last_search_mbchar;
+#else
+ target = _rl_vi_last_search_char;
+#endif
+ else
+ {
+#if defined (HANDLE_MULTIBYTE)
+ mb_len = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
+ target = _rl_vi_last_search_mbchar;
+#else
+ RL_SETSTATE(RL_STATE_MOREINPUT);
+ _rl_vi_last_search_char = target = rl_read_key ();
+ RL_UNSETSTATE(RL_STATE_MOREINPUT);
+#endif
+ }
+
+ switch (key)
+ {
+ case 't':
+ orig_dir = dir = FTO;
+ break;
+
+ case 'T':
+ orig_dir = dir = BTO;
+ break;
+
+ case 'f':
+ orig_dir = dir = FFIND;
+ break;
+
+ case 'F':
+ orig_dir = dir = BFIND;
+ break;
+ }
+ }
+
+#if defined (HANDLE_MULTIBYTE)
+ return (_rl_char_search_internal (count, dir, target, mb_len));
+#else
+ return (_rl_char_search_internal (count, dir, target));
+#endif
+}
+
+/* Match brackets */
+int
+rl_vi_match (ignore, key)
+ int ignore, key;
+{
+ int count = 1, brack, pos, tmp, pre;
+
+ pos = rl_point;
+ if ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0)
+ {
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ {
+ while ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0)
+ {
+ pre = rl_point;
+ rl_forward_char (1, key);
+ if (pre == rl_point)
+ break;
+ }
+ }
+ else
+ while ((brack = rl_vi_bracktype (rl_line_buffer[rl_point])) == 0 &&
+ rl_point < rl_end - 1)
+ rl_forward_char (1, key);
+
+ if (brack <= 0)
+ {
+ rl_point = pos;
+ rl_ding ();
+ return -1;
+ }
+ }
+
+ pos = rl_point;
+
+ if (brack < 0)
+ {
+ while (count)
+ {
+ tmp = pos;
+ if (MB_CUR_MAX == 1 || rl_byte_oriented)
+ pos--;
+ else
+ {
+ pos = _rl_find_prev_mbchar (rl_line_buffer, pos, MB_FIND_ANY);
+ if (tmp == pos)
+ pos--;
+ }
+ if (pos >= 0)
+ {
+ int b = rl_vi_bracktype (rl_line_buffer[pos]);
+ if (b == -brack)
+ count--;
+ else if (b == brack)
+ count++;
+ }
+ else
+ {
+ rl_ding ();
+ return -1;
+ }
+ }
+ }
+ else
+ { /* brack > 0 */
+ while (count)
+ {
+ if (MB_CUR_MAX == 1 || rl_byte_oriented)
+ pos++;
+ else
+ pos = _rl_find_next_mbchar (rl_line_buffer, pos, 1, MB_FIND_ANY);
+
+ if (pos < rl_end)
+ {
+ int b = rl_vi_bracktype (rl_line_buffer[pos]);
+ if (b == -brack)
+ count--;
+ else if (b == brack)
+ count++;
+ }
+ else
+ {
+ rl_ding ();
+ return -1;
+ }
+ }
+ }
+ rl_point = pos;
+ return (0);
+}
+
+int
+rl_vi_bracktype (c)
+ int c;
+{
+ switch (c)
+ {
+ case '(': return 1;
+ case ')': return -1;
+ case '[': return 2;
+ case ']': return -2;
+ case '{': return 3;
+ case '}': return -3;
+ default: return 0;
+ }
+}
+
+/* XXX - think about reading an entire mbchar with _rl_read_mbchar and
+ inserting it in one bunch instead of the loop below (like in
+ rl_vi_char_search or _rl_vi_change_mbchar_case. Set c to mbchar[0]
+ for test against 033 or ^C. Make sure that _rl_read_mbchar does
+ this right. */
+int
+rl_vi_change_char (count, key)
+ int count, key;
+{
+ int c;
+
+ if (vi_redoing)
+ c = _rl_vi_last_replacement;
+ else
+ {
+ RL_SETSTATE(RL_STATE_MOREINPUT);
+ _rl_vi_last_replacement = c = rl_read_key ();
+ RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ }
+
+ if (c == '\033' || c == CTRL ('C'))
+ return -1;
+
+ while (count-- && rl_point < rl_end)
+ {
+ rl_begin_undo_group ();
+
+ rl_delete (1, c);
+#if defined (HANDLE_MULTIBYTE)
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ while (_rl_insert_char (1, c))
+ {
+ RL_SETSTATE (RL_STATE_MOREINPUT);
+ c = rl_read_key ();
+ RL_UNSETSTATE (RL_STATE_MOREINPUT);
+ }
+ else
+#endif
+ _rl_insert_char (1, c);
+ if (count == 0)
+ rl_backward_char (1, c);
+
+ rl_end_undo_group ();
+ }
+ return (0);
+}
+
+int
+rl_vi_subst (count, key)
+ int count, key;
+{
+ /* If we are redoing, rl_vi_change_to will stuff the last motion char */
+ if (vi_redoing == 0)
+ rl_stuff_char ((key == 'S') ? 'c' : 'l'); /* `S' == `cc', `s' == `cl' */
+
+ return (rl_vi_change_to (count, 'c'));
+}
+
+int
+rl_vi_overstrike (count, key)
+ int count, key;
+{
+ if (_rl_vi_doing_insert == 0)
+ {
+ _rl_vi_doing_insert = 1;
+ rl_begin_undo_group ();
+ }
+
+ if (count > 0)
+ {
+ _rl_overwrite_char (count, key);
+ vi_replace_count += count;
+ }
+
+ return (0);
+}
+
+int
+rl_vi_overstrike_delete (count, key)
+ int count, key;
+{
+ int i, s;
+
+ for (i = 0; i < count; i++)
+ {
+ if (vi_replace_count == 0)
+ {
+ rl_ding ();
+ break;
+ }
+ s = rl_point;
+
+ if (rl_do_undo ())
+ vi_replace_count--;
+
+ if (rl_point == s)
+ rl_backward_char (1, key);
+ }
+
+ if (vi_replace_count == 0 && _rl_vi_doing_insert)
+ {
+ rl_end_undo_group ();
+ rl_do_undo ();
+ _rl_vi_doing_insert = 0;
+ }
+ return (0);
+}
+
+int
+rl_vi_replace (count, key)
+ int count, key;
+{
+ int i;
+
+ vi_replace_count = 0;
+
+ if (!vi_replace_map)
+ {
+ vi_replace_map = rl_make_bare_keymap ();
+
+ for (i = ' '; i < KEYMAP_SIZE; i++)
+ vi_replace_map[i].function = rl_vi_overstrike;
+
+ vi_replace_map[RUBOUT].function = rl_vi_overstrike_delete;
+ vi_replace_map[ESC].function = rl_vi_movement_mode;
+ vi_replace_map[RETURN].function = rl_newline;
+ vi_replace_map[NEWLINE].function = rl_newline;
+
+ /* If the normal vi insertion keymap has ^H bound to erase, do the
+ same here. Probably should remove the assignment to RUBOUT up
+ there, but I don't think it will make a difference in real life. */
+ if (vi_insertion_keymap[CTRL ('H')].type == ISFUNC &&
+ vi_insertion_keymap[CTRL ('H')].function == rl_rubout)
+ vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete;
+
+ }
+ _rl_keymap = vi_replace_map;
+ return (0);
+}
+
+#if 0
+/* Try to complete the word we are standing on or the word that ends with
+ the previous character. A space matches everything. Word delimiters are
+ space and ;. */
+int
+rl_vi_possible_completions()
+{
+ int save_pos = rl_point;
+
+ if (rl_line_buffer[rl_point] != ' ' && rl_line_buffer[rl_point] != ';')
+ {
+ while (rl_point < rl_end && rl_line_buffer[rl_point] != ' ' &&
+ rl_line_buffer[rl_point] != ';')
+ rl_point++;
+ }
+ else if (rl_line_buffer[rl_point - 1] == ';')
+ {
+ rl_ding ();
+ return (0);
+ }
+
+ rl_possible_completions ();
+ rl_point = save_pos;
+
+ return (0);
+}
+#endif
+
+/* Functions to save and restore marks. */
+int
+rl_vi_set_mark (count, key)
+ int count, key;
+{
+ int ch;
+
+ RL_SETSTATE(RL_STATE_MOREINPUT);
+ ch = rl_read_key ();
+ RL_UNSETSTATE(RL_STATE_MOREINPUT);
+
+ if (ch < 'a' || ch > 'z')
+ {
+ rl_ding ();
+ return -1;
+ }
+ ch -= 'a';
+ vi_mark_chars[ch] = rl_point;
+ return 0;
+}
+
+int
+rl_vi_goto_mark (count, key)
+ int count, key;
+{
+ int ch;
+
+ RL_SETSTATE(RL_STATE_MOREINPUT);
+ ch = rl_read_key ();
+ RL_UNSETSTATE(RL_STATE_MOREINPUT);
+
+ if (ch == '`')
+ {
+ rl_point = rl_mark;
+ return 0;
+ }
+ else if (ch < 'a' || ch > 'z')
+ {
+ rl_ding ();
+ return -1;
+ }
+
+ ch -= 'a';
+ if (vi_mark_chars[ch] == -1)
+ {
+ rl_ding ();
+ return -1;
+ }
+ rl_point = vi_mark_chars[ch];
+ return 0;
+}
+
+#endif /* VI_MODE */