summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2019-01-07 09:30:21 -0500
committerChet Ramey <chet.ramey@case.edu>2019-01-07 09:30:21 -0500
commit8e6ccd0373d77b86ed37a9a7d232ccfea3d6670c (patch)
tree58bce2928cd55511defa0029ba70b884053c3fdb
parent57ea39840aebbb34571df1586acc66783b3368d0 (diff)
downloadreadline-8e6ccd0373d77b86ed37a9a7d232ccfea3d6670c.tar.gz
readline-8.0 distribution sources and documentationreadline-8.0
-rw-r--r--CHANGELOG47
-rw-r--r--CHANGES142
-rw-r--r--INSTALL2
-rw-r--r--MANIFEST1
-rw-r--r--Makefile.in33
-rw-r--r--NEWS73
-rw-r--r--README2
-rw-r--r--aclocal.m4107
-rw-r--r--bind.c683
-rw-r--r--callback.c22
-rw-r--r--colors.c23
-rw-r--r--compat.c29
-rw-r--r--complete.c187
-rw-r--r--config.h.in3
-rwxr-xr-xconfigure309
-rw-r--r--configure.ac26
-rw-r--r--display.c669
-rw-r--r--doc/history.030
-rw-r--r--doc/history.321
-rw-r--r--doc/history.dvibin69092 -> 71552 bytes
-rw-r--r--doc/history.html58
-rw-r--r--doc/history.info117
-rw-r--r--doc/history.pdfbin201610 -> 203702 bytes
-rw-r--r--doc/history.ps2608
-rw-r--r--doc/history_3.ps458
-rw-r--r--doc/hstech.texi36
-rw-r--r--doc/hsuser.texi42
-rw-r--r--doc/readline.0252
-rw-r--r--doc/readline.392
-rw-r--r--doc/readline.dvibin310188 -> 318576 bytes
-rw-r--r--doc/readline.html1572
-rw-r--r--doc/readline.info410
-rw-r--r--doc/readline.pdfbin389589 -> 395448 bytes
-rw-r--r--doc/readline.ps6016
-rw-r--r--doc/readline_3.ps1560
-rw-r--r--doc/rltech.texi54
-rw-r--r--doc/rluser.texi143
-rw-r--r--doc/rluserman.dvibin109432 -> 112756 bytes
-rw-r--r--doc/rluserman.html400
-rw-r--r--doc/rluserman.info184
-rw-r--r--doc/rluserman.pdfbin226783 -> 230085 bytes
-rw-r--r--doc/rluserman.ps2121
-rw-r--r--doc/version.texi12
-rw-r--r--emacs_keymap.c2
-rw-r--r--examples/Makefile.in29
-rw-r--r--examples/hist_erasedups.c2
-rw-r--r--examples/hist_purgecmd.c2
-rw-r--r--examples/histexamp.c3
-rw-r--r--examples/rlcat.c2
-rw-r--r--examples/rlevent.c7
-rw-r--r--examples/rlkeymaps.c61
-rw-r--r--examples/rltest.c1
-rw-r--r--funmap.c12
-rw-r--r--histexpand.c165
-rw-r--r--histfile.c64
-rw-r--r--histlib.h14
-rw-r--r--history.c138
-rw-r--r--history.h10
-rw-r--r--histsearch.c125
-rw-r--r--input.c87
-rw-r--r--isearch.c97
-rw-r--r--keymaps.c30
-rw-r--r--keymaps.h3
-rw-r--r--kill.c126
-rw-r--r--macro.c67
-rw-r--r--mbutil.c156
-rw-r--r--misc.c83
-rw-r--r--nls.c55
-rw-r--r--parens.c15
-rw-r--r--parse-colors.c6
-rw-r--r--patchlevel2
-rw-r--r--readline.c119
-rw-r--r--readline.h14
-rw-r--r--readline.pc.in2
-rw-r--r--rlconf.h2
-rw-r--r--rlmbutil.h10
-rw-r--r--rlprivate.h11
-rw-r--r--rltty.c125
-rw-r--r--savestring.c5
-rw-r--r--search.c146
-rw-r--r--shell.c16
-rw-r--r--signals.c82
-rwxr-xr-x[-rw-r--r--]support/config.guess914
-rwxr-xr-x[-rw-r--r--]support/config.rpath373
-rwxr-xr-x[-rw-r--r--]support/config.sub2501
-rwxr-xr-xsupport/shlib-install2
-rw-r--r--support/shobj-conf4
-rw-r--r--terminal.c76
-rw-r--r--text.c319
-rw-r--r--tilde.c43
-rw-r--r--undo.c68
-rw-r--r--util.c65
-rw-r--r--vi_keymap.c2
-rw-r--r--vi_mode.c544
-rw-r--r--xfree.c5
-rw-r--r--xmalloc.c12
96 files changed, 14035 insertions, 11333 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 6794591..18265ab 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1304,3 +1304,50 @@ configure.ac
----
configure.ac,Makefile.in,examples/Makefile.in
- remove references to purify
+
+ 11/21
+ -----
+configure.ac,config.h.in
+ - fnmatch: check for libc function, define HAVE_FNMATCH if found. Now
+ used by vi-mode history search functions
+
+ 7/12
+ ----
+Makefile.in,examples/Makefile.in
+ - add support for building with address sanitizer, using new target
+ `asan'
+
+ 4/23/2018
+ ---------
+configure.ac
+ - TERMCAP_PKG_CONFIG_LIB: new variable, defined from TERMCAP_LIB,
+ defaults to termcap
+
+readline.pc.in
+ - change Requires.private to use TERMCAP_PKG_CONFIG_LIB instead of
+ hardcoded `tinfo'. Report and fix from Thomas Petazzoni
+ <thomas.petazzoni@bootlin.com>
+
+ 5/4
+ ---
+Makefile.in
+ - new targets to install and uninstall the `readline.pc' pkgconfig
+ file
+ - install-{static,shared}: add install-pc to the list of prereqs
+ - uninstall{,-shared}: add uninstall-pc to list of prereqs. Change
+ from Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+
+configure.ac,Makefile.in
+ - add new configure option to optionally disable installing the
+ source code examples. From Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+
+ 5/23
+ ----
+Makefile.in
+ - install-pc: make sure we install readline.pc into an existing
+ pkgconfig directory. Report from ilove zfs <ilovezfs@icloud.com>
+
+ 5/24
+ ----
+Makefile.in
+ - installdirs: create $(pkgconfigdir) if it doesn't exist
diff --git a/CHANGES b/CHANGES
index b5e16b7..09eab6e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,145 @@
+This document details the changes between this version, readline-8.0, and the
+previous version, readline-7.0.
+
+1. Changes to Readline
+
+a. Added a guard to prevent nested macros from causing an infinite expansion
+ loop.
+
+b. Instead of allocating enough history list entries to hold the maximum list
+ size, cap the number allocated initially.
+
+c. Added a strategy to avoid allocating huge amounts of memory if a block of
+ history entries without timestamps occurs after a block with timestamps.
+
+d. Added support for keyboard timeouts when an ESC character is the last
+ character in a macro.
+
+e. There are several performance improvements when in a UTF-8 locale.
+
+f. Readline does a better job of preserving the original set of blocked
+ signals when using pselect() to wait for input.
+
+g. Fixed a bug that caused multibyte characters in macros to be mishandled.
+
+h. Fixed several bugs in the code that calculates line breaks when expanding
+ prompts that span several lines, contain multibyte characters, and contain
+ invisible character seqeuences.
+
+i. Fixed several bugs in cursor positioning when displaying lines with prompts
+ containing invisible characters and multibyte characters.
+
+j. When performing case-insensitive completion, Readline no longer sorts the
+ list of matches unless directed to do so.
+
+k. Fixed a problem with key sequences ending with a backslash.
+
+l. Fixed out-of-bounds and free memory read errors found via fuzzing.
+
+m. Fixed several cases where the mark was set to an invalid value.
+
+n. Fixed a problem with the case-changing operators in the case where the
+ lower and upper case versions of a character do not have the same number
+ of bytes.
+
+o. Handle incremental and non-incremental search character reads returning EOF.
+
+p. Handle the case where a failing readline command at the end of a multi-key
+ sequence could be misinterpreted.
+
+q. The history library now prints a meaningful error message if the history
+ file isn't a regular file.
+
+r. Fixed a problem with vi-mode redo (`.') on a command when trying to replace
+ a multibyte character.
+
+s. The key binding code now attempts to remove a keymap if a key unbinding
+ leaves it empty.
+
+t. Fixed a line-wrapping issue that caused problems for some terminal
+ emulators.
+
+u. If there is a key bound to the tty's VDISCARD special character, readline
+ disables VDISCARD while it is active.
+
+v. Fixed a problem with exiting bracketed paste mode on terminals that assume
+ the bracketed paste mode character sequence contains visible characters.
+
+w. Fixed a bug that could cause a key binding command to refer to an
+ uninitialized variable.
+
+x. Added more UTF-8-specific versions of multibyte functions, and optimized
+ existing functions if the current locale uses UTF-8 encoding.
+
+y. Fixed a problem with bracketed-paste inserting more than one character and
+ interacting with other readline functions.
+
+z. Fixed a bug that caused the history library to attempt to append a history
+ line to a non-existent history entry.
+
+aa. If using bracketed paste mode, output a newline after the \r that is the
+ last character of the mode disable string to avoid overwriting output.
+
+bb. Fixes to the vi-mode `b', `B', `w', `W', `e', and `E' commands to better
+ handle multibyte characters.
+
+cc. Fixed a redisplay problem that caused an extra newline to be generated on
+ accept-line when the line length is exactly the screenwidth.
+
+dd. Fixed a bug with adding multibyte characters to an incremental search
+ string.
+
+ee. Fixed a bug with redoing text insertions in vi mode.
+
+ff. Fixed a bug with pasting text into an incremental search string if bracketed
+ paste mode is enabled. ESC cannot be one of the incremental search
+ terminator characters for this to work.
+
+gg. Fixed a bug with anchored search patterns when performing searches in vi
+ mode.
+
+2. New Features in Readline
+
+a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as
+ Posix specifies (uses fnmatch(3) if available).
+
+b. There are new `next-screen-line' and `previous-screen-line' bindable
+ commands, which move the cursor to the same column in the next, or previous,
+ physical line, respectively.
+
+c. There are default key bindings for control-arrow-key key combinations.
+
+d. A negative argument (-N) to `quoted-insert' means to insert the next N
+ characters using quoted-insert.
+
+e. New public function: rl_check_signals(), which allows applications to
+ respond to signals that readline catches while waiting for input using
+ a custom read function.
+
+f. There is new support for conditionally testing the readline version in an
+ inputrc file, with a full set of arithmetic comparison operators available.
+
+g. There is a simple variable comparison facility available for use within an
+ inputrc file. Allowable operators are equality and inequality; string
+ variables may be compared to a value; boolean variables must be compared to
+ either `on' or `off'; variable names are separated from the operator by
+ whitespace.
+
+h. The history expansion library now understands command and process
+ substitution and extended globbing and allows them to appear anywhere in a
+ word.
+
+i. The history library has a new variable that allows applications to set the
+ initial quoting state, so quoting state can be inherited from a previous
+ line.
+
+j. Readline now allows application-defined keymap names; there is a new public
+ function, rl_set_keymap_name(), to do that.
+
+k. The "Insert" keypad key, if available, now puts readline into overwrite
+ mode.
+
+-------------------------------------------------------------------------------
This document details the changes between this version, readline-7.0, and the
previous version, readline-6.3.
diff --git a/INSTALL b/INSTALL
index e1a92d3..afb4d53 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,7 @@
Basic Installation
==================
-These are installation instructions for Readline-7.0.
+These are installation instructions for Readline-8.0.
The simplest way to compile readline is:
diff --git a/MANIFEST b/MANIFEST
index bfd0547..ad49d66 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -118,6 +118,7 @@ examples/rl-fgets.c f
examples/rlbasic.c f
examples/rlcat.c f
examples/rlevent.c f
+examples/rlkeymaps.c f
examples/rltest.c f
examples/rl-callbacktest.c f
examples/rl.c f
diff --git a/Makefile.in b/Makefile.in
index 6522573..8dd5ca5 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,6 +1,6 @@
## -*- text -*- ##
# Master Makefile for the GNU readline library.
-# Copyright (C) 1994-2009 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 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
@@ -59,6 +59,7 @@ mandir = @mandir@
includedir = @includedir@
datadir = @datadir@
localedir = @localedir@
+pkgconfigdir = ${libdir}/pkgconfig
infodir = @infodir@
@@ -85,7 +86,7 @@ TERMCAP_LIB = @TERMCAP_LIB@
# For libraries which include headers from other libraries.
INCLUDES = -I. -I$(srcdir)
-XCCFLAGS = $(DEFS) $(LOCAL_DEFS) $(INCLUDES) $(CPPFLAGS)
+XCCFLAGS = $(ASAN_CFLAGS) $(DEFS) $(LOCAL_DEFS) $(INCLUDES) $(CPPFLAGS)
CCFLAGS = $(XCCFLAGS) $(LOCAL_CFLAGS) $(CFLAGS)
# could add -Werror here
@@ -94,6 +95,11 @@ GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \
-Wmissing-prototypes -Wno-implicit -pedantic
GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT_FLAGS) @CFLAGS@ @LOCAL_CFLAGS@
+ASAN_XCFLAGS = -fsanitize=address -fno-omit-frame-pointer
+ASAN_XLDFLAGS = -fsanitize=address
+
+install_examples = @EXAMPLES_INSTALL_TARGET@
+
.c.o:
${RM} $@
$(CC) -c $(CCFLAGS) $<
@@ -160,6 +166,9 @@ all: $(TARGETS)
everything: all examples
+asan:
+ ${MAKE} ${MFLAGS} ASAN_CFLAGS='${ASAN_XCFLAGS}' ASAN_LDFLAGS='${ASAN_XLDFLAGS}' everything
+
static: $(STATIC_LIBS)
libreadline.a: $(OBJECTS)
@@ -232,7 +241,16 @@ uninstall-headers:
maybe-uninstall-headers: uninstall-headers
-install-static: installdirs $(STATIC_LIBS) install-headers install-doc install-examples
+install-pc: installdirs
+ -$(INSTALL_DATA) $(BUILD_DIR)/readline.pc $(DESTDIR)$(pkgconfigdir)/readline.pc
+
+uninstall-pc:
+ -test -n "$(pkgconfigdir)" && cd $(DESTDIR)$(pkgconfigdir) && \
+ ${RM} readline.pc
+
+maybe-uninstall-pc: uninstall-pc
+
+install-static: installdirs $(STATIC_LIBS) install-headers install-doc ${install_examples} install-pc
-$(MV) $(DESTDIR)$(libdir)/libreadline.a $(DESTDIR)$(libdir)/libreadline.old
$(INSTALL_DATA) libreadline.a $(DESTDIR)$(libdir)/libreadline.a
-test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libreadline.a
@@ -243,17 +261,18 @@ install-static: installdirs $(STATIC_LIBS) install-headers install-doc install-e
installdirs: $(srcdir)/support/mkinstalldirs
-$(SHELL) $(srcdir)/support/mkinstalldirs $(DESTDIR)$(includedir) \
$(DESTDIR)$(includedir)/readline $(DESTDIR)$(libdir) \
- $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir) $(DESTDIR)$(docdir)
+ $(DESTDIR)$(infodir) $(DESTDIR)$(man3dir) $(DESTDIR)$(docdir) \
+ $(DESTDIR)$(pkgconfigdir)
-uninstall: uninstall-headers uninstall-doc uninstall-examples
+uninstall: uninstall-headers uninstall-doc uninstall-examples uninstall-pc
-test -n "$(DESTDIR)$(libdir)" && cd $(DESTDIR)$(libdir) && \
${RM} libreadline.a libreadline.old libhistory.a libhistory.old $(SHARED_LIBS)
-( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
-install-shared: installdirs install-headers shared install-doc
+install-shared: installdirs install-headers shared install-doc install-pc
( cd shlib ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install )
-uninstall-shared: maybe-uninstall-headers
+uninstall-shared: maybe-uninstall-headers maybe-uninstall-pc
-( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
install-examples: installdirs install-headers
diff --git a/NEWS b/NEWS
index cf7107e..42be21e 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,48 @@
+This is a terse description of the new features added to readline-8.0 since
+the release of readline-7.0.
+
+New Features in Readline
+
+a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as
+ Posix specifies (uses fnmatch(3) if available).
+
+b. There are new `next-screen-line' and `previous-screen-line' bindable
+ commands, which move the cursor to the same column in the next, or previous,
+ physical line, respectively.
+
+c. There are default key bindings for control-arrow-key key combinations.
+
+d. A negative argument (-N) to `quoted-insert' means to insert the next N
+ characters using quoted-insert.
+
+e. New public function: rl_check_signals(), which allows applications to
+ respond to signals that readline catches while waiting for input using
+ a custom read function.
+
+f. There is new support for conditionally testing the readline version in an
+ inputrc file, with a full set of arithmetic comparison operators available.
+
+g. There is a simple variable comparison facility available for use within an
+ inputrc file. Allowable operators are equality and inequality; string
+ variables may be compared to a value; boolean variables must be compared to
+ either `on' or `off'; variable names are separated from the operator by
+ whitespace.
+
+h. The history expansion library now understands command and process
+ substitution and extended globbing and allows them to appear anywhere in a
+ word.
+
+i. The history library has a new variable that allows applications to set the
+ initial quoting state, so quoting state can be inherited from a previous
+ line.
+
+j. Readline now allows application-defined keymap names; there is a new public
+ function, rl_set_keymap_name(), to do that.
+
+k. The "Insert" keypad key, if available, now puts readline into overwrite
+ mode.
+
+-------------------------------------------------------------------------------
This is a terse description of the new features added to readline-7.0 since
the release of readline-6.3.
@@ -46,6 +91,34 @@ k. If readline reads a history file that begins with `#' (or the value of
l. Readline now throws an error if it parses a key binding without a terminating
`:' or whitespace.
+m. The default binding for ^W in vi mode now uses word boundaries specified
+ by Posix (vi-unix-word-rubout is bindable command name).
+
+n. rl_clear_visible_line: new application-callable function; clears all
+ screen lines occupied by the current visible readline line.
+
+o. rl_tty_set_echoing: application-callable function that controls whether
+ or not readline thinks it is echoing terminal output.
+
+p. Handle >| and strings of digits preceding and following redirection
+ specifications as single tokens when tokenizing the line for history
+ expansion.
+
+q. Fixed a bug with displaying completions when the prefix display length
+ is greater than the length of the completions to be displayed.
+
+r. The :p history modifier now applies to the entire line, so any expansion
+ specifying :p causes the line to be printed instead of expanded.
+
+s. New application-callable function: rl_pending_signal(): returns the signal
+ number of any signal readline has caught but not yet handled.
+
+t. New application-settable variable: rl_persistent_signal_handlers: if set
+ to a non-zero value, readline will enable the readline-6.2 signal handler
+ behavior in callback mode: handlers are installed when
+ rl_callback_handler_install is called and removed removed when a complete
+ line has been read.
+
-------------------------------------------------------------------------------
This is a terse description of the new features added to readline-6.3 since
the release of readline-6.2.
diff --git a/README b/README
index 6a9c2b9..4fb0804 100644
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
Introduction
============
-This is the Gnu Readline library, version 7.0.
+This is the Gnu Readline library, version 8.0.
The Readline library provides a set of functions for use by applications
that allow users to edit command lines as they are typed in. Both
diff --git a/aclocal.m4 b/aclocal.m4
index d3bac07..1413267 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-dnl
+nl
dnl Bash specific tests
dnl
dnl Some derived from PDKSH 5.1.3 autoconf tests
@@ -962,7 +962,8 @@ AC_CACHE_VAL(bash_cv_termcap_lib,
[AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo,
[AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
[AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
- bash_cv_termcap_lib=gnutermcap)])])])])])
+ [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw,
+ bash_cv_termcap_lib=gnutermcap)])])])])])])
if test "X$_bash_needmsg" = "Xyes"; then
AC_MSG_CHECKING(which library has the termcap functions)
fi
@@ -1307,7 +1308,7 @@ AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
typedef RETSIGTYPE sigfunc();
-int nsigint;
+volatile int nsigint;
#ifdef HAVE_POSIX_SIGNALS
sigfunc *
@@ -1357,7 +1358,7 @@ AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING,
[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
AC_MSG_CHECKING(for presence of necessary job control definitions)
AC_CACHE_VAL(bash_cv_job_control_missing,
-[AC_TRY_RUN([
+[AC_TRY_COMPILE([
#include <sys/types.h>
#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
@@ -1367,42 +1368,38 @@ AC_CACHE_VAL(bash_cv_job_control_missing,
#endif
#include <signal.h>
-/* Add more tests in here as appropriate. */
-main()
-{
+/* add more tests in here as appropriate */
+
/* signal type */
#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS)
-exit(1);
+#error
#endif
/* signals and tty control. */
#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT)
-exit (1);
+#error
#endif
/* process control */
#if !defined (WNOHANG) || !defined (WUNTRACED)
-exit(1);
+#error
#endif
/* Posix systems have tcgetpgrp and waitpid. */
#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP)
-exit(1);
+#error
#endif
#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID)
-exit(1);
+#error
#endif
/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */
#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3)
-exit(1);
+#error
#endif
-exit(0);
-}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing,
- [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing)
- bash_cv_job_control_missing=missing]
+], , bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing
)])
AC_MSG_RESULT($bash_cv_job_control_missing)
if test $bash_cv_job_control_missing = missing; then
@@ -1585,9 +1582,7 @@ fi
AC_DEFUN(BASH_CHECK_DEV_STDIN,
[AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available)
AC_CACHE_VAL(bash_cv_dev_stdin,
-[if test -d /dev/fd && (exec test -r /dev/stdin < /dev/null) ; then
- bash_cv_dev_stdin=present
- elif test -d /proc/self/fd && (exec test -r /dev/stdin < /dev/null) ; then
+[if (exec test -r /dev/stdin < /dev/null) ; then
bash_cv_dev_stdin=present
else
bash_cv_dev_stdin=absent
@@ -1798,6 +1793,8 @@ if test "$am_cv_func_iconv" = yes; then
LIBS="$OLDLIBS"
fi
+AC_CHECK_SIZEOF(wchar_t, 4)
+
])
dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB
@@ -1856,7 +1853,7 @@ main()
],
ac_cv_rl_version=`cat conftest.rlv`,
ac_cv_rl_version='0.0',
-ac_cv_rl_version='6.3')])
+ac_cv_rl_version='8.0')])
CFLAGS="$_save_CFLAGS"
LDFLAGS="$_save_LDFLAGS"
@@ -4195,3 +4192,71 @@ fi
AC_MSG_RESULT($bash_cv_wexitstatus_offset)
AC_DEFINE_UNQUOTED([WEXITSTATUS_OFFSET], [$bash_cv_wexitstatus_offset], [Offset of exit status in wait status word])
])
+
+AC_DEFUN([BASH_FUNC_SBRK],
+[
+ AC_CHECK_FUNCS_ONCE([sbrk])
+ if test X$ac_cv_func_sbrk = Xyes; then
+ AC_CACHE_CHECK([for working sbrk], [bash_cv_func_sbrk],
+ [AC_TRY_RUN([
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int c, char **v)
+{
+ void *x;
+
+ x = sbrk (4096);
+ exit ((x == (void *)-1) ? 1 : 0);
+}
+], bash_cv_func_sbrk=yes, bash_cv_func_snprintf=sbrk,
+ [AC_MSG_WARN([cannot check working sbrk if cross-compiling])
+ bash_cv_func_sbrk=yes]
+)])
+ if test $bash_cv_func_sbrk = no; then
+ ac_cv_func_sbrk=no
+ fi
+ fi
+ if test $ac_cv_func_sbrk = no; then
+ AC_DEFINE(HAVE_SBRK, 0,
+ [Define if you have a working sbrk function.])
+ fi
+])
+
+AC_DEFUN(BASH_FUNC_FNMATCH_EQUIV_FALLBACK,
+[AC_MSG_CHECKING(whether fnmatch can be used to check bracket equivalence classes)
+AC_CACHE_VAL(bash_cv_fnmatch_equiv_fallback,
+[AC_TRY_RUN([
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <fnmatch.h>
+#include <locale.h>
+
+char *pattern = "[[=a=]]";
+
+/* char *string = "ä"; */
+unsigned char string[4] = { '\xc3', '\xa4', '\0' };
+
+int
+main (int c, char **v)
+{
+ setlocale (LC_ALL, "de_DE.UTF-8");
+ if (fnmatch (pattern, (const char *)string, 0) != FNM_NOMATCH)
+ exit (0);
+ exit (1);
+}
+
+], bash_cv_fnmatch_equiv_fallback=yes, bash_cv_fnmatch_equiv_fallback=no,
+ [AC_MSG_WARN(cannot check fnmatch if cross compiling -- defaulting to no)
+ bash_cv_fnmatch_equiv_fallback=no]
+)])
+AC_MSG_RESULT($bash_cv_fnmatch_equiv_fallback)
+if test "$bash_cv_fnmatch_equiv_fallback" = "yes" ; then
+ bash_cv_fnmatch_equiv_value=1
+else
+ bash_cv_fnmatch_equiv_value=0
+fi
+AC_DEFINE_UNQUOTED([FNMATCH_EQUIV_FALLBACK], [$bash_cv_fnmatch_equiv_value], [Whether fnmatch can be used for bracket equivalence classes])
+])
diff --git a/bind.c b/bind.c
index f1098c4..57ae10f 100644
--- a/bind.c
+++ b/bind.c
@@ -1,6 +1,6 @@
/* bind.c -- key binding and startup file support for the readline library. */
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -80,6 +80,8 @@ static void _rl_init_file_error (const char *, ...) __attribute__((__format__ (
static void _rl_init_file_error ();
#endif
+static rl_command_func_t *_rl_function_of_keyseq_internal PARAMS((const char *, size_t, Keymap, int *));
+
static char *_rl_read_file PARAMS((char *, size_t *));
static int _rl_read_init_file PARAMS((const char *, int));
static int glean_key_from_name PARAMS((char *));
@@ -87,14 +89,30 @@ static int glean_key_from_name PARAMS((char *));
static int find_boolean_var PARAMS((const char *));
static int find_string_var PARAMS((const char *));
+static const char *boolean_varname PARAMS((int));
+static const char *string_varname PARAMS((int));
+
static char *_rl_get_string_variable_value PARAMS((const char *));
static int substring_member_of_array PARAMS((const char *, const char * const *));
+static int _rl_get_keymap_by_name PARAMS((const char *));
+static int _rl_get_keymap_by_map PARAMS((Keymap));
+
static int currently_reading_init_file;
/* used only in this file */
static int _rl_prefer_visible_bell = 1;
+#define OP_EQ 1
+#define OP_NE 2
+#define OP_GT 3
+#define OP_GE 4
+#define OP_LT 5
+#define OP_LE 6
+
+#define OPSTART(c) ((c) == '=' || (c) == '!' || (c) == '<' || (c) == '>')
+#define CMPSTART(c) ((c) == '=' || (c) == '!')
+
/* **************************************************************** */
/* */
/* Binding keys */
@@ -105,10 +123,7 @@ static int _rl_prefer_visible_bell = 1;
Add NAME to the list of named functions. Make FUNCTION be the function
that gets called. If KEY is not -1, then bind it. */
int
-rl_add_defun (name, function, key)
- const char *name;
- rl_command_func_t *function;
- int key;
+rl_add_defun (const char *name, rl_command_func_t *function, int key)
{
if (key != -1)
rl_bind_key (key, function);
@@ -118,9 +133,7 @@ rl_add_defun (name, function, key)
/* Bind KEY to FUNCTION. Returns non-zero if KEY is out of range. */
int
-rl_bind_key (key, function)
- int key;
- rl_command_func_t *function;
+rl_bind_key (int key, rl_command_func_t *function)
{
char keyseq[3];
int l;
@@ -168,10 +181,7 @@ rl_bind_key (key, function)
/* Bind KEY to FUNCTION in MAP. Returns non-zero in case of invalid
KEY. */
int
-rl_bind_key_in_map (key, function, map)
- int key;
- rl_command_func_t *function;
- Keymap map;
+rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map)
{
int result;
Keymap oldmap;
@@ -184,57 +194,44 @@ rl_bind_key_in_map (key, function, map)
}
/* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right
- now, this is always used to attempt to bind the arrow keys, hence the
- check for rl_vi_movement_mode. */
+ now, this is always used to attempt to bind the arrow keys. */
int
-rl_bind_key_if_unbound_in_map (key, default_func, kmap)
- int key;
- rl_command_func_t *default_func;
- Keymap kmap;
+rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *default_func, Keymap kmap)
{
- char keyseq[2];
+ char *keyseq;
- keyseq[0] = (unsigned char)key;
- keyseq[1] = '\0';
+ keyseq = rl_untranslate_keyseq ((unsigned char)key);
return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap));
}
int
-rl_bind_key_if_unbound (key, default_func)
- int key;
- rl_command_func_t *default_func;
+rl_bind_key_if_unbound (int key, rl_command_func_t *default_func)
{
- char keyseq[2];
+ char *keyseq;
- keyseq[0] = (unsigned char)key;
- keyseq[1] = '\0';
+ keyseq = rl_untranslate_keyseq ((unsigned char)key);
return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap));
}
/* Make KEY do nothing in the currently selected keymap.
- Returns non-zero in case of error. */
+ Returns non-zero in case of error. This is not the same as self-insert;
+ this makes it a dead key. */
int
-rl_unbind_key (key)
- int key;
+rl_unbind_key (int key)
{
return (rl_bind_key (key, (rl_command_func_t *)NULL));
}
-/* Make KEY do nothing in MAP.
- Returns non-zero in case of error. */
+/* Make KEY do nothing in MAP. Returns non-zero in case of error. */
int
-rl_unbind_key_in_map (key, map)
- int key;
- Keymap map;
+rl_unbind_key_in_map (int key, Keymap map)
{
return (rl_bind_key_in_map (key, (rl_command_func_t *)NULL, map));
}
/* Unbind all keys bound to FUNCTION in MAP. */
int
-rl_unbind_function_in_map (func, map)
- rl_command_func_t *func;
- Keymap map;
+rl_unbind_function_in_map (rl_command_func_t *func, Keymap map)
{
register int i, rval;
@@ -249,10 +246,9 @@ rl_unbind_function_in_map (func, map)
return rval;
}
+/* Unbind all keys bound to COMMAND, which is a bindable command name, in MAP */
int
-rl_unbind_command_in_map (command, map)
- const char *command;
- Keymap map;
+rl_unbind_command_in_map (const char *command, Keymap map)
{
rl_command_func_t *func;
@@ -266,9 +262,7 @@ rl_unbind_command_in_map (command, map)
FUNCTION, starting in the current keymap. This makes new
keymaps as necessary. */
int
-rl_bind_keyseq (keyseq, function)
- const char *keyseq;
- rl_command_func_t *function;
+rl_bind_keyseq (const char *keyseq, rl_command_func_t *function)
{
return (rl_generic_bind (ISFUNC, keyseq, (char *)function, _rl_keymap));
}
@@ -277,20 +271,14 @@ rl_bind_keyseq (keyseq, function)
FUNCTION. This makes new keymaps as necessary. The initial
place to do bindings is in MAP. */
int
-rl_bind_keyseq_in_map (keyseq, function, map)
- const char *keyseq;
- rl_command_func_t *function;
- Keymap map;
+rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)
{
return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map));
}
/* Backwards compatibility; equivalent to rl_bind_keyseq_in_map() */
int
-rl_set_key (keyseq, function, map)
- const char *keyseq;
- rl_command_func_t *function;
- Keymap map;
+rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)
{
return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map));
}
@@ -299,16 +287,24 @@ rl_set_key (keyseq, function, map)
now, this is always used to attempt to bind the arrow keys, hence the
check for rl_vi_movement_mode. */
int
-rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap)
- const char *keyseq;
- rl_command_func_t *default_func;
- Keymap kmap;
+rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *default_func, Keymap kmap)
{
rl_command_func_t *func;
+ char *keys;
+ int keys_len;
if (keyseq)
{
- func = rl_function_of_keyseq (keyseq, kmap, (int *)NULL);
+ /* Handle key sequences that require translations and `raw' ones that
+ don't. This might be a problem with backslashes. */
+ keys = (char *)xmalloc (1 + (2 * strlen (keyseq)));
+ if (rl_translate_keyseq (keyseq, keys, &keys_len))
+ {
+ xfree (keys);
+ return -1;
+ }
+ func = rl_function_of_keyseq_len (keys, keys_len, kmap, (int *)NULL);
+ xfree (keys);
#if defined (VI_MODE)
if (!func || func == rl_do_lowercase_version || func == rl_vi_movement_mode)
#else
@@ -322,9 +318,7 @@ rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap)
}
int
-rl_bind_keyseq_if_unbound (keyseq, default_func)
- const char *keyseq;
- rl_command_func_t *default_func;
+rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *default_func)
{
return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap));
}
@@ -333,9 +327,7 @@ rl_bind_keyseq_if_unbound (keyseq, default_func)
the string of characters MACRO. This makes new keymaps as
necessary. The initial place to do bindings is in MAP. */
int
-rl_macro_bind (keyseq, macro, map)
- const char *keyseq, *macro;
- Keymap map;
+rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
{
char *macro_keys;
int macro_keys_len;
@@ -357,16 +349,13 @@ rl_macro_bind (keyseq, macro, map)
a macro (ISMACR), or a keymap (ISKMAP). This makes new keymaps
as necessary. The initial place to do bindings is in MAP. */
int
-rl_generic_bind (type, keyseq, data, map)
- int type;
- const char *keyseq;
- char *data;
- Keymap map;
+rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
{
char *keys;
- int keys_len;
+ int keys_len, prevkey;
register int i;
KEYMAP_ENTRY k;
+ Keymap prevmap;
k.function = 0;
@@ -389,12 +378,18 @@ rl_generic_bind (type, keyseq, data, map)
return -1;
}
+ prevmap = map;
+ prevkey = keys[0];
+
/* Bind keys, making new keymaps as necessary. */
for (i = 0; i < keys_len; i++)
{
unsigned char uc = keys[i];
int ic;
+ if (i > 0)
+ prevkey = ic;
+
ic = uc;
if (ic < 0 || ic >= KEYMAP_SIZE)
{
@@ -406,7 +401,10 @@ rl_generic_bind (type, keyseq, data, map)
{
ic = UNMETA (ic);
if (map[ESC].type == ISKMAP)
- map = FUNCTION_TO_KEYMAP (map, ESC);
+ {
+ prevmap = map;
+ map = FUNCTION_TO_KEYMAP (map, ESC);
+ }
}
if ((i + 1) < keys_len)
@@ -425,6 +423,7 @@ rl_generic_bind (type, keyseq, data, map)
map[ic].type = ISKMAP;
map[ic].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap());
}
+ prevmap = map;
map = FUNCTION_TO_KEYMAP (map, ic);
/* The dispatch code will return this function if no matching
key sequence is found in the keymap. This (with a little
@@ -444,6 +443,7 @@ rl_generic_bind (type, keyseq, data, map)
xfree ((char *)map[ic].function);
else if (map[ic].type == ISKMAP)
{
+ prevmap = map;
map = FUNCTION_TO_KEYMAP (map, ic);
ic = ANYOTHERKEY;
/* If we're trying to override a keymap with a null function
@@ -460,7 +460,28 @@ rl_generic_bind (type, keyseq, data, map)
}
rl_binding_keymap = map;
+
}
+
+ /* If we unbound a key (type == ISFUNC, data == 0), and the prev keymap
+ points to the keymap where we unbound the key (sanity check), and the
+ current binding keymap is empty (rl_empty_keymap() returns non-zero),
+ and the binding keymap has ANYOTHERKEY set with type == ISFUNC
+ (overridden function), delete the now-empty keymap, take the previously-
+ overridden function and remove the override. */
+ /* Right now, this only works one level back. */
+ if (type == ISFUNC && data == 0 &&
+ prevmap[prevkey].type == ISKMAP &&
+ (FUNCTION_TO_KEYMAP(prevmap, prevkey) == rl_binding_keymap) &&
+ rl_binding_keymap[ANYOTHERKEY].type == ISFUNC &&
+ rl_empty_keymap (rl_binding_keymap))
+ {
+ prevmap[prevkey].type = rl_binding_keymap[ANYOTHERKEY].type;
+ prevmap[prevkey].function = rl_binding_keymap[ANYOTHERKEY].function;
+ rl_discard_keymap (rl_binding_keymap);
+ rl_binding_keymap = prevmap;
+ }
+
xfree (keys);
return 0;
}
@@ -469,10 +490,7 @@ rl_generic_bind (type, keyseq, data, map)
an array of characters. LEN gets the final length of ARRAY. Return
non-zero if there was an error parsing SEQ. */
int
-rl_translate_keyseq (seq, array, len)
- const char *seq;
- char *array;
- int *len;
+rl_translate_keyseq (const char *seq, char *array, int *len)
{
register int i, c, l, temp;
@@ -483,7 +501,10 @@ rl_translate_keyseq (seq, array, len)
c = seq[++i];
if (c == 0)
- break;
+ {
+ array[l++] = '\\'; /* preserve trailing backslash */
+ break;
+ }
/* Handle \C- and \M- prefixes. */
if ((c == 'C' || c == 'M') && seq[i + 1] == '-')
@@ -494,8 +515,6 @@ rl_translate_keyseq (seq, array, len)
array[l++] = ESC; /* ESC is meta-prefix */
i += 5;
array[l++] = CTRL (_rl_to_upper (seq[i]));
- if (seq[i] == '\0')
- i--;
}
else if (c == 'M')
{
@@ -524,6 +543,8 @@ rl_translate_keyseq (seq, array, len)
/* Special hack for C-?... */
array[l++] = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i]));
}
+ if (seq[i] == '\0')
+ break;
continue;
}
@@ -596,8 +617,7 @@ rl_translate_keyseq (seq, array, len)
}
static int
-_rl_isescape (c)
- int c;
+_rl_isescape (int c)
{
switch (c)
{
@@ -613,8 +633,7 @@ _rl_isescape (c)
}
static int
-_rl_escchar (c)
- int c;
+_rl_escchar (int c)
{
switch (c)
{
@@ -630,8 +649,7 @@ _rl_escchar (c)
}
char *
-rl_untranslate_keyseq (seq)
- int seq;
+rl_untranslate_keyseq (int seq)
{
static char kseq[16];
int i, c;
@@ -681,9 +699,7 @@ rl_untranslate_keyseq (seq)
}
char *
-_rl_untranslate_macro_value (seq, use_escapes)
- char *seq;
- int use_escapes;
+_rl_untranslate_macro_value (char *seq, int use_escapes)
{
char *ret, *r, *s;
int c;
@@ -742,8 +758,7 @@ _rl_untranslate_macro_value (seq, use_escapes)
If STRING doesn't have a matching function, then a NULL pointer
is returned. */
rl_command_func_t *
-rl_named_function (string)
- const char *string;
+rl_named_function (const char *string)
{
register int i;
@@ -760,18 +775,15 @@ rl_named_function (string)
used. TYPE, if non-NULL, is a pointer to an int which will receive the
type of the object pointed to. One of ISFUNC (function), ISKMAP (keymap),
or ISMACR (macro). */
-rl_command_func_t *
-rl_function_of_keyseq (keyseq, map, type)
- const char *keyseq;
- Keymap map;
- int *type;
+static rl_command_func_t *
+_rl_function_of_keyseq_internal (const char *keyseq, size_t len, Keymap map, int *type)
{
register int i;
if (map == 0)
map = _rl_keymap;
- for (i = 0; keyseq && keyseq[i]; i++)
+ for (i = 0; keyseq && i < len; i++)
{
unsigned char ic = keyseq[i];
@@ -823,6 +835,18 @@ rl_function_of_keyseq (keyseq, map, type)
return ((rl_command_func_t *) NULL);
}
+rl_command_func_t *
+rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)
+{
+ return _rl_function_of_keyseq_internal (keyseq, strlen (keyseq), map, type);
+}
+
+rl_command_func_t *
+rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type)
+{
+ return _rl_function_of_keyseq_internal (keyseq, len, map, type);
+}
+
/* The last key bindings file read. */
static char *last_readline_init_file = (char *)NULL;
@@ -835,17 +859,20 @@ static int current_readline_init_lineno;
The size of the buffer is returned in *SIZEP. Returns NULL if any
errors were encountered. */
static char *
-_rl_read_file (filename, sizep)
- char *filename;
- size_t *sizep;
+_rl_read_file (char *filename, size_t *sizep)
{
struct stat finfo;
size_t file_size;
char *buffer;
int i, file;
- if ((stat (filename, &finfo) < 0) || (file = open (filename, O_RDONLY, 0666)) < 0)
- return ((char *)NULL);
+ file = -1;
+ if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0))
+ {
+ if (file >= 0)
+ close (file);
+ return ((char *)NULL);
+ }
file_size = (size_t)finfo.st_size;
@@ -882,8 +909,7 @@ _rl_read_file (filename, sizep)
/* Re-read the current keybindings file. */
int
-rl_re_read_init_file (count, ignore)
- int count, ignore;
+rl_re_read_init_file (int count, int ignore)
{
int r;
r = rl_read_init_file ((const char *)NULL);
@@ -900,8 +926,7 @@ rl_re_read_init_file (count, ignore)
If the file existed and could be opened and read, 0 is returned,
otherwise errno is returned. */
int
-rl_read_init_file (filename)
- const char *filename;
+rl_read_init_file (const char *filename)
{
/* Default the filename. */
if (filename == 0)
@@ -926,9 +951,7 @@ rl_read_init_file (filename)
}
static int
-_rl_read_init_file (filename, include_level)
- const char *filename;
- int include_level;
+_rl_read_init_file (const char *filename, int include_level)
{
register int i;
char *buffer, *openname, *line, *end;
@@ -1027,6 +1050,62 @@ _rl_init_file_error (va_alist)
/* **************************************************************** */
/* */
+/* Parser Helper Functions */
+/* */
+/* **************************************************************** */
+
+static int
+parse_comparison_op (s, indp)
+ const char *s;
+ int *indp;
+{
+ int i, peekc, op;
+
+ if (OPSTART (s[*indp]) == 0)
+ return -1;
+ i = *indp;
+ peekc = s[i] ? s[i+1] : 0;
+ op = -1;
+
+ if (s[i] == '=')
+ {
+ op = OP_EQ;
+ if (peekc == '=')
+ i++;
+ i++;
+ }
+ else if (s[i] == '!' && peekc == '=')
+ {
+ op = OP_NE;
+ i += 2;
+ }
+ else if (s[i] == '<' && peekc == '=')
+ {
+ op = OP_LE;
+ i += 2;
+ }
+ else if (s[i] == '>' && peekc == '=')
+ {
+ op = OP_GE;
+ i += 2;
+ }
+ else if (s[i] == '<')
+ {
+ op = OP_LT;
+ i += 1;
+ }
+ else if (s[i] == '>')
+ {
+ op = OP_GT;
+ i += 1;
+ }
+
+ *indp = i;
+ return op;
+}
+
+/* **************************************************************** */
+/* */
/* Parser Directives */
/* */
/* **************************************************************** */
@@ -1055,10 +1134,11 @@ static int if_stack_size;
/* Push _rl_parsing_conditionalized_out, and set parser state based
on ARGS. */
static int
-parser_if (args)
- char *args;
+parser_if (char *args)
{
- register int i;
+ int i, llen, boolvar, strvar;
+
+ boolvar = strvar = -1;
/* Push parser state. */
if (if_stack_depth + 1 >= if_stack_size)
@@ -1075,6 +1155,8 @@ parser_if (args)
if (_rl_parsing_conditionalized_out)
return 0;
+ llen = strlen (args);
+
/* Isolate first argument. */
for (i = 0; args[i] && !whitespace (args[i]); i++);
@@ -1117,10 +1199,138 @@ parser_if (args)
_rl_parsing_conditionalized_out = mode != rl_editing_mode;
}
#endif /* VI_MODE */
+ else if (_rl_strnicmp (args, "version", 7) == 0)
+ {
+ int rlversion, versionarg, op, previ, major, minor;
+
+ _rl_parsing_conditionalized_out = 1;
+ rlversion = RL_VERSION_MAJOR*10 + RL_VERSION_MINOR;
+ /* if "version" is separated from the operator by whitespace, or the
+ operand is separated from the operator by whitespace, restore it.
+ We're more liberal with allowed whitespace for this variable. */
+ if (i > 0 && i <= llen && args[i-1] == '\0')
+ args[i-1] = ' ';
+ args[llen] = '\0'; /* just in case */
+ for (i = 7; whitespace (args[i]); i++)
+ ;
+ if (OPSTART(args[i]) == 0)
+ {
+ _rl_init_file_error ("comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line");
+ return 0;
+ }
+ previ = i;
+ op = parse_comparison_op (args, &i);
+ if (op <= 0)
+ {
+ _rl_init_file_error ("comparison operator expected, found `%s'", args+previ);
+ return 0;
+ }
+ for ( ; args[i] && whitespace (args[i]); i++)
+ ;
+ if (args[i] == 0 || _rl_digit_p (args[i]) == 0)
+ {
+ _rl_init_file_error ("numeric argument expected, found `%s'", args+i);
+ return 0;
+ }
+ major = minor = 0;
+ previ = i;
+ for ( ; args[i] && _rl_digit_p (args[i]); i++)
+ major = major*10 + _rl_digit_value (args[i]);
+ if (args[i] == '.')
+ {
+ if (args[i + 1] && _rl_digit_p (args [i + 1]) == 0)
+ {
+ _rl_init_file_error ("numeric argument expected, found `%s'", args+previ);
+ return 0;
+ }
+ for (++i; args[i] && _rl_digit_p (args[i]); i++)
+ minor = minor*10 + _rl_digit_value (args[i]);
+ }
+ /* optional - check for trailing garbage on the line, allow whitespace
+ and a trailing comment */
+ previ = i;
+ for ( ; args[i] && whitespace (args[i]); i++)
+ ;
+ if (args[i] && args[i] != '#')
+ {
+ _rl_init_file_error ("trailing garbage on line: `%s'", args+previ);
+ return 0;
+ }
+ versionarg = major*10 + minor;
+
+ switch (op)
+ {
+ case OP_EQ:
+ _rl_parsing_conditionalized_out = rlversion == versionarg;
+ break;
+ case OP_NE:
+ _rl_parsing_conditionalized_out = rlversion != versionarg;
+ break;
+ case OP_GT:
+ _rl_parsing_conditionalized_out = rlversion > versionarg;
+ break;
+ case OP_GE:
+ _rl_parsing_conditionalized_out = rlversion >= versionarg;
+ break;
+ case OP_LT:
+ _rl_parsing_conditionalized_out = rlversion < versionarg;
+ break;
+ case OP_LE:
+ _rl_parsing_conditionalized_out = rlversion <= versionarg;
+ break;
+ }
+ }
/* Check to see if the first word in ARGS is the same as the
value stored in rl_readline_name. */
else if (_rl_stricmp (args, rl_readline_name) == 0)
_rl_parsing_conditionalized_out = 0;
+ else if ((boolvar = find_boolean_var (args)) >= 0 || (strvar = find_string_var (args)) >= 0)
+ {
+ int op, previ;
+ size_t vlen;
+ const char *vname;
+ char *valuearg, *vval, prevc;
+
+ _rl_parsing_conditionalized_out = 1;
+ vname = (boolvar >= 0) ? boolean_varname (boolvar) : string_varname (strvar);
+ vlen = strlen (vname);
+ if (i > 0 && i <= llen && args[i-1] == '\0')
+ args[i-1] = ' ';
+ args[llen] = '\0'; /* just in case */
+ for (i = vlen; whitespace (args[i]); i++)
+ ;
+ if (CMPSTART(args[i]) == 0)
+ {
+ _rl_init_file_error ("equality comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line");
+ return 0;
+ }
+ previ = i;
+ op = parse_comparison_op (args, &i);
+ if (op != OP_EQ && op != OP_NE)
+ {
+ _rl_init_file_error ("equality comparison operator expected, found `%s'", args+previ);
+ return 0;
+ }
+ for ( ; args[i] && whitespace (args[i]); i++)
+ ;
+ if (args[i] == 0)
+ {
+ _rl_init_file_error ("argument expected, found `%s'", args+i);
+ return 0;
+ }
+ previ = i;
+ valuearg = args + i;
+ for ( ; args[i] && whitespace (args[i]) == 0; i++)
+ ;
+ prevc = args[i];
+ args[i] = '\0'; /* null-terminate valuearg */
+ vval = rl_variable_value (vname);
+ if (op == OP_EQ)
+ _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) != 0;
+ else if (op == OP_NE)
+ _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) == 0;
+ args[i] = prevc;
+ }
else
_rl_parsing_conditionalized_out = 1;
return 0;
@@ -1128,8 +1338,7 @@ parser_if (args)
/* Invert the current parser state if there is anything on the stack. */
static int
-parser_else (args)
- char *args;
+parser_else (char *args)
{
register int i;
@@ -1159,8 +1368,7 @@ parser_else (args)
/* Terminate a conditional, popping the value of
_rl_parsing_conditionalized_out from the stack. */
static int
-parser_endif (args)
- char *args;
+parser_endif (char *args)
{
if (if_stack_depth)
_rl_parsing_conditionalized_out = if_stack[--if_stack_depth];
@@ -1170,8 +1378,7 @@ parser_endif (args)
}
static int
-parser_include (args)
- char *args;
+parser_include (char *args)
{
const char *old_init_file;
char *e;
@@ -1211,8 +1418,7 @@ static const struct {
/* Handle a parser directive. STATEMENT is the line of the directive
without any leading `$'. */
static int
-handle_parser_directive (statement)
- char *statement;
+handle_parser_directive (char *statement)
{
register int i;
char *directive, *args;
@@ -1249,9 +1455,7 @@ handle_parser_directive (statement)
/* Start at STRING[START] and look for DELIM. Return I where STRING[I] ==
DELIM or STRING[I] == 0. DELIM is usually a double quote. */
static int
-_rl_skip_to_delim (string, start, delim)
- char *string;
- int start, delim;
+_rl_skip_to_delim (char *string, int start, int delim)
{
int i, c, passc;
@@ -1283,8 +1487,7 @@ _rl_skip_to_delim (string, start, delim)
a variable binding command looks like: set variable value.
A new-style keybinding looks like "\C-x\C-x": exchange-point-and-mark. */
int
-rl_parse_and_bind (string)
- char *string;
+rl_parse_and_bind (char *string)
{
char *funname, *kname;
register int c, i;
@@ -1328,6 +1531,12 @@ rl_parse_and_bind (string)
/* Advance to the colon (:) or whitespace which separates the two objects. */
for (; (c = string[i]) && c != ':' && c != ' ' && c != '\t'; i++ );
+ if (i == 0)
+ {
+ _rl_init_file_error ("`%s': invalid key binding: missing key sequence", string);
+ return 1;
+ }
+
equivalency = (c == ':' && string[i + 1] == '=');
foundsep = c != 0;
@@ -1406,6 +1615,11 @@ remove_trailing:
i = _rl_skip_to_delim (string, i+1, *funname);
if (string[i])
i++;
+ else
+ {
+ _rl_init_file_error ("`%s': missing closing quote for macro", funname);
+ return 1;
+ }
}
/* Advance to the end of the string. */
@@ -1583,8 +1797,7 @@ static const struct {
};
static int
-find_boolean_var (name)
- const char *name;
+find_boolean_var (const char *name)
{
register int i;
@@ -1594,12 +1807,17 @@ find_boolean_var (name)
return -1;
}
+static const char *
+boolean_varname (int i)
+{
+ return ((i >= 0) ? boolean_varlist[i].name : (char *)NULL);
+}
+
/* Hooks for handling special boolean variables, where a
function needs to be called or another variable needs
to be changed when they're changed. */
static void
-hack_special_boolean_var (i)
- int i;
+hack_special_boolean_var (int i)
{
const char *name;
@@ -1668,8 +1886,7 @@ static const struct {
};
static int
-find_string_var (name)
- const char *name;
+find_string_var (const char *name)
{
register int i;
@@ -1679,12 +1896,17 @@ find_string_var (name)
return -1;
}
+static const char *
+string_varname (int i)
+{
+ return ((i >= 0) ? string_varlist[i].name : (char *)NULL);
+}
+
/* A boolean value that can appear in a `set variable' command is true if
the value is null or empty, `on' (case-insensitive), or "1". Any other
values result in 0 (false). */
static int
-bool_to_int (value)
- const char *value;
+bool_to_int (const char *value)
{
return (value == 0 || *value == '\0' ||
(_rl_stricmp (value, "on") == 0) ||
@@ -1692,8 +1914,7 @@ bool_to_int (value)
}
char *
-rl_variable_value (name)
- const char *name;
+rl_variable_value (const char *name)
{
register int i;
@@ -1711,8 +1932,7 @@ rl_variable_value (name)
}
int
-rl_variable_bind (name, value)
- const char *name, *value;
+rl_variable_bind (const char *name, const char *value)
{
register int i;
int v;
@@ -1743,8 +1963,7 @@ rl_variable_bind (name, value)
}
static int
-sv_editmode (value)
- const char *value;
+sv_editmode (const char *value)
{
if (_rl_strnicmp (value, "vi", 2) == 0)
{
@@ -1764,8 +1983,7 @@ sv_editmode (value)
}
static int
-sv_combegin (value)
- const char *value;
+sv_combegin (const char *value)
{
if (value && *value)
{
@@ -1777,8 +1995,7 @@ sv_combegin (value)
}
static int
-sv_dispprefix (value)
- const char *value;
+sv_dispprefix (const char *value)
{
int nval = 0;
@@ -1793,8 +2010,7 @@ sv_dispprefix (value)
}
static int
-sv_compquery (value)
- const char *value;
+sv_compquery (const char *value)
{
int nval = 100;
@@ -1809,8 +2025,7 @@ sv_compquery (value)
}
static int
-sv_compwidth (value)
- const char *value;
+sv_compwidth (const char *value)
{
int nval = -1;
@@ -1822,8 +2037,7 @@ sv_compwidth (value)
}
static int
-sv_histsize (value)
- const char *value;
+sv_histsize (const char *value)
{
int nval;
@@ -1842,8 +2056,7 @@ sv_histsize (value)
}
static int
-sv_keymap (value)
- const char *value;
+sv_keymap (const char *value)
{
Keymap kmap;
@@ -1857,8 +2070,7 @@ sv_keymap (value)
}
static int
-sv_seqtimeout (value)
- const char *value;
+sv_seqtimeout (const char *value)
{
int nval;
@@ -1874,8 +2086,7 @@ sv_seqtimeout (value)
}
static int
-sv_bell_style (value)
- const char *value;
+sv_bell_style (const char *value)
{
if (value == 0 || *value == '\0')
_rl_bell_preference = AUDIBLE_BELL;
@@ -1891,8 +2102,7 @@ sv_bell_style (value)
}
static int
-sv_isrchterm (value)
- const char *value;
+sv_isrchterm (const char *value)
{
int beg, end, delim;
char *v;
@@ -1929,8 +2139,7 @@ sv_isrchterm (value)
extern char *_rl_emacs_mode_str;
static int
-sv_emacs_modestr (value)
- const char *value;
+sv_emacs_modestr (const char *value)
{
if (value && *value)
{
@@ -1958,8 +2167,7 @@ sv_emacs_modestr (value)
}
static int
-sv_viins_modestr (value)
- const char *value;
+sv_viins_modestr (const char *value)
{
if (value && *value)
{
@@ -1987,8 +2195,7 @@ sv_viins_modestr (value)
}
static int
-sv_vicmd_modestr (value)
- const char *value;
+sv_vicmd_modestr (const char *value)
{
if (value && *value)
{
@@ -2039,8 +2246,7 @@ static const assoc_list name_key_alist[] = {
};
static int
-glean_key_from_name (name)
- char *name;
+glean_key_from_name (char *name)
{
register int i;
@@ -2052,10 +2258,12 @@ glean_key_from_name (name)
}
/* Auxiliary functions to manage keymaps. */
-static const struct {
- const char * const name;
+struct name_and_keymap {
+ char *name;
Keymap map;
-} keymap_names[] = {
+};
+
+static struct name_and_keymap builtin_keymap_names[] = {
{ "emacs", emacs_standard_keymap },
{ "emacs-standard", emacs_standard_keymap },
{ "emacs-meta", emacs_meta_keymap },
@@ -2069,45 +2277,116 @@ static const struct {
{ (char *)0x0, (Keymap)0x0 }
};
-Keymap
-rl_get_keymap_by_name (name)
- const char *name;
+/* -1 for NULL entry */
+#define NUM_BUILTIN_KEYMAPS (sizeof (builtin_keymap_names) / sizeof (builtin_keymap_names[0]) - 1)
+
+static struct name_and_keymap *keymap_names = builtin_keymap_names;
+
+static int
+_rl_get_keymap_by_name (const char *name)
{
register int i;
for (i = 0; keymap_names[i].name; i++)
if (_rl_stricmp (name, keymap_names[i].name) == 0)
- return (keymap_names[i].map);
- return ((Keymap) NULL);
+ return (i);
+ return -1;
}
-char *
-rl_get_keymap_name (map)
- Keymap map;
+Keymap
+rl_get_keymap_by_name (const char *name)
+{
+ int i;
+
+ i = _rl_get_keymap_by_name (name);
+ return ((i >= 0) ? keymap_names[i].map : (Keymap) NULL);
+}
+
+static int
+_rl_get_keymap_by_map (Keymap map)
{
register int i;
+
for (i = 0; keymap_names[i].name; i++)
if (map == keymap_names[i].map)
- return ((char *)keymap_names[i].name);
- return ((char *)NULL);
+ return (i);
+ return -1;
}
-
+
+char *
+rl_get_keymap_name (Keymap map)
+{
+ int i;
+
+ i = _rl_get_keymap_by_map (map);
+ return ((i >= 0) ? keymap_names[i].name : (char *)NULL);
+}
+
+int
+rl_set_keymap_name (const char *name, Keymap map)
+{
+ int i, ni, mi;
+
+ /* First check whether or not we're trying to rename a builtin keymap */
+ mi = _rl_get_keymap_by_map (map);
+ if (mi >= 0 && mi < NUM_BUILTIN_KEYMAPS)
+ return -1;
+
+ /* Then reject attempts to set one of the builtin names to a new map */
+ ni = _rl_get_keymap_by_name (name);
+ if (ni >= 0 && ni < NUM_BUILTIN_KEYMAPS)
+ return -1;
+
+ /* Renaming a keymap we already added */
+ if (mi >= 0) /* XXX - could be >= NUM_BUILTIN_KEYMAPS */
+ {
+ xfree (keymap_names[mi].name);
+ keymap_names[mi].name = savestring (name);
+ return mi;
+ }
+
+ /* Associating new keymap with existing name */
+ if (ni >= 0)
+ {
+ keymap_names[ni].map = map;
+ return ni;
+ }
+
+ for (i = 0; keymap_names[i].name; i++)
+ ;
+
+ if (keymap_names == builtin_keymap_names)
+ {
+ keymap_names = xmalloc ((i + 2) * sizeof (struct name_and_keymap));
+ memcpy (keymap_names, builtin_keymap_names, i * sizeof (struct name_and_keymap));
+ }
+ else
+ keymap_names = xrealloc (keymap_names, (i + 2) * sizeof (struct name_and_keymap));
+
+ keymap_names[i].name = savestring (name);
+ keymap_names[i].map = map;
+
+ keymap_names[i+1].name = NULL;
+ keymap_names[i+1].map = NULL;
+
+ return i;
+}
+
void
-rl_set_keymap (map)
- Keymap map;
+rl_set_keymap (Keymap map)
{
if (map)
_rl_keymap = map;
}
Keymap
-rl_get_keymap ()
+rl_get_keymap (void)
{
return (_rl_keymap);
}
void
-rl_set_keymap_from_edit_mode ()
+rl_set_keymap_from_edit_mode (void)
{
if (rl_editing_mode == emacs_mode)
_rl_keymap = emacs_standard_keymap;
@@ -2118,7 +2397,7 @@ rl_set_keymap_from_edit_mode ()
}
char *
-rl_get_keymap_name_from_edit_mode ()
+rl_get_keymap_name_from_edit_mode (void)
{
if (rl_editing_mode == emacs_mode)
return "emacs";
@@ -2143,7 +2422,7 @@ rl_get_keymap_name_from_edit_mode ()
/* Print the names of functions known to Readline. */
void
-rl_list_funmap_names ()
+rl_list_funmap_names (void)
{
register int i;
const char **funmap_names;
@@ -2160,8 +2439,7 @@ rl_list_funmap_names ()
}
static char *
-_rl_get_keyname (key)
- int key;
+_rl_get_keyname (int key)
{
char *keyname;
int i, c;
@@ -2236,9 +2514,7 @@ _rl_get_keyname (key)
/* Return a NULL terminated array of strings which represent the key
sequences that are used to invoke FUNCTION in MAP. */
char **
-rl_invoking_keyseqs_in_map (function, map)
- rl_command_func_t *function;
- Keymap map;
+rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
{
register int key;
char **result;
@@ -2345,8 +2621,7 @@ rl_invoking_keyseqs_in_map (function, map)
/* Return a NULL terminated array of strings which represent the key
sequences that can be used to invoke FUNCTION using the current keymap. */
char **
-rl_invoking_keyseqs (function)
- rl_command_func_t *function;
+rl_invoking_keyseqs (rl_command_func_t *function)
{
return (rl_invoking_keyseqs_in_map (function, _rl_keymap));
}
@@ -2355,8 +2630,7 @@ rl_invoking_keyseqs (function)
PRINT_READABLY is non-zero, then print the output in such a way
that it can be read back in. */
void
-rl_function_dumper (print_readably)
- int print_readably;
+rl_function_dumper (int print_readably)
{
register int i;
const char **names;
@@ -2427,8 +2701,7 @@ rl_function_dumper (print_readably)
rl_outstream. If an explicit argument is given, then print
the output in such a way that it can be read back in. */
int
-rl_dump_functions (count, key)
- int count, key;
+rl_dump_functions (int count, int key)
{
if (rl_dispatching)
fprintf (rl_outstream, "\r\n");
@@ -2438,10 +2711,7 @@ rl_dump_functions (count, key)
}
static void
-_rl_macro_dumper_internal (print_readably, map, prefix)
- int print_readably;
- Keymap map;
- char *prefix;
+_rl_macro_dumper_internal (int print_readably, Keymap map, char *prefix)
{
register int key;
char *keyname, *out;
@@ -2500,15 +2770,13 @@ _rl_macro_dumper_internal (print_readably, map, prefix)
}
void
-rl_macro_dumper (print_readably)
- int print_readably;
+rl_macro_dumper (int print_readably)
{
_rl_macro_dumper_internal (print_readably, _rl_keymap, (char *)NULL);
}
int
-rl_dump_macros (count, key)
- int count, key;
+rl_dump_macros (int count, int key)
{
if (rl_dispatching)
fprintf (rl_outstream, "\r\n");
@@ -2518,8 +2786,7 @@ rl_dump_macros (count, key)
}
static char *
-_rl_get_string_variable_value (name)
- const char *name;
+_rl_get_string_variable_value (const char *name)
{
static char numbuf[32];
char *ret;
@@ -2599,8 +2866,7 @@ _rl_get_string_variable_value (name)
}
void
-rl_variable_dumper (print_readably)
- int print_readably;
+rl_variable_dumper (int print_readably)
{
int i;
char *v;
@@ -2631,8 +2897,7 @@ rl_variable_dumper (print_readably)
rl_outstream. If an explicit argument is given, then print
the output in such a way that it can be read back in. */
int
-rl_dump_variables (count, key)
- int count, key;
+rl_dump_variables (int count, int key)
{
if (rl_dispatching)
fprintf (rl_outstream, "\r\n");
@@ -2643,9 +2908,7 @@ rl_dump_variables (count, key)
/* Return non-zero if any members of ARRAY are a substring in STRING. */
static int
-substring_member_of_array (string, array)
- const char *string;
- const char * const *array;
+substring_member_of_array (const char *string, const char * const *array)
{
while (*array)
{
diff --git a/callback.c b/callback.c
index cc3ce11..a466cf9 100644
--- a/callback.c
+++ b/callback.c
@@ -1,6 +1,6 @@
/* callback.c -- functions to use readline as an X `callback' mechanism. */
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -60,7 +60,7 @@ int rl_persistent_signal_handlers = 0;
/* **************************************************************** */
/* */
-/* Callback Readline Functions */
+/* Callback Readline Functions */
/* */
/* **************************************************************** */
@@ -80,7 +80,7 @@ static int in_handler; /* terminal_prepped and signals set? */
/* Make sure the terminal is set up, initialize readline, and prompt. */
static void
-_rl_callback_newline ()
+_rl_callback_newline (void)
{
rl_initialize ();
@@ -103,9 +103,7 @@ _rl_callback_newline ()
/* Install a readline handler, set up the terminal, and issue the prompt. */
void
-rl_callback_handler_install (prompt, linefunc)
- const char *prompt;
- rl_vcpfunc_t *linefunc;
+rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *linefunc)
{
rl_set_prompt (prompt);
RL_SETSTATE (RL_STATE_CALLBACK);
@@ -126,7 +124,7 @@ rl_callback_handler_install (prompt, linefunc)
/* Read one character, and dispatch to the handler if it ends the line. */
void
-rl_callback_read_char ()
+rl_callback_read_char (void)
{
char *line;
int eof, jcode;
@@ -299,7 +297,7 @@ rl_callback_read_char ()
/* Remove the handler, and make sure the terminal is in its normal state. */
void
-rl_callback_handler_remove ()
+rl_callback_handler_remove (void)
{
rl_linefunc = NULL;
RL_UNSETSTATE (RL_STATE_CALLBACK);
@@ -316,8 +314,7 @@ rl_callback_handler_remove ()
}
_rl_callback_generic_arg *
-_rl_callback_data_alloc (count)
- int count;
+_rl_callback_data_alloc (int count)
{
_rl_callback_generic_arg *arg;
@@ -330,15 +327,14 @@ _rl_callback_data_alloc (count)
}
void
-_rl_callback_data_dispose (arg)
- _rl_callback_generic_arg *arg;
+_rl_callback_data_dispose (_rl_callback_generic_arg *arg)
{
xfree (arg);
}
/* Make sure that this agrees with cases in rl_callback_read_char */
void
-rl_callback_sigcleanup ()
+rl_callback_sigcleanup (void)
{
if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
return;
diff --git a/colors.c b/colors.c
index 7859f5d..53758e0 100644
--- a/colors.c
+++ b/colors.c
@@ -2,7 +2,7 @@
Modified by Chet Ramey for Readline.
- Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015
+ Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015, 2017
Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
@@ -37,6 +37,10 @@
#include "posixstat.h" // stat related macros (S_ISREG, ...)
#include <fcntl.h> // S_ISUID
+#ifndef S_ISDIR
+# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
+#endif
+
// strlen()
#if defined (HAVE_STRING_H)
# include <string.h>
@@ -66,7 +70,8 @@ COLOR_EXT_TYPE *_rl_color_ext_list = 0;
/* Output a color indicator (which may contain nulls). */
void
-_rl_put_indicator (const struct bin_str *ind) {
+_rl_put_indicator (const struct bin_str *ind)
+{
fwrite (ind->string, ind->len, 1, rl_outstream);
}
@@ -183,11 +188,17 @@ _rl_print_color_indicator (const char *f)
{
colored_filetype = C_FILE;
+#if defined (S_ISUID)
if ((mode & S_ISUID) != 0 && is_colored (C_SETUID))
colored_filetype = C_SETUID;
- else if ((mode & S_ISGID) != 0 && is_colored (C_SETGID))
+ else
+#endif
+#if defined (S_ISGID)
+ if ((mode & S_ISGID) != 0 && is_colored (C_SETGID))
colored_filetype = C_SETGID;
- else if (is_colored (C_CAP) && 0) //f->has_capability)
+ else
+#endif
+ if (is_colored (C_CAP) && 0) //f->has_capability)
colored_filetype = C_CAP;
else if ((mode & S_IXUGO) != 0 && is_colored (C_EXEC))
colored_filetype = C_EXEC;
@@ -211,12 +222,16 @@ _rl_print_color_indicator (const char *f)
colored_filetype = C_STICKY;
#endif
}
+#if defined (S_ISLNK)
else if (S_ISLNK (mode))
colored_filetype = C_LINK;
+#endif
else if (S_ISFIFO (mode))
colored_filetype = C_FIFO;
+#if defined (S_ISSOCK)
else if (S_ISSOCK (mode))
colored_filetype = C_SOCK;
+#endif
else if (S_ISBLK (mode))
colored_filetype = C_BLK;
else if (S_ISCHR (mode))
diff --git a/compat.c b/compat.c
index 2af5120..3ade362 100644
--- a/compat.c
+++ b/compat.c
@@ -1,6 +1,6 @@
/* compat.c -- backwards compatibility functions. */
-/* Copyright (C) 2000-2009 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -46,68 +46,61 @@ extern char *rl_filename_completion_function PARAMS((const char *, int));
/* Provide backwards-compatible entry points for old function names. */
void
-free_undo_list ()
+free_undo_list (void)
{
rl_free_undo_list ();
}
int
-maybe_replace_line ()
+maybe_replace_line (void)
{
return rl_maybe_replace_line ();
}
int
-maybe_save_line ()
+maybe_save_line (void)
{
return rl_maybe_save_line ();
}
int
-maybe_unsave_line ()
+maybe_unsave_line (void)
{
return rl_maybe_unsave_line ();
}
int
-ding ()
+ding (void)
{
return rl_ding ();
}
int
-crlf ()
+crlf (void)
{
return rl_crlf ();
}
int
-alphabetic (c)
- int c;
+alphabetic (int c)
{
return rl_alphabetic (c);
}
char **
-completion_matches (s, f)
- const char *s;
- rl_compentry_func_t *f;
+completion_matches (const char *s, rl_compentry_func_t *f)
{
return rl_completion_matches (s, f);
}
char *
-username_completion_function (s, i)
- const char *s;
- int i;
+username_completion_function (const char *s, int i)
{
return rl_username_completion_function (s, i);
}
char *
-filename_completion_function (s, i)
- const char *s;
- int i;
+filename_completion_function (const char *s, int i)
{
return rl_filename_completion_function (s, i);
}
diff --git a/complete.c b/complete.c
index 0a81129..adce0d6 100644
--- a/complete.c
+++ b/complete.c
@@ -1,6 +1,6 @@
/* complete.c -- filename completion for readline. */
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -198,15 +198,6 @@ int _rl_completion_prefix_display_length = 0;
matches. If < 0 or > _rl_screenwidth, it is ignored. */
int _rl_completion_columns = -1;
-/* Global variables available to applications using readline. */
-
-#if defined (VISIBLE_STATS)
-/* Non-zero means add an additional character to each filename displayed
- during listing completion iff rl_filename_completion_desired which helps
- to indicate the type of file being listed. */
-int rl_visible_stats = 0;
-#endif /* VISIBLE_STATS */
-
#if defined (COLOR_SUPPORT)
/* Non-zero means to use colors to indicate file type when listing possible
completions. The colors used are taken from $LS_COLORS, if set. */
@@ -227,6 +218,15 @@ int _rl_skip_completed_text = 0;
cycle of possible completions instead of the last. */
int _rl_menu_complete_prefix_first = 0;
+/* Global variables available to applications using readline. */
+
+#if defined (VISIBLE_STATS)
+/* Non-zero means add an additional character to each filename displayed
+ during listing completion iff rl_filename_completion_desired which helps
+ to indicate the type of file being listed. */
+int rl_visible_stats = 0;
+#endif /* VISIBLE_STATS */
+
/* If non-zero, then this is the address of a function to call when
completing on a directory name. The function is called with
the address of a string (the current directory name) as an arg. */
@@ -422,8 +422,7 @@ static int _rl_complete_display_matches_interrupt = 0;
that does the initial simple matching selection algorithm (see
rl_completion_matches ()). The default is to do filename completion. */
int
-rl_complete (ignore, invoking_key)
- int ignore, invoking_key;
+rl_complete (int ignore, int invoking_key)
{
rl_completion_invoking_key = invoking_key;
@@ -441,16 +440,14 @@ rl_complete (ignore, invoking_key)
/* List the possible completions. See description of rl_complete (). */
int
-rl_possible_completions (ignore, invoking_key)
- int ignore, invoking_key;
+rl_possible_completions (int ignore, int invoking_key)
{
rl_completion_invoking_key = invoking_key;
return (rl_complete_internal ('?'));
}
int
-rl_insert_completions (ignore, invoking_key)
- int ignore, invoking_key;
+rl_insert_completions (int ignore, int invoking_key)
{
rl_completion_invoking_key = invoking_key;
return (rl_complete_internal ('*'));
@@ -462,8 +459,7 @@ rl_insert_completions (ignore, invoking_key)
an application-specific completion function to honor the
show-all-if-ambiguous readline variable. */
int
-rl_completion_mode (cfunc)
- rl_command_func_t *cfunc;
+rl_completion_mode (rl_command_func_t *cfunc)
{
if (rl_last_func == cfunc && !completion_changed_buffer)
return '?';
@@ -483,16 +479,14 @@ rl_completion_mode (cfunc)
/* Reset readline state on a signal or other event. */
void
-_rl_reset_completion_state ()
+_rl_reset_completion_state (void)
{
rl_completion_found_quote = 0;
rl_completion_quote_character = 0;
}
static void
-_rl_complete_sigcleanup (sig, ptr)
- int sig;
- void *ptr;
+_rl_complete_sigcleanup (int sig, void *ptr)
{
if (sig == SIGINT) /* XXX - for now */
{
@@ -504,8 +498,7 @@ _rl_complete_sigcleanup (sig, ptr)
/* Set default values for readline word completion. These are the variables
that application completion functions can change or inspect. */
static void
-set_completion_defaults (what_to_do)
- int what_to_do;
+set_completion_defaults (int what_to_do)
{
/* Only the completion entry function can change these. */
rl_filename_completion_desired = 0;
@@ -523,8 +516,7 @@ set_completion_defaults (what_to_do)
/* The user must press "y" or "n". Non-zero return means "y" pressed. */
static int
-get_y_or_n (for_pager)
- int for_pager;
+get_y_or_n (int for_pager)
{
int c;
@@ -557,8 +549,7 @@ get_y_or_n (for_pager)
}
static int
-_rl_internal_pager (lines)
- int lines;
+_rl_internal_pager (int lines)
{
int i;
@@ -575,8 +566,7 @@ _rl_internal_pager (lines)
}
static int
-path_isdir (filename)
- const char *filename;
+path_isdir (const char *filename)
{
struct stat finfo;
@@ -593,8 +583,7 @@ path_isdir (filename)
`%' for character special devices
`#' for block special devices */
static int
-stat_char (filename)
- char *filename;
+stat_char (char *filename)
{
struct stat finfo;
int character, r;
@@ -625,7 +614,10 @@ stat_char (filename)
#endif
if (r == -1)
- return (0);
+ {
+ xfree (f);
+ return (0);
+ }
character = 0;
if (S_ISDIR (finfo.st_mode))
@@ -675,29 +667,28 @@ stat_char (filename)
#if defined (COLOR_SUPPORT)
static int
-colored_stat_start (filename)
- const char *filename;
+colored_stat_start (const char *filename)
{
_rl_set_normal_color ();
return (_rl_print_color_indicator (filename));
}
static void
-colored_stat_end ()
+colored_stat_end (void)
{
_rl_prep_non_filename_text ();
_rl_put_indicator (&_rl_color_indicator[C_CLR_TO_EOL]);
}
static int
-colored_prefix_start ()
+colored_prefix_start (void)
{
_rl_set_normal_color ();
return (_rl_print_prefix_color ());
}
static void
-colored_prefix_end ()
+colored_prefix_end (void)
{
colored_stat_end (); /* for now */
}
@@ -712,8 +703,7 @@ colored_prefix_end ()
for the previous slash and return the portion following that. If
there's no previous slash, we just return what we were passed. */
static char *
-printable_part (pathname)
- char *pathname;
+printable_part (char *pathname)
{
char *temp, *x;
@@ -747,8 +737,7 @@ printable_part (pathname)
/* Compute width of STRING when displayed on screen by print_filename */
static int
-fnwidth (string)
- const char *string;
+fnwidth (const char *string)
{
int width, pos;
#if defined (HANDLE_MULTIBYTE)
@@ -800,10 +789,7 @@ fnwidth (string)
#define ELLIPSIS_LEN 3
static int
-fnprint (to_print, prefix_bytes, real_pathname)
- const char *to_print;
- int prefix_bytes;
- const char *real_pathname;
+fnprint (const char *to_print, int prefix_bytes, const char *real_pathname)
{
int printed_len, w;
const char *s;
@@ -818,6 +804,8 @@ fnprint (to_print, prefix_bytes, real_pathname)
print_len = strlen (to_print);
end = to_print + print_len + 1;
memset (&ps, 0, sizeof (mbstate_t));
+#else
+ print_len = strlen (to_print);
#endif
printed_len = common_prefix_len = 0;
@@ -929,9 +917,7 @@ fnprint (to_print, prefix_bytes, real_pathname)
filenames. Return the number of characters we output. */
static int
-print_filename (to_print, full_pathname, prefix_bytes)
- char *to_print, *full_pathname;
- int prefix_bytes;
+print_filename (char *to_print, char *full_pathname, int prefix_bytes)
{
int printed_len, extension_char, slen, tlen;
char *s, c, *new_full_pathname, *dn;
@@ -988,7 +974,6 @@ print_filename (to_print, full_pathname, prefix_bytes)
slen--;
else
new_full_pathname[slen] = '/';
- new_full_pathname[slen] = '/';
strcpy (new_full_pathname + slen + 1, to_print);
#if defined (VISIBLE_STATS)
@@ -1049,10 +1034,7 @@ print_filename (to_print, full_pathname, prefix_bytes)
}
static char *
-rl_quote_filename (s, rtype, qcp)
- char *s;
- int rtype;
- char *qcp;
+rl_quote_filename (char *s, int rtype, char *qcp)
{
char *r;
@@ -1080,8 +1062,7 @@ rl_quote_filename (s, rtype, qcp)
the value of the delimiter character that caused a word break. */
char
-_rl_find_completion_word (fp, dp)
- int *fp, *dp;
+_rl_find_completion_word (int *fp, int *dp)
{
int scan, end, found_quote, delimiter, pass_next, isbrk;
char quote_char, *brkchars;
@@ -1213,11 +1194,7 @@ _rl_find_completion_word (fp, dp)
}
static char **
-gen_completion_matches (text, start, end, our_func, found_quote, quote_char)
- char *text;
- int start, end;
- rl_compentry_func_t *our_func;
- int found_quote, quote_char;
+gen_completion_matches (char *text, int start, int end, rl_compentry_func_t *our_func, int found_quote, int quote_char)
{
char **matches;
@@ -1261,8 +1238,7 @@ gen_completion_matches (text, start, end, our_func, found_quote, quote_char)
/* Filter out duplicates in MATCHES. This frees up the strings in
MATCHES. */
static char **
-remove_duplicate_matches (matches)
- char **matches;
+remove_duplicate_matches (char **matches)
{
char *lowest_common;
int i, j, newlen;
@@ -1322,10 +1298,7 @@ remove_duplicate_matches (matches)
/* Find the common prefix of the list of matches, and put it into
matches[0]. */
static int
-compute_lcd_of_matches (match_list, matches, text)
- char **match_list;
- int matches;
- const char *text;
+compute_lcd_of_matches (char **match_list, int matches, const char *text)
{
register int i, c1, c2, si;
int low; /* Count of max-matched characters. */
@@ -1451,7 +1424,8 @@ compute_lcd_of_matches (match_list, matches, text)
}
/* sort the list to get consistent answers. */
- qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare);
+ if (rl_sort_completion_matches)
+ qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare);
si = strlen (text);
lx = (si <= low) ? si : low; /* check shorter of text and matches */
@@ -1481,9 +1455,7 @@ compute_lcd_of_matches (match_list, matches, text)
}
static int
-postprocess_matches (matchesp, matching_filenames)
- char ***matchesp;
- int matching_filenames;
+postprocess_matches (char ***matchesp, int matching_filenames)
{
char *t, **matches, **temp_matches;
int nmatch, i;
@@ -1537,7 +1509,7 @@ postprocess_matches (matchesp, matching_filenames)
}
static int
-complete_get_screenwidth ()
+complete_get_screenwidth (void)
{
int cols;
char *envcols;
@@ -1558,9 +1530,7 @@ complete_get_screenwidth ()
of strings, in argv format, LEN is the number of strings in MATCHES,
and MAX is the length of the longest string in MATCHES. */
void
-rl_display_match_list (matches, len, max)
- char **matches;
- int len, max;
+rl_display_match_list (char **matches, int len, int max)
{
int count, limit, printed_len, lines, cols;
int i, j, k, l, common_length, sind;
@@ -1717,8 +1687,7 @@ rl_display_match_list (matches, len, max)
and ask the user if he wants to see the list if there are more matches
than RL_COMPLETION_QUERY_ITEMS. */
static void
-display_matches (matches)
- char **matches;
+display_matches (char **matches)
{
int len, max, i;
char *temp;
@@ -1784,11 +1753,9 @@ display_matches (matches)
rl_display_fixed = 1;
}
+/* qc == pointer to quoting character, if any */
static char *
-make_quoted_replacement (match, mtype, qc)
- char *match;
- int mtype;
- char *qc; /* Pointer to quoting character, if any */
+make_quoted_replacement (char *match, int mtype, char *qc)
{
int should_quote, do_replace;
char *replacement;
@@ -1830,10 +1797,7 @@ make_quoted_replacement (match, mtype, qc)
}
static void
-insert_match (match, start, mtype, qc)
- char *match;
- int start, mtype;
- char *qc;
+insert_match (char *match, int start, int mtype, char *qc)
{
char *replacement, *r;
char oqc;
@@ -1890,9 +1854,7 @@ insert_match (match, start, mtype, qc)
value of _rl_complete_mark_symlink_dirs, but may be modified by an
application's completion function). */
static int
-append_to_match (text, delimiter, quote_char, nontrivial_match)
- char *text;
- int delimiter, quote_char, nontrivial_match;
+append_to_match (char *text, int delimiter, int quote_char, int nontrivial_match)
{
char temp_string[4], *filename, *fn;
int temp_string_index, s;
@@ -1959,10 +1921,7 @@ append_to_match (text, delimiter, quote_char, nontrivial_match)
}
static void
-insert_all_matches (matches, point, qc)
- char **matches;
- int point;
- char *qc;
+insert_all_matches (char **matches, int point, char *qc)
{
int i;
char *rp;
@@ -1998,8 +1957,7 @@ insert_all_matches (matches, point, qc)
}
void
-_rl_free_match_list (matches)
- char **matches;
+_rl_free_match_list (char **matches)
{
register int i;
@@ -2021,17 +1979,14 @@ _rl_free_match_list (matches)
`@' means to do standard completion, and list all possible completions if
there is more than one and partial completion is not possible. */
int
-rl_complete_internal (what_to_do)
- int what_to_do;
+rl_complete_internal (int what_to_do)
{
char **matches;
rl_compentry_func_t *our_func;
int start, end, delimiter, found_quote, i, nontrivial_lcd;
char *text, *saved_line_buffer;
char quote_char;
-#if 1
int tlen, mlen;
-#endif
RL_SETSTATE(RL_STATE_COMPLETING);
@@ -2206,9 +2161,7 @@ rl_complete_internal (what_to_do)
when there are no more matches.
*/
char **
-rl_completion_matches (text, entry_function)
- const char *text;
- rl_compentry_func_t *entry_function;
+rl_completion_matches (const char *text, rl_compentry_func_t *entry_function)
{
register int i;
@@ -2276,9 +2229,7 @@ rl_completion_matches (text, entry_function)
TEXT contains a partial username preceded by a random
character (usually `~'). */
char *
-rl_username_completion_function (text, state)
- const char *text;
- int state;
+rl_username_completion_function (const char *text, int state)
{
#if defined (__WIN32__) || defined (__OPENNT)
return (char *)NULL;
@@ -2340,11 +2291,7 @@ rl_username_completion_function (text, state)
_rl_completion_case_map is set, make `-' and `_' equivalent. CONVFN is
the possibly-converted directory entry; FILENAME is what the user typed. */
static int
-complete_fncmp (convfn, convlen, filename, filename_len)
- const char *convfn;
- int convlen;
- const char *filename;
- int filename_len;
+complete_fncmp (const char *convfn, int convlen, const char *filename, int filename_len)
{
register char *s1, *s2;
int d, len;
@@ -2472,9 +2419,7 @@ complete_fncmp (convfn, convlen, filename, filename_len)
because of all the pathnames that must be followed when looking up the
completion for a command. */
char *
-rl_filename_completion_function (text, state)
- const char *text;
- int state;
+rl_filename_completion_function (const char *text, int state)
{
static DIR *directory = (DIR *)NULL;
static char *filename = (char *)NULL;
@@ -2702,8 +2647,7 @@ rl_filename_completion_function (text, state)
hit the end of the match list, we restore the original unmatched text,
ring the bell, and reset the counter to zero. */
int
-rl_old_menu_complete (count, invoking_key)
- int count, invoking_key;
+rl_old_menu_complete (int count, int invoking_key)
{
rl_compentry_func_t *our_func;
int matching_filenames, found_quote;
@@ -2824,9 +2768,17 @@ rl_old_menu_complete (count, invoking_key)
return (0);
}
+/* The current version of menu completion.
+ The differences between this function and the original are:
+
+1. It honors the maximum number of completions variable (completion-query-items)
+2. It appends to the word as usual if there is only one match
+3. It displays the common prefix if there is one, and makes it the first menu
+ choice if the menu-complete-display-prefix option is enabled
+*/
+
int
-rl_menu_complete (count, ignore)
- int count, ignore;
+rl_menu_complete (int count, int ignore)
{
rl_compentry_func_t *our_func;
int matching_filenames, found_quote;
@@ -2998,8 +2950,7 @@ rl_menu_complete (count, ignore)
}
int
-rl_backward_menu_complete (count, key)
- int count, key;
+rl_backward_menu_complete (int count, int key)
{
/* Positive arguments to backward-menu-complete translate into negative
arguments for menu-complete, and vice versa. */
diff --git a/config.h.in b/config.h.in
index d03ebe0..6de47b5 100644
--- a/config.h.in
+++ b/config.h.in
@@ -46,6 +46,9 @@
/* Define if you have the fcntl function. */
#undef HAVE_FCNTL
+/* Define if you have the fnmatch function. */
+#undef HAVE_FNMATCH
+
/* Define if you have the getpwent function. */
#undef HAVE_GETPWENT
diff --git a/configure b/configure
index aa98bce..c9b7ade 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
#! /bin/sh
-# From configure.ac for Readline 7.0, version 2.81.
+# From configure.ac for Readline 8.0, version 2.85.
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for readline 7.0.
+# Generated by GNU Autoconf 2.69 for readline 8.0.
#
# Report bugs to <bug-readline@gnu.org>.
#
@@ -581,8 +581,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='readline'
PACKAGE_TARNAME='readline'
-PACKAGE_VERSION='7.0'
-PACKAGE_STRING='readline 7.0'
+PACKAGE_VERSION='8.0'
+PACKAGE_STRING='readline 8.0'
PACKAGE_BUGREPORT='bug-readline@gnu.org'
PACKAGE_URL=''
@@ -624,6 +624,7 @@ ac_includes_default="\
#endif"
ac_subst_vars='LTLIBOBJS
+TERMCAP_PKG_CONFIG_LIB
TERMCAP_LIB
LIBVERSION
ARFLAGS
@@ -631,6 +632,7 @@ LOCAL_DEFS
LOCAL_LDFLAGS
LOCAL_CFLAGS
BUILD_DIR
+EXAMPLES_INSTALL_TARGET
SHARED_INSTALL_TARGET
STATIC_INSTALL_TARGET
SHARED_TARGET
@@ -724,6 +726,7 @@ with_curses
enable_multibyte
enable_shared
enable_static
+enable_install_examples
enable_largefile
'
ac_precious_vars='build_alias
@@ -1275,7 +1278,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures readline 7.0 to adapt to many kinds of systems.
+\`configure' configures readline 8.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1340,7 +1343,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of readline 7.0:";;
+ short | recursive ) echo "Configuration of readline 8.0:";;
esac
cat <<\_ACEOF
@@ -1351,6 +1354,8 @@ Optional Features:
--enable-multibyte enable multibyte characters if OS supports them
--enable-shared build shared libraries [[default=YES]]
--enable-static build static libraries [[default=YES]]
+ --disable-install-examples
+ don't install examples [[default=install]]
--disable-largefile omit support for large files
Optional Packages:
@@ -1435,7 +1440,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-readline configure 7.0
+readline configure 8.0
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1900,11 +1905,194 @@ $as_echo "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_decl
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid; break
+else
+ as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_lo=$ac_mid; break
+else
+ as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid
+else
+ as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if (($2) < 0)
+ {
+ long int i = longval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+ ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+ fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by readline $as_me 7.0, which was
+It was created by readline $as_me 8.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2288,7 +2476,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
ac_config_headers="$ac_config_headers config.h"
-LIBVERSION=7.0
+LIBVERSION=8.0
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
@@ -2379,6 +2567,7 @@ fi
opt_multibyte=yes
opt_static_libs=yes
opt_shared_libs=yes
+opt_install_examples=yes
# Check whether --enable-multibyte was given.
if test "${enable_multibyte+set}" = set; then :
@@ -2395,6 +2584,11 @@ if test "${enable_static+set}" = set; then :
enableval=$enable_static; opt_static_libs=$enableval
fi
+# Check whether --enable-install-examples was given.
+if test "${enable_install_examples+set}" = set; then :
+ enableval=$enable_install_examples; opt_install_examples=$enableval
+fi
+
if test $opt_multibyte = no; then
$as_echo "#define NO_MULTIBYTE_SUPPORT 1" >>confdefs.h
@@ -4590,7 +4784,7 @@ _ACEOF
fi
done
-for ac_func in memmove pselect putenv select setenv setlocale \
+for ac_func in fnmatch memmove pselect putenv select setenv setlocale \
strcasecmp strpbrk tcgetattr vsnprintf
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -5129,7 +5323,7 @@ else
typedef RETSIGTYPE sigfunc();
-int nsigint;
+volatile int nsigint;
#ifdef HAVE_POSIX_SIGNALS
sigfunc *
@@ -6061,6 +6255,45 @@ $as_echo "$ac_cv_lib_ncurses_tgetent" >&6; }
if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then :
bash_cv_termcap_lib=libncurses
else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5
+$as_echo_n "checking for tgetent in -lncursesw... " >&6; }
+if ${ac_cv_lib_ncursesw_tgetent+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lncursesw $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tgetent ();
+int
+main ()
+{
+return tgetent ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_ncursesw_tgetent=yes
+else
+ ac_cv_lib_ncursesw_tgetent=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5
+$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; }
+if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then :
+ bash_cv_termcap_lib=libncursesw
+else
bash_cv_termcap_lib=gnutermcap
fi
@@ -6074,6 +6307,8 @@ fi
fi
+fi
+
if test "X$_bash_needmsg" = "Xyes"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5
$as_echo_n "checking which library has the termcap functions... " >&6; }
@@ -6124,6 +6359,14 @@ done
fi
+case "$TERMCAP_LIB" in
+-ltinfo) TERMCAP_PKG_CONFIG_LIB=tinfo ;;
+-lcurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
+-lncurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
+-ltermcap) TERMCAP_PKG_CONFIG_LIB=termcap ;;
+*) TERMCAP_PKG_CONFIG_LIB=termcap ;;
+esac
+
for ac_header in wctype.h
do :
@@ -6521,6 +6764,40 @@ done
LIBS="$OLDLIBS"
fi
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5
+$as_echo_n "checking size of wchar_t... " >&6; }
+if ${ac_cv_sizeof_wchar_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"; then :
+
+else
+ if test "$ac_cv_type_wchar_t" = yes; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (wchar_t)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_wchar_t=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5
+$as_echo "$ac_cv_sizeof_wchar_t" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t
+_ACEOF
+
+
+
case "$host_cpu" in
@@ -6593,6 +6870,11 @@ fi
+if test "$opt_install_examples" = "yes"; then
+ EXAMPLES_INSTALL_TARGET=install-examples
+fi
+
+
case "$build_os" in
msdosdjgpp*) BUILD_DIR=`pwd.exe` ;; # to prevent //d/path/file
*) BUILD_DIR=`pwd` ;;
@@ -6620,6 +6902,7 @@ esac
+
ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile shlib/Makefile readline.pc"
ac_config_commands="$ac_config_commands default"
@@ -7130,7 +7413,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by readline $as_me 7.0, which was
+This file was extended by readline $as_me 8.0, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -7196,7 +7479,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-readline config.status 7.0
+readline config.status 8.0
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index f81809b..b73e37b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@ dnl report bugs to chet@po.cwru.edu
dnl
dnl Process this file with autoconf to produce a configure script.
-# Copyright (C) 1987-2016 Free Software Foundation, Inc.
+# Copyright (C) 1987-2018 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
@@ -20,9 +20,9 @@ dnl Process this file with autoconf to produce a configure script.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-AC_REVISION([for Readline 7.0, version 2.81])
+AC_REVISION([for Readline 8.0, version 2.85])
-AC_INIT(readline, 7.0, bug-readline@gnu.org)
+AC_INIT(readline, 8.0, bug-readline@gnu.org)
dnl make sure we are using a recent autoconf version
AC_PREREQ(2.50)
@@ -32,7 +32,7 @@ AC_CONFIG_AUX_DIR(./support)
AC_CONFIG_HEADERS(config.h)
dnl update the value of RL_READLINE_VERSION in readline.h when this changes
-LIBVERSION=7.0
+LIBVERSION=8.0
AC_CANONICAL_HOST
AC_CANONICAL_BUILD
@@ -51,10 +51,12 @@ dnl option parsing for optional features
opt_multibyte=yes
opt_static_libs=yes
opt_shared_libs=yes
+opt_install_examples=yes
AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval)
AC_ARG_ENABLE(shared, AC_HELP_STRING([--enable-shared], [build shared libraries [[default=YES]]]), opt_shared_libs=$enableval)
AC_ARG_ENABLE(static, AC_HELP_STRING([--enable-static], [build static libraries [[default=YES]]]), opt_static_libs=$enableval)
+AC_ARG_ENABLE(install-examples, AC_HELP_STRING([--disable-install-examples], [don't install examples [[default=install]]]), opt_install_examples=$enableval)
if test $opt_multibyte = no; then
AC_DEFINE(NO_MULTIBYTE_SUPPORT)
@@ -132,7 +134,7 @@ AC_HEADER_STAT
AC_HEADER_DIRENT
AC_CHECK_FUNCS(fcntl kill lstat readlink)
-AC_CHECK_FUNCS(memmove pselect putenv select setenv setlocale \
+AC_CHECK_FUNCS(fnmatch memmove pselect putenv select setenv setlocale \
strcasecmp strpbrk tcgetattr vsnprintf)
AC_CHECK_FUNCS(isascii isxdigit)
AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
@@ -196,6 +198,14 @@ if test "$TERMCAP_LIB" = "-lncurses"; then
AC_CHECK_HEADERS(ncurses/termcap.h)
fi
+case "$TERMCAP_LIB" in
+-ltinfo) TERMCAP_PKG_CONFIG_LIB=tinfo ;;
+-lcurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
+-lncurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
+-ltermcap) TERMCAP_PKG_CONFIG_LIB=termcap ;;
+*) TERMCAP_PKG_CONFIG_LIB=termcap ;;
+esac
+
BASH_CHECK_MULTIBYTE
case "$host_cpu" in
@@ -266,6 +276,11 @@ AC_SUBST(SHARED_TARGET)
AC_SUBST(STATIC_INSTALL_TARGET)
AC_SUBST(SHARED_INSTALL_TARGET)
+if test "$opt_install_examples" = "yes"; then
+ EXAMPLES_INSTALL_TARGET=install-examples
+fi
+AC_SUBST(EXAMPLES_INSTALL_TARGET)
+
case "$build_os" in
msdosdjgpp*) BUILD_DIR=`pwd.exe` ;; # to prevent //d/path/file
*) BUILD_DIR=`pwd` ;;
@@ -292,6 +307,7 @@ AC_SUBST(host_os)
AC_SUBST(LIBVERSION)
AC_SUBST(TERMCAP_LIB)
+AC_SUBST(TERMCAP_PKG_CONFIG_LIB)
AC_OUTPUT([Makefile doc/Makefile examples/Makefile shlib/Makefile readline.pc],
[
diff --git a/display.c b/display.c
index 2d2e768..4c6cc00 100644
--- a/display.c
+++ b/display.c
@@ -1,6 +1,6 @@
/* display.c -- readline redisplay facility. */
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -124,7 +124,6 @@ static int _rl_col_width PARAMS((const char *, int, int, int));
#define PROMPT_ENDING_INDEX \
((MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? prompt_physical_chars : prompt_last_invisible+1)
-
/* **************************************************************** */
/* */
/* Display stuff */
@@ -159,9 +158,6 @@ rl_voidfunc_t *rl_redisplay_function = rl_redisplay;
/* What YOU turn on when you have handled all redisplay yourself. */
int rl_display_fixed = 0;
-int _rl_suppress_redisplay = 0;
-int _rl_want_redisplay = 0;
-
/* The stuff that gets printed out before the actual text of the line.
This is usually pointing to rl_prompt. */
char *rl_display_prompt = (char *)NULL;
@@ -178,6 +174,10 @@ int _rl_vi_cmd_modestr_len;
/* Pseudo-global variables declared here. */
+/* Hints for other parts of readline to give to the display engine. */
+int _rl_suppress_redisplay = 0;
+int _rl_want_redisplay = 0;
+
/* The visible cursor position. If you print some text, adjust this. */
/* NOTE: _rl_last_c_pos is used as a buffer index when not in a locale
supporting multibyte characters, and an absolute cursor position when
@@ -186,14 +186,24 @@ int _rl_vi_cmd_modestr_len;
int _rl_last_c_pos = 0;
int _rl_last_v_pos = 0;
+/* Number of physical lines consumed by the current line buffer currently
+ on screen minus 1. */
+int _rl_vis_botlin = 0;
+
+/* This is a hint update_line gives to rl_redisplay that it has adjusted the
+ value of _rl_last_c_pos *and* taken the presence of any invisible chars in
+ the prompt into account. rl_redisplay notes this and does not do the
+ adjustment itself. */
static int cpos_adjusted;
+
+/* The index into the line buffer corresponding to the cursor position */
static int cpos_buffer_position;
+
+/* A flag to note when we're displaying the first line of the prompt */
static int displaying_prompt_first_line;
+/* The number of multibyte characters in the prompt, if any */
static int prompt_multibyte_chars;
-/* Number of lines currently on screen minus 1. */
-int _rl_vis_botlin = 0;
-
static int _rl_inv_botlin = 0;
/* Variables used only in this file. */
@@ -216,7 +226,11 @@ static int line_size = 1024;
static char *local_prompt, *local_prompt_prefix;
static int local_prompt_len;
-static int prompt_visible_length, prompt_prefix_length;
+static int prompt_prefix_length;
+/* Number of chars in the buffer that contribute to visible chars on the screen.
+ This might be different from the number of physical chars in the presence
+ of multibyte characters */
+static int prompt_visible_length;
/* The number of invisible characters in the line currently being
displayed on the screen. */
@@ -242,16 +256,26 @@ static int prompt_last_screen_line;
static int prompt_physical_chars;
+/* An array of indexes into the prompt string where we will break physical
+ screen lines. It's easier to compute in expand_prompt and use later in
+ rl_redisplay instead of having rl_redisplay try to guess about invisible
+ characters in the prompt or use heuristics about where they are. */
+static int *local_prompt_newlines;
+
/* set to a non-zero value by rl_redisplay if we are marking modified history
lines and the current line is so marked. */
static int modmark;
+static int line_totbytes;
+
/* Variables to save and restore prompt and display information. */
/* These are getting numerous enough that it's time to create a struct. */
static char *saved_local_prompt;
static char *saved_local_prefix;
+static int *saved_local_prompt_newlines;
+
static int saved_last_invisible;
static int saved_visible_length;
static int saved_prefix_length;
@@ -262,8 +286,7 @@ static int saved_physical_chars;
/* Return a string indicating the editing mode, for use in the prompt. */
static char *
-prompt_modestr (lenp)
- int *lenp;
+prompt_modestr (int *lenp)
{
if (rl_editing_mode == emacs_mode)
{
@@ -291,7 +314,8 @@ prompt_modestr (lenp)
index of the last invisible character in the returned string. NIFLP,
if non-zero, is a place to store the number of invisible characters in
the first prompt line. The previous are used as byte counts -- indexes
- into a character buffer. */
+ into a character buffer. *VLP gets the number of physical characters in
+ the expanded prompt (visible length) */
/* Current implementation:
\001 (^A) start non-visible characters
@@ -304,15 +328,16 @@ prompt_modestr (lenp)
PMT_MULTILINE caller indicates that this is part of a multiline prompt
*/
+/* This approximates the number of lines the prompt will take when displayed */
+#define APPROX_DIV(n, d) (((n) < (d)) ? 1 : ((n) / (d)) + 1)
+
static char *
-expand_prompt (pmt, flags, lp, lip, niflp, vlp)
- char *pmt;
- int flags;
- int *lp, *lip, *niflp, *vlp;
+expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
{
char *r, *ret, *p, *igstart, *nprompt, *ms;
int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars;
- int mlen;
+ int mlen, newlines, newlines_guess, bound;
+ int mb_cur_max;
/* We only expand the mode string for the last line of a multiline prompt
(a prompt with embedded newlines). */
@@ -327,29 +352,54 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp)
else
nprompt = pmt;
- /* Short-circuit if we can. */
- if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (nprompt, RL_PROMPT_START_IGNORE) == 0)
+ mb_cur_max = MB_CUR_MAX;
+
+ if (_rl_screenwidth == 0)
+ _rl_get_screen_size (0, 0); /* avoid division by zero */
+
+ /* Short-circuit if we can. We can do this if we are treating the prompt as
+ a sequence of bytes and there are no invisible characters in the prompt
+ to deal with. Since we populate local_prompt_newlines, we have to run
+ through the rest of the function if this prompt looks like it's going to
+ be longer than one screen line. */
+ if ((mb_cur_max <= 1 || rl_byte_oriented) && strchr (nprompt, RL_PROMPT_START_IGNORE) == 0)
{
- r = (nprompt == pmt) ? savestring (pmt) : nprompt;
+ l = strlen (nprompt);
+ if (l < (_rl_screenwidth > 0 ? _rl_screenwidth : 80))
+ {
+ r = (nprompt == pmt) ? savestring (pmt) : nprompt;
+ if (lp)
+ *lp = l;
+ if (lip)
+ *lip = 0;
+ if (niflp)
+ *niflp = 0;
+ if (vlp)
+ *vlp = l;
+
+ local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * 2);
+ local_prompt_newlines[0] = 0;
+ local_prompt_newlines[1] = -1;
- if (lp)
- *lp = strlen (r);
- if (lip)
- *lip = 0;
- if (niflp)
- *niflp = 0;
- if (vlp)
- *vlp = lp ? *lp : strlen (r);
- return r;
+ return r;
+ }
}
l = strlen (nprompt); /* XXX */
r = ret = (char *)xmalloc (l + 1);
+ /* Guess at how many screen lines the prompt will take to size the array that
+ keeps track of where the line wraps happen */
+ newlines_guess = (_rl_screenwidth > 0) ? APPROX_DIV(l, _rl_screenwidth) : APPROX_DIV(l, 80);
+ local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * (newlines_guess + 1));
+ local_prompt_newlines[newlines = 0] = 0;
+ for (rl = 1; rl <= newlines_guess; rl++)
+ local_prompt_newlines[rl] = -1;
+
rl = physchars = 0; /* mode string now part of nprompt */
- invfl = 0; /* invisible chars in first line of prompt */
- invflset = 0; /* we only want to set invfl once */
- igstart = 0;
+ invfl = 0; /* invisible chars in first line of prompt */
+ invflset = 0; /* we only want to set invfl once */
+ igstart = 0; /* we're not ignoring any characters yet */
for (ignoring = last = ninvis = 0, p = nprompt; p && *p; p++)
{
@@ -371,7 +421,7 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp)
else
{
#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ if (mb_cur_max > 1 && rl_byte_oriented == 0)
{
pind = p - nprompt;
ind = _rl_find_next_mbchar (nprompt, pind, 1, MB_FIND_NONZERO);
@@ -405,11 +455,29 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp)
ninvis++; /* invisible chars byte counter */
}
- if (invflset == 0 && rl >= _rl_screenwidth)
+ if (invflset == 0 && physchars >= _rl_screenwidth)
{
invfl = ninvis;
invflset = 1;
}
+
+ if (physchars >= (bound = (newlines + 1) * _rl_screenwidth) && local_prompt_newlines[newlines+1] == -1)
+ {
+ int new;
+ if (physchars > bound) /* should rarely happen */
+ {
+#if defined (HANDLE_MULTIBYTE)
+ *r = '\0'; /* need null-termination for strlen */
+ if (mb_cur_max > 1 && rl_byte_oriented == 0)
+ new = _rl_find_prev_mbchar (ret, r - ret, MB_FIND_ANY);
+ else
+#endif
+ new = r - ret - (physchars - bound); /* XXX */
+ }
+ else
+ new = r - ret;
+ local_prompt_newlines[++newlines] = new;
+ }
}
}
@@ -435,8 +503,7 @@ expand_prompt (pmt, flags, lp, lip, niflp, vlp)
/* Just strip out RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE from
PMT and return the rest of PMT. */
char *
-_rl_strip_prompt (pmt)
- char *pmt;
+_rl_strip_prompt (char *pmt)
{
char *ret;
@@ -445,7 +512,7 @@ _rl_strip_prompt (pmt)
}
void
-_rl_reset_prompt ()
+_rl_reset_prompt (void)
{
rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
}
@@ -461,15 +528,20 @@ _rl_reset_prompt ()
* prompt_visible_length = number of visible characters in local_prompt
* prompt_prefix_length = number of visible characters in local_prompt_prefix
*
+ * It also tries to keep track of the number of invisible characters in the
+ * prompt string, and where they are.
+ *
* This function is called once per call to readline(). It may also be
* called arbitrarily to expand the primary prompt.
*
* The return value is the number of visible characters on the last line
- * of the (possibly multi-line) prompt.
+ * of the (possibly multi-line) prompt. In this case, multi-line means
+ * there are embedded newlines in the prompt string itself, not that the
+ * number of physical characters exceeds the screen width and the prompt
+ * wraps.
*/
int
-rl_expand_prompt (prompt)
- char *prompt;
+rl_expand_prompt (char *prompt)
{
char *p, *t;
int c;
@@ -527,8 +599,7 @@ rl_expand_prompt (prompt)
increased. If the lines have already been allocated, this ensures that
they can hold at least MINSIZE characters. */
static void
-init_line_structures (minsize)
- int minsize;
+init_line_structures (int minsize)
{
register int n;
@@ -575,9 +646,9 @@ init_line_structures (minsize)
line_structures_initialized = 1;
}
-/* Basic redisplay algorithm. */
+/* Basic redisplay algorithm. See comments inline. */
void
-rl_redisplay ()
+rl_redisplay (void)
{
register int in, out, c, linenum, cursor_linenum;
register char *line;
@@ -638,6 +709,10 @@ rl_redisplay ()
one passed to readline()), use the values we have already expanded.
If not, use what's already in rl_display_prompt. WRAP_OFFSET is the
number of non-visible characters in the prompt string. */
+ /* This is where we output the characters in the prompt before the last
+ newline, if any. If there aren't any embedded newlines, we don't
+ write anything. Copy the last line of the prompt string into the line in
+ any case */
if (rl_display_prompt == rl_prompt || local_prompt)
{
if (local_prompt_prefix && forced_display)
@@ -692,6 +767,7 @@ rl_redisplay ()
wrap_offset = prompt_invis_chars_first_line = 0;
}
+#if defined (HANDLE_MULTIBYTE)
#define CHECK_INV_LBREAKS() \
do { \
if (newlines >= (inv_lbsize - 2)) \
@@ -699,7 +775,22 @@ rl_redisplay ()
inv_lbsize *= 2; \
inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
} \
+ if (newlines >= (line_state_invisible->wbsize - 2)) \
+ { \
+ line_state_invisible->wbsize *= 2; \
+ line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \
+ } \
} while (0)
+#else
+#define CHECK_INV_LBREAKS() \
+ do { \
+ if (newlines >= (inv_lbsize - 2)) \
+ { \
+ inv_lbsize *= 2; \
+ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
+ } \
+ } while (0)
+#endif /* !HANDLE_MULTIBYTE */
#if defined (HANDLE_MULTIBYTE)
#define CHECK_LPOS() \
@@ -713,7 +804,7 @@ rl_redisplay ()
inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
} \
inv_lbreaks[++newlines] = out; \
- if (newlines >= (line_state_invisible->wbsize - 1)) \
+ if (newlines >= (line_state_invisible->wbsize - 2)) \
{ \
line_state_invisible->wbsize *= 2; \
line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \
@@ -742,7 +833,10 @@ rl_redisplay ()
/* inv_lbreaks[i] is where line i starts in the buffer. */
inv_lbreaks[newlines = 0] = 0;
/* lpos is a physical cursor position, so it needs to be adjusted by the
- number of invisible characters in the prompt, per line */
+ number of invisible characters in the prompt, per line. We compute
+ the line breaks in the prompt string in expand_prompt, taking invisible
+ characters into account, and if lpos exceeds the screen width, we copy
+ the data in the loop below. */
lpos = prompt_physical_chars + modmark;
#if defined (HANDLE_MULTIBYTE)
@@ -752,92 +846,38 @@ rl_redisplay ()
/* prompt_invis_chars_first_line is the number of invisible characters in
the first physical line of the prompt.
- wrap_offset - prompt_invis_chars_first_line is the number of invis
- chars on the second (or, more generally, last) line. */
+ wrap_offset - prompt_invis_chars_first_line is usually the number of
+ invis chars on the second (or, more generally, last) line. */
/* This is zero-based, used to set the newlines */
prompt_lines_estimate = lpos / _rl_screenwidth;
/* what if lpos is already >= _rl_screenwidth before we start drawing the
contents of the command line? */
- while (lpos >= _rl_screenwidth)
- {
- int z, p;
- int nocorrect, wadjust;
-
- nocorrect = 0;
- /* Adjust depending on the invisible characters in the line. We use a
- heuristic based on experience: invisible characters nearly always
- appear in the first and last lines of the prompt */
- wadjust = (newlines == 0)
- ? prompt_invis_chars_first_line
- : ((newlines == prompt_lines_estimate)
- ? (wrap_offset - prompt_invis_chars_first_line)
- : 0);
-
- /* fix from Darin Johnson <darin@acuson.com> for prompt string with
- invisible characters that is longer than the screen width. The
- prompt_invis_chars_first_line variable could be made into an array
- saying how many invisible characters there are per line, but that's
- probably too much work for the benefit gained. How many people have
- prompts that exceed two physical lines?
- Additional logic fix from Edward Catmur <ed@catmur.co.uk> */
-#if defined (HANDLE_MULTIBYTE)
- if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0)
- {
- nocorrect = 1;
- n0 = num;
- temp = local_prompt_len;
- while (num < temp)
- {
- /* This has to take invisible characters in the prompt into
- account. */
- z = _rl_col_width (local_prompt, n0, num, 1) - wadjust;
- if (z > _rl_screenwidth)
- {
- num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY);
- break;
- }
- else if (z == _rl_screenwidth)
- {
- /* If we are in the middle or at the end of a multibyte
- character, we want to move to the start, then find out
- where it ends so we know where to insert the newline.
- If this isn't a multibyte character, its the same as num++ */
- p = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY);
- num = _rl_find_next_mbchar (local_prompt, p, 1, MB_FIND_ANY);
- break;
- }
- num++;
- }
- temp = num;
- }
- else
-#endif /* !HANDLE_MULTIBYTE */
- temp = ((newlines + 1) * _rl_screenwidth);
+ if (lpos >= _rl_screenwidth)
+ {
+ temp = 0;
- /* Now account for invisible characters in the current line. */
- /* XXX - this assumes that the invisible characters may be split, but only
- between the first and the last lines. */
- if (nocorrect == 0)
- temp += wadjust;
+ /* first copy the linebreaks array we computed in expand_prompt */
+ while (local_prompt_newlines[newlines+1] != -1)
+ {
+ temp = local_prompt_newlines[newlines+1];
+ inv_lbreaks[++newlines] = temp;
+ }
- inv_lbreaks[++newlines] = temp;
-#if defined (HANDLE_MULTIBYTE)
- /* lpos is a physical cursor position, so it needs to take the invisible
- characters into account. */
+ /* Now set lpos from the last newline */
if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0)
- lpos -= _rl_col_width (local_prompt, n0, num, 1) - wadjust;
+ lpos = _rl_col_width (local_prompt, temp, local_prompt_len, 1) - (wrap_offset - prompt_invis_chars_first_line);
else
-#endif
- lpos -= _rl_screenwidth; /* all physical cursor positions */
+ lpos -= (_rl_screenwidth * newlines);
}
prompt_last_screen_line = newlines;
/* Draw the rest of the line (after the prompt) into invisible_line, keeping
- track of where the cursor is (cpos_buffer_position), the number of the line containing
- the cursor (lb_linenum), the last line number (lb_botlin and inv_botlin).
+ track of where the cursor is (cpos_buffer_position), the number of the
+ line containing the cursor (lb_linenum), the last line number (lb_botlin
+ and inv_botlin).
It maintains an array of line breaks for display (inv_lbreaks).
This handles expanding tabs for display and displaying meta characters. */
lb_linenum = 0;
@@ -846,8 +886,13 @@ rl_redisplay ()
if (mb_cur_max > 1 && rl_byte_oriented == 0)
{
memset (&ps, 0, sizeof (mbstate_t));
- /* XXX - what if wc_bytes ends up <= 0? check for MB_INVALIDCH */
- wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps);
+ if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[0]))
+ {
+ wc = (wchar_t)rl_line_buffer[0];
+ wc_bytes = 1;
+ }
+ else
+ wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps);
}
else
wc_bytes = 1;
@@ -909,6 +954,9 @@ rl_redisplay ()
temp = _rl_screenwidth - lpos;
CHECK_INV_LBREAKS ();
inv_lbreaks[++newlines] = out + temp;
+#if defined (HANDLE_MULTIBYTE)
+ line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn;
+#endif
lpos = 4 - temp;
}
else
@@ -939,6 +987,9 @@ rl_redisplay ()
temp2 = _rl_screenwidth - lpos;
CHECK_INV_LBREAKS ();
inv_lbreaks[++newlines] = out + temp2;
+#if defined (HANDLE_MULTIBYTE)
+ line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn;
+#endif
lpos = temp - temp2;
while (out < newout)
line[out++] = ' ';
@@ -956,6 +1007,9 @@ rl_redisplay ()
line[out++] = '\0'; /* XXX - sentinel */
CHECK_INV_LBREAKS ();
inv_lbreaks[++newlines] = out;
+#if defined (HANDLE_MULTIBYTE)
+ line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn;
+#endif
lpos = 0;
}
else if (CTRL_CHAR (c) || c == RUBOUT)
@@ -1007,15 +1061,21 @@ rl_redisplay ()
if (mb_cur_max > 1 && rl_byte_oriented == 0)
{
in += wc_bytes;
- /* XXX - what if wc_bytes ends up <= 0? check for MB_INVALIDCH */
- wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps);
+ if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[in]))
+ {
+ wc = (wchar_t)rl_line_buffer[in];
+ wc_bytes = 1;
+ memset (&ps, 0, sizeof (mbstate_t)); /* re-init state */
+ }
+ else
+ wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps);
}
else
in++;
#endif
-
}
line[out] = '\0';
+ line_totbytes = out;
if (cpos_buffer_position < 0)
{
cpos_buffer_position = out;
@@ -1025,6 +1085,10 @@ rl_redisplay ()
inv_botlin = lb_botlin = _rl_inv_botlin = newlines;
CHECK_INV_LBREAKS ();
inv_lbreaks[newlines+1] = out;
+#if defined (HANDLE_MULTIBYTE)
+ /* This should be 0 anyway */
+ line_state_invisible->wrapped_line[newlines+1] = _rl_wrapped_multicolumn;
+#endif
cursor_linenum = lb_linenum;
/* CPOS_BUFFER_POSITION == position in buffer where cursor should be placed.
@@ -1092,8 +1156,8 @@ rl_redisplay ()
/* update_line potentially changes _rl_last_c_pos, but doesn't
take invisible characters into account, since _rl_last_c_pos
- is an absolute cursor position in a multibyte locale. See
- if compensating here is the right thing, or if we have to
+ is an absolute cursor position in a multibyte locale. We
+ choose to (mostly) compensate for that here, rather than
change update_line itself. There are several cases in which
update_line adjusts _rl_last_c_pos itself (so it can pass
_rl_move_cursor_relative accurate values); it communicates
@@ -1104,11 +1168,16 @@ rl_redisplay ()
wrap_offset. */
if (linenum == 0 && (mb_cur_max > 1 && rl_byte_oriented == 0) && OLD_CPOS_IN_PROMPT())
_rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */
- else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth &&
+ else if (cpos_adjusted == 0 &&
+ linenum == prompt_last_screen_line &&
+ prompt_physical_chars > _rl_screenwidth &&
(mb_cur_max > 1 && rl_byte_oriented == 0) &&
- cpos_adjusted == 0 &&
_rl_last_c_pos != o_cpos &&
- _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line))
+ _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) /* XXX - rethink this last one */
+ /* This assumes that all the invisible characters are split
+ between the first and last lines of the prompt, if the
+ prompt consumes more than two lines. It's usually right */
+ /* XXX - not sure this is ever executed */
_rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line);
/* If this is the line with the prompt, we might need to
@@ -1178,6 +1247,9 @@ rl_redisplay ()
_rl_last_c_pos += wrap_offset;
}
+ /* Now we move the cursor to where it needs to be. First, make
+ sure we are on the correct line (cursor_linenum). */
+
/* We have to reprint the prompt if it contains invisible
characters, since it's not generally OK to just reprint
the characters from the current cursor position. But we
@@ -1219,9 +1291,10 @@ rl_redisplay ()
position that doesn't take invisible characters in the prompt
into account. We use a fudge factor to compensate. */
- /* Since _rl_backspace() doesn't know about invisible characters in the
- prompt, and there's no good way to tell it, we compensate for
- those characters here and call _rl_backspace() directly. */
+ /* Since _rl_backspace() doesn't know about invisible characters in
+ the prompt, and there's no good way to tell it, we compensate for
+ those characters here and call _rl_backspace() directly if
+ necessary */
if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos)
{
/* TX == new physical cursor position in multibyte locale. */
@@ -1246,7 +1319,7 @@ rl_redisplay ()
_rl_move_cursor_relative (nleft, &invisible_line[pos]);
}
}
- else /* Do horizontal scrolling. */
+ else /* Do horizontal scrolling. Much simpler */
{
#define M_OFFSET(margin, offset) ((margin) == 0 ? offset : 0)
int lmargin, ndisp, nleft, phys_c_pos, t;
@@ -1306,7 +1379,7 @@ rl_redisplay ()
right edge of the screen. If LMARGIN is 0, we need to take the
wrap offset into account. */
t = lmargin + M_OFFSET (lmargin, wrap_offset) + _rl_screenwidth;
- if (t < out)
+ if (t > 0 && t < out)
line[t - 1] = '>';
if (rl_display_fixed == 0 || forced_display || lmargin != last_lmargin)
@@ -1384,9 +1457,7 @@ new: eddie> Oh, my little buggy says to me, as lurgid as
Could be made even smarter, but this works well enough */
static void
-update_line (old, new, current_line, omax, nmax, inv_botlin)
- register char *old, *new;
- int current_line, omax, nmax, inv_botlin;
+update_line (char *old, char *new, int current_line, int omax, int nmax, int inv_botlin)
{
register char *ofd, *ols, *oe, *nfd, *nls, *ne;
int temp, lendiff, wsatend, od, nd, twidth, o_cpos;
@@ -1411,52 +1482,145 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
&& _rl_last_v_pos == current_line - 1)
{
+ /* We're going to wrap around by writing the first character of NEW to
+ the screen and dealing with changes to what's visible by modifying
+ OLD to match it. Complicated by the presence of multi-width
+ characters at the end of the line or beginning of the new one. */
+ /* old is always somewhere in visible_line; new is always somewhere in
+ invisible_line. These should always be null-terminated. */
#if defined (HANDLE_MULTIBYTE)
if (mb_cur_max > 1 && rl_byte_oriented == 0)
{
wchar_t wc;
mbstate_t ps;
- int tempwidth, bytes;
+ int oldwidth, newwidth;
+ int oldbytes, newbytes;
size_t ret;
/* This fixes only double-column characters, but if the wrapped
character consumes more than three columns, spaces will be
inserted in the string buffer. */
- if (current_line < line_state_visible->wbsize && line_state_visible->wrapped_line[current_line] > 0)
- _rl_clear_to_eol (line_state_visible->wrapped_line[current_line]);
+ /* XXX remember that we are working on the invisible line right now;
+ we don't swap visible and invisible until just before rl_redisplay
+ returns */
+ /* This will remove the extra placeholder space we added with
+ _rl_wrapped_multicolumn */
+ if (current_line < line_state_invisible->wbsize && line_state_invisible->wrapped_line[current_line] > 0)
+ _rl_clear_to_eol (line_state_invisible->wrapped_line[current_line]);
+
+ /* 1. how many screen positions does first char in old consume? */
+ memset (&ps, 0, sizeof (mbstate_t));
+ ret = mbrtowc (&wc, old, mb_cur_max, &ps);
+ oldbytes = ret;
+ if (MB_INVALIDCH (ret))
+ {
+ oldwidth = 1;
+ oldbytes = 1;
+ }
+ else if (MB_NULLWCH (ret))
+ oldwidth = 0;
+ else
+ oldwidth = WCWIDTH (wc);
+ if (oldwidth < 0)
+ oldwidth = 1;
+ /* 2. how many screen positions does the first char in new consume? */
memset (&ps, 0, sizeof (mbstate_t));
ret = mbrtowc (&wc, new, mb_cur_max, &ps);
+ newbytes = ret;
if (MB_INVALIDCH (ret))
{
- tempwidth = 1;
- ret = 1;
+ newwidth = 1;
+ newbytes = 1;
}
else if (MB_NULLWCH (ret))
- tempwidth = 0;
+ newwidth = 0;
else
- tempwidth = WCWIDTH (wc);
+ newwidth = WCWIDTH (wc);
+ if (newwidth < 0)
+ newwidth = 1;
+
+ /* 3. if the new width is less than the old width, we need to keep
+ going in new until we have consumed at least that many screen
+ positions, and figure out how many bytes that will take */
+ while (newbytes < nmax && newwidth < oldwidth)
+ {
+ int t;
- if (tempwidth > 0)
+ ret = mbrtowc (&wc, new+newbytes, mb_cur_max, &ps);
+ if (MB_INVALIDCH (ret))
+ {
+ newwidth += 1;
+ newbytes += 1;
+ }
+ else if (MB_NULLWCH (ret))
+ break;
+ else
+ {
+ t = WCWIDTH (wc);
+ newwidth += (t >= 0) ? t : 1;
+ newbytes += ret;
+ }
+ }
+ /* 4. If the new width is more than the old width, keep going in old
+ until we have consumed exactly that many screen positions, and
+ figure out how many bytes that will take. This is an optimization */
+ while (oldbytes < omax && oldwidth < newwidth)
{
- int count, i;
- bytes = ret;
- for (count = 0; count < bytes; count++)
- putc (new[count], rl_outstream);
- _rl_last_c_pos = tempwidth;
+ int t;
+
+ ret = mbrtowc (&wc, old+oldbytes, mb_cur_max, &ps);
+ if (MB_INVALIDCH (ret))
+ {
+ oldwidth += 1;
+ oldbytes += 1;
+ }
+ else if (MB_NULLWCH (ret))
+ break;
+ else
+ {
+ t = WCWIDTH (wc);
+ oldwidth += (t >= 0) ? t : 1;
+ oldbytes += ret;
+ }
+ }
+ /* 5. write the first newbytes of new, which takes newwidth. This is
+ where the screen wrapping takes place, and we are now writing
+ characters onto the new line. We need to fix up old so it
+ accurately reflects what is on the screen after the
+ _rl_output_some_chars below. */
+ if (newwidth > 0)
+ {
+ int count, i, j;
+ char *optr;
+
+ _rl_output_some_chars (new, newbytes);
+ _rl_last_c_pos = newwidth;
_rl_last_v_pos++;
- memset (&ps, 0, sizeof (mbstate_t));
- ret = mbrtowc (&wc, old, mb_cur_max, &ps);
- if (ret != 0 && bytes != 0)
+
+ /* 5a. If the number of screen positions doesn't match, punt
+ and do a dumb update. */
+ if (newwidth != oldwidth)
{
- if (MB_INVALIDCH (ret))
- ret = 1;
- memmove (old+bytes, old+ret, strlen (old+ret));
- memcpy (old, new, bytes);
+ ne = new + nmax;
+ nd = newbytes;
+ nfd = new + nd;
+ goto dumb_update;
+ }
+ if (oldbytes != 0 && newbytes != 0)
+ {
+ /* We have written as many bytes from new as we need to
+ consume the first character of old. Fix up `old' so it
+ reflects the new screen contents. We use +1 in the
+ memmove call to copy the trailing NUL. */
+ memmove (old+newbytes, old+oldbytes, strlen (old+oldbytes) + 1);
+ memcpy (old, new, newbytes);
+ j = newbytes - oldbytes;
+
+ omax += j;
/* Fix up indices if we copy data from one line to another */
- omax += bytes - ret;
for (i = current_line+1; i <= inv_botlin+1; i++)
- vis_lbreaks[i] += bytes - ret;
+ vis_lbreaks[i] += j;
}
}
else
@@ -1482,7 +1646,6 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
}
}
-
/* Find first difference. */
#if defined (HANDLE_MULTIBYTE)
if (mb_cur_max > 1 && rl_byte_oriented == 0)
@@ -1501,6 +1664,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
memset (&ps_new, 0, sizeof(mbstate_t));
memset (&ps_old, 0, sizeof(mbstate_t));
+ /* Are the old and new lines the same? */
if (omax == nmax && STREQN (new, old, omax))
{
old_offset = omax;
@@ -1510,6 +1674,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
}
else
{
+ /* Go through the line from the beginning and find the first
+ difference. */
new_offset = old_offset = 0;
for (ofd = old, nfd = new;
(ofd - old < omax) && *ofd &&
@@ -1565,6 +1731,8 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
wsatend = 1; /* flag for trailing whitespace */
#if defined (HANDLE_MULTIBYTE)
+ /* Find the last character that is the same between the two lines. This
+ bounds the region that needs to change. */
if (mb_cur_max > 1 && rl_byte_oriented == 0)
{
ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY);
@@ -1724,12 +1892,29 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
nd = lendiff;
/* Do a dumb update and return */
+dumb_update:
temp = ne - nfd;
if (temp > 0)
{
_rl_output_some_chars (nfd, temp);
if (mb_cur_max > 1 && rl_byte_oriented == 0)
- _rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1);
+ {
+ _rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1);
+ /* Need to adjust here based on wrap_offset. Guess that if
+ this is the line containing the last line of the prompt
+ we need to adjust by
+ wrap_offset-prompt_invis_chars_first_line
+ on the assumption that this is the number of invisible
+ characters in the last line of the prompt. */
+ if (wrap_offset > prompt_invis_chars_first_line &&
+ current_line == prompt_last_screen_line &&
+ prompt_physical_chars > _rl_screenwidth &&
+ _rl_horizontal_scroll_mode == 0)
+ {
+ _rl_last_c_pos -= wrap_offset - prompt_invis_chars_first_line;
+ cpos_adjusted = 1;
+ }
+ }
else
_rl_last_c_pos += temp;
}
@@ -1804,6 +1989,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
{
/* Non-zero if we're increasing the number of lines. */
int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
+
/* If col_lendiff is > 0, implying that the new string takes up more
screen real estate than the old, but lendiff is < 0, meaning that it
takes fewer bytes, we need to just output the characters starting
@@ -1819,7 +2005,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
cpos_adjusted to let the caller know. */
if (current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible))
{
- _rl_last_c_pos -= wrap_offset;
+ _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */
cpos_adjusted = 1;
}
return;
@@ -1872,7 +2058,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
and set cpos_adjusted to let the caller know. */
if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible))
{
- _rl_last_c_pos -= wrap_offset;
+ _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */
cpos_adjusted = 1;
}
return;
@@ -1885,7 +2071,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
and set cpos_adjusted to let the caller know. */
if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible))
{
- _rl_last_c_pos -= wrap_offset;
+ _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */
cpos_adjusted = 1;
}
}
@@ -1952,12 +2138,26 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
_rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1);
if (current_line == 0 && wrap_offset &&
displaying_prompt_first_line &&
- _rl_last_c_pos > wrap_offset &&
+ _rl_last_c_pos >= wrap_offset && /* XXX was > */
((nfd - new) <= prompt_last_invisible))
{
- _rl_last_c_pos -= wrap_offset;
+ _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */
cpos_adjusted = 1;
}
+
+#if 1
+#ifdef HANDLE_MULTIBYTE
+ /* If we write a non-space into the last screen column,
+ remove the note that we added a space to compensate for
+ a multibyte double-width character that didn't fit, since
+ it's only valid for what was previously there. */
+ /* XXX - watch this */
+ if (_rl_last_c_pos == _rl_screenwidth &&
+ line_state_invisible->wrapped_line[current_line+1] &&
+ nfd[bytes_to_insert-1] != ' ')
+ line_state_invisible->wrapped_line[current_line+1] = 0;
+#endif
+#endif
}
else
_rl_last_c_pos += bytes_to_insert;
@@ -1989,7 +2189,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
_rl_last_c_pos > wrap_offset &&
((nfd - new) <= prompt_last_invisible))
{
- _rl_last_c_pos -= wrap_offset;
+ _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */
cpos_adjusted = 1;
}
}
@@ -2019,7 +2219,7 @@ clear_rest_of_line:
/* Tell the update routines that we have moved onto a new (empty) line. */
int
-rl_on_new_line ()
+rl_on_new_line (void)
{
if (visible_line)
visible_line[0] = '\0';
@@ -2035,7 +2235,7 @@ rl_on_new_line ()
/* Clear all screen lines occupied by the current readline line buffer
(visible line) */
int
-rl_clear_visible_line ()
+rl_clear_visible_line (void)
{
int curr_line;
@@ -2063,9 +2263,10 @@ rl_clear_visible_line ()
/* Tell the update routines that we have moved onto a new line with the
prompt already displayed. Code originally from the version of readline
distributed with CLISP. rl_expand_prompt must have already been called
- (explicitly or implicitly). This still doesn't work exactly right. */
+ (explicitly or implicitly). This still doesn't work exactly right; it
+ should use expand_prompt() */
int
-rl_on_new_line_with_prompt ()
+rl_on_new_line_with_prompt (void)
{
int prompt_size, i, l, real_screenwidth, newlines;
char *prompt_last_line, *lprompt;
@@ -2121,7 +2322,7 @@ rl_on_new_line_with_prompt ()
/* Actually update the display, period. */
int
-rl_forced_update_display ()
+rl_forced_update_display (void)
{
register char *temp;
@@ -2139,7 +2340,7 @@ rl_forced_update_display ()
/* Redraw only the last line of a multi-line prompt. */
void
-rl_redraw_prompt_last_line ()
+rl_redraw_prompt_last_line (void)
{
char *t;
@@ -2157,9 +2358,7 @@ rl_redraw_prompt_last_line ()
the movement is being done.
DATA is always the visible line or the invisible line */
void
-_rl_move_cursor_relative (new, data)
- int new;
- const char *data;
+_rl_move_cursor_relative (int new, const char *data)
{
register int i;
int woff; /* number of invisible chars on current line */
@@ -2316,8 +2515,7 @@ _rl_move_cursor_relative (new, data)
/* PWP: move the cursor up or down. */
void
-_rl_move_vert (to)
- int to;
+_rl_move_vert (int to)
{
register int delta, i;
@@ -2357,8 +2555,7 @@ _rl_move_vert (to)
/* Physically print C on rl_outstream. This is for functions which know
how to optimize the display. Return the number of characters output. */
int
-rl_show_char (c)
- int c;
+rl_show_char (int c)
{
int n = 1;
if (META_CHAR (c) && (_rl_output_meta_chars == 0))
@@ -2385,8 +2582,7 @@ rl_show_char (c)
}
int
-rl_character_len (c, pos)
- register int c, pos;
+rl_character_len (int c, int pos)
{
unsigned char uc;
@@ -2521,7 +2717,7 @@ rl_message (format, arg1, arg2)
/* How to clear things from the "echo-area". */
int
-rl_clear_message ()
+rl_clear_message (void)
{
rl_display_prompt = rl_prompt;
if (msg_saved_prompt)
@@ -2534,7 +2730,7 @@ rl_clear_message ()
}
int
-rl_reset_line_state ()
+rl_reset_line_state (void)
{
rl_on_new_line ();
@@ -2543,8 +2739,12 @@ rl_reset_line_state ()
return 0;
}
+/* Save all of the variables associated with the prompt and its display. Most
+ of the complexity is dealing with the invisible characters in the prompt
+ string and where they are. There are enough of these that I should consider
+ a struct. */
void
-rl_save_prompt ()
+rl_save_prompt (void)
{
saved_local_prompt = local_prompt;
saved_local_prefix = local_prompt_prefix;
@@ -2554,22 +2754,28 @@ rl_save_prompt ()
saved_visible_length = prompt_visible_length;
saved_invis_chars_first_line = prompt_invis_chars_first_line;
saved_physical_chars = prompt_physical_chars;
+ saved_local_prompt_newlines = local_prompt_newlines;
local_prompt = local_prompt_prefix = (char *)0;
local_prompt_len = 0;
+ local_prompt_newlines = (int *)0;
+
prompt_last_invisible = prompt_visible_length = prompt_prefix_length = 0;
prompt_invis_chars_first_line = prompt_physical_chars = 0;
}
void
-rl_restore_prompt ()
+rl_restore_prompt (void)
{
FREE (local_prompt);
FREE (local_prompt_prefix);
+ FREE (local_prompt_newlines);
local_prompt = saved_local_prompt;
local_prompt_prefix = saved_local_prefix;
local_prompt_len = saved_local_length;
+ local_prompt_newlines = saved_local_prompt_newlines;
+
prompt_prefix_length = saved_prefix_length;
prompt_last_invisible = saved_last_invisible;
prompt_visible_length = saved_visible_length;
@@ -2581,11 +2787,11 @@ rl_restore_prompt ()
saved_local_length = 0;
saved_last_invisible = saved_visible_length = saved_prefix_length = 0;
saved_invis_chars_first_line = saved_physical_chars = 0;
+ saved_local_prompt_newlines = 0;
}
char *
-_rl_make_prompt_for_search (pchar)
- int pchar;
+_rl_make_prompt_for_search (int pchar)
{
int len;
char *pmt, *p;
@@ -2623,8 +2829,7 @@ _rl_make_prompt_for_search (pchar)
/* Quick redisplay hack when erasing characters at the end of the line. */
void
-_rl_erase_at_end_of_line (l)
- int l;
+_rl_erase_at_end_of_line (int l)
{
register int i;
@@ -2638,10 +2843,10 @@ _rl_erase_at_end_of_line (l)
}
/* Clear to the end of the line. COUNT is the minimum
- number of character spaces to clear, */
+ number of character spaces to clear, but we use a terminal escape
+ sequence if available. */
void
-_rl_clear_to_eol (count)
- int count;
+_rl_clear_to_eol (int count)
{
#ifndef __MSDOS__
if (_rl_term_clreol)
@@ -2655,36 +2860,33 @@ _rl_clear_to_eol (count)
/* Clear to the end of the line using spaces. COUNT is the minimum
number of character spaces to clear, */
static void
-space_to_eol (count)
- int count;
+space_to_eol (int count)
{
register int i;
for (i = 0; i < count; i++)
- putc (' ', rl_outstream);
+ putc (' ', rl_outstream);
_rl_last_c_pos += count;
}
void
-_rl_clear_screen ()
+_rl_clear_screen (void)
{
-#ifndef __DJGPP__
+#if defined (__DJGPP__)
+ ScreenClear ();
+ ScreenSetCursor (0, 0);
+#else
if (_rl_term_clrpag)
tputs (_rl_term_clrpag, 1, _rl_output_character_function);
else
rl_crlf ();
-#else
- ScreenClear ();
- ScreenSetCursor (0, 0);
#endif /* __DJGPP__ */
}
/* Insert COUNT characters from STRING to the output stream at column COL. */
static void
-insert_some_chars (string, count, col)
- char *string;
- int count, col;
+insert_some_chars (char *string, int count, int col)
{
open_some_spaces (col);
_rl_output_some_chars (string, count);
@@ -2694,8 +2896,7 @@ insert_some_chars (string, count, col)
ncurses documentation and use either im/ei with explicit spaces, or IC/ic
by itself. We assume there will either be ei or we don't need to use it. */
static void
-open_some_spaces (col)
- int col;
+open_some_spaces (int col)
{
#if !defined (__MSDOS__) && (!defined (__MINGW32__) || defined (NCURSES_VERSION))
char *buffer;
@@ -2731,8 +2932,7 @@ open_some_spaces (col)
/* Delete COUNT characters from the display line. */
static void
-delete_chars (count)
- int count;
+delete_chars (int count)
{
if (count > _rl_screenwidth) /* XXX */
return;
@@ -2754,9 +2954,9 @@ delete_chars (count)
}
void
-_rl_update_final ()
+_rl_update_final (void)
{
- int full_lines;
+ int full_lines, woff, botline_length;
full_lines = 0;
/* If the cursor is the only thing on an otherwise-blank last line,
@@ -2768,26 +2968,34 @@ _rl_update_final ()
full_lines = 1;
}
_rl_move_vert (_rl_vis_botlin);
+ woff = W_OFFSET(_rl_vis_botlin, wrap_offset);
+ botline_length = VIS_LLEN(_rl_vis_botlin) - woff;
/* If we've wrapped lines, remove the final xterm line-wrap flag. */
- if (full_lines && _rl_term_autowrap && (VIS_LLEN(_rl_vis_botlin) == _rl_screenwidth))
+ if (full_lines && _rl_term_autowrap && botline_length == _rl_screenwidth)
{
char *last_line;
- last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]];
+ /* LAST_LINE includes invisible characters, so if you want to get the
+ last character of the first line, you have to take WOFF into account.
+ This needs to be done for both calls to _rl_move_cursor_relative,
+ which takes a buffer position as the first argument, and any direct
+ subscripts of LAST_LINE. */
+ last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]]; /* = VIS_CHARS(_rl_vis_botlin); */
cpos_buffer_position = -1; /* don't know where we are in buffer */
- _rl_move_cursor_relative (_rl_screenwidth - 1, last_line); /* XXX */
+ _rl_move_cursor_relative (_rl_screenwidth - 1 + woff, last_line); /* XXX */
_rl_clear_to_eol (0);
- putc (last_line[_rl_screenwidth - 1], rl_outstream);
+ putc (last_line[_rl_screenwidth - 1 + woff], rl_outstream);
}
_rl_vis_botlin = 0;
- rl_crlf ();
+ if (botline_length > 0 || _rl_last_c_pos > 0)
+ rl_crlf ();
fflush (rl_outstream);
rl_display_fixed++;
}
/* Move to the start of the current line. */
static void
-cr ()
+cr (void)
{
if (_rl_term_cr)
{
@@ -2804,8 +3012,7 @@ cr ()
terminal escape sequences. Called with the cursor at column 0 of the
line to draw the prompt on. */
static void
-redraw_prompt (t)
- char *t;
+redraw_prompt (char *t)
{
char *oldp;
@@ -2829,7 +3036,7 @@ redraw_prompt (t)
/* Redisplay the current line after a SIGWINCH is received. */
void
-_rl_redisplay_after_sigwinch ()
+_rl_redisplay_after_sigwinch (void)
{
char *t;
@@ -2874,7 +3081,7 @@ _rl_redisplay_after_sigwinch ()
}
void
-_rl_clean_up_for_exit ()
+_rl_clean_up_for_exit (void)
{
if (_rl_echoing_p)
{
@@ -2887,7 +3094,7 @@ _rl_clean_up_for_exit ()
}
void
-_rl_erase_entire_line ()
+_rl_erase_entire_line (void)
{
cr ();
_rl_clear_to_eol (0);
@@ -2896,7 +3103,7 @@ _rl_erase_entire_line ()
}
void
-_rl_ttyflush ()
+_rl_ttyflush (void)
{
fflush (rl_outstream);
}
@@ -2904,7 +3111,7 @@ _rl_ttyflush ()
/* return the `current display line' of the cursor -- the number of lines to
move up to get to the first screen line of the current readline line. */
int
-_rl_current_display_line ()
+_rl_current_display_line (void)
{
int ret, nleft;
@@ -2928,9 +3135,7 @@ _rl_current_display_line ()
In the case of multibyte characters with stateful encoding, we have to
scan from the beginning of the string to take the state into account. */
static int
-_rl_col_width (str, start, end, flags)
- const char *str;
- int start, end, flags;
+_rl_col_width (const char *str, int start, int end, int flags)
{
wchar_t wc;
mbstate_t ps;
@@ -2963,7 +3168,13 @@ _rl_col_width (str, start, end, flags)
while (point < start)
{
- tmp = mbrlen (str + point, max, &ps);
+ if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point]))
+ {
+ memset (&ps, 0, sizeof (mbstate_t));
+ tmp = 1;
+ }
+ else
+ tmp = mbrlen (str + point, max, &ps);
if (MB_INVALIDCH ((size_t)tmp))
{
/* In this case, the bytes are invalid or too short to compose a
@@ -2992,7 +3203,13 @@ _rl_col_width (str, start, end, flags)
while (point < end)
{
- tmp = mbrtowc (&wc, str + point, max, &ps);
+ if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point]))
+ {
+ tmp = 1;
+ wc = (wchar_t) str[point];
+ }
+ else
+ tmp = mbrtowc (&wc, str + point, max, &ps);
if (MB_INVALIDCH ((size_t)tmp))
{
/* In this case, the bytes are invalid or too short to compose a
diff --git a/doc/history.0 b/doc/history.0
index e3cba11..9133300 100644
--- a/doc/history.0
+++ b/doc/history.0
@@ -6,7 +6,7 @@ HISTORY(3) Library Functions Manual HISTORY(3)
history - GNU History Library
COPYRIGHT
- The GNU History Library is Copyright (C) 1989-2014 by the Free Software
+ The GNU History Library is Copyright (C) 1989-2017 by the Free Software
Foundation, Inc.
DESCRIPTION
@@ -206,7 +206,9 @@ HISTORY(3) Library Functions Manual HISTORY(3)
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.
+ (if any) is set to NULL. If the maximum number of history entries has
+ been set using stifle_history(), and the new number of history entries
+ would exceed that maximum, the oldest history entry is removed.
void add_history_time (const char *string)
Change the time stamp associated with the most recent history entry to
@@ -233,11 +235,12 @@ HISTORY(3) Library Functions Manual HISTORY(3)
Clear the history list by deleting all the entries.
void stifle_history (int max)
- Stifle the history list, remembering only the last max entries.
+ Stifle the history list, remembering only the last max entries. The
+ history list will contain only max entries at a time.
int unstifle_history (void)
- Stop stifling the history. This returns the previously-set maximum
- number of history entries (as set by stifle_history()). history was
+ Stop stifling the history. This returns the previously-set maximum
+ number of history entries (as set by stifle_history()). history was
stifled. The value is positive if the history was stifled, negative if
it wasn't.
@@ -246,25 +249,26 @@ HISTORY(3) Library Functions Manual HISTORY(3)
Information About the History List
- These functions return information about the entire history list or
+ These functions return information about the entire history list or
individual list entries.
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
+ 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.
int where_history (void)
Returns the offset of the current history element.
HIST_ENTRY * current_history (void)
- Return the history entry at the current position, as determined by
+ Return the history entry at the current position, as determined by
where_history(). If there is no entry there, return a NULL pointer.
HIST_ENTRY * history_get (int offset)
- Return the history entry at position offset, starting from his-
- tory_base. If there is no entry there, or if offset is greater than
- the history length, return a NULL pointer.
+ Return the history entry at position offset. The range of valid values
+ of offset starts at history_base and ends at history_length - 1. If
+ there is no entry there, or if offset is outside the valid range,
+ return a NULL pointer.
time_t history_get_time (HIST_ENTRY *)
Return the time stamp associated with the history entry passed as the
@@ -492,4 +496,4 @@ HISTORY(3) Library Functions Manual HISTORY(3)
-GNU History 6.3 2015 May 24 HISTORY(3)
+GNU History 6.3 2017 October 8 HISTORY(3)
diff --git a/doc/history.3 b/doc/history.3
index 7ddc26a..8de64f6 100644
--- a/doc/history.3
+++ b/doc/history.3
@@ -6,9 +6,9 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
-.\" Last Change: Sun May 24 18:01:17 EDT 2015
+.\" Last Change: Sun Oct 8 11:43:43 EDT 2017
.\"
-.TH HISTORY 3 "2015 May 24" "GNU History 6.3"
+.TH HISTORY 3 "2017 October 8" "GNU History 6.3"
.\"
.\" File Name macro. This used to be `.PN', for Path Name,
.\" but Sun doesn't seem to like that very much.
@@ -40,8 +40,8 @@
.SH NAME
history \- GNU History Library
.SH COPYRIGHT
-.if t The GNU History Library is Copyright \(co 1989-2014 by the Free Software Foundation, Inc.
-.if n The GNU History Library is Copyright (C) 1989-2014 by the Free Software Foundation, Inc.
+.if t The GNU History Library is Copyright \(co 1989-2017 by the Free Software Foundation, Inc.
+.if n The GNU History Library is Copyright (C) 1989-2017 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
@@ -356,6 +356,9 @@ 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.
+If the maximum number of history entries has been set using
+\fBstifle_history()\fP, and the new number of history entries would exceed
+that maximum, the oldest history entry is removed.
.Fn1 void add_history_time "const char *string"
Change the time stamp associated with the most recent history entry to
@@ -382,6 +385,7 @@ 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.
+The history list will contain only \fImax\fP entries at a time.
.Fn1 int unstifle_history "void"
Stop stifling the history. This returns the previously-set
@@ -411,10 +415,11 @@ Return the history entry at the current position, as determined by
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.
+Return the history entry at position \fIoffset\fP.
+The range of valid values of \fIoffset\fP starts at \fBhistory_base\fP
+and ends at \fBhistory_length\fP \- 1.
+If there is no entry there, or if \fIoffset\fP is outside the valid
+range, 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.
diff --git a/doc/history.dvi b/doc/history.dvi
index cc7924c..28af1c7 100644
--- a/doc/history.dvi
+++ b/doc/history.dvi
Binary files differ
diff --git a/doc/history.html b/doc/history.html
index 6af5600..bc3ce3b 100644
--- a/doc/history.html
+++ b/doc/history.html
@@ -1,6 +1,6 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on September, 7 2016 by texi2html 1.64 -->
+<!-- Created on December, 18 2018 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
@@ -118,6 +118,16 @@ History expansions are introduced by the appearance of the
history expansion character, which is <SAMP>`!'</SAMP> by default.
</P><P>
+History expansion implements shell-like quoting conventions:
+a backslash can be used to remove the special handling for the next character;
+single quotes enclose verbatim sequences of characters, and can be used to
+inhibit history expansion;
+and characters enclosed within double quotes may be subject to history
+expansion, since backslash can escape the history expansion character,
+but single quotes may not, since they are not treated specially within
+double quotes.
+</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>
@@ -620,6 +630,9 @@ parameters managing the list itself.
<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>.
+If the maximum number of history entries has been set using
+<CODE>stifle_history()</CODE>, and the new number of history entries would exceed
+that maximum, the oldest history entry is removed.
</DL>
</P><P>
@@ -670,6 +683,7 @@ of an invalid <VAR>which</VAR>, a <CODE>NULL</CODE> pointer is returned.
<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.
+The history list will contain only <VAR>max</VAR> entries at a time.
</DL>
</P><P>
@@ -740,10 +754,12 @@ pointer.
<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.
+<DD>Return the history entry at position <VAR>offset</VAR>.
+The range of valid
+values of <VAR>offset</VAR> starts at <CODE>history_base</CODE> and ends at
+<VAR>history_length</VAR> - 1 (see section <A HREF="history.html#SEC17">2.4 History Variables</A>).
+If there is no entry there, or if <VAR>offset</VAR> is outside the valid
+range, return a <CODE>NULL</CODE> pointer.
</DL>
</P><P>
@@ -1015,7 +1031,7 @@ to the "normal" terminating characters.
<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.
+and shell quoting conventions are obeyed as described below.
</DL>
</P><P>
@@ -1141,13 +1157,32 @@ carriage return, and <SAMP>`='</SAMP>.
<A NAME="IDX46"></A>
<DL>
<DT><U>Variable:</U> int <B>history_quotes_inhibit_expansion</B>
-<DD>If non-zero, double-quoted words are not scanned for the history expansion
-character or the history comment character. The default value is 0.
+<DD>If non-zero, the history expansion code implements shell-like quoting:
+single-quoted words are not scanned for the history expansion
+character or the history comment character, and double-quoted words may
+have history expansion performed, since single quotes are not special
+within double quotes.
+The default value is 0.
</DL>
</P><P>
<A NAME="IDX47"></A>
<DL>
+<DT><U>Variable:</U> int <B>history_quoting_state</B>
+<DD>An application may set this variable to indicate that the current line
+being expanded is subject to existing quoting. If set to <SAMP>`''</SAMP>, the
+history expansion function will assume that the line is single-quoted and
+inhibit expansion until it reads an unquoted closing single quote; if set
+to <SAMP>`"'</SAMP>, history expansion will assume the line is double quoted until
+it reads an unquoted closing double quote. If set to zero, the default,
+the history expansion function will assume the line is not quoted and
+treat quote characters within the line as described above.
+This is only effective if <VAR>history_quotes_inhibit_expansion</VAR> is set.
+</DL>
+</P><P>
+
+<A NAME="IDX48"></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>)
@@ -1971,13 +2006,14 @@ to permit their use in free software.
<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#IDX48"><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#IDX47"><CODE>history_quoting_state</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>
@@ -2130,7 +2166,7 @@ to permit their use in free software.
<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</I> on <I>September, 7 2016</I>
+This document was generated by <I>chet</I> on <I>December, 18 2018</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
@@ -2292,7 +2328,7 @@ the following structure:
<BR>
<FONT SIZE="-1">
This document was generated
-by <I>chet</I> on <I>September, 7 2016</I>
+by <I>chet</I> on <I>December, 18 2018</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
diff --git a/doc/history.info b/doc/history.info
index e23efc3..870187a 100644
--- a/doc/history.info
+++ b/doc/history.info
@@ -1,9 +1,9 @@
-This is history.info, produced by makeinfo version 6.1 from
+This is history.info, produced by makeinfo version 6.5 from
history.texi.
-This document describes the GNU History library (version 7.0, 16 July
-2016), a programming tool that provides a consistent user interface for
-recalling lines of previously typed input.
+This document describes the GNU History library (version 8.0, 30
+November 2018), a programming tool that provides a consistent user
+interface for recalling lines of previously typed input.
Copyright (C) 1988-2016 Free Software Foundation, Inc.
@@ -79,6 +79,14 @@ 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.
+ History expansion implements shell-like quoting conventions: a
+backslash can be used to remove the special handling for the next
+character; single quotes enclose verbatim sequences of characters, and
+can be used to inhibit history expansion; and characters enclosed within
+double quotes may be subject to history expansion, since backslash can
+escape the history expansion character, but single quotes may not, since
+they are not treated specially within double quotes.
+
* Menu:
* Event Designators:: How to specify which history line to use.
@@ -381,7 +389,10 @@ 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'.
+ field (if any) is set to 'NULL'. If the maximum number of history
+ entries has been set using 'stifle_history()', and the new number
+ of history entries would exceed that maximum, the oldest history
+ entry is removed.
-- Function: void add_history_time (const char *string)
Change the time stamp associated with the most recent history entry
@@ -409,6 +420,7 @@ parameters managing the list itself.
-- Function: void stifle_history (int max)
Stifle the history list, remembering only the last MAX entries.
+ The history list will contain only MAX entries at a time.
-- Function: int unstifle_history (void)
Stop stifling the history. This returns the previously-set maximum
@@ -442,9 +454,10 @@ individual list entries.
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
+ Return the history entry at position OFFSET. The range of valid
+ values of OFFSET starts at 'history_base' and ends at
+ HISTORY_LENGTH - 1 (*note History Variables::). If there is no
+ entry there, or if OFFSET is outside the valid range, return a
'NULL' pointer.
-- Function: time_t history_get_time (HIST_ENTRY *entry)
@@ -597,7 +610,7 @@ These functions implement history expansion.
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.
+ obeyed as described below.
-- Function: char * history_arg_extract (int first, int last, const
char *string)
@@ -663,10 +676,25 @@ GNU History Library.
space, tab, newline, carriage return, and '='.
-- Variable: int history_quotes_inhibit_expansion
- If non-zero, double-quoted words are not scanned for the history
- expansion character or the history comment character. The default
+ If non-zero, the history expansion code implements shell-like
+ quoting: single-quoted words are not scanned for the history
+ expansion character or the history comment character, and
+ double-quoted words may have history expansion performed, since
+ single quotes are not special within double quotes. The default
value is 0.
+ -- Variable: int history_quoting_state
+ An application may set this variable to indicate that the current
+ line being expanded is subject to existing quoting. If set to ''',
+ the history expansion function will assume that the line is
+ single-quoted and inhibit expansion until it reads an unquoted
+ closing single quote; if set to '"', history expansion will assume
+ the line is double quoted until it reads an unquoted closing double
+ quote. If set to zero, the default, the history expansion function
+ will assume the line is not quoted and treat quote characters
+ within the line as described above. This is only effective if
+ HISTORY_QUOTES_INHIBIT_EXPANSION is set.
+
-- 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
@@ -1282,15 +1310,15 @@ Appendix C Function and Variable Index
* add_history: History List Management.
(line 9)
* add_history_time: History List Management.
- (line 13)
+ (line 16)
* append_history: Managing the History File.
(line 28)
* clear_history: History List Management.
- (line 34)
+ (line 37)
* current_history: Information About the History List.
(line 17)
* free_history_entry: History List Management.
- (line 22)
+ (line 25)
* get_history_event: History Expansion. (line 26)
* history_arg_extract: History Expansion. (line 41)
* history_base: History Variables. (line 9)
@@ -1302,16 +1330,17 @@ Appendix C Function and Variable Index
* history_get_history_state: Initializing History and State Management.
(line 14)
* history_get_time: Information About the History List.
- (line 28)
-* history_inhibit_expansion_function: History Variables. (line 62)
+ (line 29)
+* history_inhibit_expansion_function: History Variables. (line 77)
* history_is_stifled: History List Management.
- (line 46)
+ (line 50)
* history_length: History Variables. (line 12)
* history_list: Information About the History List.
(line 9)
* history_max_entries: History Variables. (line 15)
* history_no_expand_chars: History Variables. (line 52)
* history_quotes_inhibit_expansion: History Variables. (line 57)
+* history_quoting_state: History Variables. (line 65)
* history_search: Searching the History List.
(line 12)
* history_search_delimiter_chars: History Variables. (line 47)
@@ -1326,7 +1355,7 @@ Appendix C Function and Variable Index
* history_subst_char: History Variables. (line 33)
* history_tokenize: History Expansion. (line 35)
* history_total_bytes: Information About the History List.
- (line 32)
+ (line 33)
* history_truncate_file: Managing the History File.
(line 33)
* history_word_delimiters: History Variables. (line 43)
@@ -1340,13 +1369,13 @@ Appendix C Function and Variable Index
* read_history_range: Managing the History File.
(line 14)
* remove_history: History List Management.
- (line 17)
+ (line 20)
* replace_history_entry: History List Management.
- (line 27)
+ (line 30)
* stifle_history: History List Management.
- (line 37)
-* unstifle_history: History List Management.
(line 40)
+* unstifle_history: History List Management.
+ (line 44)
* using_history: Initializing History and State Management.
(line 10)
* where_history: Information About the History List.
@@ -1357,27 +1386,27 @@ Appendix C Function and Variable Index

Tag Table:
-Node: Top845
-Node: Using History Interactively1490
-Node: History Interaction1998
-Node: Event Designators3422
-Node: Word Designators4561
-Node: Modifiers6198
-Node: Programming with GNU History7421
-Node: Introduction to History8165
-Node: History Storage9855
-Node: History Functions10990
-Node: Initializing History and State Management11979
-Node: History List Management12791
-Node: Information About the History List14824
-Node: Moving Around the History List16377
-Node: Searching the History List17470
-Node: Managing the History File19395
-Node: History Expansion21215
-Node: History Variables23125
-Node: History Programming Example26195
-Node: GNU Free Documentation License28872
-Node: Concept Index54044
-Node: Function and Variable Index54749
+Node: Top849
+Node: Using History Interactively1494
+Node: History Interaction2002
+Node: Event Designators3900
+Node: Word Designators5039
+Node: Modifiers6676
+Node: Programming with GNU History7899
+Node: Introduction to History8643
+Node: History Storage10333
+Node: History Functions11468
+Node: Initializing History and State Management12457
+Node: History List Management13269
+Node: Information About the History List15563
+Node: Moving Around the History List17177
+Node: Searching the History List18270
+Node: Managing the History File20195
+Node: History Expansion22015
+Node: History Variables23944
+Node: History Programming Example27924
+Node: GNU Free Documentation License30601
+Node: Concept Index55773
+Node: Function and Variable Index56478

End Tag Table
diff --git a/doc/history.pdf b/doc/history.pdf
index 7ca4dd2..0cedc88 100644
--- a/doc/history.pdf
+++ b/doc/history.pdf
Binary files differ
diff --git a/doc/history.ps b/doc/history.ps
index 98d2d96..90b5c94 100644
--- a/doc/history.ps
+++ b/doc/history.ps
@@ -1,7 +1,7 @@
%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.996 Copyright 2016 Radical Eye Software
+%%Creator: dvips(k) 5.998 Copyright 2018 Radical Eye Software
%%Title: history.dvi
-%%CreationDate: Wed Sep 7 17:16:25 2016
+%%CreationDate: Tue Dec 18 16:44:19 2018
%%Pages: 24
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
@@ -12,7 +12,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 600 -t letter -o history.ps history.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2016.09.07:1716
+%DVIPSSource: TeX output 2018.12.18:1144
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -347,9 +347,9 @@ FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
+dup 48 /zero put
dup 49 /one put
dup 55 /seven put
-dup 56 /eight put
dup 57 /nine put
dup 72 /H put
dup 83 /S put
@@ -555,167 +555,166 @@ EFEA3CC6F0872C28108F7EBBF5BF770C0BA6C712275E1239FA44736247CBAAD5
B856D7BD6E5E186AC4C3913293D99529B8F9EAC85FE548406DE5D90A058F1106
F98799495DBB3A05C04BD649053FD29380E217942F71F70C30735423F6F13DC7
F5015DA9043FA42C1045FD7E0F586CBF2D967E468B2E8E763415D60AEBA2BE7A
-BC199BFE58FA66F52AD7C5ED80B4481C08EC8162D88EC52D2695B95EF03F1876
-AC9810734E1170855B512185F1E45E61CAC2221E950F5714EA9DF794371055BF
-78851B835E6E730E396BCBF73F5318AC157E3885B8EBDC35B42948DA8A6566CB
-91770EC786E92873F356524D6E3279555FD1300570D2DB5A69B436E316D1600D
-7F622135601C1318824C0E0CFD58F90452F7D584CD8675A3ADD544D9569A32C2
-2A44C7F7F35FFE5F8B3C783D071BFACD74B1477B93807D36B8C8B29B24B3EDEB
-B76579FE5427A4E670588B703A9000F3EE635D22642493AAB21B7733EEA50010
-2E39529212B65E7565AC5AF02340A8A15EE28E5772676DF8F2F603F3442EE12E
-1998A90868C39500AAA7F469E6533983CDB9C1772CA11F9DE5E533A30B97B735
-B1A91FC71909D220C7917389BCA4BAFAB242B26455E4B7FC1882D68E408D25E6
-F6BAD98F84664993901FB2969C4996A0D326D478B77B433C225A6B9A2EEE56C7
-44DF603A25947377A93A92566FF2547760227C5341B4D49238C74A49D0B13EEC
-603D7D071A726F9C6592605A2060CDE6759F7BFC3AA4471093516DDCDF6ED4AC
-5B1BAF7B8885AF7C01A2B72C2207B66C15430AD9390B592058557DF0E0356382
-226C92B9537DF8C4F37383902B4E1666689E85822C8A5A6AF3CF47CA12DD24CB
-847FE32E805AA98B3D6A16622A05CD8D0028621906425BC18C4B451A43766C89
-5E1163433DE64437A88DB138B0F2C9A5BEA6DF789662C3CF926E47886163DD18
-5B9F3417B3A9F7012AE2CABED179A20E9AB4E6CBE842A2159F2B9C8553313CA6
-893456631FCDBBBB70B1B167EE5942B49EB55122727406AE71B298953C01ADE8
-0BA8733B658176A881B33381A8A917587C9F2B88639153CE90DEDCC822B75C8D
-BB2F8F03639A13E6F3845521A3F159DF384FCF569CA71C0498117EE72EE057EC
-FDEE060EB580E8B7B48ECA10C3B9FD2498D84BAC4D6494E29F972442300CBA46
-3409FAF6702F99DCEE4EC5CF909042CBF6BBDD15A822138A17ED1EC002BC8288
-F04C3B656605946035533D25767E39EA6A0B2D2AD88FA8326EB1A2B451142445
-E53F1AAD06EF339B64B8E7A5E197DE9923679488F8672E8184C3562FD546F1E5
-0BFD41261815597158D89312F84726037763E7AD7B54E9FF4F5CB020AE75542D
-71A58857864D6CE66005928BD0882690B48342CBB2EDDBB054C53634B2CC6133
-8AB295BA408D5DAB41EA92DCB6A7E0D00876544B886DE6859A7D237EC785AA43
-C8697A8DE30554471E819A3E56B07BFD0D4ED8AB7EC6DEC31397338605F49C34
-9ADEA23D85498859140F30BED171CB7B15EE3A219CB005BB4C6B01495CCE1239
-F406E4F7E9F5841710CFB152E86B4A799AB159E16A848F8FEF7A13CE20C001C4
-1EB2BBEE086AC5CD6B4E69D1A26A9F33528AA0D878E715ED91610B773DF0861E
-4D5C6B74289BE02C99A2436FB52ADF8D6075EBFDB3457D1F47AF297AD01A6ADA
-27EF7645D470343E54A9DA9EC009876C4A2724C2F829BAD63257802ABCA948AA
-E532CB4BF794863380718A125CC162CFDBF0790B4021C80912E23698A8A37BF1
-F9C5C0BAD7D5BB4F642581097F297E0D46B536754E408108D84B05C8942FBA21
-BD8A8D9865DC739E89710B770ADFF369E0494FDD2BC8A5FFFFA48C58268A401C
-FF0633ACD4D4B11D0139D3D2EE212789BB96EA732CA519D548B8A5276CBAD81B
-41BBEEB2BF708CFF62CB02512BA2E0D208573E8F1763C9D074804808C980CFC1
-10A94039F2AFB2AFB8345DEED4F6023CBD3BDC0AB624502958705893327F23AC
-5691F98E44F59700CC30C983BF9BF750B95282441C5C3DE6F424E95FC8EAF3AD
-62D6B488A7003326C78437D973C478F880ECD5320F8B6F8147B34D6A19390D9F
-54F5579BFCDD05E9CAF808A8A15F4267204349016F6C129721EA4F4404CF882E
-C7FD593BB1C9128B0938D27D49CA8DF644A4930EDE2CA73D756C92F94CBB55FC
-A7617F9A94B26421BE596C97E3C476232C566E5128B5CE25899C3C8919E49821
-48F27D5D50B4D3AEFD4FE6B04147FD3866ED46C4F95F0A08B5F4675F72D17DBB
-77CC6DE774B2D2D896514D039BC0F5F2D6168A058A7225A0BE39F3814C32B1AB
-FEF343268195E2685C7B71E15A719480511FA763680C62C441F121C1F2F62ADB
-EE0615C2868B9ABF3C704BD1140112C944C79C1AB82E25E7A344C8CEA0D46FD1
-5783F80C7C11DD39ACDF8B2EECE08FF8160E8B729C73F31F45940017E93CD600
-2CB347E2B4FC92713FDCDCBCCA009EC506F399177FC5A0F8D01754256B2CF7E0
-55E2F4A3B152E0ACA549FC3D982F6A89C9C616A0FC24D96BA1C04A536AFE5D7F
-FDF5C951BB79A1405F41A2FB509AE5B105333C29E3F1C6CC4FE578373EBC50C6
-BCCB4300230143828062A77F90F08DCC3F602A7E8F6A086F988A1D4059FB9CD3
-0AEC529D64D6761E641E49354B9A9E6518121D606DA1DA14D404427367C38709
-B984BDC423BB4CC58469DBC4F9B7CE8E57F766DD524CD00724EF31C8572C0EB6
-3F813B564FC18F0AB8DC5432082088C053A75C4A731A6B8D73CE1B7CA3C8ABDF
-514055CB3A70AF2A96D63E98BC88960143A6832D7A87E96BCB410ABF78018D94
-39806824612C45C0B934E7AF984FEAA181C12C05D34DFABA37C3E337C5B6FBB3
-4DF64167C63459FE744746B59DCBA94790D8E356903F6C5EC28CC90362468ECD
-93FA69239B7A90EC28CAEF102994732F6F4876B2C32FCC9717E47918FADC747B
-1F101711F779FD5DF45C8B1A4E441865AB1D87E80A3024CC9EBB2D7F8290B6A4
-E270B71696A68BFDF9D1C93B79C6C609F67B340098C658BAC16A5EE1EA1AEF21
-D6E085F2B4DBEB8766D245C997111A92B9AB165FC30632CA1D2BE76AF0273E0F
-D8FF941C7FABF16DF2ADBE453E47AE9A1509309119749993F549F88ACBC2D99A
-898FB252F0A88BB96EA8EF9BFB743ABA1E42B50459DD427175A7827DF703FBB5
-8E7939A3916BD6186A56F37BB142C332764B3BF8B92F61774648E4EC13BEDFF9
-709D3CB1F54DDD881C35869FB133CDB4646A05037277824C7A59311D04AA3D0C
-15D5D96F14C8DA0BD589BE22991B2ADAD8761701565B1B9AF9C71D8D17DF553D
-1B267FF9F75E0D6C7ACC49FFEBF0526684668DD1B3A060DB398992F9C7522F99
-9417384E4AB2FEB323FB3B8D1FA2041CE3BCCB92E6549786813F39346F915682
-67F6A312A33E62F2748832616BF17B30F06A9BE8ED61F7962FEC47885CFC93E8
-A3487DFE3C97A539259CDF60B1A4C41D5CA938F23F6C9B798016D53EE94DF128
-E4E73A7B0F01FB6B722968162D5A82D5DCFD06DFC635A085AA797F1AE249386A
-B42DCC3D621482BCF99AADCF55677F1DEB22E0A260426BE41BCC1B963DFC1D7F
-5B398D4C8018A420520AB2F1313BA4D25FE28C2DD586053B1FD62A2630436256
-E0C0B4DC7754568B0064738D940A12C580343B8CF45DB56E83283189CB9EFCAC
-4267C82C3605BB700E5ADB99093D1DDA033F261217921F85C4DABEF290E79095
-2FE9796EAFEF4890B4AD4E173075EC4534DD5CBABA373EB3D1BBF24CD3587660
-FD7D006BB84C1E8A97F5E47BF084DDCB905ED833E2A2ECFD3C399F29ADB6B306
-AFBABA185852E4FFD6988CB290FA8E40B80B2E7130DB1146B5CE35E060AECF28
-187DBA804CDF12A0B82654B7F2E836FBD6EC4303D5AD26BFF7327AB45CA4E741
-DE4731C7707DD305AFC2694A6E64A51DCB4839E9C62EDAB3351EF93990371FAA
-7B2245281E2038A36BDFCFFB40E3866F84CBE04283F4BCA5D04E57609428F4C2
-892CB93DEA53B4B1303968E0477139619E93E1EAC69B49E7CCE0E169DC7940B2
-2F6D8AA883F3A23AA7B85631D5AF2ED347E636DB8CE83C7F14E5C901353E3FDF
-697C060BC582E78E3E62C0BCAD1050B26551D21B67072F86D7D801E5210474D2
-6850E3202B67873F5A83527DD88D7EA37EF9995947A0A570BD7E6EBD07BEBD64
-630D3B0BA39C74BDF84F34D6AB254798A815A5E9525C7926ED2F57E4328907BE
-3537348976E30AE5E7663C939DEBB3C9B18A85F52C002CC0EF494678B8031C0D
-0D0FE220B7A9ADCD2E69500D6344B946CE04F636EBC451678DE5C40AEF97C382
-BA41C2FEB0D13E237BFEE8ED7599FC698C895969C0737C4233C4F973B3F63E09
-BA4B70659BE66CE6A34E1D833C0F60F34D60504132CDC5E4F2A1957737D219A4
-E2C41A70C5FB47DD7AE4F471294003B6EFE1AA402AFC090E01A872113DD64137
-982FBF23DFFB39B1D7FFA6C8E2905085168AB6A562E0FC6789EC59B0714B76FD
-42D025EC4B5B46A22E9B7D414B3FCAA3B7C6004576E031BA7E6555679C080CA3
-2BF40C855B35684CB9D8D6CFA2C36B1C04F0C2EBE3E91B21018069F22B617B5A
-06F1951FE45FF83575661E42FDED91584B239C9EBC96E932F3CA8109F7BCBFC7
-130FD5A3FE2C735843B4CFE5C60EE5F7DEF09F937900A795A781B69627D0CEFB
-483695744758CB55E7C68311F5094BF928666F805D47CD30AAFDF4D9B3D899DE
-B7A5FEA16ECE4B9F34C64DA16EA56BC0D570D1A6DCAD13A348D5B14165DDF06A
-2532900442348D65C506734E33035B0159267E882B0444628B8A68A3CD273EA6
-96BE26B957BD00F56C8F905185C0F94AFD2F7D266EF13D18FE46D55AD7D0CDF6
-A25ECAA6CC0519167FD9585B2A7CC7C49032FF93E06F53B131E0FF8CB56A96DD
-A8735A20199CBF4D6B5EB194CC7EF59865AFCAEDDF0F820878AAFEFEE6FAC059
-526F5788FC824D330BABF29F28C3CC3634C60E3F7BE16F03DEC298EAA13F7012
-443DABD55069737C9BBF454DCF01BCF18A77FCB84FE818F6A007763491FC6C6A
-F078717E42B1369FCD4F8ABFFA0A7C5752DF27E31DEC70A28B169AC0B2D47ADE
-9C8A60A78D3A571C1CF36E1281B6D688150CFB8FFCC0569C9AF619BAFC14ABA2
-81A4BE84A42B32247BB1D7D92CB59510F7A6E8CA3EA0EF4CCBC044E06406AEE0
-0382182D14343C18A9585812E09163812403D668A21EE37603F7B50998B76104
-7E9819C576F67CF4701736E3916C128A7B548B816FB58945F672684E1F7F74F4
-A597270B8A42DB7783A4B58BC4B0406CDAAD64C7BD98825D6C913D79D80F2600
-6DA05A97C518E2DA6D26A37041D7DC1A946CD56AD0CB8C6DF58D0819C09D219A
-8411E0594FED8A00BE066A83A99BDA43A6EB6DB7BAE07259029BC157FA5BB0D8
-3099756B42A2F3FCAC397B6C6AA474E0D67F17BFD95CEAB82ED12AF02020A505
-B70131B326A639137258A58FCC444D3426FE0587A408521297F47579A97A0DA1
-56E7F304EA883B99E560AC0FA811E0A2FE2EB7EFB19907775992D4448FB0A0DE
-4AD04DD37CC82487E81F71A5EB07B8E3F3E4C3E2A04DE71401EE8488638DDE69
-E24652941D99D6DE77554F9BF4044CF33E917A57DCE21070E4E88C7DE8DDC312
-9FF4B7645961D392AC2E03D295FA6420B0190AD5E7CEFE7A8FB8B40A943C6FEC
-E895F72E1929160D0EE7163CB8BA46AB9F46AE362596F011C297457B10D47BF9
-051BC41B259E77A466EE08C66610B0450187B270FEA9AEB9A51057461AC3167E
-55F6558D1281BF559CC09668B7069CFA2C9917F00ED029BC36D003E183E805A7
-A4130DB6DB057234704E9735408F8659CAF3519F1C314FAA472EC3BE153A0992
-258497B38A4F16B67961844E7CF1E4B0637E38E1031D99AF838FB1157855CCCA
-0A6A82DD423BC09F6EC30223365A89F6336AEBCCCC471376C4E74A5E7529FEFE
-570C08B37B2E960264032693E2FD76F644435BE1155C2A3FAB40A4F69BDAAD77
-378A0777BE02DB97BF6200A3423F663202908E88FAFA2C6178B7ED65D182D4DD
-B9BB636A8D6D1727C304F2F36C5F1C50DBAEA96BA7079D20D84B4FFC26A1E631
-4ACB088FD858AB301359D555D6560900806E2633DC41EFF903FA2574F603926C
-47B74A598B04A03E03CF6FBDE8ADFD4AB480CA8835FF84AC77D5708999470CA5
-6B723737C43D56AF8DEC794EAD4B43069AE408BBE843622E488C0E2FA1926709
-F4E1390FC739FCA366B552F1F7126889FA3FD02303E7410F3E8504A79F18D410
-806D1E20E7241B7759237FDE279ACC56EE7FB3D7D6B3AFBEA5ED8066FC526090
-B3C1E7D8123E1B939B6330852B69980910C84D57D58640B7481CDB75496C8040
-7F863A3FA81362CE2E8522E1857455697CDD15E7C4EDFFB3435562A957526E9E
-C5E076A27819B108417CFDFDD52864984BFEB8D96136B3EFEA4A1E57B84AA29B
-08E7BE55EA267A7D613FF38D8BDDDD07FA43BF3BDBFA3995FC8FAC30BD8BEF67
-F8B572E7E972AA1DE1058E2BCAF6A6A155F451AA398436AA5798A13B95963EAD
-66A75A37C72215CB172ADA573E1F24D27312355E452879C21586CBA30161AD1B
-6468AECDD9D0E2293123293C80227527B3B0F830B1ACDF3536961AAA5601A353
-EB1E35BB1D0A93D13309B4ED3C2E269E7F9371F2F7AA34197E4516D43EDA99C7
-E79A7DCD24C15B469E95677A74CF034FCAE91D016918E752875E25575A6878BF
-63AA29C377C6EF3717E7D5B7408A44FAA1CB8B630B5BA17E2F7E552779AED502
-6714A8740BDE5646C08323607EC198D04F6E265AB93C67F4AEA44515226F10D3
-2E93D3A2729185DE41E00278115565D092529569F7DDBF97C00CE386AB6E1738
-A1C197E40BCB26E73AF481770AE523B8DBED366E9AA68849087D5217631359BE
-127B595DE2CBD9AC588289ADBD7EC6293EF82B2E6DDE4950BBE74A5CB5647B26
-CA37AFC8E4E2C2D518A1E8D56228568259704779356C9FD4DC48D53FC28C32FC
-3C97E6833AE3C9EE7AD45CB38CEB19653A94B85131343EAB8CEEC01B77730D58
-075C925CF28D86E65B8A07DA41E18D4CAC0D77E695BEBD34893E84CBB7269F2E
-B422F7C060CA005582DF02CF49F69C962F34F545FD7EC1F33290C39145119750
-3292DE1361F09BAC7F2A55506940C2816E71335FDBA538C68104B73E0FF4697E
-FA7D65FF1D691B96BE382AF92E6DF45D3D2374C7568076FF76F9C23AE3DF4D8B
-A7B2F416AAC3FC524063E7C9A4B49BD303B19F33D1DE4B6AE7EABD510908AD6F
-A8E0A18294E5C46FD41193DF4656F30DE28F08D81903CE40D467637694E1B383
-1C4B1B0CA895F8413B6E686CFFAEAF61C6B7DCD846DB8A4E715307A7356DBD59
-86D5619610EE086A39478AE985F33D170426508AF1EA81343CF615EF3E117E2D
-4DBCA2B03C4355A59F3AD6F27EA0A5C05B10CDCE8DB7CE7771FAAD248F59C2E7
-62474CC2C16928DD36590E4CA3695003BB960FD5
+BC199BFE58FA66F52AD7C5ED80B4481C08EC85B51D5111091F54823FDAAC9DDF
+DDFCC6DD16186911750F761F9907A438DDF4506C6ADBAE868F8AE594EDD14B67
+2F4AE01822A99E924DFA530CE96B6A830ECE92ED0AA54E82D971689EA5AACDB6
+EF5562BF5C5C05996D08F30998D4C5AABCEBA2668C779577B2ECF422EB0192CA
+E5A6376D0A7DD36AE46B713D0F7BA51039E05F76B3DC275C95EE5FAF3A6D8765
+36B55707F5DA048F27E64850AF042F96BFFFD3B3903C60869AB41C1D92AA8ABD
+1FDBE17E30BD3C035BAEBD18239DAA330A84A5FFE1F4E73AB0D97814C976112B
+9DE60C280C67CE7B6B5CCD4A00A4866D2F89FB374260E9C0D1047C26DAA81658
+42A4DDD43FC3AB8DADBB4D53C5BC7FCBD0403E755FE896AA75B11435C7A68AA7
+2F30E648E53BC96D108520D9CE9193DA216221F842FD0F3FC6533B95EA18BBA9
+22286C98403528F049DF779B434B60BDE95597FF0AABEFDF460AA0BE6AC0D179
+D8120F9E6B053113D442CC584FD6EA91C4F94FEDE368E0B9DE473F786B0FE914
+21F3099CCD799C271639CC314F9940AE48775B4094985B207F8A833037FDCE9A
+CC73F75B045E923878E5F33D28C98CD7E3D8B59B2FDC4A483CDFE067EE6BB49A
+AA5DC515825A9FCF3BB17187332CE5CC9FE34A8AAB8931883A177C37610A75DE
+C881A5C5EC31782C568D1B04D2233CE0930FA5D878A7BD6CAB5CC86EDEB29124
+A9E47F4F5A8A95B780B4286397595596B95B7422964D5D2D609CFE3440E62146
+C04C75E9EFA7845A3A760AD00863134C211BE72DD261ABBAE39CC898A634A429
+F9D0B4733117E3217EC749F520C8AEA79C2D61038BA7A2B491D23FD512B31710
+8280D8DF30D8CA287A2B040C71F73911C8D5C8917C242C02A331EE280CECAEA7
+FE970E55A74B44A3EEE8ABE0E207824D81AB21C8AFCF5D4BAEA507A2B669177F
+E94D14189B0552342C288137DCE659AD2F629533B07E8A668E68D117A3EAD47C
+D56112F27F9B4CDC7D414D3B7B50B4F489556C7BA0A3DB7E8C29DB3630B72D10
+2B874A871540D45D3F9B39005F6F4D8095A21EC9F557EB81CB08D826B257A40A
+C29D2907B33C90D28E6FC5BF776DB2466800F8B10325A5A826C7C959ECC2D2DB
+3DD7EBAD12E1955C958FE51559594C29EDD3DE5931CC13C766F9223C555CCFB1
+6BD1571D1F0F61584608EE366E37AA4B5DE50459E00A2F7DBF7232980A348B0C
+AD0009DCFBAF1970B2A8022199FAF4079610E9E335396BBE2B43906C5D49FD87
+0013EF41B79E49B5EBDE37373B8179748A2208ECC9987F45BACF7B4FD3D56A0A
+64873020DCE8EDE7ED99A63327FD3D695A193EDBF90DC8A018BCA317B08759FB
+45133229F99FFC9557D0FCCB67758049A446061AE96830DA3951E84323A7DDE5
+75937E1E8FC44D1B4B272C6F2FBF4E1A4F314B548E46EA8A4DD6076BA24CB572
+B26681037ADCB67BE340151001642913BF172ACF92FA3787D8743830492E2781
+D54E9771414C185B58E15953350D2486757F78CC5E099001627AFF7B58C206AB
+CCBC550797B79F6DE84CDF2049AFCB62812CEE8454A918504C1463A0BE0B5664
+DA447AB71A060B517ACEC106C6BF9AE03A6D15026DC7BCF3AA98FC41B2D263A9
+9D7889A5C15AB3EBA00DFC9E095BCC4C44547D566AE9831B7AC4B253C2658571
+06DB8A68192AD9586DC7E5145B47DF21660523F680D85246E3756169B3FBD813
+8EC48A865241182332BEF52606D9D8F980575A7A8CAADA6136AC9CE8532125D3
+6C3EB26E2257F6EB80314143177A167F533171AB5C16D71F28FDBC1F16E06499
+4688185850778D7372DFA56845D468CD19396FF3EF1AAE7F596542A55730ADD1
+9574BB00A15289BDBE8796C599B0D4627FCA53C1486F7124FA047093707020F2
+B161B3C343CE9B31FC9E9E37619FA30D58A082F41601EE3E7BB420DEF4C8A0FD
+6254E9EB5D2927452C649DDF5D0B2925126FA9EC4D65D711CF943FCD7F58C518
+9BAED942FA06619E39BA7EB20492EBC7EC93D95965C6121CDE165CA660A8FA9B
+DD40C3EB89C0E2E963440FF61F98F039974ED30A1E080D5AE6E801B081D89235
+DB8FD7D0EFDB5386ACB4B5ABA03E7D9F82C7F3F2C57D6A4DE8F972075FB1979D
+1537F128E94BB3B4CCABF46E2033DDCB213F15B16469F7410E70499F15950CCF
+6E1F83C4B87C25FCEA468F8E5B973AFCD5EF74438A5ADB3BB0D91A0C38329070
+9EAF71DF918A74D81228B1860BAD29FAFF284E6979D5CFE5F745A90E14C5FD71
+8F856C4DDA56D045EE22877F25F3330D16A825F61551CA52EA1852ECC7A2CBE1
+9584C756FA0A322CCAD06D9A1875BD14690A0ED6115C23DD0C3223EDD5E79A9D
+CF18EF3B3240DEA92AF27D0D44BBA56788BA3AC4F97782D02F742721C068B702
+62D59D8FFB2D2C5862F5CE393E2D9AAD5A7969D22F7C8AEC9BA90F2ECCFF54DE
+98CFCA43192EBC2BA294810AEE0DFF0D98ACA9305D1A33F8912919C03580F2C5
+2AE44C0C1255A876EC4298E12F1BC17BE3F3E9F43616D3E3440DA8E0D5044DD0
+35895C4DC1BC280ED84A564F79227CC2BCCA1B39DAD02789B13FD15C9B60B3C3
+9C9C47442DCCCB9377E8823D7157FDC1F734EFB6A53396BFD22839A97CB026C3
+E29CACE7A9E8D9AFFE49AF1AAF800E013A8ED5A22CB3FC0504F1FE34F2068813
+229C62C9435372C81312CC73465370BB4540E24A7D35701A4F0E598BFDFF939C
+164481A395C61BA61748BA0FA396F7360ACE2A6E8AFCC9081AC259D7F8C4C4B3
+5FE223CF1C93B3F1B75917E855A5BDDE3976A31887049A4AD6C8234E1C0D3E31
+C504CCCF33E22E3A7707C0398E2F994EA40B47AFAB3B6B7C6C5887B79C16E255
+3033428DC3A0AAE04486F36E1881DB296AE845A2F422E7A79F4A048077CA31C5
+7531E2B5F5F5D7D91F8C5B6711952C5D744BEC6DEA810510F9CD16E95C9143AF
+9227F14C4F2C5EE75C82A62C5C8D80ED13DC518BB3465BE921BD31ECFE0AEECE
+EB94D3C5C7687BE86CD137055077E60BC1F134E9BEB3E4F709528A893B54B4A3
+5B48529DF1A4FAE03DAB8C28D821339B384F4F5962581CCDA583C0EC09D6263F
+96F61A14840557EC0FD9C17C33C1D507F0B152D5AC297135C2C6A331A4FCCC6D
+501A08969CD6C091EF9AB457755680F34D61DC0F1C5474CBE940C68ADE951D8F
+9ECEF97273115AE580D2756462AAC8B5047EEE3F3ABBB03EA8DA7E3F331185A3
+755A826B27915EC8C9BC4A4528990E5F84EAB95BF8F14A6A3A0ACF99ADF30921
+87029D30353ECB1760279B8677A55A0D71F70620D66E1BFC747D4B901A462E47
+C87F864B6CA670FF56F6548E38AD161AC74F8525CB8D4DA880506ACCAED5F8D3
+4B7D484F76F4C54529888A9F8BBD2DE8876930F334CDB54D9CD72A66BC03C549
+3FE123DBFF46D80FE89993F03A8585E5C90F47DE133674BCBB7D19FDE6E8A89E
+EB90176F92AA3C095825F515627CBC11E4B0D8EA20D3B435D2050104716BC1A1
+89F3C00B4AE327C643074D5D7CCF3133C39967DDE5652861DF69D94324CA68D0
+A8B8518A829D4A0884B1B8A3A06A2E144B8B73BB90419EFA4512B181301507D6
+7EC25983C83C544A7A8B6DE922AD09BBB7B378A3C53E260744EB821ADE6FA512
+40004D22029EBB932450C6A6A703D5DF1F7944D12EE69F5ADA72BAA3E69786B0
+DB79B8D16CFB37C0B6CAE7A94C9498654AAA21B76D51FD067A00FF477A6FEC5A
+27525F85273B01575E49F10F8A14531E9750FD38666427B020024CB981696A89
+079D10650FED50A1989C1A9C509170C4C296DD40E87CF9F8F78C8904E7AE5D90
+F872EFBCECD772C622458C09503CD98C1EDDEE09AECF940640D979B5087013FF
+D1AA7582CC928483F8CBD2A8CE5D2545BC45FCAD47E48FB0A0A3F9A1AC37FE8D
+531380F14718773ADCA01C090104119844DFDB128801D1BF8A086CC6142E4644
+AA58DD23B910DCD4A88D4BD0CF65CBB006421CEE74EE1B279A7A51D9C04D2E42
+23EFC041C1B943E694A389B4A9E3901632A5CA640F91D1EFDB6C88072BDDA54D
+EC583FBB93FDA9C9C61D1D98AA1FB1A2BA4C72B1390F87688027F29B6FAF70F0
+E9D48093324B2895F129AEF3187649C6FD3C26185A812E489159ACCA2F2FE797
+D283B0A26A07652415D9D4A02D46E6420D2D890E26D23FE47589ABE8CE9B4A94
+8D880612325E470D820B30E842D2A46F498E3C6EBC68FB53E5F7FE8EDEF8F7CE
+85C8158DC36BDB6F3584B46E3843013FDDF31229215045733B3078E344211AD7
+8DAC4332A5DD8CD8B1BB6B9C654DAE5BD33E813C70A0C90A187BAAD38C39CF4E
+0C46C54F0B282AA168B3B77DB004678EC86B38601E34E989B5E82B4573133F27
+47FB6FFC01A26A4C1BA9CA5B69EFD9288B62E53756161EB3EF1407C426199524
+26CC7E5318B3D36345FC17734B971CEB33703A2BD3882B5E360EA54F48BC4441
+A5947F2917E184AF56FAC34FF504A8212B794E212646F0BE71EF55E013DDAD18
+7255F33E0A209DB1A0C45BB8212E46DC626F08121850C0177E916C98FD2B4BC6
+6AEC7AACF4B3D19630A5BEFBA00FE0AC7EE873FEC27854BA0EB16DCFDAA17C2F
+C0057C85BAC9244AD05F88CC05D2A09CAC0AD4B01EF0FABFE565F3CC71111A7C
+6AE1FEB3C657B982AF72ED527491863AFBD1C8473A7C28C6769C8A10AE18145F
+99C87772D625C02A6224799B01B67E21CB2202719C309BB2A5A781A9B67BA67A
+56C18BDD7749A684464FF0528A40EA576EE8ACD132C78B81E012827708DE9504
+733E9F692C17365DB8D4BADCA04D3F5F968D21F77111AEDFA9BD53D1BC39D68A
+DB875CADA1AD9E50E79516A37F11BEACD46B02B3AE11842178CFFE9990B2B16D
+D5AB4F1CF9EC349D141F080DF768BBD6CB785DE6A665CD74823ADA7B737006F9
+7BBA98A9B44965813A441931DA18873CE327DFD35E8192C8809F02BBED8183BC
+17AF50BB95750F660288D5B3E13001A1D330056D50D4D069403595B8A18DF321
+BDEC558D0210BC679C135D8C2BB83A5E5613EDD51E76BD2DAA67FA8E74A26A75
+71F2849B4E3B4593757DAA4270A3600DF96A242EBB69E947140CA154B443B908
+44698C41B488227F5AF0EFB0D8A2E015FB9A90D28D9F7707FBC2B2C65F63E289
+69575B2845A823F03F6CEE1BF783568C70E4796D387F03D4CF3E4328173D2B08
+CEC1D2694B13C395B981C0EC9169EA35808A26527C1B7F15316426697804157B
+76EF0BBE41A42F5590CCF7AA901AABB3DC32DBEEF7A24A1924B10DE655C73EBD
+3071FEF7276EF38FEEC7F544AC1B68769CBE98237AB8EE411EF435E71D51373F
+64C55CB88B3C482D3B47DAD804586E5077F678E72B67F6C85FCBD0A6A9BFAA49
+F87CED403626DAA867C300F3B2D2C597DBADC3DF8B15746B33887B2C4C4CCF53
+EC3AACB2DACB914B458B9E0C373C2B323372FBC8489D30777148AD3167784E28
+22F5CA86A3C54E144CC6FE93F0A2F7D95222DF69B0F4B896AE9E4E12600C4054
+CA7CC585809E64724ADA88EC845D87F81C314D5A1EEEC25DAA1544DA0169163E
+87416F4222793775B0FF349EFBCD14A32291FA6B63F2E6A0183645EAF31E2D85
+E8BF8BDF43790F86CD11F90153FE852FA79E57E465C41E4E5A6B7E7913035B71
+D7AAB0E5B7FC2C953558DF1B403D9791BFE2BAC479E2BBAFA9AAB4D749DE02DB
+F2A9D3CF3D2CF8C4521D453478024D1824DE9C21F34CC387A965570351253EEE
+BE8D920B219106CB0401569E7C81ACBC7B3DC3B1C4FF14F017366EDA62493257
+B099439672EF7B0BF954774CEDF3B0EC19887613338A66821E9CAAE0B2864E68
+C0969234882AA39E2AA90AE9E3B2CA22DB3178D29D4106B27B781C4752302EBC
+56DE145488C0306CFB3B4E23A3FB9D1D3156EEE5CE6040CE446D6EEB8037736C
+176A8A855C8F665F6B55878D9F3A10B9CC2838474095E13DF61D6AAEB95900A5
+3DFE4D7D25E4885A19EC5856AF7617AFE79182DB185FA4656061E36F260C4316
+42A4589E7CA8B2C95DF751A861C2EF2921B6A8181C30A7E0112015FCD9F20590
+26AEAE99AF8F170CFAE5EC19BC396DFCD32CC78CBC47A485ED6E88D4871C5D61
+CE271F3AE45222C8EBAB0EBE432D3D2BD9CD69CDBC9E2F47961C9F74589382E3
+F7D6C133D7CA2E7C52835C48AA83452C69E7127F031DFD26B40CF409D3408D88
+56F8576972EFBC947400C8485F55267579C41C83D5418BA24AC9ED39DE4001E9
+68D0062ED8B8CFC5ABAA91E59D2B33B77F42D70CF896F3CA5408951A25CA3A4C
+9B31EF3BEEFFB5C9F62BDDBD38029B27D2FF99461F3A9DA8500CBA6A4F46F489
+89F51D149470F18DB41F5DFBD78D82011019D3F6EBFCB4F9A6959B87466C259D
+BDD14B284F1954ED9BEC8AABD2A94043F8BEF7F14E15BB7901151B67B4DCF824
+FCA42BC7DA7CB54062AEAD59ACB7F5A0B48985D2F408C6702FD25BA5869A658F
+80024778A4A078AFF95332A0E113D9F0C71051F46D3D2657AE8191CA7FD9A813
+32A50908D672983773DDB25A9D06A174B750A19AF2F06BE981A5FBC999F20171
+3060FE8BF2DED7628FF1C2A22BD4D288AFE44FA6E0515D48C35F60BCE52A847D
+C5F340DACB8FA15544552D52D819293765B7BA4184C504A8656797F91765EC53
+BD0A8E2EDEF3C5F89D7AE357E1C5CB10C5689AC67D0998C0BFE07B0BF1FF0E51
+F0F93EE4D49CBD3C29394A1AAE2D9E7D899029D9F5C768B7D70177B44A3BA335
+02E7AEDA13E132AC1D91FE66A194827B00453C72647EEFF3BCDA0BEB7F6D2AAB
+50D477D017DF0341EE249E8CDB07D8764DEC30B217967EF9422ED96D7BA3278B
+BA6A9659A7AB945CA306399726CEE1FE24856DA2CD70E5ADCAFBEE37F2F4E19E
+FC780DFF2899C82FFAA0A2FE9A5A3DD6A8AAEC10998A377DA8AF8CE7CB2CF4B8
+7AE85B74674370669A06F7A3C4C19312318C7BEA80C5282F18A1C870EA786671
+3B5123B88BBA35EC72B1855EF6539F00EBE6B574BF0D26A528441588A191F6F8
+A49C8AF170CF9455BEF83152DC0438DF17B350FEE2B9CAEBD92DF32205990FCA
+BA6455388C5CB8CF444C1DAD0A1028B369E6DEE21EFC40F557EBF6A8BC91603D
+1775A1A0DB52DDD9B0F8F86334D76018B90808A3569701471CC6A9543345070E
+D981CA923C7A49E22C758B639D085B001C2ED5D54331AFE2D95FA1D77C9655A7
+8D920659F7A0127ACEAC6E687B9D4F5D452761CA30B7EE6BF7B17F86B7715422
+902AA3FCC3B04FF410B5184A2C665F24E0B2A0E0F06E0A5E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -2642,6 +2641,7 @@ dup 89 /Y put
dup 91 /bracketleft put
dup 93 /bracketright put
dup 97 /a put
+dup 98 /b put
dup 99 /c put
dup 100 /d put
dup 101 /e put
@@ -2847,279 +2847,284 @@ F44580845F0FA422868CFCC8029513235C0286B76196E350498845EA934DF289
C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627
73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B
E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866
-2F2CF263CBDE3B77E12E7D863F0A87788D89A93707CFEB6A5EA14C8BAC433C65
-56730E3E8985960FC4D00F2B821A9218A20F11EEC2D6A153C403EC4BCD0B7573
-5BA5398D8A252EA71E8928674FAB4CFC6C2FC36E7CB12136830849198CB0B249
-74C07C83EC06B2E0A5323E3320ED056D02B614EAD64E0F8F083F5892BC3881A7
-A9279ED632967D7F5BBA2B7CA37F7BE21987D8BD349C3DADF4682D4088DDBB35
-D6F8F74749063C4F59AF41B9AC950E6E588B3856C7F7AA1C9030B9AEE3D70321
-2DA63309EA56951A6E077EE1FEB9BA112BA69982E9EDCFC5A3B462FCA9D16A5B
-951C2128F30DAFEAB3007F0DC4F16F3D38371618A2F4848A9D0D59062E63CBD4
-E4E0F337CEEA736493E344617B5F1EBC96096B66ADEFD26110B4A59C69FC619F
-4CBB9FAC2C9314C831A6399B611D597F4F817603450983BEEE834691DD492844
-A222BFBD54593B70F18BBEF4D0969B1EA062F7DC61DB08F88E988B58EF871C3E
-EE1F380B98FBA95CA4E524DFC9DB291A5222D9792B9AE3A1F64E868B1BA4B5EA
-E2BC7C68C837776B01738FD3B8D41A3091D8B9A27050E56E0AA39F8F3AE52AC6
-42D30C4363786477D1C2D2FD832C7E2418A7B1E24FAEA7AB5AD1B99E319E3319
-BA790965EFBEDC46D4E7699CD4FA57A28ABCF8D4C05D4C7618C133ED3180C465
-80FAD466CB46D5FD53216F0F15EB9776562B7B6F808A9D8D9F4DE099D7C99C9D
-06588071FA8C36F774B05C0D65259DD0514539030DCDBAB67D6E1A19B2A6A547
-3BACEF7DCCA65B35BF4FCA3531D08DC5A301E0C112FAE9D9173B7B47E7F7C531
-3103B70633AA09E4F87D64CF5E3B7FEC94276E910FAED3C4B30C32C3743A5C39
-B5FBFB0D16C2B1998F53A0C3CB48DF19B4FA9E98BA3D503F5B82EDC2EFCD8521
-8C9006735D194CCCB8DEDF3D465F2C057E1F8F2D35B362EF9D084D429BB71584
-62AE48163478E7FB8AD99F01600BAA8B77C6F98DB7DCBE7E0C46B917EDD2CFA1
-F209D9A01CC283B773BC469257401809BFAAACC0C9980C497DEEA796A60B992E
-39F098D4218AC55FF0ECE7BE1CA314F586AE82CE5B71E4AE1D768BB52FDAA949
-AD21F4FBFC0EF3CDD44FE8D92EB97776F618AD9E38553BD0492149B3BACD7FBD
-7440BB8786D93167C8E4FCF61AC3D360B06C4424F4D46FA91B862D7A27BCEEE6
-C3ADEAB1CD0F8A8752EFCCB3E592162C57933169DA1DAEBFC2C866C10A5F7840
-5447A38BD856996DDD56BCAFDFDA2979FBA4AB6D4FB7E70E20B76F5A2AA3442A
-4EEF4B1CDBCB3278A1F55C99C7C4F7F34C81B063F8255348553E00D3CD5F5A33
-C7FA5E4FFF58B2D19B9D04915B1A33903ECD61512AEEFB41E67535D32AAFA528
-10FA9F87F68EF03DE847AD8BE921CF3D20D06098BE223F66DED6AD3BBA11F79F
-CE8F4EC2A83A6264406B36A48FF893E972BBD98613C6BA7C27804BCF2FD5A4CA
-D8DAA8D54F14C21A361CD594B9F76822908797D78288D86EBF0E627CC4C8F79C
-CBED3B764D2CA0D05BEDABDBAC5E09E2080CE815A76245D0E0F13314ADCE77A8
-6656CFD4C2460601ACED80939C44F600BCA055BB0332198CC80ABD2A7E361E26
-2AE4C41F97E34A97897586C5D79FFB57F5BEF34EC91CFEF1FF1F64F7D1FE945F
-F0DA4CCA520C5941F83318E765966FF0B9729FAED847F59264E7C5752AEB8AB1
-77426AFF9CE3AF2C1A3FC8F8EFC4B6E74A2201B08036FAEE8F74D6E74A0D397C
-7A7CE3E2D1F9BC1CDC1FDBE1647CA8FDD2AD012EBA5D8D4DBBA99BCF9ED3EEA8
-E8773C09545D482E30653D9FBCC67B925D48363D75B11A0E402D9585C2D5D053
-EBF046430962FA0D514308B0E9DCC14CFB51C0F9836B2244650E77777826DC35
-B5480DF48F8D9A9D731D50FAE55365BAACBE23E7FD0F4F6E22EE8B17F1CB806E
-3FA29E94280B973A85EB8CB57C047605811637076E0D98C349353BD4207FCA1D
-A11094D4DCDBB76B4AF79BBBC627ED1D176D82FE6CF34A24EF452B1F26F543ED
-2193C75C0C003B6B3C030BD9AC90C312698C4EEEF07D64753999E7E45C326DE9
-D5F1F3717D94E94E4B27F809444E1E474358D138DFABCBD6FC00E5DF2B6628F9
-89CC2B4821E8486147E9EB9CC942809FD4514C3FFCB1A9DEAEFF56EF66277F41
-8E3F7CB7997BDFAAC4429B1FBE3CEDC59DB54BA0A335AF065DE6A9981D9CB365
-86B48861A11FE0AC44C1C6CC9EFE479427C4CC328AC44D3C4312EA23A04F6D82
-A9A0062AB6D412C5A1A8CB99E7527C3B37FF79343AB8ACD53B6090341960823C
-D6F5B332A2EA6C19E5B237FED411F3C088AFFB94F1AE2E4EBCD67885214C1333
-3644DA63A8BAD52C9408C0E34AF8ED898422A0A2A4B8E9698142B53D76462200
-36CF4D53F66C51AFE6336651AC3CE180B9C382998331BFB6A86B973955D28045
-E5106EF370EBD1B57300A0EC9EAF11BA81A19131076A75D6364556F0CCB5FBA3
-872299EBC8A91563904119DA00450E360B5B7C5B6A6EEA87C10DE6B911109D46
-FBF66B637688E63AFBA42D647637A654D7D16F5A85382EBF72A7103359CB5899
-AFA4C0217EF645D765BA796BC00788DB7590F64EF066F5DEB3321090F544FFA6
-1F2185AE24C9C6051D625C2FF4D0CE0A476178E9DEE5A1A76E2139419AC8C875
-CABCCB25A1A1D18E4422015C6B8BB9EAC87F01E6DC4B5C194A0AFDAFADCABC1A
-14F9B80BC7CF2B18E2C9140ECB160CE260278344E3168A17DFB3612E8336800D
-FF3A13DBE3EDA20852D38D89CAA2B692EAF9E380302C7587C5ABE01A862FD37C
-1BD1315ECE39E266FEF9D847FD2A45DDD7A3E662C4182233EF90573138EEE323
-F64817AA1398052715686BCF461D29AAB9957671EF40869821CD6D5D499C0862
-17951DC682C529CBE8E8C0D49A5E6FA0956B2BD29EF5870CC2A2AF06EC743EAE
-6D9530AE87BF2018CEF6408BC4D97086451A0124A841A094C34F2A6FEAA97D68
-7F60A45619136B914439B1B12326314B821BEC74CC70ACB09953F287C5A0932B
-FF84B72200A20FFCC7F0038B44A5A0E9958490F023D786EB9E2C7C88D95C1EB5
-570424C0A458E89B31F2E681B99CEEC4F6A72E7BC4B7E6F159C84268138AE583
-138484A95D42F3743423480678BC749D90B1E0233071693B87E9277F3A1D9D43
-1A0CCAC46EB872FD71CE75BFE106580A89DE930211125CC6255361FAAF2DAF57
-9F4A86FB8F1FD6BFF647488691B113F5F4621614E87502EC3AD9C70B8770755F
-ECEC384171BE34CB185439F8B1CA228A0E1E2FA02D38FC2E6B1A1B1BDDA7648E
-C39306D18013CDF6F9FE27861C172CC1E5EBCA0F9395DA7C363799EB6476A573
-CC95218E4B1387908DD37C402C5E14DB7E1236B1BC094407906120EFCE4D620B
-6D8279BA52D64C5C3BE3D6E162975B61D1B8630C10A5F342D4244C9793C6651B
-10B0B67CB877E7BBD8190FDB646C044734EDA86407D9E3414404E392EF366FCD
-C7461F6E08AB2B09B4FCC7C98C97E4ED4CDFBFF8AC9EE7E97C1A7B3A0DDAA3C2
-F9849E4003A8F043BA005D297E5A292982CBB759439F9011B3261433C8EB3F92
-E3AE95248806CB2665DCDF4B3759A48E1EE84BB1B8693AE805F4631974522203
-3F467FDC225087213BF2D79B8B148A47D96DCF3F22F3005FF5541898F95B54C5
-07B931899E8EA1BD0F4F46457F63D64E57CE355BBA9EC53AC8257B1B37ABF0EB
-3429392E1427A120FEFAA66D1FDDED3F1D26439168690F10CA3C48C8921735D7
-E059470DF5C64F1EA4A20857EBFB70FD768C2DF77B90FD83D907268269F2D233
-D603056697E13F1B46DE86C3153A92A619912D6E5316E0D1DD7F5DD8C7FF1B5F
-F2FB39A652F6536A5BAD407AB9A5C9D93CA5A6284A9FAB4D353D54C5CE177C95
-C2C3E5918524DA01F22BDC2E60FD35D43C46686877A088099F000C632412562B
-D30BFA5DA02A94740A250DA5F130E3ADCDC390F2BDB1192DC7C5A7E4D7D908AE
-2E2D50846BBD1191FA262B2E38416B5F99EF71510530CD803DA1303CEA9CD053
-24ED32D8F992521D8F3B358A56B42D89EC455210D052023EEFC35FBD2CEE6A76
-A9F715D6A19BAACB7A6E56E4DF72F516C4F9354024800017E30C3D97EF968CF0
-07992318D1C9B8DC96AA1639B0B0F460D679D6306B34CE67203A97C9A2043AC3
-671DA26BFA89B90E564C29089000CE852D7E76776ED7BB562036B78CC746FD2A
-B45880E09EEF0F7BF4BEB7FD573382968226E4AD9094D801F07B16E63B83850E
-88111A93497978E539051BD0176D51E8888C1CB09AB7B64333C87C5574772010
-A74416F6D539634394B1BFFAED30DA7F67B36781606366C11D722A8C712638E9
-0341CBA1A31CF39EA1EFDECD7969DC31B06538765A2E1C8C7267737847BDFEF8
-971FBBFF86F375979CF48E6A34FC82FA9E2A934764DC72035324577A84225BE3
-D0BB79BA56D8EAB0DDCB541E50A2DBB501D7CB45D8FE16C9655ADA08BFFCC38B
-3077D05BA9ADC17F6EFE5F85125AE6A8935B00856BD588BDF0562E5224A4A4F5
-3A863355F6067AC8BD4ADBAAC72A99F351D82404292DBE2EFAC89921EE4B4784
-28661DEB2AF55AE6EEEAF6FB1C7483135D0D15ABFCA646FF3D64EC992ABA0FD5
-A8FCFDBA5080ADC60FC4B93CF4A84FC30E122C67D92DB0DA18DFDCB0D6BA9FD9
-E0F8C0286FF73E9129F37A863033C1E933896E2D47785B8FEE054EBAB376D670
-3346EFE8319B56827B4448429C5CD70ED1138B209FE7CE20CB3CF16612657665
-73856F9D127751D0F82A61FA10A366060746C0A627E39ADBB3B6A3056998D623
-1A08E7F86E6CB07B00AF5781F287BB62B553BB1490CE885BEBB92C9240F1EFF2
-CD6B893C8CF63B600B2FC17BC96AFB51C0BCE68427D843E5F98851B5AF735302
-EB6EC9BE8DE93BC5C6F48B309CEC0006D15506538F01AE8773F457CDB07D8A98
-EE767B499D60D9F115A692949754FF4983B95599F4DE322CA7F9DFAAC1658C36
-C2268D5569835DCE35DB6E40030CB28B30E31AD16AC8395F66F39F5D9DCC0E5A
-273E3111A4DD69ADE07B9FA18C7A7EA669164C6851A72EFFFFEA3E18B5B87D7F
-9A5331599ECC82C362A2103DD50E9D8825898D360C73A7E1E4E9ED66130746F8
-3BF5542959DC2210652383EFF1857D9657C67984629BC1E14570EB254C3D5043
-1E8A0347F9ED66FBF17BDA2C713CD7DC0F5347F06B3432967D1D0C4F7211B5B5
-CCD61164D5C9F01A0BA207D6EA2724F67F84BA845A28F1DCFB5E59D4DC57BFE1
-50864ADC1A703DBA46EF00F2F4ACA298EC1C1DCD26D647014806CECCC8A93E87
-158F2982A72C2B7167A87207D637B92826AFE261D9763A456F90E735DDFDBD09
-1C176B0C0D1774D9FAA5462C2943715E71F3C8CCB0BEF0AEBB5D00812E64CFEE
-282505EE165C6777C37A0CB2B7066F4CCF84B1578DC1A1165D1C60324CFA0263
-08FD152E9D3BC399CF45036466B70C54DF463A19923356834E49FBAA86250899
-4F1DA6637091255FB9B16BFC9DB377AC505FBBD1DAF88233EFCE65F1F91D7428
-10BAFF60705AFB67647EF947A26D86E868681A18E60CBBB552B96FD411100658
-1EF8A14F2E4373667B2879ABCB2D13D97A7084B345EDFEBC6B329CFF8F828330
-8DAA4AE60B8B3BBE78C05ACD0DC43A6907EC875605F84716A4E95FB406A4EC1E
-C5DA35309A932CAB84F62A9045A2D391A7728D51B18ACB5CA1FD1AE58976FDA8
-1F8D86E3052DA3A64360E1DF8B9407979E583F2EB2752C8317B255F73A2F87DF
-8BB2B5FE9464B360868C02DC6182C634140D9D51206B57DA40198D911CEF0691
-9EC2165F4BC87618D1177D281B5AD42F39FB0B76F678BAB0A757130078135EAA
-BB8A0260B772B9A748752D281FA0568790E80AFCBB1340C5E6DC160471802D8D
-D754FEE5FBA6532EAF51163DF21702C81E315834EE88F771CC9CF1D33E20F561
-1E3E661D89EC5C535FF486DDD590AD7F072B432EB842C7A6CE4C52C2A5C1B80B
-EBBC113C933400A257B2E16888290B16DC53991FDC668B304842C8600B9313E9
-08D29D7F02375F216DEE47DFD6E1D3C04F2D50977387457AF1A7FEA816D34427
-0278A675204C264FFE5C0EE3A21CD6BE7FB3A025CD33D6FB112BB0D0D20A416B
-EBCF0FCDD560A5E0983019CC7AF66D92B52C881153E8E12AD300571ACB5BAE05
-17C00671628B1E76E899D116B9A140BDD9CBCCDA64600402E6341305E77B1A7F
-418E108F85A4427F425784705844344B6F405352259DC6DE7584C7E0E5E2D22B
-6BA08FDA205B0DB705E8FBC9C917A0CE1C4AE14C17A0E98042CCAD0D2279BC79
-FB504AD1E264015F95B5DECD45332947C70C69FA10CE0B5FE6C933960B4866DA
-43E4B1283ADC307D18ABDFE9A8A2B10E862C5A771B346896C7FACE788569E483
-FE26378F52AF1D05FF2CF8C09119F7250D4EDB175CB7B958A8013CF68483A2FF
-93A39E2D0C51D4DEBC50E275869570686EA784F7F13401D7CD2619FC435F1344
-320D875C32319F796E494F75604B326CBACA2D5E16F37DF3E0BE72A649BA7562
-7EE30478DC8DE07D32A0FF5C7072D0A4C4CF36CD9E3E1DD20BD28B90776865E3
-16334B2A74EBFA0185FA602445ED88AC4FC8ABD184BD0FEB2713A6DEF4CA992C
-FED715F768F9D9842BB6DBF76B201A04D23055193A9C93CCD0717A2045A7E0B9
-0D6466D1B7FCBFDA58AB8F758593FA72A067C5C627C52EF12587397C6D626AE1
-28C12AE56AA1ED22573AC2897FBB7CF56EBD98BFBE369545F66FE6B4350EE538
-A419F9F61A592B7A54179B1CD577380DECBA2465B62EB9662BF2B82EB64279F5
-728D63F13B123102FD0727CCB312918FF43FF5543BDF8A0B01A7881E71F4D05A
-531BE4A89EA6809F2BB681A9DE9F53E37FA6E2E710086DFBD2FB8A7EC5060864
-9DB12C1E043A0C0FDB3EA5EDC78F400753FDA077EAD9EFB407EFF4A4ACDC3BC1
-0A149991A58B908EEB75581D2E2EF47E64EF9145485F652379E9A3C01117EDA2
-281D91D363E8D7588F24794AD2CF2590995A3339C7430364163AEC6E31529CEF
-EDE730EFB5FBC05DFB61BC9BC79367E9FBDCA34A4A537F78AF4F141DF5291A77
-A2225E7B7EA8DE8048F644DBEA4A47DDD8F275A462452E5737F8EFC04EF2D779
-25BD61881D197873B097172331B61256D45FFB8447D6774AB3BD150CEF43E0BD
-043C86D3C7427A3D521D2C484715E4A48693D647DE2D84003B48AED1A96FF440
-4A586D53BA76A434AC33BA6F9C6F4B443135F1F35FB197B0FC92080ACEBB2DAC
-A46B38126DC5B87DB7E1E83C7DE21AE5C7156CA18005ED6AD02B4CDF99E1B21F
-978FAFC5954EEDE6E394FEB95CC559A6DABF05ACDC0796DA6A39DD25A7BC9477
-C4795C728928C1A9EE1672205D07B1EFAA8F4BB2BB413D45738E8D474CDE2299
-552B37BF12EE136DC692F5E742D809DFE6D18BF866909A87A2C62C526BCE085E
-FE8C7ACCAF4A4B9561E3E3BE14A8633B885B86EC57C0D8095751536548C74963
-054189593A7BDE80B28F6642190AA560ED47BFA85FBA91557627D3EE2BA2E851
-DE2E17EFDEC23189CB308311FA623EF6F86EC34E231304DEEDF5E9C6BF964126
-F79D5EBB5F22C70CA5EE66991CB1FAEEF95E7E14BD5D25E2871CBD2163DA990C
-FFDA3D174140C7635710C1B3B927989111A6D37C8749EED67FBDD93D0A45E873
-E7398025B1DE7F4238A118977749B489923B4E6AE60162B6105F5E1FA02ABA5C
-84C1B26EFA27D1A5F58822A1897A374F73EECCE0422CC1D0177505F132DD4C55
-6AC7783729BB7B6A1CD33FC430A264F229D0C5A69DCF9F804FD1F01D575E77E2
-67FC00F6ECF7B3F592A7A49E410E8314BE48BDC95560401700C11A15DFEB6B2C
-189646F7FE7CAA7F938227F0B232BABE8865E8D3B764AFE6EB635ACAC6BA7C40
-CBFD610D215D07209EDB7B60807FD3DEA51E9DB40968DA07248168B6DD4C3003
-F5402EE2695D212B4DC983CC2EF4FC5BD59320EB462C88F2F4B62CEB6E22A726
-09961D7E4F09260BD5711713C32FCE1689E2CC03BB005EBAEA2A942AF20E3635
-D99B2D1C6E349EE350C923EFB6815F8BBA40D947E2619D62053E72601EAB54ED
-5F20652B03C8E7E1D65896252B7D436B77D3692C115D114F5042605050C3E06B
-2637DA6F0CC97AF4D51242D59D335491D67E95B7149C3D323BEAD304478F4196
-7E473D7DD7C9B6E1E8EEDFDA487697286F939A445B5ECE89437FEBD59AF5836A
-0FC41F7AEBCEC8EAC56D827587843055E19629E6BA0644DA586493763589549B
-C39EE3725E9C20692F2023862A3D29C4116F875DCF7D2BB4E79BFD54991A4FD9
-A7E852BBD7CDB42B624C969FA6A7DA55CD2E92AADC4243ADFD124D941152C53F
-E3764D1EAD5A6623D94036E1A88C37791DD21C59727E6ED28FC5F644B6CEE4E4
-9132042DF830F9DE1E6B78EC16EBF7687C4A4D07DF3ED52554F76996D88E40E8
-C30572AD06D64FCD20532C2B6BE71E65136EAAF008638C9EF102EB32243FA5E7
-1DDA1FEBF85FD71337C818C953219F592640A6171229F0D8E1447C4AB0E6622B
-5124945199A32EDB5125FAD3C022FF2D0AE256749223A16829FB4E1A0B60590F
-4268047D9DF9CCC59D3562D5E44E29E0F066F23AEEE045707647A75811D0351D
-AA4CC0841BDB7A63EA0BA675E4CE4CDE08975FA95C99A9CBA60817A52B5E6417
-199173813190A6151058DB86852F2C1BE4DDD1266F911F2882B5376B60C9C38C
-95B39F8511CAEB1E3003C279A4CA1FC38FF69C833DCCB586FDFE22BBB49D263C
-6444EF2C6CB9979D0CF54FC8EB7BB49EB3569DDFCB71D0966D0F0D2CD69698DB
-3862AA0B9B3D90FDE9B4BB39726EC682E8974AF9075539D975CE0CF5803EDD6F
-9F9ED36969486CD805C96E5DAE2D50F1246F36E95A974327579DAA83A63AF308
-7BFCFF42022C2D949B430C14B7536CA6AA82930B14112F87E9854AC8D6185267
-0528A7107D396A034E337A4B73BFCC2F323D5768A1E987A2BF2C8F2306404EB1
-26B3D2070A0CCE97065387D57FD9F733FD66997BE2E407F100E5E4021BAA9410
-E07A7128B51C9D320BA607C06C7F184BC27E0B7002C0B4F19685B4A08E2DF900
-16E82D6CDB0885F9260DFCE170996D78E8869A19125249AF59BF153D71E5F00E
-433DCE51F0D8065D54B605A30D0A6108C34F4EB8E56D33ECB111BD38EC94ABB5
-732AB831EF6CEE8B863D6C7CA4B95C2A154B94A16ED47B4A144153ABCDD8D206
-7CDC3843F264A5B786AE843CE7D83B2DACDD82E09D38FDC0FCC56F0D8B91D8AC
-51CF7E1DF59B11B4C5981C25E3C081E27866A3AD792C58C11C05B9EEC61AA9E5
-BC923F96864DD5A754205EEEDEDA4B63E8DFE69C2478905CE7E277EC00EEE7BB
-C2B1765F00DA731BCEBE209D595FC9E0F89F1AE7260D59375B89F88641E9C697
-E7766ACD81AE325EA386137FA6712FE56A3D4074BEEC88D76076E31C96838A2D
-7C6BF02DCC26F98A18C4206B33ABF6E6CB0D36E21735B89C64964CF4E1B9A8B5
-DDD1097309B975DD6D75824FB2D6C92EA2D010AA792228FC89B079771322BFF3
-E91B92AFAFE64D84CF391236A83524B3D4957B1A2C78ABE1EA4312FC347D1430
-43EEAD380C9ADDF5F459AFCC91682F8318DD22606240DF454E445491F07DA7EF
-58D0C679D9E887ECB473520581DEF2DE4B2A04B5B849BAC43A414E11AA3A5B41
-A7EAA9691400A3E935D922374043C8528394883DE9D7C98F9F7C814CFE8C7A46
-D52353B0AE2461F404503C38D956ED7C9EB65E3A0058F9A26333B034B7C0A97D
-28B8AD14F4DBB4D12122055E08FF3BC08D4709447D1C7A1CDE89AB45435DC837
-ACD2B64D368CB767F9B1D06D720E3271EBC715D0E2711D6C343F09039033A82D
-6716650CFDA57CEFCF25E8B86E243E77B4364B04BCA2D3BFA335C55FBB2ABA8B
-98CC06C87794FC020E7E0041CFAA75A6EEE43F6A5CB49E75EDA9D28AC1310D58
-DB1E938AEC9700C3F5102BAA6434D528C1C388BF13126C9E38173A1593895140
-42B9C08F98BE436EB5AB4B41B5B7422D853F982A5A1993FF9C03CB7A2068FA75
-F8E261E683E6F183EBEEEE8F407BF7024C6C66B0DF0379FD4A636F0EAF3940A5
-F48A71B8DB7473892474063353CEDAE734B034D9F7CC60FF1FF349F9C073B88B
-66E84AFCDE225BF8603C28BC8114DA9E9713C0246B4791AB5E55E0EA415D0163
-CEB21A1007D6F060E4DFB0902980B806E8476149241CF2388A4F3A75DC92CBEC
-303CA5829ED4BDE069F7FD3986D51D8A0BC0C7B6DE0FD5023A0B90075DEBAA48
-F5A62FC091642A061800CEC50FDD9BB3BD9E016391DBE31871B6EF431BC14A0D
-486D3827016B5A68A223117D416E86064A90A4B3B447977C0A681DBD07FCDC53
-90D92DEFF3BBAE3404AF40A5D357AD532BF82A67293799A1223A0D4B21A7C590
-D38CB008D97C51A2F2A64B35658795EF6CD44186263539760637F9C8DC75CC3E
-0F5F14E7B46302816ABAD623C664CE96B237E61EDBFE55DC5D00D858B75C8F25
-D33E2ED4643AE95E2470AE34CDFDA6C2B6D88AB81370F0C6A52E734164FB7611
-54414E4FF7B929DF6C3774EC50D769E41EFA98A21277ACF2C9F23F042F74BDD6
-B83A3156141787EBBAC8443CC276DEC97AFB922E5F4FFB16B79F913B874D29E4
-E88768568C31B1E14F081CDBBCF94D7DC3F16FDCA2918B8D1193BF99D756EFE1
-49BD3C3A0CE71BD20D416E0DCB6F83E8C3B9B4050A25DCF54962BB07865E3F24
-EDD4946718F7210D839E1EF0445D68D10D8926470541CFC9F5A336363BF66E5C
-9AEBCFFFB906E377ABE9025662729660B5AE961DFF59B4B11656295F0487E01D
-0E9DA65A913F371EBEC1D8C89154D739423F6BDCF53437BB665DF3D17BEF6F3F
-59D532D76B53A6240DEE8D68EDF71700AA468CC3E0CDD8DD50C3051608119713
-F4D5E13CA685FD48D03E71726BCB26A4C885B025179C6C7BCBBB669EC6CA544E
-16BE90184A5DF4A9532277C765CB25678D798E3E6BAFCCC1B0B31880526BFFFC
-B707D24FD48BC2DFB593285989EB1135D47FD2E30330943C5424550C4C17934D
-2CC69FB31F81916BCB774D27AE711B0754E25655927429C626799846240E7AE7
-5F662E4851322F94A14A73BB355C6DEEEB0809B730812B0798A4E0CDE08A0594
-1D8C3FC7E055BCC948D74DDD4AFB62533B78BE85310B9BCCF61F1038BFFE4A3E
-7B982D1756B58331F924D67A55F86CDB5BB347DD4EB04271D0FD2D25D3EF6682
-2EEE955197ED008219F386F41539875CD8DD847499F9E56545DE11C43036CD5C
-E5C5262A59EE74E0CD303056D37C61F555DEEFC997CC80B06C47F90A3C46D097
-610A281CF632C8E2F7B0D2F84A434BD575B49A795EA04CA3CA5AA86B299E9F77
-78FC4C37568A66996722B764000A7915EED0B05CEC2942FF564B7C784B2A68A2
-8CAFC810C16DE4691C98A7C99ECBB03BC1A16C7AA61931FEDE0E139AA1E294AF
-9D0A84607DEEEC4DD4C35D5C9798655960A8F335FFF479D061EEC26555110D4C
-5877552A318CACE59A4561BEE79F36E292C427F36EBCAEDCFDE161707FFA98F2
-C87E128FC6998F2241E4A62C4860BBF4C6496DBB4F218D5FC94C2A40523B20A4
-5A5C9FF7E16C377EFDEDD5B018D40AB01F26815275529D1359B60658FA1B7BAB
-FDF854786A00D61E1122C91C3DDFB2D8B66CC9E523CA09404A885256AC627FB4
-E41918676F3E2B7762A1AF4DD985A4E133EED84E239E38BF4A737E2719409464
-6A368163AE86C54CCBFAAE1B512103E458B2ACEB514D0C3227242B0969FD8F29
-9DB6568F5EA741F84395753D67E291D1B08401574E79FB07969ADECF750D3FAD
-C12CAA382468F626D5D541C6A9BE2657A4C2504AFE6672F60DC3B3CF1A7F74BC
-3B0157D9F19709623D01E657890A40C85B10868DAF4BF1D37C8FCD5D7D3E86AA
-02A5FF16B3487240D84AFA03354B666C20D144D59AA23A265DA4E1D0AED3A934
-C64F4C0738F8B1315BE988949C371284E5299E6BE88AF64E94DEE15E43EBDB03
-AD261E1DC736BB5F413437F4CAA0C586AAF9801A041347627DE8DE18927C2CC6
-A47653C740D5EAE722D730E17951E481DB07F3A0DBDFC4E3B7272F9FEF143A65
-B18E766CEF8E256DDC5409DBE5CC46009BEF3195BEF390F8E2AD6D972B62A0E6
-91D73A39FB27D355DC79BD514F9AC5B38FB6196CDA5DEC54E5A044661BD66975
-2777FC133B8AC7A4B56A21F018079320A3F5F5997855117658B1DF49F5D259FC
-80FF80DAAF9723E2A85467CD60861DAA5A8C80CDB1FDAEDEC2C603D44EBE2789
-91800C4D327350CA005467F8E4941F1DD74B61C5BC8885D73FD4C68EF69FAE01
-2C87B96DC09B516B2250C7E6A1F640D61A557F471C7CE4837317F885F94E7DC5
-C561168BB8C390AECB871C6A782B1C82C1AFAB46C339ACF9B4C411C9CE0437EB
-
+2F2CF263C8B27100503264301A710BAFDABE2BC79B07CFA2FF4628FB593B0C62
+24651DBA0CB2302B18664065F9C6D06EDF4CE96CAB664B99C0B710586D3E3D73
+2357B60C1EC5EC0A5FFFAEBD1FDC2E8607886FD2E971CB2BDE3F3831ACA3C77C
+09331BA12ECD9C58934C3C61023C70149AD63B43B158C677FD43830A89DC89D8
+8DBF8D0F98DDA8D06C9D59B5B4255EE05C2FB4C677FAEF12B325F8363F4A9C00
+0FA3A548FF16017CECCD6A1560E11ED9EEFE1BC796D2BD8984FD88F5DD6153BD
+3172D56277366465F8AE0AE10E72F38DB57D30F9DC28A4C2AD1063ED7F4BF8A8
+B4D7732E938AC8487739D26FC08BA2DD3927747652FF43107A1F8EC3F11F8E38
+1D7A79B86C69CC188F2FBD0627C7F4C624121B2C3B0DE133930F9D480BB2F6D8
+254B97BF6159DDBD297E8F0DBEF47689E090BAC0209D53234F3A97DFABADE965
+30DA301AFFFEB9BBF566F732FD3BC741A4FD6C6E923C0279DDE108FAB57DFB2E
+ACE75598F49515F54CD038003920FFC3F00ADB18020C7E2E008598623A8A11B8
+8CA1EFE31D894F2B86179C7041C0BE2DC7029117D29FF00F8EBF7CADD2246280
+2CEC39A29D82D70413FB6CEFD9B5999414655E1E6FAA31488C3ED458E880A344
+5D6119FD88B3AE9AA81DA4E675F78B570679A50EE64EFF2809E2BA0185EE5B94
+FF3A70DE7E0462E09651C2F4F216479C29D8B753F0936AEAD3EFCC0BA64A72F0
+58770CC3DADFE22FED4BDAF76B9F6D6008A85415D01479746BD03DE32A7D488D
+9B1C8F8B6F10A5A8419B8DE651B2B9CF6ACF892BFFDEEB08B780AEB0818539C3
+7DAA805D8F621BD6B3B75123DE511D88604C5EF071514E58962BDDCA03BE02F4
+48A689D7E434347E81077F835F9801B1262494A8A831D803AD6323DD703ED2E5
+A92BDE25BAA62E955AC85FFA599F38A94A4558F83CB6D601D3DFD0EF37610A34
+F3B68AB6ED3BC07AE74331556F2ADECCCBDE091A2571B5AC458415284E0CAC03
+7733EEA500102E39526E921714290B6EF33987E8FDC5D5E2E6304405B32E6F19
+0D34C9995F41248D56A698B7EEB6CF86722751A0D680389F4F7F0D7B0FA89BAC
+645836C890A9F3EFCE85CC21699950A00DAC35DE915E2AB54D09ABDF4E9A0A44
+75BC29128EA22CD98ADBB8A5011C734367095FE0B43E205E1E579438ED3CC098
+668D1D533E0686E9F6527AB4EDDDE7BD654793F67BC090DA7083619328B2F6A0
+76F82D5AF56DBD8A80F757748FF98C2A6D5BECFC35464BC557123FFCC5D1447F
+D0E47454CBF0564E3449DBD404831D268447DB88DDA42F1239E291FA5B0C2A7F
+0D1BC8606E79E388ABC7F2C4E2F9A37BF075D69C59592D2E4B1749969E4BC3F6
+8DB0A31ED1BB0EAF337DE171630F93F08FBA4BD889DDC7069F06711E40565ABA
+80EFEA764D8D52A10182F141110ACD55089ED2A1686B0A2966929A690BEB4E1E
+F896346DB64B1BD93D2ABA1271303C2051D2065E818FC6F7076D8FFD473FFF7D
+5972990679D3A477AEE532EEA8B4ED029FC6CF5E049FDA19BA86B756A8575E2A
+1A403D14F491FA424733646614F62E16410A30AEDB48F88182CF81F775869F02
+0F8D8B4130CF6A8C4379475C0E5FE333956A7BEB826146670329ED1E267A1418
+AD742E72E26FF3F53DF9BD0973EC25108298BEC5BC4C8A334AB9E9F179494BC8
+BEF0E05DCF987436DB4417EB49CA8BE14460325ACA66945084953FFAEF84F37E
+9881EA4C778636D2EE3E512CE45A4CC31EB52E7BDE60C68F21E90946632A91BA
+402C1F82A5E4E7FC60825785331A9DAC906C9574777749A34326B25259E0F31C
+EA7C970E5344483055900BD864A29F58085BEB1CB67AFFFBAD6294B69F9F8F2A
+36A4B5FC710642A3443674A4D13A89EE56224DB9E402B17A645466E74A293FD9
+A6083DE85E837D034B347A86E6277E4B4DAA3B7D8C15A9BFBC19CB1D0F13595E
+D330FC272F0F4E944FD5C61F26C8734051853FBF27BA228AA98352C4127BDEBC
+A6DC86850E0F1760472C7E182EC921E446583EE115E544E71D326B3A483AA55F
+2624FC99D29A19C03D3420D4B845DA59FAA739F206881580FD36F16514BC3C5A
+66C8B6CCC715035C4A355221321D53D0A05A8FF9E4E7E2DE61126AEEC58965BC
+464448D3A3DB5CF9CE341520B2D8360AC6D0CD8086E53D5FE0A4E9BC992F1DF9
+7056113D28F191921A49F34271FE816F6A4A3016252279DE9A17A3153617F0DB
+B4F5D360243C157FA120CC89F7FE8C2BED8248D1587D2D4DC4F5C90D7D6AC2A1
+329C5536E85BB5ACD3DF5520C4F620782D52F896186453F3206D740B57AB0451
+EE735047AAB4AEF258FB1DD705DAD49F695D5FFE98CC9F73AA59B034D7A6689E
+AC3FC0144A791FB04DD0C2718B676B0405BA04CAF72C57DF2EAB282CB9A81A47
+FFA4890EA672F3DC041210C9F9C86F238FED85DA9710C7C6C0364552CAEF927C
+D52D5A603D205C1494E39F6A66BD012080A4BD18DEBD96DDCF50CA118A569035
+040AD7B9E925F33391D130C3F274077C475BCAE215C7F3C457AB339647191729
+05F89D2FE3FBDB1DDD7606214B50C3860625F0E34FBB3037668338D70032FD4A
+F7602CEF0B62E0D06B5E27F3106894CDC7B249734195A62A5C1BA0CC8F03E3B3
+EFBA46FA153FD44EB55ADE26D38C5B5C1D8C19623208987839093126ED883168
+D4A1D9A5F9C94C71E16FB6BB3504D9E772140F505438A00EAAE79D05C5722442
+EF1244BE875098251BFD488A2E84C2D3F8F70EA07C9805AD823980561A074FAC
+523D3143EF274AC1F1872D8C1272495F07DF9B062ECAB0530DF8FA962D33C377
+2449FEC027B79CFC109821620FF67F02AF25F265E9D241F761B1C21DE9AE21BD
+A0A7BE667E34578A62259E35CD3503A49015D169BA5131BD1230CC16DDDC9BDA
+81FBD19765355B5501FFFCD65438449C36F66ABFA4C6DC52D44706C6E95FA7C5
+E5D69839225C8141E81F67339D6A3F510F1A87980A7FA2CFCF919F83D2758981
+885EF470DC2ECA30F843CC677A3E6083A9639E040DA5FE2AB4173581DA251557
+B631AB6ABB4746A81929310854DC087427DCAA78BE0A14D52CAD85EC12CB5D81
+21F8F7D8ED34E2EF764391DEEA35D03B34F5EEE7E0845939B73683C9A726D269
+6EF42C322E69844F503AB771E7BC722DE5D39ABC79723BA77B0ADA9A27C7E6FD
+8F0523F450EE4FF8D985E36CAEBDF1DD6707B61478675CE0ADAD4E67FF4D34A8
+597F98978F414323791B64E84FBBE9D67764C113C6822C20C57BA3425C1B7645
+9AECC2E00CBB6C8CA670A2A5A7AAD80A1E737E77CFF242BE49B872FFB60FB3A7
+FDAB635914C9947859FB5EA665F7432BF5E507C5C95B5BCC14A841A2BBBAB185
+D1576730BDEFA8A5897E476D51EB1BAEAFF9FB6C457E0B7C9CCAA1684DE2C1AC
+5E893046D4E6D704528669F08063EF86F99D8ACBFA5027686834E8461792E35A
+0CE30ABC123D8C3E22873D65364CE0E5FF75B89D80D6BBF420E5FC5E31CE10EC
+073C4064C47A38800034AB2BCE4966C18B1187E5CB1870B30FFFF6B967A54E38
+2A38EE09854E20AFB47C7E2ABB35DA449FDE353FA5A6FE4D7B550018230154EE
+E635670AA0FBC05DB432E65F3457ABBAF7FD175D5AB5B386E0CED8D7193BD547
+86ED900579DDCACD269C1F4994F845804AEB40D68457BC8DF062A7F3953A2F07
+E3A24311F563B23859C69C790D218B0AE1B4A3945F46A5FD63BE4029957390B5
+54EA289752B826B24BDB883EDDF6659F26212AFC7CC8ECDFF1E7123A911B0F98
+FD9533D672C0A00C73E0F01719100918F605CFE56D0DAA18F421320FC18B3FBC
+78AF72B4093E2D305FB3D8EBE1EA2207D05F5A121BEF677F3DE94ED9F0A7672C
+11ADB780122787F68CFC8F59D4F4DDC33E13A13CBE7B3C5D8782F8C9162190C9
+0F49DB134292B4B488315B11A4C3250977E43F0FCC585709C47B96A2FC381035
+61674AC6B51052D77130C37A49CE264C0973D3D75B1AE625A66B56AD41EC0931
+C9765F8DFA5D1587D06A28DA530498CC3BF68C0B0F24F80BE5C1E76F528A1887
+E8A415FEA0519FF3261FD62F2D1E009F97455D5FD3C75B7775FB5104DB7A20B6
+CCC697D5A821F89F69ACF1017C5462D5B828907191B41C0918A8FF44547B7CEB
+0F49B625F790A2147B94EAE381164BBE644A3E70DAE8E1F6C97A75E8425CF6AB
+6C8073D8E3116D9B5D06C1992CE93024618A5105E7AF32C6BF525C7B5D4AB280
+5D4103479D66C948EC9D153B2737FFD64F95D300B0CB491D97AEE905F3C62E3D
+439936E4C70508DEF021EB918AFBCB4A56E8758E13C9490D86A5B732CCD77373
+4EFF0B8CE6819A7AA5BCC01CA85CFC95719A03098F9CA7AAC88DE8B0C09F015C
+46901E5D0A49613F544290560871A1D4FE48D7F6214F5AE1362E5D1EA1508FD0
+E57DD35C0993EC0CC5E7BE4CB79256FFA4B5687CDD69750377E48CD6DC808922
+BC1BC7F14A5C664B36259FF9161669AAF0525FC70C6F856CC22A7A938BCBC318
+D01E132682BCA208FE3B0989D714E5BC01BEA2E3E1AD01FB56F4477172766938
+7023741747CA79AEE51D233B0C82103426121821648D4F96C22F040F40A068C6
+DD24A417D17F46999C9BC648C5AFEDBE3C4157E2EAC85D9997DF585D8F686C2B
+3365696E492DB619498ED80DBD495BF52AACA15AFA2C7AF60B5697E3E471B80C
+D313AFB321295FC989E819E1970F383C94511737E60C92B92D1720A7AAC6F774
+14C51AA35192A28DD4B2D46736A65DC54B2B25B0996CD01D7B388311B37E6318
+C29731128DF495967AD5E6EB6F1D469B5541A41D4280AE5DA85FF96EB4AF1789
+D7C1DC31D52C087DCE9405062806A0B4E68A075CA2C6CFF60F8720E77AB94BB1
+CF15D4AB943E7150B286C5CF6966B1C3C304F96864958030A625C742158EE151
+49451D17894D4390AFBBB830C7739D4DCDDCEF731712034ED0CAE738647D49C4
+D73584E907CBB7D64E5CCE1A42267689F160E43D8771535D9BDA7702D1981687
+107C015208124B4D759DD00397A0B54C83878FEF897F3BEF278BEEA272CF0C82
+88F57EC3DF160D26746D785AD19F9FF3CAA86BE390898C6B797B3ADF01B0989A
+95B0FC905F034C14C5F32AA0C97B7120601C7440EB99D5855A61A7039320DCB3
+CA9E49E5FAE282460118757D841DAD5CF14D34E5D108524170B6C8F2F209C4EF
+071D1C930A071D0AFEECA65EAD8826E0E54A349F60B54265C62CC70EAD8AE3DB
+B113BE98479072046FFE73BACE222033E2C47C7C749D97E7BC932EF60FAE13D4
+0A208321C365A5104F6638D21176ADB80A3B415C20757104D051D967471F687D
+E3E7E344F9CCA96E6C235B52138879D72D33CE3EF4183ADC3173AFF0AFF779C7
+78190DD5AEEBEF54DB6F50226B652A496F6899978747E151E6347834F8177F18
+0F14381A7BDF9FF785DBF90498806CF5350C82B89E4BBBD5A4F3B050E10E121C
+E71FC9FC055831EEAB6DDEC8F26D102A9250064EDCAE106D53245BF15EBFF4BF
+EBD2DA1099A1F0A1F4B6941DACE2BBBF2A38F6D25C1565B6C95CC94DE6C17E2E
+AA539FC845F16712A2CDFD39854C63F6B7E7A89F335CA2DC57ED30B92A0E0A34
+A15B59674766AC84417A9042E9C388A906FEEDD189714A087ECADAA080DD178A
+70C9D8A1C1B0C9884D02B692483730FD313C4E64190E6684DA24324CF88A8C16
+C04E949E9ACA502B5D5ABA91803992091869C0697422CDB5203057BD85471518
+B86DEE52FAFEA174D86E3DBA6EF3440E3DA943480C88F0886412F4411D0FE7CD
+C2794552597E9CD1107AC4AD756C4CC1BAB6EAD6D38559A233852C3C6735A7F5
+EC6D6D99FD510AA4428918E0AED80E0DAD0BE22EE3EA20A309BC7267899D1396
+79458C5DF3CD1C0848B555D2AA48DDDAABB87EFC2B584C48CA8BC0A91867D9BB
+25994B16DD7512B4836A691B03BF5767EA105D68B62D3D81F2440EE269750E58
+8091F08CEE3C62D4131C18D575147A112AE01C93773124DA4E2B74D4EEAEB1F2
+C8B0D863EE815D994070ED9DCBEBBB673B2182F190608AE7D97C309028E7C992
+B14BEE67E749D1A875E79934D23E4BD9A3768497518620388D55C076EC42F6A6
+2EA61F2DDAEAD939E921AAAE37D58CE72AFE3B74A8A02F4A1804551117D2922B
+80A2750F0A3D9375361BC7AD2E302267A15C675DC20FD858DE9793A080624F29
+8D9106D26F7F5747FB7944BCFEADEEA4C7605DD473432B4EA58ACD471AE3A4E1
+64E4E35DB9D97E2A374DE22A6A9F8B6D7E2D32A0C603BE0A044283621B3D1F0F
+1154CA2149ED42E08F08FD85D2CA5DD02DF68E535A25487BDD98964A6C2064B7
+A057D4186F0169777C3BCBB4E397C22F4196E3F5025EF5D59501FEBAC3C44768
+6DBDF3342857931DDC23BA77C22A318CB13C653086032E880E191BDCAA77124D
+7238361A68F663A638D0722BB7DC3A37226FE9C5B1C15E0A32B900A335F93AD0
+98D0F22C9092134E37B336750C48B5C30AC8BE183A154ABE2F304915F8FE256B
+0221EB3064620A3F87AECF76FA16A7A1BFC67EFB0D27910977DF3C8B1B93F7EC
+5C47C8648197E784C084F332FB505DB3A3FBFE6367534AC18D37CFC9D96814B5
+0B568AA24B823D93D58C38FEC655183AAC309FD07CE32353820B5471E345FC29
+51FA9581A7CFEE964B4219E3837A158FD43C9FA8502A566E64DDCAC0ECA874FA
+CFC71A0D442E128423D92340E53A76C9CFB6882BCF76A2AC1EB66DF300F6AEB8
+C9A2A9808EA83ACD248A68DB3F78D6CDD9A507785799714214DA4B60EC547FA8
+2967939DBF9A29B73D319810FADF8C44792E1667596261B6E52339736E7F857D
+EFC6C4997298BC8ECA834F8BFA5E3786AE80790C50FB1669230ED454DC81CCA7
+7DF4E5AFC2071127D70476AE9B225166EE9C65842EA63B4B309A907A275000E5
+94E0994A08FC58EF0138B557AE8D96842EB50AEAD3F1FF98F454E011CBF4C2E4
+DD531883C44989669A50AD00BAF10A062BEB4B6DC3F790CAAAD0E68686FF3A50
+1009236F70FC80905D8EA2BDA8D2442A006E2B77D9C40A01A106D8BAFE585D2E
+CE2FD94F9A628634CD1F829657939751174E8F43F318C47CB894EADAE6C8ACB7
+2AD554E3085ADB6F3443489F3BD33A56CB4AC8CE9E11FA0C83DE9E133C97F69F
+4812256B60954CFFCF3E7F439D126F7DACEF1626D83608DB70079F0B2BFA5DB4
+9E2EABE7D23BBA421A88374E77DC5B6E2648AC9B7B1C3569C826A33AA21F71BF
+8A5B0B825DB9E00CFEF59403990D57BE4C48953786B76D55D8B665A15AD69709
+A360AA9D8BFCA8E00DBF9AE1D0A40F0B02A652B2B330C689E61C3C5A7EE81172
+E847414CD43E2277F37BDC832104B29C998785022A693389A9FE86EAEC5CCC4D
+09A7B9348C80AD3BDE70E7752E44D30113EFA182DD5E47CB21EEA64D9101C657
+2106899AF37365A796ED255FA7F4EE501D8681FE11F92E64149EF8CE9D23F334
+6E2B1E1A67CE7CFDC535319EB61E5089201708A0F4F449F89534FC7BC340948C
+6788F3115AE6B80CB6C1956474D2D292B830DC9F8F67E1FF381CD81D788AE222
+1AF6B548B5C7C496BA711F1F8AC21947D2604ACDAAF0C5A68E587FA2109B11BF
+24807B7DB0EE845C13E8F693DF8A4969715443E1FA0090C4BF359F4827067C0C
+823676958AF915D6D75C767F01C7ACBF06CDF9E9A27B57FD5C2F133DDB091CAC
+2B31E9DB522783B69951F2965AFEFE6F454E9A859664A65AF8D087B203924BCF
+E4C45AC959352FFFECE860648C6200DF02D650237BDE22AB1ED127EC09B4F3D1
+234BB3F32ED111B8BD481729F4293135EB333723B7990F8B70A211A3ADD67AB2
+8B5A7D6AA9E9B0EBA08F9F2959D13611FB8F29B749686739380BB59E0A93E99A
+0B97B297ED8362D421F3AA230DBAC86D200DB0AD6D5F320D1B23F0A570357646
+94DC98B2973F2EADFC8D2AB5DF1038740AA520B7AF4AFB812575C18EBAAB76B6
+EBDF757E1B8264C87A7180C627070C3B95EA0FA431E8360F0DA8A722F0861C9C
+BB7DABF781FCDEC603326ADFD0FA3F788A7C695E50F23848CF85CE410DADD5F1
+D7CEDBB484D009FA9BC4E06108CB63056129815A616BBE98C38E6DA6E587C23E
+D0F6496CF0FE5F51ECE5FB21779A44163115D2F05541531EEB124695FC34E359
+8E0BE91219FCDDA56C4FE3BCBF6E8F45505ACF974C6F9EF55DDB391BF5606A61
+725BC73D5FAF324A7DFCFAC9C9C2728CD4370A9CC71F645316ECCD8AAD062EBE
+9F0763A7F77ACEC296597E0374545BBFBC538525889D39E9153D8FA7C5945F8B
+955BC41CF03F7400E4AE3359818A4C1FA2AE66AF9B77F6AEE16FAF82A469F6B7
+46E679B38AC3897D1AF3CB2E0289802E8B449A1FBB084EC5938185AB229211F3
+6D8A9C36134ADAA0498417E2FACE92E753325E0B23BC6330DF323C6DC3C4C41F
+25B077754E4724164566626638525F6F49BBDDBB3E8EAEA9ED1C3AB5F8DE8BEB
+9432578C9E334AFB9B3B05E4E11D0C17C4A084BC7903ACB1FCB213622CA5A95B
+D6EED267C225E42D372F5AB6D45B23DA02D5141E310A4AF395531CF047673DD5
+69FC7C683F52CDFD0BD9598587E1D66BDEAAA467C512AE2BF24ED472527661E2
+CFE5723B43C46C210CF6E76D0A4FD426258688C5A797F1F6ADCBF6174A61C332
+2009A4AC1E90E598359039CD693DBE122E18F574B96FC97BBBCF0C7020EC446E
+FA902325670BD42463490952BC7CAFBEF1074FC1A36271F6C6E29DA363A6335F
+6223F16AF2A3ED714A8BAA0EC08998F41BC8DFDC7B0007F04642CC489BEB0139
+0A78094BA9D580810CAC4D4FEACE3B67D1F957B180A481BC62BD7836A708A336
+CCCC06B85F07F7CD13104E30FB110F749A966554CF8E507D10572B4BFC0E24AB
+AD69A17D1468C4F4EA8E96ACF86192EF402E4F59EF145E0C8B187709E9C64EA9
+C52F7CF2E7CD9F43170430CF6A76CD422648542920F90917C1698803282D5AB5
+5C39F06597D76D52CEB7AFEDBE9C91C90274EE106BC54DEFF89B7E870ABF946B
+0C87A133D0CEE117C00ACD3BBD72474D14F14D2A6AAC857254CB409EACDEB6D0
+F22AF9B820FCE6A5DE6DE866CE8BFCB17C1E3C452CA7912BF25D07020E447AE8
+9565BADB3EB531A704AECE4A80024BEC8920543773349987E9F6240514EED4B4
+8D78A234318102A2AF9D6C45D9BFB27AAE43D5ED91483CD1284A6712DF124855
+B64C5E3FF7DDB5DA6735A0C765AE823BA1F14749B6022624EC3170435DD20CBC
+018936484A3F93D5BF136281E07A5352F9F1D5772DB0DCEFB57EDFF0DFF1A92E
+22D3B7C7DF81B7F9BD970CAEAFE9C01771C4E2DCFF8B97FBF80788DE47C77707
+5F2D211034B5150F0343DD875E6ABAAB8E68999B59738A3999C440EFB67BD76D
+90085D1D4254E63EF500D66E4177A18EB2C74B1BC53EBAA89892F680F33F3EC1
+AF438446E2E38CC40F3BD253BE7E37F00F4F6132A5AD13F09A9A19C801694078
+0189410E617ED04990AC4B4AB626BD9A10599193E3B7C7A3BE9AB3DA5F9466A4
+1BC68B6DC033EA0123D1D1DBDD8CD5C86B4C0539E1D79DCF67653DC84C3A8C89
+D250A78AAE935811AFE6F3FBE2E5E452E430E16A20DC563CA577C898E68F2A84
+ABF46FDDA19186DD43A1DFA24C92FC62ABEA7CD85BD68D64CFD1A0C29DBF88B4
+D25D8C0F2A6FBC7A33C4DBFD91D97918748A9E41637820C7CB4FD427825B7FB3
+44DC759B24D98AD1565AC930B89E81D23128723BAB5BE792A6C9112787225241
+575015D00D0691CFC7E29EF61F931599B88E165E8EE75DBEFF5B1A8D4740496E
+9F85ED6820722C274DA65F73AED95051BD9FE38AFDE4FBF425FEB6ED07C8A976
+F32A9BC9850E0C7069AF74BFBD5A78765AAB81037075B4CC6F09A95013F4B75E
+A86D41C755425B4B00776EAD7F5872622D8BA5F5A2C5187DC8F36F03DF03B168
+6AA1AEBEA0702437D8E546888A00D42EC5D6085945E31BB14AD594BD9BCF97D0
+4B99A50C128B77C75D87CE0BE0C73FF37F2DAD7A5B5A361697627255E6E5797C
+FE1E38C38E4359B97D594EBC15E0E10F17F20156E7DC9E33DD8BF8EB016CC9D5
+F496FBDE6E16F0FC9E5EDCF67A39EEF57345C3E6A4E04DFB7EE6AE6E54EBFCEB
+1C53ACE652AAFE3425ECBB3E42EBBD51097E06D1C2ACAF97ABF4D875865429B2
+2D9A1E61267AF7E31018C46EAD1839A45032BD9746DA458A2893613BC41D0BEF
+F6338BEF85A69A8683E5B3C3D83DC5F651011934745C042E3DDA4DFB7B393C4B
+9002B5721DFED701278E9CDEEC9F7B4EF1D326CCEC149E68FEA5D7468F7A091C
+00A3FF3AD5446B14FB635771A5138FF8C2B02FE98180C19595BFEFD29B8F1A0E
+51CB37E46E06413ACA5D70EA7F4F0039A0F9A4A20BCBE335C82317F6B1CE4E8C
+7B06513CBA59EC62CB7563CB4B29ED6BC20BEC14F6D4C192E0261C8A2CFD0968
+BCC64408B19F39F69CBAD5D6E117BFD8470DE959BAA369613057DB1BA3441E27
+EEC436544FCD8B6C50D24548886892C86EA61CD573FCA53F0CFA97D799C25418
+3EBC2302D0B43DC80E08F68C01934958A810C76DB2E23B13FC0BC6CBE37AE842
+8F2452EFE0AD6E97620A070BD93CB99F13E8EA78DA56728314E62FEDABC6A6EA
+491EC96A8256AF6C7E8FFA6A04DD6CAF1DB9A45AEF196342D690863F54B3196A
+11CB3BD65F022BBB8DD1356F768AD0FBEB817DBA77D2BA4FADD43C8C7682DAFD
+EB331954CA9668AACCAAB539AF7BB1F94B6C9C430021D1DF43432F03DAC805B5
+EDD2279D4BB979130BB5B44FC22191C59A849D0DFBA2847D76DEA80E88AC203E
+84A8657C760AFCE2E070E16E3AC53B9D2F0AE040AAF7435051B0B36795BA0ABD
+AC192D83908FFB421CB493A64F1C3FE99DB9F0B41B5AADAC1D6E0482D6579670
+F5154DCFA00E4E45991B6CB9FBCE7F6A470807193224CE848C379F508C5BF898
+4CA713E40BF4EF1D3EBDE3D1118D838516CC5FA9B3BB84D22408404692E04873
+C7482267713954828DE7C91EA03BACDBD2E53780E260601FD03CB08201C62BBB
+B95B268EE00F702907B2F210776046900F80857CF5AB73029584954452E1CFD8
+6AA384D3238AF280DBCC617B8144DE8DF0DB36C18C54CDFB81800ED65DD9EC4B
+4ABF20562FE068BEAC88A21059084A3189328AD5CF5AC9015555C896D0D2D096
+B734CE37CAF2ABFCA0504F24869D0004F6976C73D8369DADF0077457A374E601
+7D8120F6918B57F5A3ED0E142835A8FC95CE31A30073D5AF29AECD010D2C80BD
+737FFEA417B9CA710CC39B759BFC9129B11544D222C31B165027AA9A981944D8
+E429D11D540538AD0E26B7D6D714A770F8FBB42B969BA55953DE4DC7393051CB
+17F74547E2599B43AB9CC178BF0560BD5EF585A67342146D32FBA4B477B6F403
+C97C8CC1DC04B16A21E0CCFEAD2845E4A7943C34378B80201C6033CC8CCFEAF1
+8026EB0AA7F77FC2165E6A2F99BCC0D7D65C4566BFC56B9A1D35B964D6DFCB6F
+A2E9FE35915C8AD53861F593589ACB337CAD96DAB5A00F0BF52B7940FCDD915D
+03A57E81EAA243C525F5A99B2C9325A65B63937ACE78801D22979306C3927400
+30B3682657443F972DAE9702D1D1709B71622ABEEDEC3EFF4FC3A82B9EC94C5E
+6FCD4086A02F8B4A58E00B4B28F054E203734082BD4A7E039CF0403836E439AE
+652962FF9907AFBA6C7AC441CD769AC304E243AEE7DBC219C5406320F6D20E6B
+B1FFAC7CA30E77A419AD834DDB087C33422C2B1E689794D09CE6FC29204A14F4
+6047A79CBFC04AFD3D68F96C0B8C3A202A304D697FE178F0EDCB34F9B0FE3BB9
+61C2B07A7EE35E8F18071D61F6A98BE7CC573D0135FF9A53560159BBE16F26EB
+B171D725905D4A0671FB8BEEBA009B47CA9633362FC0C4553509AAAB43F137C5
+852DCEB47074F71DD6345634065E358CE4EBE88111970F1190CE776EE7709729
+548AF51C38735F6F63BB83E9D91D5A5D2E1F89C7BC8785711452AAC43E77498F
+A74D91A1EAA3F29114E49EEABB681B56C5456541F4342D607C477983380FE29B
+9A08A61D371950992F17F20D40F8169E3CFB99AE231C40EA020C6C253FAC30C2
+04AAAF5D992E9458877380510AFB91851B289DC03AFA363EC338E21ED01D2186
+C706EAD057ACB2D47CDA1FBDEF9AAF93841C5BAD0668C10541D7B41EB3CB214F
+4F214D7ECDD4606A4035795AE25C58C9692845F535762AC3403E2A0CDFE79D27
+B58887D2688C7694D4D271EBE925801E7C1B27C18C8E0BBA3E6F999484033991
+B0F021F1A60419F06CA0758F7C3321D20754888062DB453FC09F3033DAC6BF0D
+341BA60AF9A8608E7BDA2DEAE73F83A5DD9FC35BADBEBC2E0C6AB18CBB05FC06
+7B967D6263051E960498B63BEA972BDEEB89650EFA809C88644E8E00ED119DAC
+5AD530C519658A82AE9E17EEDE4B91FA83AA1A925F6C7E65119F8A397F11F50B
+681E3A69AF664B9B6076E4A9033C3F391BC110289DB31DF9F326826F480B9F4A
+D0147924421F1B5528F463E5D97FD84B06C9CC9A35EC2DAFEB9FE70C86C9B843
+6C60F79CA7F7A61B2E58B7C15752AFA82BF0F19F4EB7276D17109D975206FAD3
+A02CB0FE17FAB4AA9F8A649C84F1EE19E2F5026D2CB3847533D7ACA488D5A531
+3C95BC346E9C249E34A4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -3412,6 +3417,7 @@ dup 35 /numbersign put
dup 36 /dollar put
dup 37 /percent put
dup 38 /ampersand put
+dup 39 /quoteright put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asterisk put
@@ -3669,377 +3675,381 @@ E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE
7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6
46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C
E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33
-DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A594210F
-B5200157C0F02340FDD61392BE9B0D9C46C1A0C4A3AB05918672D6D6020D3A88
-8C18A08AFA6BBD8A513A3C06A29A0FE923ADB6F9996F3516967E5066FAEDE5F2
-8317ADC676E012A737EFA5B743C0FEDB224E360B05D089459F860F97BA62BABC
-E86CF3127088FE3ADCC29BBCC991BF7A13A3A5BE34409C002DCF2B05C095A01A
-12BBB5C8F3CE43DCDA76D261E3F7734DE2DB7D9A323CD68D78DB2A5DFBF469C3
-D02FFFD3B21DFE7CBA8B9C7F438CDF8944DD5A06583A75079194054F8C06AA13
-1698FDF6B55E5B1B11C5AE8BD7FBDB7BA6E90FDCD1802F2EC862FB85A143D7B2
-99223ED8525202C26A53ECB0894A7A3A64569699C1C085B3CF6D6F6130C45C7F
-D74B5E4EF480988AA30EAC8CD07D10E5195B7199058C8B8EFBA9F66BBECEA137
-33037B3072C48E8295A2185EB3B83956FB26033581A702C8A2C65FEE3EC92CBE
-4FAB38A2F5BCDA2F6F6698E3A87BB14E848E1A67E3FF1DCC92B85461BF16C111
-6D3A59FCCE098512A2B17ACB186BBCB369B984A363525211D9B83BA91C2B1EA4
-3133C3CB489173988833DF780EBFFB461090B51E5C6454E4ACEFD98F22E80F8A
-23ECAE2A7803B9200043E29AE21F7EDB5D73EC2BC7EFEC3468C239A1E1C5A2F3
-B6A3D13C41A83DECA870ADAA461BAE73B44B9CBD7D9FC1D8BA7F096402CED6D3
-0C0D5640646143431C318824FC397E06BA888D966E976366613AE3075D3ADF08
-7E1730EFF0C108B268253AD90C929A8F9CE53FA3344692B4F2C8EE88C508D30C
-7D3713DFBF78CB79AD34CFA007500B8D1EFB46C3902B183CE019A4656F585B91
-337C8FB23A923689F96FA3FA862ACDB4DFCC63C202DEE6D52253A210F7FE163E
-BF0466BFC1104F859AC97006C5DAC76B68FBBBA1E86D352FF8299D5D94B6111C
-4E4961C13C1980ED85E5BABDBC25E26BD2611CF9644C28F3F783C91FB71E6511
-3305932CDB949C97E3C994AA9DE2E3069DB02FC5D1A7B552291D4FC01BD06992
-7BB266B91E315382D3FBEE6578EF6BC38C8AC5D27C8075C3C6C90E1133DEABA2
-600409713AABEDFB90A7D59DE9B1C55D5BF69E81500342759F8EAB102276AE4C
-62226488BE3548335C8B5DF636318A758825ED631CC7897D81D8DB5E1BDC5FA5
-472B07CAF20A93B34EE07C1F1B35CCE504BD00584F0AC929F8D276FBE1A906DA
-76508D83491CE04DFA2D053CC70BD6F6D4F4FC37AE9574F0427F56D04FB60C65
-40CD0C4F9D4B202B68C573C3883AF97D3679B67A9750ED2F7FA8C39E69967DA9
-2D0BCBB592BB6DA1C14CFE5AE55BD8E1EF4D4D5CAD9543A3ADB8346D4F0372E7
-7BAFCFBDBD48211C061927D955929DF620C0B3F9C5C62E8C2EBCB8C31065CC45
-36857F4A093AE79BEBA97AE481ADCA3F806C26D1C407AC716C6CD1680E4FB711
-EB5837E62986F81259FDD4BB7EF510B5A8068E167B6E9F79A85EAE7933D0593F
-E2E47F110DA4F91FE1D1C9EBAEA7AC1EE47C32B850413D2F151439B2CE1CADB4
-7D369343F4FE7A23FE7225240EE5BB2EAD003B791E184C05E16E5B1237336108
-42E036A6736612F2D560738B460C36B7D6BC9ACC66DDC5835744F58900D88F88
-32F5A49330101FE11A2DCC0E1BE4BB40B798C0B17F06E93373736FF86328A280
-439E9293434FEDB5174FB34CABE580EE7389CAF1DABBA6A053D514BE0C3F9CF0
-F3B9E5D971C3E42711FE1426DD84C2A1462CE67A7E9CDA86B3581FE979B06C4B
-E02A9FC63EB240C890DDA668C586795961871B93E01E80D140B1D3E84DC0A522
-86CE9CF8612A35940CF0DC3BFACCDAC376BDBB3A4B063E64C59C61CEDB570B32
-315481B2D8127B9B6462C898A7FA5037DA8D88EFBCBE60B4A803C0E5D4722760
-2FEDD14E231C6377F18BAC84FC907E25108902B9353CA450AFA7A2B028395D93
-C547ACC959FC5F66D49CAFBF6090C67CA7CE8267C80C7AC2BD031CEA01EDE032
-D124162800A144E00AF57B0F7683630F58A223111D278B122D39F1040A35A543
-E850DA1DC3B6C24B1D0FDFD347427E1E0C089F7AF6F499B6DDC5D184EF6C3C22
-2E4BC5A1E7741BD398A43D47BC25601671460EC39CEE52C9A63F03E014100CA3
-9107C794F2A7EB2B5F75EBB0D1ADDBADBE84A42B32247BB1F48A1EA537D9B93A
-9BE5CAEC478D7AAB59D92F1F96A76025C2EBBAB8480A7E7D1DA3C64540ACF041
-1FF7A968795CD24C3B6302C9B95EE6AF47BF5B6F6AD4103A229AECD3B8D6F6F5
-08EC913E120825E699EE78D8CD1202D2F57E2F7FF64AA7BC0B3A947FB07A149E
-59A402E894363FE848DF9B84029A1CB228B5DCD030B86DAF7D7032AA640FA603
-E7B28A4703D4D84D1B7BC417562B51DDEFAD015AF7A25409DF2DA380590D680C
-5E9EC71AC9372D3EFDA6667CFD495C86E4233A490B9C4C72666174B0D320AFCA
-66543CFB72EC10CE2E1E7625D2616C2571B6B2E33430E28BCED3FF154726E618
-14F68511ECD14AC32539B0BEE272A1FD7BDD577A27C6D3BAE6AE3A25A924B50F
-95A815EBAD7947FCB8C58C70A83181B8AA858A70D10F396AE89524407EB2ED07
-68EA77EE29E32F040655EEC1FE51069E22329FCA0F3FD24DD2431A46634AD6D5
-F242F5ED8508E7E1F2E6F8261558B2DB9CC40ABA2FA86E8C9F6D1112AA3EF18D
-0D5BFB642F77D4DD7FC8D3CD74C6434DD634FCA744B58D80D76D446922068DD2
-EB47C42C2EE8C96CC501699E50BB54274133348ECE59A563B4BE5B7CE1DED13F
-0047C7A6B6CB384C8444936BD165B9C6A43EC34FB1BA55E7D63BBD9ACEA2F622
-CF42EED2C3557519B5473BA4B765C75A66369389FC5B07B79B87015A90D2BEBB
-E91BDDA7F6DE559E13D6DB081965B83B050F97BEA2BA3FE20B1C80DB18388C0D
-2FAE933C71CE4123BA815A50D93D97C29698C0C0C96838271AFAB4FF2BC830E6
-184087C68A05C6ADCF9D87F949AC5667C0D2F8538D8D7A0862C62EDEB58CE413
-3AD8C8280432E93ED5DD49EB1C47818D8EDE3B6BA4CD8D21EDD7071FB490ED10
-C910F5399547FBF372840036E3D167CE36B7DA6E3EE3975934FD51A1B77FC8EB
-E576AC8AF5D3A9DE883BDD29FE161F0FD1FE61BAAC76E47CC4E4403A947ED8A0
-36BE4184200F11DE0975421241E77D372C9FCCF8305F9E4679E87E7D0C9311E5
-7CE314162DC520519578434AFC3E6694FC3C907BE36C433FEA335F47BC2332C4
-E8AB9E715BB21D8016162429932C527FEC90A076BADCE3F14E6A8BB84B85F640
-BE5CCB23E63C3334A84E606D014AFA5D22189E5F6697AE6958C6E4A9B14A1EA7
-8A3C53174BE2458BA347038C3C67A8215EEB9909833F1973860F73C3C8E1BDB7
-B3A4830A7A82BCAE2574C9662D9B79F7C9209F388EB655655268240DB3E87310
-966464371A5F1C833894978FF20B2DED89C69ED956DDAB5B3B10A121D49DAC62
-D56399106138052C66D44439EFFB6BA49FAD8823EFE66850FD534A86074C5EE6
-141351C5319252D5DCF7FB36F0F868BA5BE6469BAAC008ADB1FFC72E4BEC7C57
-6DB7B4B8BB56F2990E8A5F8368A67FAEBE4FF86FFFC5F914396E9D4536E3BFF0
-32FF663883563606D288E4F747853EC60A535E19ECB75D4661F1967B55A7535F
-E6E214BA61CE6D84BC6F7D78FA0F7DA7E20B4DD668D016CD47C81E1E832F9D19
-4CC0907B9A1CDD2C241A672A025EABF26DEEAF4074289CF072CDF858B4E61536
-819A7B6A9F51F9EF82AA614FCF4C3C373E77A5B0413856EADE27601CF60EEBC6
-0FE89D9A1D11129AC54B76C6215EE2DD0076C187D039351A8289809783D3FDE8
-70F11D780FA6412CFA96D04798EF3209A1B6F81B14F283D5B3C8F118897F7D05
-9FE1769DA0CB6048672F61B429FEE444967B4279B24C20890EE7B159132DCC36
-DACCE06AFB113A96D8395BF21AE603D578C46E70012AD1E73448E306006DDE55
-AF7EC201895FC7C241549CA800439276011BFFB3C8FAB1DE36C1108DCBE67B71
-56CD9CAD7F14A6BEF3CC4B5E8711BA4ECF0ACAFBE613D5B96EECC0794FF10999
-9EFCC16247FC0F4A09BF9BDB5F840EC4BB48DA4D8B5995FF535B45FB134DD2FE
-F2CBD655AC6F137EDAC2113F8E0C180E069C359B294B2F4C0055A06742D6AACF
-35A519D3922F28C867ADA92F4961CA18A3D104BCA99E0B6452111DA91D39489B
-DBA169A25988765832AAE78B7263C2FED70309078F0EF08AC8614F475A0C5258
-E68536E981EB9270B22D2B94D2892C1D6E447AF65EA74CB0A90A620CF61F1CE5
-FC70CC7E6723171DB1E20AB4BC2AEFA9389F598222025D691E8525A478DCF513
-6C72364F2666AB46677197399C3D68B4CF1F4F87F430A5806E2FD9E798D7AC5C
-977D23EE3000795422818868AADCCC0AFA560830FB9E33D5D8B7C5E4A714FECC
-7EF122247BB79641B10008EBE4AF583E7B89C97821C05075F46208FBA9F88B24
-EBB4E80F0D93999670A3AA0BB5B7B5B72C35D317D27DF658382D849CFBED8D3F
-64D88411ED621ADAD8948E9AC5A874837387E435C19EA34F010B27A0279036D0
-0927647212F62332627582F78239539D7332B563CB823437958240F278E6CC47
-BA53C09452990A4453F5119221D998B69C370EEB7FBB5EC946A2667805EDDE1C
-FCCEDF03BF98C2104673D26A09A249D57690B135537625E48258392840A73967
-B967BE08B211837E50410E273B27B856F66772430F326E9BD0E619D70AF5190A
-D70D7497AA36C39A7579AA36BB89BE2CBBEB16DFB15042C9C2F37FF83E7DF8A5
-36AC3F8AA0D7A78D430B643B6ED36DCA486A81B06951777335704851651CB4F0
-5AFAE9EB706E9A3F8E4F7F131D9F24AD2ACD0F05144FE7CF8B09046628788B6C
-FAFB39E3709836C7B514C2FA8C9CA76A6CAE796E9D52AA6A0EF7260A10B429FF
-F91B1AE060E64B6E61A87484137BF6BA7709730C694015AE6DEEB97C9509C929
-4CAB68E161E10FCF6E84D76C391343E4FA361B1E9F88AA2889B1684803269963
-82BD49E653DD8D19247EA3074E60ABA1ED612C056B4F18962DE3086EA2283B43
-9FD66FC6C08DBC5AC5DBBEBC7998D0EC16805E4080DF1C7F587FE226D9F76290
-11B51364BB712DE2A413FF159C357534005A20CA77AC8F3437D7BCA1C2BE92DC
-FD81A74C007BDA36766FFBAD0AF3EFC3B60E24B2FC23E6E71FC11365B2E3022C
-2C04E123D06919429FCD9F938F5ABB037B7C03061B9E7D883D953C20CE325C61
-8944BF344D96FCB68BE7B872BA1FA3616D43C7C375A0845B5A0B469A091E4D59
-676D53E592DD776AA99EF8196D1D1485AAC1D0EEAE079F0627DFD3B8F5D96E86
-92BB272BF1A20FC52C709B4F9DF4805671082013007D6338185B6BA6AC572AA5
-53CDD41F0CD270EE38ADC8FAA95AA16B68768DCDB552DEA2D6825EAE1B9038B4
-48CEADED7C157695843FD9CF8D6B17D3B1B2F08DA18EA57CB90F47C8D2DC9F0B
-EC8AC42A758E812A549294FC224188F68B6894B08FDBB5EF274E41ADE95680AF
-133B6D6CA99E90B527DE9B15F0C21FA640861E82F83327CEF9B0D4F6E689D1F1
-6A92852DBEFD22B6F8DFBA577E173DD275621BA99E3BFF9C4F8FCD7420DE5810
-A851488A5B968401A3CD8197DB19746EFC0331125B0A7016A9B8F84B0F8C7DC3
-60FBA1201BE6645E37BB02824B2D712BBFB4442215E19D44084D066DA95D75BA
-4446DB751955EA3C4BA900CE491EFC809EA1F8161175F282098ED54778DE77A9
-598AD316C3C7BC26B301B7A12F1A82DA58D466939A23D7A786C9201930E4B750
-AD10988EC2E5B461A2286CC39695B6A5A05B151BDB13066720F467C67EA9744B
-944AB6261D889C365DB55E03334B29679A5F0FC301AA6FC0870B84B8263B1392
-DDD3153B380FE80463ECDEF1318E838BB899D2F420D6C4F99A56D64A5D618E99
-C86CA73DB8BCD3E76A869864DB0A7276F47EF594690C3CAE6E1C47C11887DA03
-22B6F2E6E97A7338221E38AEF20726C9687D1B8280EACE8E8B0B842EDDFBC123
-A6A090B89D5AD42C312418FDD834FD4F354AAAD5002ECC573FCA75E359B52C48
-3ED5A6944A4B5CA3E6EE7FE01C70F8E059B986D7F54D003858569C207F6D4E21
-51572D716A821B7FF136B2FC6649809599F77990E1935842AA0B34DD9AC288DD
-C7A08C49F96C99D716E17E84BF3B622D3DA4ABD0F7C2CD9247F84FF0A0CE3CD0
-54A635725EB0A9B2BE2F6D421DF42C12A8F83CE4964A184D4CD2CC13056004FF
-2654106BD9C6767094C7162231201C4E1FA16D5926BDA3B7467CA4937CA4319E
-3C96B6C0E0043BED230592B06E18C7A1319A778DE99FFD8D9E4C75400CE635F1
-85EF89D9BF91A246F4CBA5FF0C62748C958E3EE1F71CDE61E4C919CE74AB7E3F
-5E5D26C498C7DEE52EA37F00A94F28A7ECF0F0A9EACC292A03E3F107A6C5F6F8
-1EAA1ACADE655FD7A0A67D8682478F68B317EDAEFFF7B7461E0771DFAB0A948A
-28E05549C7575588FD72FE2DD72FD72ECAF8D81CE40A818A655875C0B4894C23
-C3A2E904FEE3ED5473091A41D3A209B818A91D6F1B41BF8E92A270FCAE2D7A0F
-FD60F2294DFCC98D65E33AD49E462599908E4DE5ED7E10BCCEAD3CD5A0B380B3
-E2EB703723E4DF58B08F92BA0293BD16FACB5C78B9A1729E78BA2B7A89572709
-9BD8806875F67C87CC1141E0ECC1C6A4897BD31556C81FA3E2F1E7A568531E6B
-81CBD2DAB4B86410D615E8641F8064FF925171E54E165F33DCFA5113AFAB1E11
-C0678CE2689C7CFCCCA3EAF5D84E715307EDBC68FE1703BC6601E0BDFD4D181A
-C6D7355D4D5A6509777D97F21834D834D905F58303433A49AA135FB8C7E7320C
-24552D6F7E26065CAF3EC1BE08D14C539CB5787D6F119875F18ABBEC5B02D9BF
-CBBE4C315C7773DA59178EBBE098919CDB2B93A3DA0113CF5E4553EEACD7D937
-D092CEF9DB58D3F69D577CA9C3415C710CE46E35D6B252186EF35D59BB97492D
-496192F8D8BCA202442791B0B0A7149AE9BCE292AC6FC53B71D5F8349FF82C81
-91684F71BF4CB9C72FA83B1E6549FADF452B3CE23C6DD3E788538AD9A02E702B
-54BD07B019930E70D793BCE8E83475566B418C27352E1B7947F9E46BC0E5290B
-7AC28B606FB74834085DB3ACE48669824239C4C85AE31C385C4A747E91EA352F
-E6CF035FDC13E146F78A06CF3D1DD83DCED5B0D10760E3A7273AE3172B4455CD
-3BD17AE58B6E2B2D143AED816423A5DCDAFE0532E1A5E7E8CCCA0F3D4D3B98D2
-C3AB43FD353E11C880917EE3189DDE2C1EF5B0E613303BCBB31183DAE43E06B2
-9E8975C9CFEF26E225D83D6161C80FA6B142A3CBECEFFD2355AF6A2F9C590EB1
-8FD3320F35150EFE4F96991345A1D430BCA481C86EC5993915FA62731A551E5D
-B680D4BA1BD02388006737C078F4D104D6F4D38F67F60EEA66C8AF2CBD5CC158
-B342D6E992518A73CF14856DA38EA231FB26A6BB6D0222F5089712B721C80E73
-02051D4DC608B394B2712362EEE267B5FEDCA41425981F8A746C31998132FA2A
-11DBC1F88FD70E24ED19816541549859749854AC92E7000EEBEFD20FFD090D4A
-88F4F27FB18D9E951827E39837B26B12A6C042B60257CFFC9195B371A1AF8E09
-32C39E5B183DB4207C4FA28BA0861A0C4E81C6378F575D56AE2642F46E33F460
-A6293898DF193C8AA496E3800FC23AE3B69463FE9DC9D8776A83F2086DFF16E4
-D5C41FB0C09F1DD405193DFBB68A5EA027E034C69036D40C7BECBE1C6EBB13A5
-1AC11FB6075C973A0A50DA0BDF3E371F4451915C23FC1B1DCAD3085717E6F190
-088A6406038C39B1D8E5AC6C510CFA62222E079A5F94DB168104F4AD2D97253D
-7EDFD74115F05048D4A02AF14202CAAFE8F24BAC11281B4896AFA52058BAF641
-2645E49EE964530DEDDA4FD27FC52ADB572722E1E8CCF51EC924213FF00EF0A8
-0BDD64D37B8A6D5EEEFE09DBA2E131A6EF79625983D31717CFC77C1B8B26EC15
-83ED97C8543A876B22D31EFB2A33F7E6FD2ECD86FF9D428C800E761E49AC8A42
-39BCA596FC08EF4F36E1167B1E9A4391E74E38EF571A2C302AF4C249A54A8297
-C4FD21781920A37057A39B11114EA01A605D249726A950AB9CA13742904614EB
-90EA7993298FF3759BFDE6697E3527036C4B8F37EE3D77BF6DC844E3FFE37161
-C48ED17D1376ED07B8CDBA21F5FF282E1960C5F28219D8B0BC110E7BA3E19C3A
-52F42215A32A050A9E7479065B1FDB644FC88F615877D6A78353945121DC3552
-3F821B76B49A45B668120CC59C1EF57BE66CC57CD0311D57DDDC160872E598C0
-3DC70F7294FFB2C3FFFC14B05934008892DCC197128D644E77767AA88D86FAD1
-51AC3093BE3D8B801C36F94444B23EC3152C3DE0208D109BBE9DB2C632C4A425
-5E49049D29785AD20C3FB106CF1AC5322F33177F4BAA9B5D4C86BBBB5374649F
-83E7565448E89FBAF449922313E96A0C7C0AA2279DED3EED0CF58101DEE159C5
-92DBDAD0A4EDB2FEA9A8CF30E41A12E1E426A92743C7BBDE0EBC948C9CF07AB7
-FA41FC082F303281BEE558A79E3E77B31C752B2840298222F218D813CA7263F4
-51488CFD1A57D7B00FCF5F246CFA7B6438CC0A0071148424D3A7114A358F36B3
-71CB463BB9212F29A5289D0EFC07DE6A4536A030DA9096148ECE837611D1AC32
-66FE24CE590349E3ED0B7DAF61EBE669689B7EA383BB8396A0662C6B7DB61B09
-844EC6A4D0ECA6F09E1D7B3C0C194EC7203DD92D563CD5E4578112B5977C9B1E
-ACD4DA7A6388C0835D021838CB190C1C4A0C43AB7DB4F53A511165201BD8DEF5
-CDB21DCEE81240FE961ED84FAC75E1A0C834D0F07D22D0A30F12126222E51C31
-950433A6EA3DE6438E09724BCB18D6E54CEF6B8B058D1E43409736B7B6BD7D99
-1E2390FAD64F6693F6F1DEBCF5AEFC0DEAC1800CFD326C61A5DD28C269F29F84
-54A07482A7D3F57B789D5597FE88BC127420CB07B3B926EF18D385A7A326A2B0
-87ADE9EDE8EF8887421E66924001C11325535E66EE4C351CC07F878550B5BB7D
-6F3FF0178E710D1AB430A2EFE9ACAF098834059E52D687036ADFB3118F20A78A
-28C559EF84C6CB99087FC344888536F3992571426A9D9F41C26D46B9AE842A7B
-DB9C9160D33BE70543B73BEC74D164E780EE98052D76C2AC8984D0DA790F775E
-6D65AE5C896E2D1A9DBC6F1B9BDA40D6F610E32B4BC21AC198E9F5CA5FFBD93D
-AE97C90881FF85E9E12961B57FDD3103B1EEB05AB42507EA5240A9D3A45714E2
-F79C63CA55E414218EDFEDEE8B782BA3E5D66350AC0F17882486C577DB57BA58
-9B1024388912484C6BF9A0AC48AD306AF2034E7260B35DD6CBB70D48AD716529
-5742DCA4C092EB0E1C420934E7317F0BED25F7F5E190FB708F2CE4AE0D14565C
-D1A77BAF88C75FCC37BDF41010F5D3510121B92338FCA01F4464B178391B5C95
-5F1DB500644C369A7E678F2BAC5FC1124DC7D457376F955351C060D66B75297C
-3D0EBB38119D5F9A930E1063B7DCA33208194907197635F839DE10D98A5A61BA
-6638ACC396C609DF13BEEA0264D39E3D4FEBB8598ADEEF96B0B1BC242ACF137A
-F18B6363ADB7CB53BA96EB2076C7387F1A70C6550A5631B398392DA54EA178FE
-DDF58D0D1ED403F88489AFFBB86C7847DBF7F21BE25847B82DBCC87B46477839
-BCC43986721734097461B8C6B9D0BF2B6EF3C15D44885433D2842A5EE41F2075
-DE45DBBDDA19BB853D41142E1F55B2245ABEC6C01F3254357593397EACBE6A3D
-4956A31982B83A688E0CF2F7426FA7C48DF17DEABC4D213DD5DEC551EFDC7218
-28A68B9EB46AF707919FA0C06451FCFDED1ADD901032B2D403B20D6E8F63E43E
-35591142FBBA5F13299E1C17D38A36AD3B0B89EE2A3DD3BBF875FFFEED310D68
-FB7734479D284B2C0EB236E23202E1BA84A243593E213112286C032D6BE17238
-0C078B117E4B25AC190D251C1ACB6B933C387BF6F02F2DFD8E7B237B52A1AA01
-8E826235AFA451E3CC27B40D67931869C8C0EA92D1E08FC9C546C24F60895113
-E9218BBCB58BF09F9220FFBBDD1B1CBB060B5BB3AE83501A79A78BB15D62B87C
-031435CF68E4CC06593B3B3C5078251F615EF33FEF992E75F84E4D0B6769F73E
-E045A2A6B868AB740A5DDF2FEB58BD2FD74278F9C551522D7E5C722C9CEE6EEE
-D00182BF7E5E2C96058D5FB62D08AE837C727A147DA3A72B7C5487AE97C908AB
-9BD6FFB71D1F69C903FDAD725BEABFD77E775A451B7EEC6881D18D5748E81EC3
-54BC98BBB1FD5BA0E0189445CD489C32BF42884E7964A44054A656921857A2B9
-7A04681CB650B641E19CB6709F10815537F88C9BDA1B55D77648643E2915D2A7
-F46A6E9CBB8874EC1240EBE59C91A99D484DEBEBA60A760DACB8C4BD004547C5
-97FB6384AFC98CD9BB053F335A28A11061CB3C6331B61A9AD32286D360D0DCCF
-4ADE09AE98C56962017816C3563BC9D98C38CC09B1C11A36C17EF18E9C8FCD55
-BE0FD8965DE846D2AF3025861CA5A7C19C2E80CB74F86CD53E8CC9DE6BE3BC10
-386D56410A624BD602018985FA9C49730F20D19ED91BD77F29BAC81CA59ACDA6
-CF14046FB202FF5D7A20D3A46FA47D7D7B85B87B18353FDB263983D9501F49B1
-7A6938C305280A288A18B896725FB13CF0CDC435ECAE7B83428E5D60B6252082
-38EBBC2930019564CA04B7AC91B949ED72EC204BAFB469F56A69A3C1C4326999
-E300C14341F9E836005CF3F1D73C67A459D83832300ED1E6C3E027B828F39C86
-53EB935D1D8D8222144EFBED18CE0548FC8B0996B192D92A69001A8CF42F5391
-7DC08F94FB9DE42AFB9468F27A1B6013E86510A8570DE5743B07B069FBA9A38C
-F923D368622DB5A489A7B7E988BF8A7367B6E713FEA38726CBFE1A3A716B9BFB
-6079389DE1341CC21795033C8AF45ACFEA4D61EB463CC92E543EB7150B5C009A
-6DEF0A41CED12566968B60527F925ADDCE4C13F2046DC05F20201D9F5BE85564
-BD91E07D49C8EBD39BFD36CE3D25B3823FEFAF33783150B23CB4546E81BE7921
-7E7F3988BA130605D007BA0D32C76F4182628AE9C77F5BCE45BE41ABF426FDEE
-276CF14DCD5DB2FF86757BA0FD92C09D343C20E2D28C90FE748C49B5112F34BF
-A7698C19D54FA504F6DDD3861F9199E9093051851212C61071BD7007E43A3190
-844B5DEC290B844ECF3723DA15F60E49D9BEC8B2D1C4B757A35819001FEB97A9
-EC1CDB6E0A5C047EBD0E58118C1F4AC99ABB99926068E157367D91D2D45B580C
-D969FC8F66C4B195084888D50E99A1813BCC3B2E137FA09BB94C96F3CABA8A31
-8DEAE7E321FBA6BBF275E7FDCB0A9EBCCAC180BBFB8278854047284F3B4AA610
-D8D6C8B944BA4E336D68E3FAFC62367EC250213DCFCE27E0B88EA9E85CE24281
-BDC1FD6101E5C1D85F6C16A6F76A529EE35B53CA3B49F612C005AC54DB9DB8FB
-B1376B9DA3B5EF2616A005C012112C7C10DA19B9378A506027E493480D441493
-764D48AD4C8E3CC115279F3687E89D87156E3FB7C062411360B8F7BFA4FEFD03
-6310B69D83D8322DB0E5AA6218A96BBA3DEB66FB67C22587FCB01779F21B9EDE
-2902AE0DDD9FF27D9AC17D5A6D0967A02A20CEA11EBB416B9C2C91D1F70C485A
-39D7816D9B1E573C3BE6D6D002378C5A220CFA7ADB2DC09D9C4A1DD38D06BE06
-AC204C44772FC9BA8CB5A7AC8E927A152BB4EDDF4528FA2D36436CAB54182D33
-6205FAAB5932FC8FA1EC3DD1252A4C947405B72330C4418216D136C4B20B96CF
-22CA8E2B471325B294C61C59FD32E7D2C148F8565DBBCD90B66FA40A83D4AC60
-AC9F8DA1CB5D4E222C27767543EA86D83C3C66C8604A4FBBEA67B6833065E014
-04DEF898EBAC3CD067C2E706E7D1C68F3A236EAE478040B730CE590ED38FE340
-52EA7C1844C49B8911621046AB717AE6FBF3719F7941EC91235F21855B7FBF90
-62C8F23BC153B74FA398F7ECE19CB38A490E534700F97E64984366C1061BEDBA
-6358B94BD318574792A1D00851943BC899B60AB66FF8C64AC97E925AACF493CA
-CF1E2BDAC575E9EA58F82878A5C531CDFA79329DAF07A5D1FEEDBF771C205DB0
-8F7FF003D0D4D382F175CE5DB7BD66FC2D4025FF06C96B99F37683D32B76D83C
-4E4EA738FF8B368AD737273A5B5270C705D8D1824D1D21A8AF0ED7EB23619FB8
-177A61E80C32CFCFD788B203F05B3B3B49F76FAFF5650CBB65FE0FA2FB5D5282
-172A2835ADBAF0B9BC69CDF82AFB639285A250ED1340182F0B8A7CD3EB6E481F
-B1479530461DDAF09C567BF3A814A2B96F4681FB1ECF0FAE7D75EC91643AA71D
-6A129F07276A8C7BACA7D0468CE0386D7667DFE04B09677D502A05C3874586AA
-DAAA13ABD2FB93B8F92F72CA2F38AF9D643F0C1A7786A15DEC80F3F13DC2EB0A
-956A5DC1211D02E732476EFB7D999C63CE53B27759D7D93B47383DB234C4C384
-E5E664206B8C833335CA6A89730543071E483CB92DA30755A982E25E1A268AE6
-D1355E15CA20BFD7B9EA1F89C3C07F0EEDFDEA65F8A82C39BE3AE22E727D22F7
-C8DD4788497AF3E6D9AF79471F575F989158977D3277AB36597BE0EC8347DD33
-BF0D93288549C90642004A9F969893798F93C1EF3C7A6CAB9CADEBB6787C18CC
-2232972AFD6BBC6317FA46765FA74DBD6F1FFD5491E0E6335F0D08605883DA1D
-9E3A80097856D540B61473D573A9AF12B79AD066F09B2BAAEC9E46CBFD1046A9
-1C07FD78B5C98E0F9847157361293ABBAE194FA860141A43482C7CA75F781351
-E762FC9E3F892735C496DFB7045E86C7943775D96ACCF2DFA451089EBD4BA12B
-DDE24237724CA3ABB3AA061213185206F058C2CAFDF35535C1AB6EB38065CDFD
-E57123DB9B0C933C6796B59DB405093C8E429A0511B6A23D2A6FEE64DAF67F99
-0A4B3772003EAC01BE1ED68FBA87079D0100BFBE054A3EAE2CAE8B01971FF85E
-352F86A1A29ED975D4D69C748D244345E7486974F0D402ACED2B7DAD1E1C53FB
-A029DF4E5CBFD64C694B1D911E53900A38DFA5FBE785D35A2595BA71D5209E3F
-803726BC42832EF1FFB227F6BC5691B2DD989BD48CAE99B4B69807E55DEEE2E6
-1C2E43A3F90F08DA4049A65C2EBB68AB37CE0AF7C4ED41B27BDAFE3D37E982B5
-17CD994BA4F8C064FBB1C4D477E177371D0589C4078CE74A1DC6BFBD2C76C8C4
-4DF12316FC2294A8C834A2A1AB1271A7C3CAF90507679280F4BD0C6FF1121BA7
-45ADFA2BAF226982DB7781A96434FA8495F971BB17475C7CDDD134AA6E87946E
-EC2BA6AE663F4317DB621CE3D2644A5B3B5F577DEBB33407D13D5BDB873A9622
-5E0F138FF5EED620E4ECDCFC4BC8D43E46BC62FD90F59B06938D1405DD8F92AC
-7985F4DBE35AB0AD927A7AA1AED8A3FCC9992B89D9CF9EFE02517A602C10CAA4
-44C9FABBBF210F406B358DF144827E04540B47B01AA6631DF583A36A10944787
-AF2F517BE8D6B8B43C4A97F49132467F0243735AAD44908C4FB05137A7374EC2
-BBF2CA497924F050E7902E06785CD6BE7550360283D231BD53628F576B92B6C7
-3A67EDB5366C3DD053660561D5EC2C7D7337E4A89AE89EE9F2ADF4D99A75ED5B
-78C496422AA1B58B8ABC81F5AF8BDA7A3C65D221977FC6EDBAA2E98F26358788
-29E0DC0A30527D64CBC82F2CCAE18ACCC1B2A64DF31030F0F14F233B5306D623
-DCB30263BD18592A089CE4C2D0390126741EE14F7558ED949D13DDC9EEF0AB4A
-3166F740E41EDA16F729F76E42DC1D18B2EC06D694781851E9C9ADDD139F7768
-627A1D4BD88C1505F31911B1BF4AA76BF6866EF658F607EA4272095480CDF526
-DD9FCE4FBD76AB86C887FEBD791AC89EE99AB5A2903FC1D4ECDBBC4AED1E2568
-DC74937B487A36FDEFD62C230258B15372F25FDEF0B59A482A6FA149248743EB
-ADFCCAF718FD9D6B8576F8DC7DBBB96DD1FD3AD502F6F9FDEACDABD1A9D54290
-C3417857F1818AB3AB34C1BAC6BD65D7A1A5B3480921E9E48546BB99D41FC796
-D2D373042F1F4A796F8FA1AD43F1BCD937534ABB4BEE3F1BE7592C158885353A
-C2DF29E4E95EE1D526A064B5EBB9C5A53DF45876AF31DEABCEADCB5E4000497F
-7A0CE6E11077A22DA49AE3416E9B3EA88F151CA288979D90D1F5B9CEC9F1B36A
-7D5546E3B317556F0CBB4375AD06D7834A2B16B0F4A2BC18B3775EF4817CCB4B
-51C75736D8E5CEE393965FBEDB98568BACC0CE59D39E0DB30D4D735566681A7A
-D7F39C19B682DC7B98B87772E9FDFF1A9848463EF22C76724B4FBFB5765DE1FE
-E57B45C65CCA8150A80DEA255943EADA2DD043C239AFFB5FCFB187B763A3BB27
-CC0BC3936F5E9F833A745B3FD079BC7489104F77880229227F07B294BB9B14D7
-62909E582CFC20A5C57CB42D90863F4B7A2BC6EFFE6CB02490D1E1953C5C5B77
-BD5A751FA40E2E681D55AD39F5FEC3D1B564BD77899552874802D7E7C1236388
-07E672122D3C4591E895B2792DB4E265AC250D2511AD07E43490004486C43471
-38FB164E23466689B3CBD57555E84337B5D7F0B809B9524CA5AF7D1406F80EAB
-C72BFC9987447C62D70B4D88A54A6B8BED5F7200A00F59432CAEBD1120BC882E
-82CA6223D0F60FE03319260659263AAAFA9A309D6B87A926821520FBA6B269CB
-C0245426B25DB5B5C9202AF788D8CE53F20EA1F18BB16EE5373AB5593AF0BDA4
-D0BCF44B51AB29CEF3295C3CDE1A112043AB47F05812A5FBABEC2FBBF404C331
-BE74B93237561CBFB1627AC5883F56EAD46A8B2132E352EAEFF95D79A9C36731
-EF7DE5EC66671E4231A6784977C2883AC1597C73E047FFCF49D0E16E4355A8B6
-60EA0698EDE972C32F0FD19754134B5D83C3FDB82D4F8904DDA62E22E2743A89
-E79421A43FCAB3E6FF90C36E5A5B4F2FA2FEA6D0EE41AA3C44B727AF545A3B45
-2D931C1BB522CE068979A7DED0470409E7999EEBD6C58A1F1909CDD00ED2180D
-44A271811E80B3950222BA531719FC4B0ADB6255BAA63787774E2947CCA6519D
-E51D71A2ABD77B282CC8B4F8BAD57ADFED6818B3C24ABE0E668AB63CF2F17731
-2F7C7A492A47EB38DBFAC5A36BBA799375A4EDDF6A0122789BF6F58F8EC9F0C1
-49CF01C136A792BE4C6118DCDC0675459ECCCA754ECDA9D170708CE58A230DB7
-D753C45E7434FFE711AA5DA45393DCA8B5C8920A95C94F3B89776C23B53F70BA
-B6D217CA58C551206918303DB33B6081E3391F10DDC5F58B1790028AA2150AFB
-085185754358891D30992FFA2C23DB2A04521107101C2B52A1A168E2CE7C85FC
-37D32B44FD1DC3BE4B28BBA9A9F91229C79997F5184F5E7143C838FDC8196C52
-0B33A375B320A025180846736F0649DCA8FC61EBB6CC1974A4134EA26E6F5E5C
-A73992547B9A4E6BDA10FF2B41C9215F2F9AC755DB11C1CDAF34396E4B92DB64
-83034FC2023D846B33DC7CD297527F183540456192DCF23BCB4A1DBBB7A2ECBB
-D938F9F3C03AA46A1893059A722AE7FA05CE716AC8D446D7F038D6C72C172A5F
-05F91CB5FD5427E6C156F126F6B2014F97F5792F77CCDA6A802CD7E3405FA66B
-E32EECF53CA9071D1EE20AAFA9AF3DBF4CBD250650870F0B9A3923BC4484F349
-EB072F3244C98AB39B6F708A4A52C0EA243DEB4DD77BBCE573A2E56323A18A0F
-504EE24F90A29AFC5FD3002749E953E1E1E6E6E8989A029BADA9CA0A261884EB
-C6BC3BDE99849D6F05D8D1ABAF82A452EE116463444BE4D3DE38F63938BF69BD
-10EEA7C68AA8077F412060D185E4187120926B4B209A74497A3C9065F1BAE8A3
-C5DF1A6A01349D7E8D215FAA03677C682022A26D3179CABD03A0C4BC6B303BFF
-BC7B3FAF26B96747A840C12EF14E16A2DEC76B243519B53E04038D3FB13A2C24
-B531C3147B51A8C3623F4C161B4097364608D5871A29006F7ACDE5ADA1F82C11
-11BD9E2AAEA52D352D70FA4C94809422ED65C03C4A72DBE2FBF26F4CEACE9DDA
-F6D895413EC28F2F61F40D67AB8798DF36773780B292455A689B4B70F03D18E1
-EEDF66F3C5823D47156B6B2D1A1006C513FCCA31D101DEBD474E72B49B664F35
-86EBB75BDCCB5F4AF8B583B835449F7CAEE5E97A819AC9ECEDDD6AB2E7B326D2
-A92F7568D8301B1F1485F234B32632E8725F8B637EEFA1397FF031342A03B602
-815005BE674B52CD4744E20CCD2DB8F7F58D0717FCDF04001101A51B0926D53B
-BFF990D7B01091B64F85C9397DBE3F48A17BD2584141B3229CEAAA3F0546EC6A
-4B9FBD4EED3EB6F78F8FE6D342B13F5BEEB210E4A527D83B9354A085AC87B359
-4E5DB704BF8363E95FF526A56182093FBC89926FA47D90178A91CAA8D5A73F2A
-E38BFCF454444A79EB4AAA502292C08166EC7CBC37014DC7DCEB4DDDFF7B9A29
-75A5DC4C86D19B4E9901464C7E81F251DD00CEB0A87C6DC15EDE276E8976DC6E
-77642A3B502A160CA2AE5EF55BEFC154602E96F496F7A4D2F3D345F51B28543C
-DE2412AE9C332C5141F664C9B5BA61806420359A29A473E0BCA4FC49853F6622
-A6EF486456683FF69DFE32EA117216FF797E3CFD8C4FE436CA7E1AF5F91DFDD0
-408876DFC19DB1CD9EB2CE9AE76EEEE3E73E0F37BDBF4010B581C510B3DB0CA2
-C340B265B989E1E682B4FF9EE3CF10B9166604FA8262B123C7333E91CEEC975C
-80D73B4DE4F9A065B1D86A040B69197EDDFC955054AEBED3B93C9EE76A139D91
-D8F1967EC2579F6E111AFCA78FDCA67DC154D4DB3CAD540024BDCAC2A28537F4
-51BCBD448C87549379CE17DC363254735D586FC39A5BBCB4EFE907F37B4E9842
-12BFA21977D0D519B0628AA31C58EF538A78402BC7611FFC01B6049A8437D319
-9A9A1375578B7D36F14F6A31E2717F1DB8A55CB0624BD9BB4ACFEF4594715AD3
-BEB006D593E3D0FB36A82813A39AA70E
+DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813
+F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46
+507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025
+46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F26BDA3B469D678F01
+BBD601F46245B0AEF9E844A38F0A186733A8523992CBBF6DFDED8BDE4E6DDEE1
+AA0EE78B943B79CBA4AE311FF4612252D9EEC7DDF88BA8080801F9BC7611DCF9
+D6AA4A8651177CB85010D420CDFB43CD103ED7A1B9C2E885C88F882E29F4C301
+4750C3EFA20150F9AF0A5BCC8DD9C7DD53434855ACC1FF84087D95BE7A2FC2AA
+446A89DCD272268178C02DB29FED2749139BF0A51A5A9E0B6B8322558086D62E
+BF48C20DCB99FD2BAE6853877991059EA432234EA3DBBEAA7A63B0279661F69F
+181917D92AA634ED55BF9736395C609B315ACC4F49566EDF37EE388BB8B5D9A7
+E227219DE137AA06BBBB2F2530EB0082E730BA30DF67E83E8E3E6D47CC0D6183
+D68AFDFDB89A8F7F6B8C3381BF4903576CC2D058CF656F221C153D7EC7C6CFDE
+3487F61D3712FACEC12BBDA5C084F01CD52E27B685B7ADDB34D477C47BDA3D6A
+F5F94FEEE22ED1CF93F2A4576F53D5E9AB73CAB5CFBE85DD6F4364A8CE71574F
+2D6AC3F8AD690AEC0AAC2AAF8CFDEE51FE47B56661DF84FCD8AC27A0C591A39E
+769DF23C1D077B7C905CE9FB31C7594CB1E63CD82E119CE68AB58F6B8E3E370C
+11D91D32ABD0DFEDAAD93A07401045F38198465E1D503704FDAB902347ABC936
+1F1DEB3601A993B6641E4442154962DDE3812AA8D948B112C9C8C51A5BBDCE0F
+31E244844D0C77BD0F206C7399B4687F352DBA807E1D9C5439A9944E0B3949BA
+B173C40D43F4A0B97AA73A07B3F016580D2C2DF39EA392F678313B1FA589C0DD
+6CAEB67B5E78334A41156A070819698E8D576F5177868FA05D4E66AC6F313967
+C251958A426B160B5645120A7F2E33986B79CD3ABDE16A8320A355A7F18C2FF3
+60AC078C70EE8123060EB9672A7D112A7C1F916DCBBEFBCA48B59B4B497B2992
+CC43893291BD454ACC071A68E6D7664916857E6EA7C34345C13693EC4D94B08F
+0EC526563979CAD433B998DC5A0D835C862CBD360AF49D068D07AB1709E1A3FA
+4C1F8EEE38FE96A5EE6334C12E55B24E5CA3AD0E78C5B3939A3C69553212C069
+67548E8039596E5C73650E32147ECE269066DD3A4E4CA042DBC2011D60A378DC
+45C605A5D6704780155DE769AC843B3C717D41D9E319BE62523BA58583CEBA3F
+8AD278952CEC5236F3CDD374766075BA04259A2C9F2539DDAE7F0D4356AD67DE
+0786B29ACA9DD362B55E72BF69173DB426EBC75F6E5BA686EB82952C20838199
+8E5BC15A79E2F0F5F998DA7269560B6F65BE4FFEC8131FC9EFA692B60FDA916C
+DAA9CEA8793D1AD57558D4B424E591024738132535D310D2121838FF3ADC091B
+4D1BA849B4054206AF41262CA2110DC795D988AFBD1B9725D673444D9B5D9A3F
+C0F865201B6D797A0575DFAB5C51E5FFC0F52735EE1B21B355C10CEBB2B62D72
+96AE789D63C6413BA44FCBB2C384624038186B76DBFE94A9E85540BAE8B3FD40
+09BAC6A615BC1B497804F55065E3C18BE77DB8563B1730D5CEF7428A9BE8C118
+DE8B1B9EDBF53BA3288B4985B1EF68F2EAA7AF9A2543CC66D3CD11925EB08E2F
+2E9293A5AC0245FB4B4704B5C61C49276F5E1F4560A4C0615D26FB097A5D0746
+42239DE3560B0787A347FA3516D012A2C205A3CA4074893F360FD2D6A980E6E4
+F77B93A92506F3F852DB888567C1C1717D06FAE23DC20555C129B998666F0D47
+6985495B8E94E4F3A3A788FC6EA5EA0BCDAC1F5D36B3E0459DF6D683EAA9F7ED
+484EB781E72A5B67823F69FA949C74BD03A6AC015ED3C872108B6D2771414119
+6AF2774FCABCE014D681EE6F599F2B675210E8A89132B5FC9701B1802919C192
+242F75BA14EACE61BCE6EC7A980DB15B33EE760A8C80ABA4CB4ACD62856BB083
+987F29347547523481D58DD157C1E71878254F83129FEDC651186F696FA4E015
+554C5EFF61208812DE8473E0CCD8D108670FC49664B666C9A97C07185286A45A
+6FAA91966BB3F3EBA629F4DC645A522C763F276B6BC34425FBB4187C77274565
+235CC4B9C902DE9C5B6A9ED253598464AB766CAF4BA3905F431CE64801711723
+7F22BC03056EDE0F03E7154B9227AB5D9DB43729C14FE45044F0368523794A37
+E93EDAEDE1A49769F27E57439B281DD121430D11E87AA64F4F7EEF90C8207CF0
+FBFA73F68F7C2023C63FEF39B8BA4BF429D61DB22B86AE5DA40DB7533CD9C0D7
+8DC6819DF76A5B569C55A9D821A658006E6AD50AA4F9FA0C29AB8B417E2D6012
+59D09EDCD7D968AA2EB4989492ECA5E6FDB6827637A807B3F1910E6F91122095
+30A35F48C0429D7C7F793D432FE423B89CD21D5A9CC3891A934D8A85021512FA
+923157FB455E127E007404C2FC5E1B5A43B944C4EB884AFCCD3B642C0A13B0CF
+6F4FD1642B917B64E296280261D6AB904738E35E10BA91A1580BE1E4214DEC4F
+041E1BC61C5F65DC263FF9FEA39D7FE05F31B85799B786A3D5D0C5AC21C21EB9
+69AC3FCBD19085438FC1E3081B7EE187C0CF717EDE9958FB4ECA83FC2A97AC06
+C42B92571D1CB295A4E739B10738E0854557A1695C9623AF2796A960156A3395
+B63759BFE8E5B14A2C49192BB6103184CF756E1D585B84736D090B827C199BC1
+DCB1EA3B8DA7CBC73B2E26E96B6F0556D49923D63173C465D725223C0D8159F0
+E70ED77B0B380397112BFD024DC0F03CAE4AD3853735B3FB12DDB249A3929B87
+4F77103703EC7D4B4C8D41D0CE65F05CC6ADE30BAD9EF7D41D7DD1DB2BF35B87
+A929238B57DDF01AB94A1E31C10B759315E3E4D58D37142CB1DD6F27D321F6F9
+20FA0E6C2EA968494217E7F75A34F6B050B27F7BE3394CE69FFA957C678F1A5C
+A0B3D8CE8ADF168CE01BA90F039DB20A8AC6B76D5036A2DE654CEB00A853B3A0
+7625675AE757C92E06C7E24827E47A09D620E62DEAF04F1FF407AA23C63A895F
+E66E14E4A7CAA511423D5DCD020D1385376C3CFBB6FEE585256923F98A702217
+B1096DB80ED911924499572284BCCF297DD8B7CDC1186F6E12E6461039A353E7
+62786A8AC2072569AD069AC5BDE24540A069D26A73705E58D7FF12806610D709
+D3B58073669A255D65AFB23575EA5402380FF69CD6F61E6556B794441F7725AB
+C82E82E284CB201B36DC5E37FE3E45D1595F9C5DD72EEB58959B3026F45C1E91
+7ED8E500C5CD1E1AE673CBC5222CF60D25643C9AB66833DBDAE1845B16F9E550
+8AEFA7F0FC8D2EF3EE39EDB8512BDE5077AC9A032CD4B29347B84E1BD602C4BE
+83766227DC6B32191DF6743953790BD8AF842A4B5E4EA6409CEA963D8AC3F471
+FBA7C08F4E4C6CD6012B82F79BB6DD247F93BE9D898A7884C9B224ECBD25F85A
+33758D69172C1FAC421944E482B7716E839D32027851FAF6F4E0C4D78F680552
+C11461E5E45EC9FC958D7C2D640C3D4FBC85D8D23428B5AB71F6B8827446E5E1
+CC0C38C1B7974F649E6BBA748DD76E1DA9747D7DA222A0FF08B5DBF0E8303664
+8F791FFEE6DBAF4084F1558BAE2FA8E48C807F1C6403D4A91B78ECB1BBE082C1
+A8C0CDDDB7AEADF5E525C03402B8AFB1BAE627D91C479EB198BA6B466A029C89
+BCEE9CFAA8BC88F344091D76EFAB92F5512D1BCA61498405823B231E0A587907
+543A798BD9664259ACE2C4965A15B653B7808B70CC050EE225ECABC1476EE957
+FDDDBCEB75E704EC7E33301443F5A467FA6DE504A055D611C2FA6B07BBE03C76
+9C430F6A3FE1198093A834D90029CAF806FD6A75C999B5E8EFFCAF676DF17CC4
+B256C6FC93F4AE44947B1381B6C475F282667A65708598CA4A4CD006B02F3004
+BE93081B80DAB1467214A6A947EE0E8451E74B5953B2D57E83CDF905D1B86677
+D811628F1D49F1CF5678E8AEE3C57BE4072535B6245E19BC918B29EC7989B698
+01ABA09A7CC82AEC3C0E3F64CB0EE69C71A127CBFF6002C561F3DBC94CAE7C2D
+872CA1BE31370821D70098A7A5541DF5E6B6E3D1F9056759DC0AE1DE6F3581B2
+C7BF466AB8C841E0CEB14F965D1C31AEFEC4724F120E58C1706E009B738F1D67
+0B2074B3FAA0F98302A3DF8E093BEC432FF011FBB3C73EC4906D00C846B30501
+4199B83754E9B1A2F80B523B1D9DF5ACCDA9AFAED5F5B2643C5046A0E2A7D873
+ADA9DB69793D60F09D408297302124C10B6915147EAD703FA5AB9DCA1838C590
+7E66B21981FAB8BAB54BB00FB1CE6E36EDC67838F762B7F91B76DD8683EEF42F
+1D0537608BAD4BF1191CAC12DBD7C17D0AFBFFDCE31580F7B6465CA5E2D5FD6C
+55A8ACBDC91530FA9033413057308627025D4431D175ECE3167D99B1E1B0A2D3
+633FBE69CF0A4E23CCCEAE95F6661EDE0DD6DE0D1F6713901CA13DCEDD01A7CF
+737EFCAE29EA421F3CB7887261161D5A33C685E28E11008DF6D366042DA16E0A
+475E762E506D59625FB9B6A384A9A3F6B118F6254FF8D4C95CF84030A7A6D914
+6136C77BE7F7D01938226A0ADDD08CFA63B68CB6C0CF532FDBFB0AAA6CC3FF54
+AB5435949968AFC9BB14B7889CAF0C5B1C80F749FD9E966D7FF38D64476076E8
+9C4DAAA24CA211C0D4C0DB27D7A8DE66817F002A76310BBEEC5ED2444F9C0974
+A3DAA9AD65FCAEB77FFAEA91882CA8648A0F27443680EF7D2511ABF85DBD456B
+2D72E529851B255CB48E86B537A0CC0127B8EB3F53FB67EEE069ED8BE30301B7
+02458C82CBCD2CF2396F4AB5B781FC69D583FFE8C7B62BCC05B746B5C495009A
+BF675F38E811B3292DF31864A1848DDE036DAF7ABBBF17B9E5E655CAD4DB38D5
+5E40EF78371FD46BF1190BDDF34C476FD09DD23CBB54EEB938A538589A03B28B
+03A3CCCBC550D90EB73564D4E56354846030B0D8ABA795AF99DD48DAE65EC594
+FC4CCA5CFD39860A6F23AA22D0E7C25A5CC06AE9A1C35EBA87DE6B5029F4BB4B
+B308BE301E6C1CA24980D5A72F14A65C6552F8205282BAA07AB56FFBEB77BDAD
+2A9B398216116A09A7FDBD0B01A33DE66E4A149E2CBF60715E8FC76A910021F0
+F26859FE2908C529F263D97481F07F784CFEF19369F023C98AEC7AF9A018AE6C
+727DD9581662FD83F76FF3A445465D8113D7EE8B5420446804C67624B22883EE
+4C31E69D1ACEA21DF7136529E6AAA2CF4FCA394142B3239010BE265F24405452
+8987FB64D9CDED947AC0F2FCA0636046872B6B742921CEDB4AEA45FE61F33A04
+120C7771D3541631B56332AED1B57A404362FDE040780A8A3509BFFD95FAEB93
+F3A2359122F3E9F709242E919AA0A52CED7C69623CE32ACB260FA787268E8312
+511A535827F5AA08C34CDBB689C9D47F31390B89104A698EC20F7B217807ABF4
+CEE3C2FF7D349E766E83510D204F0067D1A4144CACE3E9362FEACF05B95EC18D
+BC587E4455B9632CE28D02842C100510B81B1D598AAD6EE21634F6A13A30821E
+641D5D7DB3F7B784BD6DF4DAC840AAE74324CC00B515597CB7E4CF77A2DBEB15
+E655781F8D4A7ABF0CCB9A0D09720CF3A1671B256C81BC7C64BCE000DAF280F4
+6E5D749649B582C0639FF0CE11F6D0C36705A67A51404F22C0415A2135922FF8
+D11F8DCB25ED1CCC58E77CE7BD74FBE143B55DBC4AB525D4C4A8B7C392C4CB8D
+631540238AAB4B3D9E1892B747B0C273917453C1E2AA7585A77E9427925FD5BE
+1377961EE7C6AC55460A134AF811A327FC939A321DA059FB7DDDE88701922C02
+56727A98AAFF0D0FCA54EF784A1633B7EE514317D253780A1A62C7BD98FC4D67
+B49B930D55117F3DE5C5A634376FFDB177EFFFC6FB607B0D4F11591049D63890
+9E8C296F85483FE343D5B1EC41CEA8A3C66A890EC7812640016891AEDF8A64BD
+FD923BC5176DCEF2A5BC67948BD55AC844FC1BCE542F8D8F8E1B30A61EC9C422
+AF66942C540E02A9F1449ACDE6F2987734A06088DB9BAB4B9D57C67C4D22E912
+ECE827DA938FB7FA5609A96FE16FD2E74F4E8349FFF9ECC814325EE5D506F6B9
+8B6058716768FA9DE7F172E4E1CAFA98ED651ADE9E6A8D89FC9FDF1EE6F031D3
+F87DD7101EC90192B8314025C118CFDF399C7B9BA72344D5FF3C97867DC3A6CA
+76ACA42B4DBFC497B7FFF022B9F43A1876BC60172831DA3BFA9A74B85B195BAE
+0AF002039C49DCABF89F2A5619F09107349975D8D8AE6A716A3ED406FBE136B3
+90D46B10EAB91C83A0C06FD4045E1C16DDF3E0A4F0C24805FA130C4FEADAC556
+C7FD67CD11CFE397F006C783462F823C4B66307B1ED99713A1D63004C44AEAE9
+2C7D929F2DE483CDD8D0CD5BC1512352867F5C78AD991EAE5E3D5D50B899B272
+8C7B34FFB491E3DEEE35213C73A0D0D2D3EBC7FAC5EFDEE670C41EA2B6E60EBF
+11189DE0BBA33145D5FAC9BD4A62BEED88C4BFAA296A2D0A68DE5163C64014FE
+915B8A5E88C97617EDCDB20723F55C5603E0CE7A2DEA778F4CF09F2B521E5954
+1B53966CA35892761B022172B25D45B4796B75A2290A88C39C73FDA467FF0566
+9B35FA83FDA4C902F11878244E47E63CBC35359B3482CE71DC061808FFC130DB
+27879AF2A32A1C713256C84BA060722570C770CC0BD59A43EC3A7ECEA2295A06
+A134E2AC9A3559522691DD29E76B25567EA1DCAF787690872D62E780F5166C3C
+4590181B36C40444BAF5C381DEBA692FD3B1AAE99C4306C72B11481502653A71
+55A83360304F1C01121CA574AED7EBD9662BC2CC161B4A7BC19143731026E78E
+33575784EE8CDBC0BC219542E36A693642E155F57101EBB5AF4A867729ECFE9D
+8261F66FED38E6E182213028BBAFDFCBC71F0969AE553240A89BFC72203E07EF
+A6BA414540B10990770C6BB36F7F55CEE5676F5FEC5AD00C3530974B80BDC135
+EF6E8A10F2140AA7823B11D4AC4761D336BF634A24D8E89EE29D52C086FE79CD
+C870AC65A40713C8C08596FD1AD2AF44C078606A4086F6D41D28C4E5217A27BA
+11B172FCC9BD8A160F282A289993707C761CBB9DFA4DD9145CA114D9C0FA2426
+9EC80CA0FA4A86CA30E9021BEA3D463E8F058765191CE2539783A420E3B10472
+8EB4C904F9CC15E089BC5EAE794B9CBA565E3CC35C56B5A3BD20A54A5E430E43
+1029F7BFF82A730956C1D68C8EFB0508CBFAF48631348E8DCFE6479368D3392E
+FEDF6E69450013499757AEA2E79E9B4BEF03C17160F84A2339E3A80DE8F036C2
+68C163A24E6FD8FF75DE695FC17BBF155972D54FA4EF7DBD6EEF74252A02EE6A
+6F5DD566CD2ACB6B7474139D8443258BB8EEDE8C2CD08888874F872259CBF660
+47A254910600EC40C506243F0492400D897DD57FB4CC256A3408792140FA8138
+1A0293EA225BE55F392562FB47E7E243F27B665EABC0025A2E54EAED4D994837
+8834E6A97B8DBEAF7A937B593CFAC8EF9A40056DC38F59834E3C2502DDDDF1CB
+438D4B1FFA2FACA0F3D09D178C7370258C959AC2E8DA574305825F67739926D0
+8AD8949E93B2CFF05C85F56EDEBA1C490DD684F0A9E7C66C20D5B9048C6DBEB1
+C75DE78D6AEAB591C550A1ACCB1435DC126DF38D4FD8B168423D4434D126FE13
+7A1D5ED73746170D164C250CC197EA25265464844A2A1F49483D3ECCB0EE0D9E
+3C578291F27369212C3A659E752458AD0E4D5AC667FB6E762036CE103BFFF9FE
+E0CC48B5FFA43B59201A7EED5A4EB31749AB153FB776A13D73A39D109E6F8C2E
+B8F0E5BA5FDC23AADA736E50C291F78ABD0494B0AD6D376590CA339B091F6289
+7D2096E68D5858AF2F9BB0B162D752786FE1AE23E542121A74C17681095538BB
+9EC57F9E89F3B0CA32649C98597DDCDE2138B61450183A798D31FD3462102078
+62C7835F500E7A1FCBC58C37E8DAC9793F584A7F851565C871BDF1042234D3B1
+071F30D573FF2398D3438F49588662686A4AAEA60D8E1D961A48AC069431A9EC
+1ED3ECDD0DE5BEEB5D6FE035AFFB6BC509833D32508ED2D495472722D68E0A3F
+6B4066BE315FF5E7048300D439ACE70463F4BD72547E26225161B1A9B2F15ED4
+77673AFD583DADB09FE1AC2AB97537B7AF30051030792B08C4BD0C442FCC215E
+0257A366DE8CD6D7F601EAB3DCB0B86436B39364A44624C780A99F9CEB12F8AB
+7B2ECE4D34176EACCEAC54BFC3E5C35299E26CD8414BB2BC0ADCD9263447BDDB
+3858265428E134820D621E0762237F46C2681C296F36F774E705CED8388E2626
+B527ECF6B952B5FB9D151CDE83FEEA36F8C87F0B602975D918BAAB17752C83A2
+D8205FE2A2912282FAFEEBC0818B086464C2AD81EE097A492DBF5C1468AA8802
+88C454ACDA1E44169335FB0AB2BB0D44B2A4A4386AAAA4CEA2E48DB27BD47700
+3FAC7847668891E99EBCA8C5D813378EE7772212101488B4110E92D269A121A9
+18901A8EFF7C57F155C827A558A4F1610807A50EDE9C3630C2FB77969863FC6E
+A3AE9E28F27B301963D3DBE231CDA9BB03B6A29B0AF4042F62FA71E1C8A374DF
+B34CD305BF9410167948FFB3E8F262BB94AC891068DDB8F66680F5CA9B86000A
+D4B408C3F9DFE80A21DFFEF20D7C09EA830FF915509943799880B028FECC64D6
+6D4F17728A750801197EFB3EF5A697F63C2057D54AD79EDD99D7098B71107141
+3BF98DA68572C2EC5407C590CE8A7406239E728DB23304ACB07E1F27E9BC0C10
+B249EB1B76F1527459B8F05E5325F2362CE119A155E352459FC1552FFF069D88
+82D06CF9DA1676AE53DFA9DB50336CAC9A07083212FC04426842F6D08B89801B
+E098A9F6318577FCD3DE372FFAB3BB63938F46FDE00158ACB3F536EA91854E5C
+2E4B519A78BA54BE9B8E652756D615FB1BBB9F8CC4116A5337D0C82599E76F38
+7577664F70E05A2A0A402771A0BC71400E0F27D4C40D40908EFB641C75AA17E4
+34E02C02812B86CB7C1843BA074F5D7D21D90D93BB6BAB5ECA4AB1C6F2B2B80E
+1D3A8F2160DAD92307E5D3C763B0F63B7FB9135C76FCD7BF8AF9637F178ECDF1
+C761F0DDA7281C248711D123FE2FE5BA6408851F72D5061CFE0AF10E1D1EBE11
+1B0E4AEDD4946B6528FEA67D448BF9A06114A202E3136A2B7AB1B6ACC256F287
+EBF97D532A8FBD15064DC3B9D643402F67EEFF350B0EA3C3BDAFFE07C7CB1557
+5910F24C9101BC72440F4A9B8C2B7F48653C13FAE5FC28EB6A6589FDF0DA849C
+6569C761BE135F4E10151117FDBC32B94A0E534745B81E424F82EA384389D2A5
+795D3EA358DA26944D1F1ED1A48C11F4C444D7E91A6F23F950DD40BC0EB7FC53
+3C00D2DFF98EA6BBD13A904782CDC66BE179873E44254FFDC031B68AFFF574AC
+702EC8D9C462CA4257120B27AD65400EBBECBA4D32723E0E52AE178ECE376B79
+24C7DD2CC62787FC69AD166EC11E4E43D1E3A76175AE4B0282FE62B8EC0D46E7
+37C781B65ACD9E98108FFED418C6EB3F3ECE5093D4C4369FAF179A92B289D582
+811EFD634111CFACBE83975D9BC28875F2AD667F3DF8C7A3A3F5CC6B3E98F73C
+2D7A12214A4E6CB03C2C052885742E7FC5693F854EBFEB4A1711D1CEA7911254
+98C51BE323266A08650D51E50967DCC8DA329EAF374F422BE64EC35ABD1D5594
+00AFCEC6A82A4DD47271702552458B24C8B6EC0AA1DED3F6EE8D1A65E0AC0123
+5E81473A2376F47C06E0CDA141B2A3C056885AA41A10FBC37C374988FF497C81
+EE6797CA2C9296A496E6B6C9F56377C3A3C402CA3636372A7910BF35AE2AF3D6
+589DF95AF23E4490914ADAF4E4C605BEA4623231C5F1D4579A51F307F9700F39
+5402CC9B93E13679B2BE641F229A1E1D83BE1CCFB978FE1E8954FF1CC6007034
+B1A2BEAFD7347D8BD97ADCB649F6279E0A0E705C82F27778F7882372B58E00D3
+B94AA2A0582BEC08BF9F240FACD2D12B99F46AD52495B2BE5EFFD0B1AC93E726
+DD72DF4CA1264F21457672BB2802B7AE9B075795BF8AA9C27F743BD89C3BAE7E
+C614BCEF16F4A2AEFDF4B72D5CC5DCD7ED751382AB652ED86BEAE2653C384869
+D40CF8BD6FCE59F51CEACD343A92CF833754CBC5C0B80E9363899CB158EB3F54
+745BCEEBEF2659C69E95CC3820F12C6E51D868AF2FA979BFD0241E39A771747F
+FD651E157983751D084B16322264BE52D065A3608DBF78E98B416DEE27BD9F2E
+8F610100D3C227AFC725139971053273A53E18A6E0D894C932DDF3F432AABDED
+39666CAC0E86306384428A81F44006990C25B8144394AE04CF8A1217DE12D046
+A160109658102F279C90E0338541FD04AF587B1F88168463D471EF229009DB3D
+ACA474AFF7CC89492A300BF9574AEA8C5F9A9BA76EF789885EDF37C97B8E2C30
+D429111045A9C1490C6F4693B178548CD90BD54D75B6485B8A8186CEE5A86C8B
+519DA9B1C577FDC3B317151B3D3D725EB5835860654587A993C717FFA8C7E57E
+75D6E0E3E5BC10D241D0763B462F0B4FFA7F2881B92DD101BEDDD83373ACC0A0
+CBCF366F10DDA1FB8EB75224CCB6531AEC9E358EA5F0021F7CA6AF2510904AA6
+2259E75D10E1E492B6047B116FE904E4C9B832A23E3020485A26CD026F7C89F2
+75B8D46C4557C1798DD4BBBD26C814411A7D59D5AEBF6D6B7638F199AFCDD030
+2B2985C6E762A002381732BEB2B958B3D6CA4DC93ABFDA5837B89A5B8BD1FC7D
+322C540912F0A93B54117EC76B2E623A08673CF8882658241BAD84D1C7EB1148
+CE183E32DFB96BE256957E9F730CED521E392E56926CB63B681F5A930F32A9B2
+77477908C708D13559F50653DB862F07DCC8F7EE0EA755E728A9FC4A17115418
+835009651989B113A8D2DD613764F19C6F152A8DD23B37822465E483F4E746BA
+CA01DDD1135EBAEAF8792EAF022637287A544923CA6701333DFD39B92FCCBEBF
+D0ADB4B19A95CC2AFE8CAF3614EEC904602147A72A30DC5D582D147843317226
+8FDECF83A19691D5AE6B590E66120D22508CB30713BD2AB286E58A9E2F435C52
+D15E12C3E1C939E850135A6E2A897BDAD9F54179F2DBC80CB322E85B28A3C345
+3924F7A676B7587BE5CEA130E211B10C9B5C28A616CCB55B206203D05B032084
+123EAB7EFF139D5C1EF2FB00E3B328ADE7AE451471BB9E5F75ABDC03948B0664
+C4552C99DBE4668C7686485E27041D48C5BD4E4A7424E682FF75CF9DFB3D593C
+DDB1078AE7B070B1C6BDF8FF5D303B76E8B3B8B41D5958C6CAAC1790A6E40382
+89DA5B36509198E0AC7541112BA0ED7875085BFDB5169E01B75AA2EB2F8E0AA4
+46D7AACFCABD8F86D6753572872C647FF3A83214A44768B74B523D14C1FB8DCC
+764D865C31CC427AC247E7D6A233A7F043585B5B5737FE7837940F70AD3C1D00
+E6AB131600166A98DA57FB5A60D6B061971F09B780EE5ECD5F74B93621C54992
+A15D96BA8873D230B98CE56FFF6BC59A043D5AFF06A260B8C6DD848614EC3341
+21490989AFF9DF6BEA57CC93DE2417D171DAEEBCCA1EFC9164AF4C2E02B34E11
+34B7FF1DA19D626114DFA220623A2E667BDB2B79A6C97B8B4AD1793D179C0153
+150F91EA174C102B3EA389DEEEADF3672F0B2AF9B3DCD0D2B5B91A0F180C78E6
+1E0C7787F029A053686DEFA38CCF0730E7B8DAD8D4670BDCF6F5930C8802C60B
+E8082320DCE1E5BBE6CDEC6FA39CC6B18F76B56689B4AB685FDD986086BB414F
+6F0F2C4B113B6B31536B2C1980D34B4550C57B7EAA9161DD574CACCC82AF26BC
+56EECAB8FFD5F50DA8138FAED811DF021FA2C2F4991EB28310CE94BAC3CE70AE
+D7C36867C52843FE1AB41CA2D6B8EB9ABAB0DA435637C26E4CA60EDBD8BFD748
+CA958C5B79C6ED35393A2D4602B478524DF5BADCD692E02DFECABF4B99BB8393
+B8D8A2CE41CBB04A3BB9806C9E41A58AEF6E2BF7E7F24778D3042F42DB0FE7DD
+522486179BE8D2EB96CABF1EEA0CE577AF846E3CFCDF53CAA22EC3CA04B5D126
+CD68AE6F6E40075E559218857EE7FD5B91C426A7982C132B2A23B77D10E627C1
+891BBC5F4342982819507770FDC22FC96DC1DDB3069D0E3ABCD309D1BEE3F273
+F113EC79AF6FD2A332787E2DF3D9316DEC84DAB94AB9A8B25859BF2553156043
+6A5A084CD002662F0A1B1360941CA96B2EDDD12041EF8D49A5C03ED62FA1D50D
+4B4E94B30FF78C7E87DBBBDCF100CDD0D1CCEB4546A81129329B961E477E2EBB
+3D500F0DA9F684AFA07FDD0930555E1E828B0656854AC9AB8118A4BAD7111B39
+5BDE6AC93CC061FE73067D807B454654E3AB7A02A38661862B6811FD9857BBB5
+D88AF8BE8EE553D51C871ADD6377FEF4E4AAB4BF0962C377E6526DD3A43C99D3
+1200330943334A86A18E00A9C62CFB783688A489ABC093927E742AC44E6C5D68
+E381CB0577E36D42324075C70D0210146A46769E4EF4E7212A02BCEF21D39866
+45FEA59ACC9D0210DBAAD2D64D2B9C75AC9332DA6ECD127868A2ECA846BDC961
+370CDB39A22B63C3E73E1DA43D127232FFD654A37DE3B77E8691DF2000A95E02
+755A7DC7CE2D3FFD1D4E7A5A630991A727B889B6E80869FEA450B89D07717463
+BE8E7F9F7E7B5E8CDD9EBFBB0B01BF4631C35423EA9A53340BBA9FC493C144D7
+AC4EC43D61AEC9B6813803E59AB2F48B6B167C19E5BB64FD46B494ADDE9BE881
+DC7F1B9B7351196C77B07E7ADF73BCE7A085EAE92457E0031126878D6F2BB471
+FD9B2CB336526BE180479A29D96E5DEFFA21C9368A06964F5D3AF0E14E9137EA
+D8A102D1D42E096B89C04E6B44C22E38E2880EA9624C7084DFE92C7CEBB1CA87
+ED4A6269DFE0BFFC2491A2FCCAB7591D868D12FD15C2FB48077B4425BF9C2FB0
+C9CE1C5296278F8A49175A30161ACEEF4411234610C4FE6BFBD2D3AF3B924837
+6490F561BE719424B849D0CCA2D4DA51A1F34097BC6C4B81F65E094610363CD5
+26FD206621ACB77A02A1FFD70E364E32095A7C0173DAF45388E4F8CF02359389
+44180C058889100D5B340919A9EABB32A070AE29D81342D49617F20CB170C67D
+3B4A671979ABC06F853D599899A7117571971EFB792229D4D6B051EA3AA66DCC
+8D78F3A3FF7B97732E3277314344D32ABFBEB8AC47C4D4DF7F24CF5CCB870672
+C106D2CF44ACA8967586FC51354182B066B6EFAE8FFD916257EC30AF1E67B156
+89C13F96EDFBCD745965B3DCBF0C70496F81DE237779A24683971CBC5346D8A3
+E6BCBB52CDB58E2E2B3C175B7F049357C667D7E5DF9112F6D7787A47679DCCBC
+9AD6B4167C0A622AFC2871583D3DFD80A684B10A13D8362F08A39EB211672E8A
+8027F3CFA9E5725AFD833DAE86772E528FE5F89CDCED0EF2E2D7B84210BAF4EC
+F5FC2DA12451A19FB91E72A710AB9C80D9D964E05D4B7DC69DC229C6D4F2027E
+98F114ACFB99DF2487C53734D6C245F844F97640A29706BA79C324B2A499A8BA
+33D63244A320E9D2BCB43F59FC073BB6CE91F32F449DE3DAE4CE284E0E40EC9A
+299F71E1FF08A2783E1B452345F4CFFC1B17E878E6982198C14AF78F429DDA89
+99D504B49BD397D45DB265DC4242E51EBC3A4FA1078F62FF96A9956B900B7CAA
+64DFF8624A85017B0EA6DD905974F9B1A98A81C8A31E8B7F39C667DB89F88A2C
+F3E69A662D14C1523CFD64AE198784ADAE2F6524AC51F1DFA7C28653C70BCC7D
+974677D88282EB0EA8EF2993DC93EED927A088F00B3F6D45509418105E4EF439
+803DA2E82481019BA263C499696C3A8247773BF93CE18CB941F57E1512A918D3
+4100E497E31BA32A00B38B9F76B837987C7269CBA3FBA9E8487CCA4E0BF2A154
+494B2802E785E80E426C1E9E20A3BCBE1B88D1DF218F8A612237826FCD724236
+60CFB08F417238AE9DB5142D00852E4806BD491A18FC7056BBFAE5A97433FC88
+36E6B85A46DE24E8416891CF551BF8309FED66F4931B07E90DF9CC062ABC734D
+77D69ED92278A16BE66D1A5A1A7A6310BB852682FABA134AF0D55FFB09721DAD
+6ECC9D6446A54B158F034DD346793F1121B491C3793279520DC18F6EA12F0D30
+9C225BFC2C16B7F7133A282B79C12EC832145F366E800BE79F5E0824AFB0A87D
+626DEEFCFF653356F1DC7A02A2ADCC2860E3CC4125BF24ED9270A0EBD9055740
+B40D69633885753F33A58F679A7BB37A88311B4B4F1675780F87F88094FC26FA
+09BD993760E7C138D219382E7869FD81279DD4C3203990FA0A1E5A76FD2EE408
+81021AD0A9A3BDB29136F417A647A4BF701A5DBFA3618E0C5455A95B0CDF969E
+56B1D4D1EE29CD494FCA5785B10EC35E64D9D7F81E6DB72555AA1782232681E9
+909251570732F104D769D752B09C4ED44D9B00B929CF7C3899A1E4003277000A
+50D136D222A38476B166500304AF25D2A691104FEE150C14D6BA805415502752
+7959ED64C77B1F493FD142F635DFF5F9C6C96FAA68C418E1FE57C59ED52DF91D
+219E20FEDBBF7CFC56ABBE64B41616B74B6A76CD973CD4556F8141E863650CB5
+1FF734CEC3107FC337F9338EB688500177095021341B9D9F89BB7BDF5BD20255
+DAF041D751FAE3C3265F169800CA76182C63468B2767A0D7AD66A3F4CAC6D230
+E4F125E79DAD4FE6BA2DDD4F2246D3E5516DBF4A85CD3C96E17C8CB90DEE6590
+FF446FEEFB01EBEBB06578FD85687C27FB1F7E114C59523A7621CB251E73F6E3
+9C3B145D3022C716C476E24A4FB28E8D04AAF74372763B244EDA4244B632EA49
+F7D3388E1024CFCAAF76FE2E8C024EF779DAE6C93E4D078D8C28925E29F9A454
+75A2B6C84EFC80B82870C863ED7F8FBB606DC050C9B48B09B5743A2A459E4137
+BAA99EFFE878248247B575E0F51EBEDF5E13FF525F627D917E10192FA3EFA98B
+E24F413BB8603D044C5D225E0DA3E60DCD153520F317AA0212DAB75E6CCDD402
+9BD3C4F14443C20DCE7D75C3DAAC6200B07A86DBAD8150429A28EF82C5E1AA37
+DD57E54230D789BF166A074E0745D4A22CC22A2C1B64B2E866B0288ECC3BBA9F
+0865C26D28AC2323BEE23A3F8D1F9D2624D8C5CF775DA3D64052C1A6A50BD579
+1122C5FB8881CFE27430951C7BBC506AAA1E17F9CBBDF791FDA2A324B5F20C67
+1E26175E2DAA58D7B0351250AD53C423B5F6A46D106E6980F7AF95A6819964DC
+3939E2C92E76AFA64FCF2CD8AA811EFC9DC06C4BA38BF10A10513F02A8A8F855
+B3A04F814708F7D60A0525C3BB1B2DF82047AEFFF231D6B18E51DD38618F3102
+23EDF0C61EE36F887D0CF61AC775E044DAD59CDC9C8894EA4D6208A5F63F37DD
+1945592CAE3065D50DC35AC0ABF70F22072D046B624EC124BD023C508EE8B805
+CA44BF658B8CB36E4CCDB2276AC89912D4203425E64294461A0836BAE2E6039E
+5D041CB1CAA1F6D1B2638EE7F296AC96E49BAB1C0160FF773A9DE83D696B0C2E
+DC034B20387C96D8E5D0D75D3E8BFE12FD2DE65572C01070FE07D96B344638C8
+2DEE5D10642FE4329F83542B90F3CCA58EFD89FFCA8D16DAECFF28CAAE5B6CEB
+2B2A3C2AFD87F802AC36C3DF24CF6CAF2E8A822F286DFD647E195D3295466C41
+6AB850823C2891E8C6B94C9378F6EC868EE1BEC466879AF8425652BBA9F8FADB
+782B878D4EE3E9908C8BFBD343E077878499AF806A031B211CF9E43F470A5A8D
+8BF646AC3CD251393E3F94FD17151ACDC810D3B21C257A721159A6463DD0C954
+D7DBA0CCB7102E4DB5BDB81648520C5D600ADDF06EB808CDEC948AAF188CC6A0
+3327074AB44AAA9752283E94DA061191D10968BD8357D35EE2B7CA6BDBBDB595
+4F831469187CE69E061147F7C7FCED28824D4141783DD8F99B73F4A52A4A7BF0
+E5F7FC1F93B379D7416C816598DE7E660FE2A218653B32A4AE0BE9B5E1CBBE0B
+44D40E2CF2BCAC37F7DB2A196BE1B80D22534F8553958874C7BD4E8FE2CBAB87
+00101C71123255385BA182E63913F8AAAE986FB763FDAB631265061A17340890
+789C1E80E82002A6310AB650589809CF3467C6E12E312EB7BE3084750EF5AB0C
+6DE37BE767EA9E5EB4635529BCD8740B0B6E2C842EE6EA02D726CEEA20A23BFD
+E5DC590FA32502ED1F79941A897F59C3F2FF75324595F0C5753C5E3B65FF95C8
+FDCD5B411F86F8840386528CA77518A2765AB3F428937258A0A1210C86FFAC5E
+94D5BCF380417DA59075C4351944DE6934DC45B43C6FADC76D12FCB66B4CE9CB
+4C1E8FB398D66B5528E5B207A7B8AE34EC403F92729B2737EBD585028926E76D
+B3CF37CFCEF267B77CA5AA619BD3DF563C8C6AC730CA6486B135E817809B8D30
+97028BC290464B283C1AD1D41C59F97A69F06D9D72A0A9B95A45E4972AC4B84D
+E97C507869E4030BA5AAF4B710DE81A3502A4D7D736D61C668F63FA6D4669D23
+FE3F0B09A7F4906E6B31FF161ADD8E1E45EB98099B5BE95B5FDFE3F633447974
+CD3A02BE03C555B07CA3BA33F56AD586910707556DD51660D5ED2933858A71F4
+4900E8E51019FDF950E594C3FCC854085B0E165CAFA7E902E1C842E17AB654A1
+CE63493B07E060AD31814318CCC5B3783FEA5BC65DA2BBD27286F743F48D8246
+5E73C07BE09CB22176C40D8F0A55650B2EF6703E5D1325A273417E0CE2E1CF85
+6086CDC94AD6FE36C7A52925C91A3769F6771C6F58367C2B2B2456C5A1CDD38D
+09CFF9E577D6877563AD4E1EE5975E609DBFEF85225FEEABC2B49900F716D121
+D49C56F4EC12E412290BCC89B8862EC78AA095855D4B9DAC33CFFB50E9CFA788
+FF7514936A0A284CFC5E790DCB6BB15A49562CE367D96B03C058D63961FD8BDD
+F4402A58E1171A94B6B94CDC5E60106540E0012542F563CC79DA1055CBE47EDD
+98F049E90177DD9DF0E0D038C610568D13A6F8D59CBFBC5ED9D5733A55F21B74
+F06DC30D353B69FFA47ABAD4C55A874811DE60C6A2B3673C76105E16A466FA19
+20A5780F2E949328E05990573CC3D38CA7A37AD60641DE173893FFFA551AD971
+697DA8ED155818AC16E3DEE6968891225D5E0DD0363A941D20B76CFC6A4531D0
+2110290578D4D1183475AC1644257BFA84AF546324F3AEA5043D7171D4C251CC
+8CFF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -5160,51 +5170,52 @@ cleartomark
TeXDict begin 40258431 52099146 1000 600 600 (history.dvi)
@start /Fa 197[21 58[{}1 74.7198 /CMMI9 rf /Fb 134[41
41 1[41 1[30 30 30 1[43 38 43 4[21 43 38 1[34 43 34 1[38
-13[43 10[58 14[38 38 38 5[38 49[{}22 74.7198 /CMR9 rf
-/Fc 134[39 3[39 39 39 39 2[39 39 39 39 2[39 39 2[39 3[39
-97[{}13 74.7198 /CMSLTT10 rf /Fd 167[62 3[60 46 2[57
-1[62 76 52 1[43 1[62 65 54 1[63 60 67[{}13 83.022 /CMR10
-rf /Fe 130[39 39 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 39 1[39
-39 39 1[39 2[39 39 39 39 39 1[39 1[39 1[39 2[39 39 39
-39 39 39 39 39 39 2[39 39 39 39 39 3[39 1[39 39 39 39
-39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 33[{}77
-74.7198 /CMTT9 rf /Ff 134[53 53 72 53 55 39 39 39 53
-55 50 55 83 28 2[28 55 50 30 44 55 44 1[50 7[75 4[72
-55 73 2[77 75 4[36 75 2[68 3[75 20[28 1[50 29[55 58 11[{}36
-99.6264 /CMSL10 rf /Fg 214[35 35 40[{}2 90.9091 /CMSS10
-rf /Fh 133[52 52 52 52 52 52 52 52 52 52 52 52 52 52
-52 52 1[52 52 52 52 52 52 52 52 52 1[52 5[52 4[52 52
-52 2[52 52 4[52 52 2[52 3[52 22[52 42[{}37 99.6264 /CMTT10
-rf /Fi 134[48 48 48 1[48 48 48 48 2[48 48 1[48 2[48 1[48
-48 48 48 49[48 48 49[{}17 90.9091 /CMSLTT10 rf /Fj 133[55
-65 65 1[65 68 48 48 50 1[68 61 68 102 34 2[34 68 61 37
-56 68 55 68 60 9[127 3[68 5[116 74 2[46 96 1[77 81 94
-2[93 9[61 61 61 61 61 61 61 2[34 33[68 12[{}41 109.091
-/CMBX12 rf /Fk 134[48 48 66 48 51 35 36 36 48 51 45 51
-76 25 2[25 51 45 28 40 51 40 1[45 3[25 1[25 40[45 45
-6[45 29[51 53 11[{}29 90.9091 /CMSL10 rf /Fl 138[56 1[42
-4[56 4[27 1[58 3[54 1[56 97[{}7 90.9091 /CMCSC10 rf /Fm
-134[85 85 117 85 90 63 64 66 1[90 81 90 134 45 2[45 90
-81 49 74 90 72 90 78 10[122 124 112 3[110 1[126 1[97
-2[60 126 127 101 1[124 117 115 122 14[81 81 49[{}38 143.462
-/CMBX12 rf /Fn 242[91 13[{}1 90.9091 /CMSY10 rf /Fo 134[71
-71 97 71 75 52 53 55 1[75 67 75 112 37 2[37 75 67 41
-61 75 60 75 65 9[139 102 103 1[75 100 1[92 1[105 128
-81 2[50 105 1[85 88 103 97 96 102 6[37 4[67 67 67 67
-67 2[37 1[37 44[{}47 119.552 /CMBX12 rf /Fp 129[48 48
-48 48 48 48 1[48 48 48 48 48 48 1[48 48 48 48 48 48 1[48
-48 48 48 48 48 48 48 48 1[48 48 48 48 48 1[48 3[48 48
-48 48 1[48 48 48 1[48 2[48 48 48 48 48 48 1[48 48 1[48
-48 48 48 48 48 7[48 48 48 48 48 48 1[48 48 48 48 1[48
-48 48 48 48 48 33[{}71 90.9091 /CMTT10 rf /Fq 131[91
-45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28
-25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93
-68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62
-69 66 64 68 5[25 25 45 45 45 45 45 45 45 45 45 45 45
-25 30 25 2[35 35 25 4[45 19[76 51 51 53 11[{}82 90.9091
-/CMR10 rf /Fr 134[102 4[75 76 79 2[97 5[54 6[108 94 11[149
-6[151 1[116 3[151 152 71[{}13 172.154 /CMBX12 rf end
+13[43 10[58 14[38 1[38 5[38 38 48[{}22 74.7198 /CMR9
+rf /Fc 134[39 3[39 39 39 39 2[39 39 39 39 2[39 39 2[39
+3[39 97[{}13 74.7198 /CMSLTT10 rf /Fd 167[62 3[60 46
+2[57 1[62 76 52 1[43 1[62 65 54 1[63 60 67[{}13 83.022
+/CMR10 rf /Fe 130[39 39 39 39 39 39 39 39 39 39 39 39
+39 39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39
+39 1[39 39 39 1[39 2[39 39 39 39 39 1[39 1[39 1[39 2[39
+39 39 39 39 39 39 39 39 2[39 39 39 39 39 3[39 1[39 39
+39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+33[{}77 74.7198 /CMTT9 rf /Ff 134[53 53 72 53 55 39 39
+39 53 55 50 55 83 28 2[28 55 50 30 44 55 44 1[50 7[75
+4[72 55 73 2[77 75 4[36 75 2[68 3[75 20[28 1[50 29[55
+58 11[{}36 99.6264 /CMSL10 rf /Fg 214[35 35 40[{}2 90.9091
+/CMSS10 rf /Fh 133[52 52 52 52 52 52 52 52 52 52 52 52
+52 52 52 52 1[52 52 52 52 52 52 52 52 52 1[52 5[52 4[52
+52 52 2[52 52 4[52 52 2[52 3[52 22[52 42[{}37 99.6264
+/CMTT10 rf /Fi 134[48 48 48 1[48 48 48 48 2[48 48 1[48
+2[48 1[48 48 48 48 49[48 48 49[{}17 90.9091 /CMSLTT10
+rf /Fj 133[55 65 65 1[65 68 48 48 50 1[68 61 68 102 34
+2[34 68 61 37 56 68 55 68 60 9[127 3[68 5[116 74 2[46
+96 1[77 81 94 2[93 9[61 61 61 61 61 61 61 2[34 33[68
+12[{}41 109.091 /CMBX12 rf /Fk 134[48 48 66 48 51 35
+36 36 48 51 45 51 76 25 2[25 51 45 28 40 51 40 51 45
+3[25 1[25 40[45 45 6[45 29[51 53 11[{}30 90.9091 /CMSL10
+rf /Fl 138[56 1[42 4[56 4[27 1[58 3[54 1[56 97[{}7 90.9091
+/CMCSC10 rf /Fm 134[85 85 117 85 90 63 64 66 1[90 81
+90 134 45 2[45 90 81 49 74 90 72 90 78 10[122 124 112
+3[110 1[126 1[97 2[60 126 127 101 1[124 117 115 122 14[81
+81 49[{}38 143.462 /CMBX12 rf /Fn 242[91 13[{}1 90.9091
+/CMSY10 rf /Fo 134[71 71 97 71 75 52 53 55 1[75 67 75
+112 37 2[37 75 67 41 61 75 60 75 65 9[139 102 103 1[75
+100 1[92 1[105 128 81 2[50 105 1[85 88 103 97 96 102
+6[37 4[67 67 67 67 67 2[37 1[37 44[{}47 119.552 /CMBX12
+rf /Fp 129[48 48 48 48 48 48 1[48 48 48 48 48 48 1[48
+48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 1[48 48 48
+48 48 1[48 3[48 48 48 48 1[48 48 48 1[48 2[48 48 48 48
+48 48 1[48 48 1[48 48 48 48 48 48 7[48 48 48 48 48 48
+1[48 48 48 48 48 48 48 48 48 48 48 33[{}72 90.9091 /CMTT10
+rf /Fq 131[91 45 40 48 48 66 48 51 35 36 36 48 51 45
+51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45
+25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47
+33 68 71 59 62 69 66 64 68 5[25 25 45 45 45 45 45 45
+45 45 45 45 45 25 30 25 2[35 35 25 4[45 19[76 51 51 53
+11[{}82 90.9091 /CMR10 rf /Fr 134[102 4[75 76 79 2[97
+5[54 6[108 94 11[149 6[151 1[116 3[151 152 71[{}13 172.154
+/CMBX12 rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
@@ -5219,23 +5230,25 @@ ifelse
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 150 1318 a Fr(GNU)65 b(History)h(Library)p
-150 1418 3600 34 v 1920 1515 a Fq(Edition)31 b(7.0,)h(for)e
-Fp(History)e(Library)h Fq(V)-8 b(ersion)31 b(7.0.)3367
-1623 y(July)f(2016)150 4927 y Fo(Chet)45 b(Ramey)-11
-b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150
-5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)
--11 b(oundation)p 150 5141 3600 17 v eop end
+150 1418 3600 34 v 1920 1515 a Fq(Edition)31 b(8.0,)h(for)e
+Fp(History)e(Library)h Fq(V)-8 b(ersion)31 b(8.0.)3139
+1623 y(No)m(v)m(em)m(b)s(er)g(2018)150 4927 y Fo(Chet)45
+b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l
+(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11
+b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141
+3600 17 v eop end
%%Page: 2 2
-TeXDict begin 2 1 bop 150 4413 a Fq(This)31 b(do)s(cumen)m(t)h(describ)
-s(es)f(the)h(GNU)h(History)f(library)g(\(v)m(ersion)g(7.0,)i(16)f(July)
-e(2016\),)k(a)d(program-)150 4523 y(ming)38 b(to)s(ol)h(that)f(pro)m
-(vides)g(a)g(consisten)m(t)i(user)d(in)m(terface)i(for)f(recalling)h
-(lines)g(of)f(previously)f(t)m(yp)s(ed)150 4633 y(input.)150
-4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 y Fn(\015)30
-b Fq(1988{2016)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8
-b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h
-(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s
-(cumen)m(t)f(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8
+TeXDict begin 2 1 bop 150 4413 a Fq(This)44 b(do)s(cumen)m(t)i(describ)
+s(es)e(the)i(GNU)f(History)h(library)f(\(v)m(ersion)h(8.0,)51
+b(30)46 b(No)m(v)m(em)m(b)s(er)g(2018\),)52 b(a)150 4523
+y(programming)32 b(to)s(ol)h(that)f(pro)m(vides)g(a)h(consisten)m(t)g
+(user)e(in)m(terface)j(for)d(recalling)j(lines)e(of)g(previously)150
+4633 y(t)m(yp)s(ed)e(input.)150 4767 y(Cop)m(yrigh)m(t)602
+4764 y(c)577 4767 y Fn(\015)g Fq(1988{2016)35 b(F)-8
+b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390
+4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8
+b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f
+(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8
b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26
b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43
b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8
@@ -5250,158 +5263,170 @@ TeXDict begin -1 2 bop 3725 -116 a Fq(i)150 299 y Fm(T)-13
b(able)53 b(of)h(Con)l(ten)l(ts)p eop end
%%Page: 1 4
TeXDict begin 1 3 bop 3705 -116 a Fq(1)150 299 y Fm(1)80
-b(Using)53 b(History)g(In)l(teractiv)l(ely)150 549 y
+b(Using)53 b(History)g(In)l(teractiv)l(ely)150 525 y
Fq(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the)f
Fl(gnu)h Fq(History)g(Library)e(in)m(teractiv)m(ely)-8
-b(,)50 b(from)42 b(a)h(user's)150 659 y(standp)s(oin)m(t.)76
+b(,)50 b(from)42 b(a)h(user's)150 634 y(standp)s(oin)m(t.)76
b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76
b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fl(gnu)150
-769 y Fq(History)36 b(Library)e(in)h(y)m(our)f(o)m(wn)i(programs,)g
+744 y Fq(History)36 b(Library)e(in)h(y)m(our)f(o)m(wn)i(programs,)g
(see)f(Chapter)g(2)g([Programming)g(with)g(GNU)h(History],)150
-878 y(page)31 b(4.)150 1127 y Fo(1.1)68 b(History)46
-b(Expansion)150 1287 y Fq(The)f(History)h(library)e(pro)m(vides)i(a)f
+854 y(page)31 b(4.)150 1091 y Fo(1.1)68 b(History)46
+b(Expansion)150 1251 y Fq(The)f(History)h(library)e(pro)m(vides)i(a)f
(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g(the)f
-(history)150 1396 y(expansion)g(pro)m(vided)f(b)m(y)h
+(history)150 1360 y(expansion)g(pro)m(vided)f(b)m(y)h
Fp(csh)p Fq(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h
-(used)e(to)i(manipulate)f(the)150 1506 y(history)30 b(information.)275
-1646 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
+(used)e(to)i(manipulate)f(the)150 1470 y(history)30 b(information.)275
+1603 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
(history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150
-1755 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen)
+1712 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen)
m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150
-1865 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
-(quic)m(kly)-8 b(.)275 2005 y(History)37 b(expansion)f(tak)m(es)i
+1822 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
+(quic)m(kly)-8 b(.)275 1955 y(History)37 b(expansion)f(tak)m(es)i
(place)g(in)e(t)m(w)m(o)i(parts.)59 b(The)36 b(\014rst)g(is)h(to)g
-(determine)g(whic)m(h)f(line)h(from)150 2115 y(the)42
+(determine)g(whic)m(h)f(line)h(from)150 2064 y(the)42
b(history)f(list)h(should)e(b)s(e)h(used)f(during)g(substitution.)74
b(The)40 b(second)i(is)f(to)h(select)h(p)s(ortions)e(of)150
-2224 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f
+2174 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f
(one.)42 b(The)30 b(line)h(selected)h(from)e(the)h(history)f(is)h
-(called)h(the)150 2334 y Fk(ev)m(en)m(t)p Fq(,)e(and)c(the)i(p)s
+(called)h(the)150 2283 y Fk(ev)m(en)m(t)p Fq(,)e(and)c(the)i(p)s
(ortions)e(of)i(that)f(line)h(that)g(are)f(acted)i(up)s(on)c(are)j
(called)g Fk(w)m(ords)p Fq(.)39 b(V)-8 b(arious)28 b
-Fk(mo)s(di\014ers)150 2443 y Fq(are)33 b(a)m(v)-5 b(ailable)36
+Fk(mo)s(di\014ers)150 2393 y Fq(are)33 b(a)m(v)-5 b(ailable)36
b(to)d(manipulate)h(the)f(selected)h(w)m(ords.)48 b(The)32
b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)150
-2553 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g
+2503 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g
(w)m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m
-(ord.)150 2662 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m
+(ord.)150 2612 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m
(y)h(the)g(app)s(earance)g(of)g(the)g(history)f(expansion)h(c)m
-(haracter,)150 2772 y(whic)m(h)30 b(is)h(`)p Fp(!)p Fq(')f(b)m(y)g
-(default.)150 2977 y Fj(1.1.1)63 b(Ev)m(en)m(t)39 b(Designators)150
-3124 y Fq(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h
-(a)f(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48
-b(Unless)33 b(the)150 3233 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)
-f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h
-(history)f(list.)150 3401 y Fp(!)432 b Fq(Start)34 b(a)f(history)h
-(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h
-(tab,)f(the)g(end)f(of)630 3511 y(the)e(line,)g(or)f(`)p
-Fp(=)p Fq('.)150 3675 y Fp(!)p Fi(n)384 b Fq(Refer)30
-b(to)i(command)e(line)g Fk(n)p Fq(.)150 3840 y Fp(!-)p
+(haracter,)150 2722 y(whic)m(h)30 b(is)h(`)p Fp(!)p Fq(')f(b)m(y)g
+(default.)275 2855 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m
+(e)h(quoting)f(con)m(v)m(en)m(tions:)40 b(a)27 b(bac)m(kslash)g(can)f
+(b)s(e)g(used)f(to)150 2964 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g
+(handling)g(for)g(the)g(next)g(c)m(haracter;)k(single)d(quotes)g
+(enclose)g(v)m(erbatim)g(sequences)150 3074 y(of)k(c)m(haracters,)i
+(and)e(can)g(b)s(e)g(used)f(to)i(inhibit)f(history)g(expansion;)g(and)g
+(c)m(haracters)i(enclosed)e(within)150 3183 y(double)h(quotes)i(ma)m(y)
+f(b)s(e)f(sub)5 b(ject)31 b(to)h(history)f(expansion,)g(since)g(bac)m
+(kslash)g(can)h(escap)s(e)f(the)g(history)150 3293 y(expansion)e(c)m
+(haracter,)j(but)d(single)h(quotes)g(ma)m(y)h(not,)f(since)g(they)g
+(are)g(not)f(treated)i(sp)s(ecially)f(within)150 3403
+y(double)g(quotes.)150 3599 y Fj(1.1.1)63 b(Ev)m(en)m(t)39
+b(Designators)150 3746 y Fq(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g
+(reference)g(to)h(a)f(command)f(line)h(en)m(try)g(in)g(the)g(history)g
+(list.)48 b(Unless)33 b(the)150 3855 y(reference)e(is)f(absolute,)i(ev)
+m(en)m(ts)f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h
+(in)f(the)h(history)f(list.)150 4011 y Fp(!)432 b Fq(Start)34
+b(a)f(history)h(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)
+e(a)h(space,)h(tab,)f(the)g(end)f(of)630 4121 y(the)e(line,)g(or)f(`)p
+Fp(=)p Fq('.)150 4277 y Fp(!)p Fi(n)384 b Fq(Refer)30
+b(to)i(command)e(line)g Fk(n)p Fq(.)150 4433 y Fp(!-)p
Fi(n)336 b Fq(Refer)30 b(to)i(the)e(command)g Fk(n)g
-Fq(lines)h(bac)m(k.)150 4005 y Fp(!!)384 b Fq(Refer)30
+Fq(lines)h(bac)m(k.)150 4589 y Fp(!!)384 b Fq(Refer)30
b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f
-(for)g(`)p Fp(!-1)p Fq('.)150 4170 y Fp(!)p Fi(string)144
+(for)g(`)p Fp(!-1)p Fq('.)150 4745 y Fp(!)p Fi(string)144
b Fq(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g
(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630
-4280 y(list)31 b(starting)g(with)f Fk(string)p Fq(.)150
-4445 y Fp(!?)p Fi(string)p Fp([?])630 4554 y Fq(Refer)25
+4855 y(list)31 b(starting)g(with)f Fk(string)p Fq(.)150
+5011 y Fp(!?)p Fi(string)p Fp([?])630 5121 y Fq(Refer)25
b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)
-g(p)s(osition)g(in)g(the)g(history)630 4664 y(list)32
+g(p)s(osition)g(in)g(the)g(history)630 5230 y(list)32
b(con)m(taining)i Fk(string)p Fq(.)45 b(The)31 b(trailing)i(`)p
Fp(?)p Fq(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fk(string)39
-b Fq(is)32 b(follo)m(w)m(ed)630 4773 y(immediately)g(b)m(y)e(a)h
-(newline.)150 4938 y Fp(^)p Fi(string1)p Fp(^)p Fi(string2)p
-Fp(^)630 5048 y Fq(Quic)m(k)h(Substitution.)44 b(Rep)s(eat)32
-b(the)g(last)h(command,)f(replacing)g Fk(string1)40 b
-Fq(with)31 b Fk(string2)p Fq(.)630 5157 y(Equiv)-5 b(alen)m(t)31
-b(to)g Fp(!!:s/)p Fi(string1)p Fp(/)p Fi(string2)p Fp(/)p
-Fq(.)150 5322 y Fp(!#)384 b Fq(The)30 b(en)m(tire)h(command)f(line)h(t)
-m(yp)s(ed)f(so)h(far.)p eop end
+b Fq(is)32 b(follo)m(w)m(ed)630 5340 y(immediately)g(b)m(y)e(a)h
+(newline.)p eop end
%%Page: 2 5
TeXDict begin 2 4 bop 150 -116 a Fq(Chapter)30 b(1:)41
b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(2)150
-299 y Fj(1.1.2)63 b(W)-10 b(ord)41 b(Designators)150
-446 y Fq(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h
-(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27
-b(`)p Fp(:)p Fq(')g(separates)h(the)f(ev)m(en)m(t)150
-555 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
+299 y Fp(^)p Fi(string1)p Fp(^)p Fi(string2)p Fp(^)630
+408 y Fq(Quic)m(k)32 b(Substitution.)44 b(Rep)s(eat)32
+b(the)g(last)h(command,)f(replacing)g Fk(string1)40 b
+Fq(with)31 b Fk(string2)p Fq(.)630 518 y(Equiv)-5 b(alen)m(t)31
+b(to)g Fp(!!:s/)p Fi(string1)p Fp(/)p Fi(string2)p Fp(/)p
+Fq(.)150 674 y Fp(!#)384 b Fq(The)30 b(en)m(tire)h(command)f(line)h(t)m
+(yp)s(ed)f(so)h(far.)150 869 y Fj(1.1.2)63 b(W)-10 b(ord)41
+b(Designators)150 1016 y Fq(W)-8 b(ord)27 b(designators)h(are)g(used)e
+(to)i(select)h(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41
+b(A)27 b(`)p Fp(:)p Fq(')g(separates)h(the)f(ev)m(en)m(t)150
+1125 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
b(It)37 b(ma)m(y)h(b)s(e)e(omitted)i(if)e(the)h(w)m(ord)g(designator)g
-(b)s(egins)150 665 y(with)30 b(a)g(`)p Fp(^)p Fq(',)g(`)p
+(b)s(egins)150 1235 y(with)30 b(a)g(`)p Fp(^)p Fq(',)g(`)p
Fp($)p Fq(',)g(`)p Fp(*)p Fq(',)h(`)p Fp(-)p Fq(',)f(or)g(`)p
Fp(\045)p Fq('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i
(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150
-775 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)41
-b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f(line)g
-(separated)h(b)m(y)150 884 y(single)h(spaces.)275 1026
-y(F)-8 b(or)31 b(example,)150 1197 y Fp(!!)384 b Fq(designates)37
-b(the)f(preceding)g(command.)57 b(When)35 b(y)m(ou)i(t)m(yp)s(e)f
-(this,)h(the)f(preceding)g(com-)630 1307 y(mand)30 b(is)g(rep)s(eated)g
-(in)g(toto.)150 1474 y Fp(!!:$)288 b Fq(designates)23
-b(the)g(last)g(argumen)m(t)g(of)f(the)h(preceding)f(command.)38
-b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 1583 y(to)31
-b Fp(!$)p Fq(.)150 1750 y Fp(!fi:2)240 b Fq(designates)30
-b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f(recen)m(t)i(command)e
-(starting)h(with)f(the)630 1860 y(letters)j Fp(fi)p Fq(.)275
-2031 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150
-2202 y Fp(0)g(\(zero\))114 b Fq(The)30 b Fp(0)p Fq(th)g(w)m(ord.)40
-b(F)-8 b(or)31 b(man)m(y)g(applications,)h(this)e(is)g(the)h(command)f
-(w)m(ord.)150 2369 y Fi(n)432 b Fq(The)30 b Fk(n)p Fq(th)g(w)m(ord.)150
-2536 y Fp(^)432 b Fq(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m
-(ord)g(1.)150 2703 y Fp($)432 b Fq(The)30 b(last)h(argumen)m(t.)150
-2870 y Fp(\045)432 b Fq(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h
+1345 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)
+41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f
+(line)g(separated)h(b)m(y)150 1454 y(single)h(spaces.)275
+1587 y(F)-8 b(or)31 b(example,)150 1742 y Fp(!!)384 b
+Fq(designates)37 b(the)f(preceding)g(command.)57 b(When)35
+b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630
+1852 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 2007
+y Fp(!!:$)288 b Fq(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the)
+h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630
+2117 y(to)31 b Fp(!$)p Fq(.)150 2273 y Fp(!fi:2)240 b
+Fq(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f
+(recen)m(t)i(command)e(starting)h(with)f(the)630 2382
+y(letters)j Fp(fi)p Fq(.)275 2538 y(Here)e(are)h(the)g(w)m(ord)f
+(designators:)150 2693 y Fp(0)g(\(zero\))114 b Fq(The)30
+b Fp(0)p Fq(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h
+(this)e(is)g(the)h(command)f(w)m(ord.)150 2849 y Fi(n)432
+b Fq(The)30 b Fk(n)p Fq(th)g(w)m(ord.)150 3004 y Fp(^)432
+b Fq(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150
+3160 y Fp($)432 b Fq(The)30 b(last)h(argumen)m(t.)150
+3315 y Fp(\045)432 b Fq(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h
(most)g(recen)m(t)g(`)p Fp(?)p Fi(string)p Fp(?)p Fq(')e(searc)m(h.)150
-3037 y Fi(x)p Fp(-)p Fi(y)336 b Fq(A)30 b(range)h(of)g(w)m(ords;)f(`)p
+3471 y Fi(x)p Fp(-)p Fi(y)336 b Fq(A)30 b(range)h(of)g(w)m(ords;)f(`)p
Fp(-)p Fi(y)p Fq(')g(abbreviates)h(`)p Fp(0-)p Fi(y)p
-Fq('.)150 3204 y Fp(*)432 b Fq(All)28 b(of)g(the)g(w)m(ords,)g(except)h
+Fq('.)150 3626 y Fp(*)432 b Fq(All)28 b(of)g(the)g(w)m(ords,)g(except)h
(the)e Fp(0)p Fq(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p
Fp(1-$)p Fq('.)39 b(It)28 b(is)g(not)g(an)f(error)630
-3313 y(to)j(use)g(`)p Fp(*)p Fq(')f(if)h(there)g(is)g(just)f(one)h(w)m
+3736 y(to)j(use)g(`)p Fp(*)p Fq(')f(if)h(there)g(is)g(just)f(one)h(w)m
(ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h
-(returned)e(in)630 3423 y(that)j(case.)150 3590 y Fi(x)p
+(returned)e(in)630 3845 y(that)j(case.)150 4001 y Fi(x)p
Fp(*)384 b Fq(Abbreviates)31 b(`)p Fi(x)p Fp(-$)p Fq(')150
-3757 y Fi(x)p Fp(-)384 b Fq(Abbreviates)31 b(`)p Fi(x)p
+4156 y Fi(x)p Fp(-)384 b Fq(Abbreviates)31 b(`)p Fi(x)p
Fp(-$)p Fq(')f(lik)m(e)h(`)p Fi(x)p Fp(*)p Fq(',)g(but)f(omits)h(the)f
-(last)h(w)m(ord.)275 3928 y(If)i(a)h(w)m(ord)g(designator)g(is)g
+(last)h(w)m(ord.)275 4312 y(If)i(a)h(w)m(ord)g(designator)g(is)g
(supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h(the)e
-(previous)f(command)150 4038 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150
-4244 y Fj(1.1.3)63 b(Mo)s(di\014ers)150 4391 y Fq(After)29
+(previous)f(command)150 4422 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150
+4617 y Fj(1.1.3)63 b(Mo)s(di\014ers)150 4764 y Fq(After)29
b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g(add)f(a)h
(sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing)150
-4501 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p
-Fp(:)p Fq('.)150 4672 y Fp(h)432 b Fq(Remo)m(v)m(e)32
+4873 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p
+Fp(:)p Fq('.)150 5029 y Fp(h)432 b Fq(Remo)m(v)m(e)32
b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the)
-h(head.)150 4839 y Fp(t)432 b Fq(Remo)m(v)m(e)32 b(all)f(leading)h
+h(head.)150 5184 y Fp(t)432 b Fq(Remo)m(v)m(e)32 b(all)f(leading)h
(pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150
-5006 y Fp(r)432 b Fq(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g
+5340 y Fp(r)432 b Fq(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g
(the)h(form)f(`)p Fp(.)p Fi(suffix)p Fq(',)f(lea)m(ving)j(the)f
-(basename.)150 5173 y Fp(e)432 b Fq(Remo)m(v)m(e)32 b(all)f(but)f(the)h
-(trailing)g(su\016x.)150 5340 y Fp(p)432 b Fq(Prin)m(t)30
-b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i(it.)p
-eop end
+(basename.)p eop end
%%Page: 3 6
TeXDict begin 3 5 bop 150 -116 a Fq(Chapter)30 b(1:)41
b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(3)150
-299 y Fp(s/)p Fi(old)p Fp(/)p Fi(new)p Fp(/)630 408 y
-Fq(Substitute)32 b Fk(new)40 b Fq(for)32 b(the)h(\014rst)f(o)s
-(ccurrence)h(of)f Fk(old)37 b Fq(in)32 b(the)h(ev)m(en)m(t)h(line.)48
-b(An)m(y)32 b(delimiter)630 518 y(ma)m(y)25 b(b)s(e)g(used)f(in)g
-(place)i(of)f(`)p Fp(/)p Fq('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s
-(e)e(quoted)h(in)f Fk(old)29 b Fq(and)24 b Fk(new)32
-b Fq(with)25 b(a)630 628 y(single)k(bac)m(kslash.)40
-b(If)28 b(`)p Fp(&)p Fq(')g(app)s(ears)g(in)f Fk(new)p
-Fq(,)i(it)f(is)h(replaced)f(b)m(y)g Fk(old)p Fq(.)40
-b(A)28 b(single)h(bac)m(kslash)630 737 y(will)35 b(quote)g(the)g(`)p
-Fp(&)p Fq('.)54 b(The)34 b(\014nal)g(delimiter)i(is)e(optional)i(if)f
-(it)g(is)f(the)h(last)h(c)m(haracter)g(on)630 847 y(the)31
-b(input)e(line.)150 1006 y Fp(&)432 b Fq(Rep)s(eat)31
-b(the)f(previous)g(substitution.)150 1166 y Fp(g)150
-1275 y(a)432 b Fq(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f(applied)h(o)m(v)
-m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66 b(Used)39
-b(in)f(conjunction)630 1385 y(with)30 b(`)p Fp(s)p Fq(',)h(as)f(in)h
-Fp(gs/)p Fi(old)p Fp(/)p Fi(new)p Fp(/)p Fq(,)c(or)j(with)h(`)p
-Fp(&)p Fq('.)150 1544 y Fp(G)432 b Fq(Apply)30 b(the)g(follo)m(wing)i
-(`)p Fp(s)p Fq(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g
-(the)g(ev)m(en)m(t.)p eop end
+299 y Fp(e)432 b Fq(Remo)m(v)m(e)32 b(all)f(but)f(the)h(trailing)g
+(su\016x.)150 458 y Fp(p)432 b Fq(Prin)m(t)30 b(the)h(new)f(command)g
+(but)g(do)g(not)g(execute)i(it.)150 618 y Fp(s/)p Fi(old)p
+Fp(/)p Fi(new)p Fp(/)630 727 y Fq(Substitute)g Fk(new)40
+b Fq(for)32 b(the)h(\014rst)f(o)s(ccurrence)h(of)f Fk(old)37
+b Fq(in)32 b(the)h(ev)m(en)m(t)h(line.)48 b(An)m(y)32
+b(delimiter)630 837 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p
+Fp(/)p Fq('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s(e)e(quoted)h(in)f
+Fk(old)29 b Fq(and)24 b Fk(new)32 b Fq(with)25 b(a)630
+946 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Fp(&)p
+Fq(')g(app)s(ears)g(in)f Fk(new)p Fq(,)i(it)f(is)h(replaced)f(b)m(y)g
+Fk(old)p Fq(.)40 b(A)28 b(single)h(bac)m(kslash)630 1056
+y(will)35 b(quote)g(the)g(`)p Fp(&)p Fq('.)54 b(The)34
+b(\014nal)g(delimiter)i(is)e(optional)i(if)f(it)g(is)f(the)h(last)h(c)m
+(haracter)g(on)630 1166 y(the)31 b(input)e(line.)150
+1325 y Fp(&)432 b Fq(Rep)s(eat)31 b(the)f(previous)g(substitution.)150
+1484 y Fp(g)150 1594 y(a)432 b Fq(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f
+(applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66
+b(Used)39 b(in)f(conjunction)630 1704 y(with)30 b(`)p
+Fp(s)p Fq(',)h(as)f(in)h Fp(gs/)p Fi(old)p Fp(/)p Fi(new)p
+Fp(/)p Fq(,)c(or)j(with)h(`)p Fp(&)p Fq('.)150 1863 y
+Fp(G)432 b Fq(Apply)30 b(the)g(follo)m(wing)i(`)p Fp(s)p
+Fq(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g(the)g(ev)m
+(en)m(t.)p eop end
%%Page: 4 7
TeXDict begin 4 6 bop 3705 -116 a Fq(4)150 299 y Fm(2)80
b(Programming)54 b(with)f(GNU)h(History)150 544 y Fq(This)41
@@ -5472,426 +5497,459 @@ b(Programming)30 b(with)g(GNU)h(History)1780 b(5)485
b(/*)48 b(Number)e(of)h(elements)e(within)i(this)f(array.)g(*/)485
518 y(int)h(size;)619 b(/*)48 b(Number)e(of)h(slots)f(allocated)g(to)h
(this)f(array.)g(*/)485 628 y(int)h(flags;)390 737 y(})g
-(HISTORY_STATE;)275 869 y Fq(If)29 b(the)i(\015ags)g(mem)m(b)s(er)e
+(HISTORY_STATE;)275 890 y Fq(If)29 b(the)i(\015ags)g(mem)m(b)s(er)e
(includes)h Fp(HS_STIFLED)p Fq(,)e(the)j(history)f(has)g(b)s(een)g
-(sti\015ed.)150 1106 y Fo(2.3)68 b(History)46 b(F)-11
-b(unctions)150 1265 y Fq(This)33 b(section)j(describ)s(es)d(the)i
+(sti\015ed.)150 1157 y Fo(2.3)68 b(History)46 b(F)-11
+b(unctions)150 1317 y Fq(This)33 b(section)j(describ)s(es)d(the)i
(calling)g(sequence)g(for)f(the)g(v)-5 b(arious)34 b(functions)g(exp)s
-(orted)g(b)m(y)g(the)g Fl(gnu)150 1375 y Fq(History)d(library)-8
-b(.)150 1569 y Fj(2.3.1)63 b(Initializing)40 b(History)i(and)f(State)f
-(Managemen)m(t)150 1716 y Fq(This)21 b(section)i(describ)s(es)f
+(orted)g(b)m(y)g(the)g Fl(gnu)150 1426 y Fq(History)d(library)-8
+b(.)150 1644 y Fj(2.3.1)63 b(Initializing)40 b(History)i(and)f(State)f
+(Managemen)m(t)150 1791 y Fq(This)21 b(section)i(describ)s(es)f
(functions)f(used)g(to)i(initialize)h(and)e(manage)h(the)f(state)h(of)g
-(the)f(History)g(library)150 1826 y(when)29 b(y)m(ou)i(w)m(an)m(t)g(to)
+(the)f(History)g(library)150 1900 y(when)29 b(y)m(ou)i(w)m(an)m(t)g(to)
g(use)f(the)h(history)f(functions)g(in)g(y)m(our)h(program.)3350
-2003 y([F)-8 b(unction])-3599 b Fh(void)54 b(using_history)49
-b Fg(\()p Ff(v)m(oid)p Fg(\))390 2113 y Fq(Begin)41 b(a)f(session)g(in)
+2120 y([F)-8 b(unction])-3599 b Fh(void)54 b(using_history)49
+b Fg(\()p Ff(v)m(oid)p Fg(\))390 2230 y Fq(Begin)41 b(a)f(session)g(in)
g(whic)m(h)f(the)h(history)g(functions)f(migh)m(t)i(b)s(e)e(used.)69
-b(This)39 b(initializes)j(the)390 2222 y(in)m(teractiv)m(e)33
-b(v)-5 b(ariables.)3350 2400 y([F)d(unction])-3599 b
+b(This)39 b(initializes)j(the)390 2339 y(in)m(teractiv)m(e)33
+b(v)-5 b(ariables.)3350 2560 y([F)d(unction])-3599 b
Fh(HISTORY_STATE)56 b(*)d(history_get_history_st)q(ate)f
-Fg(\()p Ff(v)m(oid)p Fg(\))390 2509 y Fq(Return)30 b(a)g(structure)g
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2669 y Fq(Return)30 b(a)g(structure)g
(describing)g(the)h(curren)m(t)f(state)i(of)e(the)h(input)e(history)-8
-b(.)3350 2687 y([F)g(unction])-3599 b Fh(void)54 b
+b(.)3350 2890 y([F)g(unction])-3599 b Fh(void)54 b
(history_set_history_stat)q(e)e Fg(\()p Ff(HISTOR)-8
-b(Y)p 2262 2687 30 5 v 44 w(ST)g(A)g(TE)32 b(*state)p
-Fg(\))390 2796 y Fq(Set)f(the)f(state)i(of)e(the)h(history)f(list)h
-(according)h(to)f Fk(state)p Fq(.)150 2991 y Fj(2.3.2)63
-b(History)41 b(List)g(Managemen)m(t)150 3138 y Fq(These)32
+b(Y)p 2262 2890 30 5 v 44 w(ST)g(A)g(TE)32 b(*state)p
+Fg(\))390 2999 y Fq(Set)f(the)f(state)i(of)e(the)h(history)f(list)h
+(according)h(to)f Fk(state)p Fq(.)150 3216 y Fj(2.3.2)63
+b(History)41 b(List)g(Managemen)m(t)150 3363 y Fq(These)32
b(functions)f(manage)i(individual)f(en)m(tries)g(on)g(the)g(history)g
-(list,)h(or)f(set)h(parameters)f(managing)150 3247 y(the)f(list)g
-(itself.)3350 3425 y([F)-8 b(unction])-3599 b Fh(void)54
+(list,)h(or)f(set)h(parameters)f(managing)150 3473 y(the)f(list)g
+(itself.)3350 3693 y([F)-8 b(unction])-3599 b Fh(void)54
b(add_history)48 b Fg(\()p Ff(const)34 b(c)m(har)g(*string)p
-Fg(\))390 3534 y Fq(Place)d Fk(string)38 b Fq(at)31 b(the)f(end)f(of)h
-(the)g(history)g(list.)42 b(The)29 b(asso)s(ciated)i(data)g(\014eld)f
-(\(if)g(an)m(y\))h(is)f(set)g(to)390 3644 y Fp(NULL)p
-Fq(.)3350 3821 y([F)-8 b(unction])-3599 b Fh(void)54
-b(add_history_time)c Fg(\()p Ff(const)34 b(c)m(har)g(*string)p
-Fg(\))390 3931 y Fq(Change)c(the)h(time)g(stamp)f(asso)s(ciated)i(with)
-e(the)h(most)f(recen)m(t)i(history)e(en)m(try)h(to)g
-Fk(string)p Fq(.)3350 4108 y([F)-8 b(unction])-3599 b
-Fh(HIST_ENTRY)55 b(*)e(remove_history)d Fg(\()p Ff(in)m(t)33
-b(whic)m(h)p Fg(\))390 4218 y Fq(Remo)m(v)m(e)47 b(history)f(en)m(try)f
-(at)i(o\013set)f Fk(whic)m(h)f Fq(from)g(the)h(history)-8
-b(.)86 b(The)45 b(remo)m(v)m(ed)i(elemen)m(t)g(is)390
-4328 y(returned)29 b(so)i(y)m(ou)g(can)f(free)h(the)f(line,)h(data,)h
-(and)d(con)m(taining)j(structure.)3350 4505 y([F)-8 b(unction])-3599
-b Fh(histdata_t)55 b(free_history_entry)c Fg(\()p Ff(HIST)p
-1992 4505 V 44 w(ENTR)-8 b(Y)33 b(*histen)m(t)p Fg(\))390
-4615 y Fq(F)-8 b(ree)29 b(the)f(history)g(en)m(try)g
+Fg(\))390 3803 y Fq(Place)j Fk(string)44 b Fq(at)37 b(the)g(end)e(of)i
+(the)f(history)g(list.)59 b(The)36 b(asso)s(ciated)h(data)g(\014eld)f
+(\(if)g(an)m(y\))h(is)f(set)390 3912 y(to)44 b Fp(NULL)p
+Fq(.)79 b(If)44 b(the)f(maxim)m(um)h(n)m(um)m(b)s(er)e(of)i(history)f
+(en)m(tries)i(has)e(b)s(een)g(set)h(using)f Fp(stifle_)390
+4022 y(history\(\))p Fq(,)28 b(and)h(the)h(new)f(n)m(um)m(b)s(er)g(of)h
+(history)g(en)m(tries)h(w)m(ould)e(exceed)i(that)g(maxim)m(um,)f(the)
+390 4131 y(oldest)h(history)f(en)m(try)h(is)f(remo)m(v)m(ed.)3350
+4352 y([F)-8 b(unction])-3599 b Fh(void)54 b(add_history_time)c
+Fg(\()p Ff(const)34 b(c)m(har)g(*string)p Fg(\))390 4461
+y Fq(Change)c(the)h(time)g(stamp)f(asso)s(ciated)i(with)e(the)h(most)f
+(recen)m(t)i(history)e(en)m(try)h(to)g Fk(string)p Fq(.)3350
+4681 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(remove_history)d
+Fg(\()p Ff(in)m(t)33 b(whic)m(h)p Fg(\))390 4791 y Fq(Remo)m(v)m(e)47
+b(history)f(en)m(try)f(at)i(o\013set)f Fk(whic)m(h)f
+Fq(from)g(the)h(history)-8 b(.)86 b(The)45 b(remo)m(v)m(ed)i(elemen)m
+(t)g(is)390 4901 y(returned)29 b(so)i(y)m(ou)g(can)f(free)h(the)f
+(line,)h(data,)h(and)d(con)m(taining)j(structure.)3350
+5121 y([F)-8 b(unction])-3599 b Fh(histdata_t)55 b(free_history_entry)c
+Fg(\()p Ff(HIST)p 1992 5121 V 44 w(ENTR)-8 b(Y)33 b(*histen)m(t)p
+Fg(\))390 5230 y Fq(F)-8 b(ree)29 b(the)f(history)g(en)m(try)g
Fk(histen)m(t)j Fq(and)c(an)m(y)i(history)e(library)h(priv)-5
-b(ate)28 b(data)h(asso)s(ciated)g(with)f(it.)390 4724
+b(ate)28 b(data)h(asso)s(ciated)g(with)f(it.)390 5340
y(Returns)h(the)i(application-sp)s(eci\014c)h(data)f(so)g(the)f(caller)
-i(can)e(disp)s(ose)g(of)h(it.)3350 4902 y([F)-8 b(unction])-3599
-b Fh(HIST_ENTRY)55 b(*)e(replace_history_entry)f Fg(\()p
-Ff(in)m(t)33 b(whic)m(h,)h(const)g(c)m(har)g(*line,)565
-5011 y(histdata)p 927 5011 V 44 w(t)f(data)p Fg(\))390
-5121 y Fq(Mak)m(e)c(the)f(history)f(en)m(try)h(at)h(o\013set)f
-Fk(whic)m(h)g Fq(ha)m(v)m(e)g Fk(line)33 b Fq(and)27
-b Fk(data)p Fq(.)41 b(This)27 b(returns)f(the)i(old)g(en)m(try)390
-5230 y(so)37 b(the)h(caller)g(can)f(disp)s(ose)g(of)g(an)m(y)g
-(application-sp)s(eci\014c)i(data.)61 b(In)37 b(the)g(case)h(of)f(an)g
-(in)m(v)-5 b(alid)390 5340 y Fk(whic)m(h)p Fq(,)30 b(a)h
-Fp(NULL)e Fq(p)s(oin)m(ter)i(is)f(returned.)p eop end
+i(can)e(disp)s(ose)g(of)h(it.)p eop end
%%Page: 6 9
TeXDict begin 6 8 bop 150 -116 a Fq(Chapter)30 b(2:)41
b(Programming)30 b(with)g(GNU)h(History)1780 b(6)3350
-299 y([F)-8 b(unction])-3599 b Fh(void)54 b(clear_history)49
-b Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Fq(Clear)31 b(the)f(history)h
+299 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e
+(replace_history_entry)f Fg(\()p Ff(in)m(t)33 b(whic)m(h,)h(const)g(c)m
+(har)g(*line,)565 408 y(histdata)p 927 408 30 5 v 44
+w(t)f(data)p Fg(\))390 518 y Fq(Mak)m(e)c(the)f(history)f(en)m(try)h
+(at)h(o\013set)f Fk(whic)m(h)g Fq(ha)m(v)m(e)g Fk(line)33
+b Fq(and)27 b Fk(data)p Fq(.)41 b(This)27 b(returns)f(the)i(old)g(en)m
+(try)390 628 y(so)37 b(the)h(caller)g(can)f(disp)s(ose)g(of)g(an)m(y)g
+(application-sp)s(eci\014c)i(data.)61 b(In)37 b(the)g(case)h(of)f(an)g
+(in)m(v)-5 b(alid)390 737 y Fk(whic)m(h)p Fq(,)30 b(a)h
+Fp(NULL)e Fq(p)s(oin)m(ter)i(is)f(returned.)3350 941
+y([F)-8 b(unction])-3599 b Fh(void)54 b(clear_history)49
+b Fg(\()p Ff(v)m(oid)p Fg(\))390 1051 y Fq(Clear)31 b(the)f(history)h
(list)g(b)m(y)f(deleting)h(all)h(the)e(en)m(tries.)3350
-586 y([F)-8 b(unction])-3599 b Fh(void)54 b(stifle_history)49
-b Fg(\()p Ff(in)m(t)34 b(max)p Fg(\))390 695 y Fq(Sti\015e)c(the)h
-(history)f(list,)h(remem)m(b)s(ering)f(only)h(the)f(last)i
-Fk(max)k Fq(en)m(tries.)3350 872 y([F)-8 b(unction])-3599
-b Fh(int)53 b(unstifle_history)e Fg(\()p Ff(v)m(oid)p
-Fg(\))390 982 y Fq(Stop)27 b(sti\015ing)h(the)f(history)-8
-b(.)40 b(This)27 b(returns)f(the)h(previously-set)h(maxim)m(um)f(n)m
-(um)m(b)s(er)f(of)i(history)390 1091 y(en)m(tries)g(\(as)f(set)g(b)m(y)
-g Fp(stifle_history\(\))p Fq(\).)35 b(The)27 b(v)-5 b(alue)27
+1254 y([F)-8 b(unction])-3599 b Fh(void)54 b(stifle_history)49
+b Fg(\()p Ff(in)m(t)34 b(max)p Fg(\))390 1364 y Fq(Sti\015e)j(the)f
+(history)h(list,)i(remem)m(b)s(ering)d(only)h(the)f(last)i
+Fk(max)43 b Fq(en)m(tries.)60 b(The)36 b(history)g(list)i(will)390
+1473 y(con)m(tain)32 b(only)e Fk(max)37 b Fq(en)m(tries)31
+b(at)g(a)g(time.)3350 1677 y([F)-8 b(unction])-3599 b
+Fh(int)53 b(unstifle_history)e Fg(\()p Ff(v)m(oid)p Fg(\))390
+1787 y Fq(Stop)27 b(sti\015ing)h(the)f(history)-8 b(.)40
+b(This)27 b(returns)f(the)h(previously-set)h(maxim)m(um)f(n)m(um)m(b)s
+(er)f(of)i(history)390 1896 y(en)m(tries)g(\(as)f(set)g(b)m(y)g
+Fp(stifle_history\(\))p Fq(\).)35 b(The)27 b(v)-5 b(alue)27
b(is)g(p)s(ositiv)m(e)g(if)g(the)g(history)g(w)m(as)g(sti\015ed,)390
-1201 y(negativ)m(e)33 b(if)d(it)h(w)m(asn't.)3350 1378
+2006 y(negativ)m(e)33 b(if)d(it)h(w)m(asn't.)3350 2210
y([F)-8 b(unction])-3599 b Fh(int)53 b(history_is_stifled)e
-Fg(\()p Ff(v)m(oid)p Fg(\))390 1488 y Fq(Returns)29 b(non-zero)i(if)g
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2319 y Fq(Returns)29 b(non-zero)i(if)g
(the)f(history)h(is)f(sti\015ed,)g(zero)i(if)e(it)h(is)f(not.)150
-1682 y Fj(2.3.3)63 b(Information)42 b(Ab)s(out)f(the)g(History)g(List)
-150 1829 y Fq(These)30 b(functions)g(return)f(information)i(ab)s(out)f
+2528 y Fj(2.3.3)63 b(Information)42 b(Ab)s(out)f(the)g(History)g(List)
+150 2675 y Fq(These)30 b(functions)g(return)f(information)i(ab)s(out)f
(the)h(en)m(tire)g(history)f(list)h(or)g(individual)e(list)i(en)m
-(tries.)3350 2006 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55
+(tries.)3350 2879 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55
b(**)e(history_list)c Fg(\()p Ff(v)m(oid)p Fg(\))390
-2116 y Fq(Return)30 b(a)h Fp(NULL)e Fq(terminated)i(arra)m(y)g(of)f
+2989 y Fq(Return)30 b(a)h Fp(NULL)e Fq(terminated)i(arra)m(y)g(of)f
Fp(HIST_ENTRY)e(*)i Fq(whic)m(h)g(is)h(the)g(curren)m(t)f(input)f
-(history)-8 b(.)390 2225 y(Elemen)m(t)31 b(0)g(of)g(this)f(list)h(is)f
+(history)-8 b(.)390 3098 y(Elemen)m(t)31 b(0)g(of)g(this)f(list)h(is)f
(the)h(b)s(eginning)f(of)g(time.)42 b(If)29 b(there)i(is)f(no)h
-(history)-8 b(,)31 b(return)e Fp(NULL)p Fq(.)3350 2402
+(history)-8 b(,)31 b(return)e Fp(NULL)p Fq(.)3350 3302
y([F)-8 b(unction])-3599 b Fh(int)53 b(where_history)d
-Fg(\()p Ff(v)m(oid)p Fg(\))390 2512 y Fq(Returns)29 b(the)i(o\013set)g
-(of)g(the)g(curren)m(t)f(history)g(elemen)m(t.)3350 2689
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3411 y Fq(Returns)29 b(the)i(o\013set)g
+(of)g(the)g(curren)m(t)f(history)g(elemen)m(t.)3350 3615
y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(current_history)d
-Fg(\()p Ff(v)m(oid)p Fg(\))390 2798 y Fq(Return)24 b(the)h(history)g
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3725 y Fq(Return)24 b(the)h(history)g
(en)m(try)g(at)h(the)f(curren)m(t)f(p)s(osition,)j(as)e(determined)f(b)
-m(y)h Fp(where_history\(\))p Fq(.)390 2908 y(If)30 b(there)g(is)h(no)f
+m(y)h Fp(where_history\(\))p Fq(.)390 3834 y(If)30 b(there)g(is)h(no)f
(en)m(try)h(there,)g(return)e(a)i Fp(NULL)e Fq(p)s(oin)m(ter.)3350
-3085 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(history_get)c
-Fg(\()p Ff(in)m(t)33 b(o\013set)p Fg(\))390 3195 y Fq(Return)41
-b(the)g(history)h(en)m(try)g(at)g(p)s(osition)g Fk(o\013set)p
-Fq(,)j(starting)e(from)e Fp(history_base)d Fq(\(see)k(Sec-)390
-3304 y(tion)32 b(2.4)i([History)e(V)-8 b(ariables],)35
-b(page)d(8\).)47 b(If)31 b(there)i(is)f(no)g(en)m(try)g(there,)h(or)f
-(if)g Fk(o\013set)j Fq(is)d(greater)390 3414 y(than)e(the)h(history)f
-(length,)h(return)e(a)i Fp(NULL)e Fq(p)s(oin)m(ter.)3350
-3591 y([F)-8 b(unction])-3599 b Fh(time_t)54 b(history_get_time)c
-Fg(\()p Ff(HIST)p 1678 3591 30 5 v 45 w(ENTR)-8 b(Y)32
-b(*en)m(try)p Fg(\))390 3700 y Fq(Return)g(the)i(time)g(stamp)f(asso)s
+4038 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(history_get)c
+Fg(\()p Ff(in)m(t)33 b(o\013set)p Fg(\))390 4148 y Fq(Return)e(the)g
+(history)h(en)m(try)g(at)g(p)s(osition)g Fk(o\013set)p
+Fq(.)45 b(The)31 b(range)h(of)g(v)-5 b(alid)31 b(v)-5
+b(alues)32 b(of)g Fk(o\013set)j Fq(starts)390 4257 y(at)d
+Fp(history_base)c Fq(and)i(ends)h(at)g Fk(history)p 1885
+4257 28 4 v 40 w(length)h Fq(-)f(1)h(\(see)g(Section)g(2.4)g([History)g
+(V)-8 b(ariables],)390 4367 y(page)27 b(9\).)40 b(If)26
+b(there)g(is)g(no)g(en)m(try)h(there,)g(or)f(if)g Fk(o\013set)j
+Fq(is)e(outside)f(the)g(v)-5 b(alid)27 b(range,)g(return)f(a)g
+Fp(NULL)390 4476 y Fq(p)s(oin)m(ter.)3350 4680 y([F)-8
+b(unction])-3599 b Fh(time_t)54 b(history_get_time)c
+Fg(\()p Ff(HIST)p 1678 4680 30 5 v 45 w(ENTR)-8 b(Y)32
+b(*en)m(try)p Fg(\))390 4790 y Fq(Return)g(the)i(time)g(stamp)f(asso)s
(ciated)h(with)f(the)g(history)g(en)m(try)h Fk(en)m(try)p
-Fq(.)49 b(If)33 b(the)g(timestamp)h(is)390 3810 y(missing)c(or)h(in)m
-(v)-5 b(alid,)31 b(return)e(0.)3350 3987 y([F)-8 b(unction])-3599
+Fq(.)49 b(If)33 b(the)g(timestamp)h(is)390 4899 y(missing)c(or)h(in)m
+(v)-5 b(alid,)31 b(return)e(0.)3350 5103 y([F)-8 b(unction])-3599
b Fh(int)53 b(history_total_bytes)e Fg(\()p Ff(v)m(oid)p
-Fg(\))390 4097 y Fq(Return)27 b(the)h(n)m(um)m(b)s(er)e(of)i(b)m(ytes)g
+Fg(\))390 5213 y Fq(Return)27 b(the)h(n)m(um)m(b)s(er)e(of)i(b)m(ytes)g
(that)g(the)g(primary)e(history)i(en)m(tries)g(are)g(using.)39
-b(This)27 b(function)390 4206 y(returns)i(the)i(sum)e(of)i(the)f
+b(This)27 b(function)390 5322 y(returns)i(the)i(sum)e(of)i(the)f
(lengths)h(of)f(all)i(the)e(lines)h(in)f(the)g(history)-8
-b(.)150 4401 y Fj(2.3.4)63 b(Mo)m(ving)41 b(Around)h(the)f(History)g
-(List)150 4548 y Fq(These)30 b(functions)g(allo)m(w)i(the)e(curren)m(t)
-h(index)f(in)m(to)h(the)f(history)h(list)g(to)g(b)s(e)f(set)h(or)f(c)m
-(hanged.)3350 4725 y([F)-8 b(unction])-3599 b Fh(int)53
-b(history_set_pos)d Fg(\()p Ff(in)m(t)34 b(p)s(os)p Fg(\))390
-4834 y Fq(Set)j(the)g(curren)m(t)f(history)g(o\013set)i(to)f
-Fk(p)s(os)p Fq(,)h(an)f(absolute)g(index)f(in)m(to)i(the)e(list.)60
-b(Returns)36 b(1)h(on)390 4944 y(success,)31 b(0)g(if)f
-Fk(p)s(os)j Fq(is)e(less)f(than)h(zero)g(or)f(greater)i(than)e(the)g(n)
-m(um)m(b)s(er)f(of)i(history)f(en)m(tries.)3350 5121
-y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(previous_history)d
-Fg(\()p Ff(v)m(oid)p Fg(\))390 5230 y Fq(Bac)m(k)30 b(up)e(the)h
-(curren)m(t)g(history)f(o\013set)i(to)g(the)f(previous)f(history)h(en)m
-(try)-8 b(,)30 b(and)e(return)g(a)h(p)s(oin)m(ter)390
-5340 y(to)i(that)g(en)m(try)-8 b(.)41 b(If)30 b(there)h(is)f(no)h
-(previous)f(en)m(try)-8 b(,)31 b(return)e(a)i Fp(NULL)e
-Fq(p)s(oin)m(ter.)p eop end
+b(.)p eop end
%%Page: 7 10
TeXDict begin 7 9 bop 150 -116 a Fq(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(History)1780 b(7)3350
-299 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(next_history)c
-Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Fq(If)20 b(the)h(curren)m(t)f
+b(Programming)30 b(with)g(GNU)h(History)1780 b(7)150
+299 y Fj(2.3.4)63 b(Mo)m(ving)41 b(Around)h(the)f(History)g(List)150
+446 y Fq(These)30 b(functions)g(allo)m(w)i(the)e(curren)m(t)h(index)f
+(in)m(to)h(the)f(history)h(list)g(to)g(b)s(e)f(set)h(or)f(c)m(hanged.)
+3350 624 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_set_pos)d
+Fg(\()p Ff(in)m(t)34 b(p)s(os)p Fg(\))390 734 y Fq(Set)j(the)g(curren)m
+(t)f(history)g(o\013set)i(to)f Fk(p)s(os)p Fq(,)h(an)f(absolute)g
+(index)f(in)m(to)i(the)e(list.)60 b(Returns)36 b(1)h(on)390
+844 y(success,)31 b(0)g(if)f Fk(p)s(os)j Fq(is)e(less)f(than)h(zero)g
+(or)f(greater)i(than)e(the)g(n)m(um)m(b)s(er)f(of)i(history)f(en)m
+(tries.)3350 1022 y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55
+b(*)e(previous_history)d Fg(\()p Ff(v)m(oid)p Fg(\))390
+1132 y Fq(Bac)m(k)30 b(up)e(the)h(curren)m(t)g(history)f(o\013set)i(to)
+g(the)f(previous)f(history)h(en)m(try)-8 b(,)30 b(and)e(return)g(a)h(p)
+s(oin)m(ter)390 1241 y(to)i(that)g(en)m(try)-8 b(.)41
+b(If)30 b(there)h(is)f(no)h(previous)f(en)m(try)-8 b(,)31
+b(return)e(a)i Fp(NULL)e Fq(p)s(oin)m(ter.)3350 1420
+y([F)-8 b(unction])-3599 b Fh(HIST_ENTRY)55 b(*)e(next_history)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 1530 y Fq(If)20 b(the)h(curren)m(t)f
(history)h(o\013set)g(refers)g(to)g(a)g(v)-5 b(alid)21
b(history)f(en)m(try)-8 b(,)24 b(incremen)m(t)d(the)g(curren)m(t)f
-(history)390 518 y(o\013set.)41 b(If)27 b(the)g(p)s(ossibly-incremen)m
+(history)390 1639 y(o\013set.)41 b(If)27 b(the)g(p)s(ossibly-incremen)m
(ted)g(history)h(o\013set)g(refers)f(to)h(a)f(v)-5 b(alid)28
-b(history)f(en)m(try)-8 b(,)29 b(return)390 628 y(a)i(p)s(oin)m(ter)f
+b(history)f(en)m(try)-8 b(,)29 b(return)390 1749 y(a)i(p)s(oin)m(ter)f
(to)h(that)g(en)m(try;)g(otherwise,)g(return)e(a)i Fp(BNULL)e
-Fq(p)s(oin)m(ter.)150 823 y Fj(2.3.5)63 b(Searc)m(hing)40
-b(the)h(History)h(List)150 970 y Fq(These)36 b(functions)g(allo)m(w)i
+Fq(p)s(oin)m(ter.)150 1944 y Fj(2.3.5)63 b(Searc)m(hing)40
+b(the)h(History)h(List)150 2091 y Fq(These)36 b(functions)g(allo)m(w)i
(searc)m(hing)f(of)f(the)h(history)f(list)h(for)f(en)m(tries)h(con)m
-(taining)h(a)f(sp)s(eci\014c)f(string.)150 1079 y(Searc)m(hing)28
+(taining)h(a)f(sp)s(eci\014c)f(string.)150 2201 y(Searc)m(hing)28
b(ma)m(y)g(b)s(e)f(p)s(erformed)f(b)s(oth)h(forw)m(ard)f(and)h(bac)m
(kw)m(ard)h(from)f(the)h(curren)m(t)f(history)h(p)s(osition.)150
-1189 y(The)j(searc)m(h)h(ma)m(y)g(b)s(e)e Fk(anc)m(hored)p
+2310 y(The)j(searc)m(h)h(ma)m(y)g(b)s(e)e Fk(anc)m(hored)p
Fq(,)i(meaning)g(that)g(the)f(string)h(m)m(ust)f(matc)m(h)h(at)g(the)g
-(b)s(eginning)e(of)i(the)150 1299 y(history)e(en)m(try)-8
-b(.)3350 1477 y([F)g(unction])-3599 b Fh(int)53 b(history_search)d
+(b)s(eginning)e(of)i(the)150 2420 y(history)e(en)m(try)-8
+b(.)3350 2599 y([F)g(unction])-3599 b Fh(int)53 b(history_search)d
Fg(\()p Ff(const)34 b(c)m(har)g(*string,)e(in)m(t)i(direction)p
-Fg(\))390 1586 y Fq(Searc)m(h)29 b(the)g(history)g(for)g
+Fg(\))390 2708 y Fq(Searc)m(h)29 b(the)g(history)g(for)g
Fk(string)p Fq(,)g(starting)h(at)f(the)g(curren)m(t)g(history)g
(o\013set.)41 b(If)28 b Fk(direction)i Fq(is)f(less)390
-1696 y(than)40 b(0,)j(then)c(the)h(searc)m(h)h(is)f(through)f(previous)
+2818 y(than)40 b(0,)j(then)c(the)h(searc)m(h)h(is)f(through)f(previous)
h(en)m(tries,)j(otherwise)d(through)g(subsequen)m(t)390
-1806 y(en)m(tries.)i(If)30 b Fk(string)38 b Fq(is)30
+2927 y(en)m(tries.)i(If)30 b Fk(string)38 b Fq(is)30
b(found,)g(then)g(the)g(curren)m(t)h(history)f(index)g(is)g(set)h(to)h
-(that)f(history)f(en)m(try)-8 b(,)390 1915 y(and)33 b(the)g(v)-5
+(that)f(history)f(en)m(try)-8 b(,)390 3037 y(and)33 b(the)g(v)-5
b(alue)34 b(returned)e(is)i(the)g(o\013set)g(in)f(the)h(line)f(of)h
(the)g(en)m(try)f(where)g Fk(string)41 b Fq(w)m(as)34
-b(found.)390 2025 y(Otherwise,)c(nothing)h(is)f(c)m(hanged,)h(and)f(a)h
-(-1)g(is)f(returned.)3350 2203 y([F)-8 b(unction])-3599
+b(found.)390 3147 y(Otherwise,)c(nothing)h(is)f(c)m(hanged,)h(and)f(a)h
+(-1)g(is)f(returned.)3350 3325 y([F)-8 b(unction])-3599
b Fh(int)53 b(history_search_prefix)f Fg(\()p Ff(const)34
b(c)m(har)g(*string,)f(in)m(t)g(direction)p Fg(\))390
-2312 y Fq(Searc)m(h)41 b(the)g(history)f(for)g Fk(string)p
+3435 y Fq(Searc)m(h)41 b(the)g(history)f(for)g Fk(string)p
Fq(,)k(starting)d(at)g(the)g(curren)m(t)f(history)h(o\013set.)72
-b(The)40 b(searc)m(h)h(is)390 2422 y(anc)m(hored:)f(matc)m(hing)31
+b(The)40 b(searc)m(h)h(is)390 3544 y(anc)m(hored:)f(matc)m(hing)31
b(lines)f(m)m(ust)f(b)s(egin)g(with)g Fk(string)p Fq(.)40
b(If)29 b Fk(direction)h Fq(is)g(less)f(than)g(0,)i(then)e(the)390
-2532 y(searc)m(h)j(is)f(through)g(previous)g(en)m(tries,)h(otherwise)g
+3654 y(searc)m(h)j(is)f(through)g(previous)g(en)m(tries,)h(otherwise)g
(through)e(subsequen)m(t)h(en)m(tries.)44 b(If)31 b Fk(string)39
-b Fq(is)390 2641 y(found,)33 b(then)f(the)h(curren)m(t)g(history)g
+b Fq(is)390 3764 y(found,)33 b(then)f(the)h(curren)m(t)g(history)g
(index)g(is)g(set)g(to)h(that)g(en)m(try)-8 b(,)34 b(and)f(the)g
-(return)f(v)-5 b(alue)33 b(is)g(0.)390 2751 y(Otherwise,)d(nothing)h
+(return)f(v)-5 b(alue)33 b(is)g(0.)390 3873 y(Otherwise,)d(nothing)h
(is)f(c)m(hanged,)h(and)f(a)h(-1)g(is)f(returned.)3350
-2929 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_search_pos)e
+4052 y([F)-8 b(unction])-3599 b Fh(int)53 b(history_search_pos)e
Fg(\()p Ff(const)34 b(c)m(har)g(*string,)f(in)m(t)g(direction,)g(in)m
-(t)g(p)s(os)p Fg(\))390 3039 y Fq(Searc)m(h)h(for)g Fk(string)42
+(t)g(p)s(os)p Fg(\))390 4161 y Fq(Searc)m(h)h(for)g Fk(string)42
b Fq(in)34 b(the)h(history)f(list,)i(starting)f(at)g
Fk(p)s(os)p Fq(,)g(an)f(absolute)h(index)e(in)m(to)j(the)e(list.)390
-3148 y(If)i Fk(direction)g Fq(is)g(negativ)m(e,)k(the)c(searc)m(h)h
+4271 y(If)i Fk(direction)g Fq(is)g(negativ)m(e,)k(the)c(searc)m(h)h
(pro)s(ceeds)f(bac)m(kw)m(ard)g(from)g Fk(p)s(os)p Fq(,)h(otherwise)f
-(forw)m(ard.)390 3258 y(Returns)43 b(the)h(absolute)h(index)f(of)g(the)
+(forw)m(ard.)390 4381 y(Returns)43 b(the)h(absolute)h(index)f(of)g(the)
g(history)g(elemen)m(t)h(where)f Fk(string)52 b Fq(w)m(as)44
-b(found,)i(or)e(-1)390 3367 y(otherwise.)150 3563 y Fj(2.3.6)63
-b(Managing)41 b(the)g(History)h(File)150 3709 y Fq(The)26
+b(found,)i(or)e(-1)390 4490 y(otherwise.)150 4686 y Fj(2.3.6)63
+b(Managing)41 b(the)g(History)h(File)150 4833 y Fq(The)26
b(History)h(library)f(can)h(read)g(the)f(history)h(from)f(and)g(write)h
(it)g(to)g(a)g(\014le.)40 b(This)26 b(section)h(do)s(cumen)m(ts)150
-3819 y(the)k(functions)e(for)i(managing)g(a)g(history)f(\014le.)3350
-3997 y([F)-8 b(unction])-3599 b Fh(int)53 b(read_history)c
+4942 y(the)k(functions)e(for)i(managing)g(a)g(history)f(\014le.)3350
+5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(read_history)c
Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename)p Fg(\))390
-4107 y Fq(Add)29 b(the)h(con)m(ten)m(ts)h(of)f Fk(\014lename)k
+5230 y Fq(Add)29 b(the)h(con)m(ten)m(ts)h(of)f Fk(\014lename)k
Fq(to)d(the)f(history)f(list,)i(a)f(line)g(at)g(a)g(time.)41
b(If)29 b Fk(\014lename)35 b Fq(is)30 b Fp(NULL)p Fq(,)390
-4216 y(then)g(read)g(from)g Fp(~/.history)p Fq(.)38 b(Returns)30
-b(0)g(if)h(successful,)f(or)g Fp(errno)f Fq(if)i(not.)3350
-4395 y([F)-8 b(unction])-3599 b Fh(int)53 b(read_history_range)e
+5340 y(then)g(read)g(from)g Fp(~/.history)p Fq(.)38 b(Returns)30
+b(0)g(if)h(successful,)f(or)g Fp(errno)f Fq(if)i(not.)p
+eop end
+%%Page: 8 11
+TeXDict begin 8 10 bop 150 -116 a Fq(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1780 b(8)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(read_history_range)e
Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename,)g(in)m(t)f(from,)g(in)m(t)
-g(to)p Fg(\))390 4504 y Fq(Read)28 b(a)g(range)h(of)f(lines)g(from)f
+g(to)p Fg(\))390 408 y Fq(Read)28 b(a)g(range)h(of)f(lines)g(from)f
Fk(\014lename)p Fq(,)i(adding)e(them)h(to)h(the)f(history)g(list.)40
-b(Start)28 b(reading)g(at)390 4614 y(line)f Fk(from)e
+b(Start)28 b(reading)g(at)390 518 y(line)f Fk(from)e
Fq(and)h(end)f(at)i Fk(to)p Fq(.)41 b(If)25 b Fk(from)h
Fq(is)g(zero,)i(start)f(at)g(the)f(b)s(eginning.)39 b(If)26
b Fk(to)31 b Fq(is)c(less)f(than)g Fk(from)p Fq(,)390
-4723 y(then)33 b(read)g(un)m(til)g(the)g(end)g(of)g(the)g(\014le.)49
+628 y(then)33 b(read)g(un)m(til)g(the)g(end)g(of)g(the)g(\014le.)49
b(If)33 b Fk(\014lename)38 b Fq(is)33 b Fp(NULL)p Fq(,)g(then)g(read)g
-(from)f Fp(~/.history)p Fq(.)390 4833 y(Returns)d(0)i(if)g(successful,)
-f(or)g Fp(errno)f Fq(if)i(not.)3350 5011 y([F)-8 b(unction])-3599
+(from)f Fp(~/.history)p Fq(.)390 737 y(Returns)d(0)i(if)g(successful,)f
+(or)g Fp(errno)f Fq(if)i(not.)3350 898 y([F)-8 b(unction])-3599
b Fh(int)53 b(write_history)d Fg(\()p Ff(const)34 b(c)m(har)g
-(*\014lename)p Fg(\))390 5121 y Fq(W)-8 b(rite)36 b(the)e(curren)m(t)h
+(*\014lename)p Fg(\))390 1007 y Fq(W)-8 b(rite)36 b(the)e(curren)m(t)h
(history)f(to)h Fk(\014lename)p Fq(,)h(o)m(v)m(erwriting)g
Fk(\014lename)k Fq(if)34 b(necessary)-8 b(.)54 b(If)34
-b Fk(\014lename)390 5230 y Fq(is)27 b Fp(NULL)p Fq(,)g(then)g(write)g
+b Fk(\014lename)390 1117 y Fq(is)27 b Fp(NULL)p Fq(,)g(then)g(write)g
(the)h(history)f(list)g(to)h Fp(~/.history)p Fq(.)37
b(Returns)26 b(0)i(on)f(success,)h(or)f Fp(errno)f Fq(on)390
-5340 y(a)31 b(read)f(or)g(write)h(error.)p eop end
-%%Page: 8 11
-TeXDict begin 8 10 bop 150 -116 a Fq(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(History)1780 b(8)3350
-299 y([F)-8 b(unction])-3599 b Fh(int)53 b(append_history)d
-Fg(\()p Ff(in)m(t)33 b(nelemen)m(ts,)i(const)f(c)m(har)f(*\014lename)p
-Fg(\))390 408 y Fq(App)s(end)g(the)i(last)g Fk(nelemen)m(ts)k
+1227 y(a)31 b(read)f(or)g(write)h(error.)3350 1387 y([F)-8
+b(unction])-3599 b Fh(int)53 b(append_history)d Fg(\()p
+Ff(in)m(t)33 b(nelemen)m(ts,)i(const)f(c)m(har)f(*\014lename)p
+Fg(\))390 1497 y Fq(App)s(end)g(the)i(last)g Fk(nelemen)m(ts)k
Fq(of)c(the)g(history)f(list)i(to)f Fk(\014lename)p Fq(.)54
b(If)34 b Fk(\014lename)40 b Fq(is)34 b Fp(NULL)p Fq(,)h(then)390
-518 y(app)s(end)29 b(to)i Fp(~/.history)p Fq(.)38 b(Returns)29
+1606 y(app)s(end)29 b(to)i Fp(~/.history)p Fq(.)38 b(Returns)29
b(0)i(on)f(success,)h(or)f Fp(errno)f Fq(on)i(a)f(read)h(or)f(write)h
-(error.)3350 694 y([F)-8 b(unction])-3599 b Fh(int)53
+(error.)3350 1767 y([F)-8 b(unction])-3599 b Fh(int)53
b(history_truncate_file)f Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename,)
-f(in)m(t)h(nlines)p Fg(\))390 804 y Fq(T)-8 b(runcate)39
+f(in)m(t)h(nlines)p Fg(\))390 1876 y Fq(T)-8 b(runcate)39
b(the)f(history)h(\014le)f Fk(\014lename)p Fq(,)j(lea)m(ving)f(only)f
(the)g(last)g Fk(nlines)j Fq(lines.)65 b(If)38 b Fk(\014lename)44
-b Fq(is)390 914 y Fp(NULL)p Fq(,)29 b(then)i Fp(~/.history)c
+b Fq(is)390 1986 y Fp(NULL)p Fq(,)29 b(then)i Fp(~/.history)c
Fq(is)k(truncated.)40 b(Returns)30 b(0)g(on)h(success,)g(or)f
-Fp(errno)f Fq(on)h(failure.)150 1107 y Fj(2.3.7)63 b(History)41
-b(Expansion)150 1254 y Fq(These)30 b(functions)g(implemen)m(t)h
-(history)f(expansion.)3350 1431 y([F)-8 b(unction])-3599
+Fp(errno)f Fq(on)h(failure.)150 2169 y Fj(2.3.7)63 b(History)41
+b(Expansion)150 2316 y Fq(These)30 b(functions)g(implemen)m(t)h
+(history)f(expansion.)3350 2477 y([F)-8 b(unction])-3599
b Fh(int)53 b(history_expand)d Fg(\()p Ff(c)m(har)34
-b(*string,)f(c)m(har)h(**output)p Fg(\))390 1540 y Fq(Expand)f
+b(*string,)f(c)m(har)h(**output)p Fg(\))390 2586 y Fq(Expand)f
Fk(string)p Fq(,)j(placing)f(the)f(result)h(in)m(to)g
Fk(output)p Fq(,)g(a)g(p)s(oin)m(ter)f(to)h(a)g(string)f(\(see)i
-(Section)f(1.1)390 1650 y([History)c(In)m(teraction],)i(page)e(1\).)41
-b(Returns:)390 1804 y Fp(0)432 b Fq(If)37 b(no)g(expansions)g(to)s(ok)i
+(Section)f(1.1)390 2696 y([History)c(In)m(teraction],)i(page)e(1\).)41
+b(Returns:)390 2839 y Fp(0)432 b Fq(If)37 b(no)g(expansions)g(to)s(ok)i
(place)f(\(or,)i(if)d(the)h(only)f(c)m(hange)i(in)e(the)g(text)i(w)m
-(as)f(the)870 1913 y(remo)m(v)-5 b(al)31 b(of)g(escap)s(e)f(c)m
+(as)f(the)870 2949 y(remo)m(v)-5 b(al)31 b(of)g(escap)s(e)f(c)m
(haracters)i(preceding)e(the)g(history)g(expansion)g(c)m(haracter\);)
-390 2067 y Fp(1)432 b Fq(if)30 b(expansions)g(did)g(tak)m(e)i(place;)
-390 2222 y Fp(-1)384 b Fq(if)30 b(there)h(w)m(as)g(an)f(error)g(in)g
-(expansion;)390 2376 y Fp(2)432 b Fq(if)28 b(the)f(returned)g(line)g
+390 3093 y Fp(1)432 b Fq(if)30 b(expansions)g(did)g(tak)m(e)i(place;)
+390 3236 y Fp(-1)384 b Fq(if)30 b(there)h(w)m(as)g(an)f(error)g(in)g
+(expansion;)390 3380 y Fp(2)432 b Fq(if)28 b(the)f(returned)g(line)g
(should)g(b)s(e)g(displa)m(y)m(ed,)i(but)e(not)h(executed,)h(as)f(with)
-f(the)h Fp(:p)870 2485 y Fq(mo)s(di\014er)h(\(see)j(Section)f(1.1.3)h
-([Mo)s(di\014ers],)e(page)i(2\).)390 2639 y(If)e(an)g(error)g(o)s
+f(the)h Fp(:p)870 3489 y Fq(mo)s(di\014er)h(\(see)j(Section)f(1.1.3)h
+([Mo)s(di\014ers],)e(page)i(2\).)390 3633 y(If)e(an)g(error)g(o)s
(ccurred)g(in)g(expansion,)g(then)g Fk(output)i Fq(con)m(tains)g(a)f
-(descriptiv)m(e)g(error)f(message.)3350 2815 y([F)-8
+(descriptiv)m(e)g(error)f(message.)3350 3793 y([F)-8
b(unction])-3599 b Fh(char)54 b(*)e(get_history_event)f
Fg(\()p Ff(const)34 b(c)m(har)g(*string,)e(in)m(t)h(*cindex,)h(in)m(t)
-565 2925 y(qc)m(har)p Fg(\))390 3035 y Fq(Returns)45
+565 3903 y(qc)m(har)p Fg(\))390 4012 y Fq(Returns)45
b(the)g(text)i(of)e(the)h(history)f(ev)m(en)m(t)i(b)s(eginning)e(at)h
Fk(string)53 b Fp(+)45 b Fk(*cindex)p Fq(.)87 b Fk(*cindex)52
-b Fq(is)390 3144 y(mo)s(di\014ed)28 b(to)i(p)s(oin)m(t)f(to)h(after)g
+b Fq(is)390 4122 y(mo)s(di\014ed)28 b(to)i(p)s(oin)m(t)f(to)h(after)g
(the)g(ev)m(en)m(t)h(sp)s(eci\014er.)39 b(A)m(t)31 b(function)e(en)m
(try)-8 b(,)30 b Fk(cindex)36 b Fq(p)s(oin)m(ts)29 b(to)h(the)390
-3254 y(index)35 b(in)m(to)i Fk(string)44 b Fq(where)35
+4232 y(index)35 b(in)m(to)i Fk(string)44 b Fq(where)35
b(the)h(history)g(ev)m(en)m(t)h(sp)s(eci\014cation)g(b)s(egins.)57
-b Fk(qc)m(har)42 b Fq(is)36 b(a)g(c)m(haracter)390 3363
+b Fk(qc)m(har)42 b Fq(is)36 b(a)g(c)m(haracter)390 4341
y(that)27 b(is)g(allo)m(w)m(ed)i(to)f(end)e(the)h(ev)m(en)m(t)h(sp)s
(eci\014cation)g(in)f(addition)g(to)g(the)g(\\normal")h(terminating)390
-3473 y(c)m(haracters.)3350 3649 y([F)-8 b(unction])-3599
+4451 y(c)m(haracters.)3350 4611 y([F)-8 b(unction])-3599
b Fh(char)54 b(**)e(history_tokenize)f Fg(\()p Ff(const)34
-b(c)m(har)g(*string)p Fg(\))390 3759 y Fq(Return)c(an)h(arra)m(y)g(of)g
+b(c)m(har)g(*string)p Fg(\))390 4721 y Fq(Return)c(an)h(arra)m(y)g(of)g
(tok)m(ens)h(parsed)e(out)h(of)g Fk(string)p Fq(,)h(m)m(uc)m(h)e(as)i
(the)f(shell)g(migh)m(t.)43 b(The)30 b(tok)m(ens)390
-3868 y(are)h(split)g(on)f(the)h(c)m(haracters)h(in)e(the)h
-Fk(history)p 2006 3868 28 4 v 40 w(w)m(ord)p 2241 3868
+4830 y(are)h(split)g(on)f(the)h(c)m(haracters)h(in)e(the)h
+Fk(history)p 2006 4830 28 4 v 40 w(w)m(ord)p 2241 4830
V 39 w(delimiters)k Fq(v)-5 b(ariable,)32 b(and)e(shell)g(quoting)390
-3978 y(con)m(v)m(en)m(tions)i(are)f(ob)s(ey)m(ed.)3350
-4154 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(history_arg_extract)f
-Fg(\()p Ff(in)m(t)34 b(\014rst,)f(in)m(t)g(last,)g(const)h(c)m(har)f
-(*string)p Fg(\))390 4264 y Fq(Extract)41 b(a)g(string)f(segmen)m(t)i
-(consisting)f(of)f(the)h Fk(\014rst)g Fq(through)f Fk(last)j
-Fq(argumen)m(ts)e(presen)m(t)f(in)390 4373 y Fk(string)p
-Fq(.)h(Argumen)m(ts)30 b(are)h(split)f(using)g Fp(history_tokenize)p
-Fq(.)150 4609 y Fo(2.4)68 b(History)46 b(V)-11 b(ariables)150
-4768 y Fq(This)26 b(section)i(describ)s(es)e(the)h(externally-visible)i
-(v)-5 b(ariables)28 b(exp)s(orted)e(b)m(y)h(the)g Fl(gnu)g
-Fq(History)g(Library)-8 b(.)3371 4945 y([V)g(ariable])-3598
-b Fh(int)53 b(history_base)390 5054 y Fq(The)30 b(logical)j(o\013set)e
-(of)g(the)f(\014rst)g(en)m(try)g(in)h(the)f(history)g(list.)3371
-5230 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_length)390
-5340 y Fq(The)30 b(n)m(um)m(b)s(er)f(of)h(en)m(tries)i(curren)m(tly)e
-(stored)h(in)f(the)g(history)g(list.)p eop end
+4940 y(con)m(v)m(en)m(tions)i(are)f(ob)s(ey)m(ed)g(as)f(describ)s(ed)g
+(b)s(elo)m(w.)3350 5101 y([F)-8 b(unction])-3599 b Fh(char)54
+b(*)e(history_arg_extract)f Fg(\()p Ff(in)m(t)34 b(\014rst,)f(in)m(t)g
+(last,)g(const)h(c)m(har)f(*string)p Fg(\))390 5210 y
+Fq(Extract)41 b(a)g(string)f(segmen)m(t)i(consisting)f(of)f(the)h
+Fk(\014rst)g Fq(through)f Fk(last)j Fq(argumen)m(ts)e(presen)m(t)f(in)
+390 5320 y Fk(string)p Fq(.)h(Argumen)m(ts)30 b(are)h(split)f(using)g
+Fp(history_tokenize)p Fq(.)p eop end
%%Page: 9 12
TeXDict begin 9 11 bop 150 -116 a Fq(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(History)1780 b(9)3371
-299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_max_entries)390
-408 y Fq(The)45 b(maxim)m(um)h(n)m(um)m(b)s(er)f(of)h(history)g(en)m
+b(Programming)30 b(with)g(GNU)h(History)1780 b(9)150
+299 y Fo(2.4)68 b(History)46 b(V)-11 b(ariables)150 458
+y Fq(This)26 b(section)i(describ)s(es)e(the)h(externally-visible)i(v)-5
+b(ariables)28 b(exp)s(orted)e(b)m(y)h(the)g Fl(gnu)g
+Fq(History)g(Library)-8 b(.)3371 641 y([V)g(ariable])-3598
+b Fh(int)53 b(history_base)390 750 y Fq(The)30 b(logical)j(o\013set)e
+(of)g(the)f(\014rst)g(en)m(try)g(in)h(the)f(history)g(list.)3371
+933 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_length)390
+1043 y Fq(The)30 b(n)m(um)m(b)s(er)f(of)h(en)m(tries)i(curren)m(tly)e
+(stored)h(in)f(the)g(history)g(list.)3371 1225 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(history_max_entries)390
+1335 y Fq(The)45 b(maxim)m(um)h(n)m(um)m(b)s(er)f(of)h(history)g(en)m
(tries.)88 b(This)45 b(m)m(ust)h(b)s(e)f(c)m(hanged)i(using)e
-Fp(stifle_)390 518 y(history\(\))p Fq(.)3371 742 y([V)-8
+Fp(stifle_)390 1444 y(history\(\))p Fq(.)3371 1627 y([V)-8
b(ariable])-3598 b Fh(int)53 b(history_write_timesta)q(mps)390
-852 y Fq(If)44 b(non-zero,)49 b(timestamps)c(are)g(written)g(to)g(the)g
-(history)f(\014le,)49 b(so)c(they)f(can)h(b)s(e)f(preserv)m(ed)390
-962 y(b)s(et)m(w)m(een)31 b(sessions.)41 b(The)30 b(default)g(v)-5
+1736 y Fq(If)44 b(non-zero,)49 b(timestamps)c(are)g(written)g(to)g(the)
+g(history)f(\014le,)49 b(so)c(they)f(can)h(b)s(e)f(preserv)m(ed)390
+1846 y(b)s(et)m(w)m(een)31 b(sessions.)41 b(The)30 b(default)g(v)-5
b(alue)31 b(is)f(0,)h(meaning)g(that)g(timestamps)g(are)g(not)f(sa)m(v)
-m(ed.)390 1116 y(The)41 b(curren)m(t)g(timestamp)h(format)g(uses)f(the)
-h(v)-5 b(alue)42 b(of)f Fk(history)p 2697 1116 28 4 v
-41 w(commen)m(t)p 3098 1116 V 41 w(c)m(har)48 b Fq(to)42
-b(delimit)390 1226 y(timestamp)h(en)m(tries)g(in)f(the)g(history)h
+m(ed.)390 1980 y(The)41 b(curren)m(t)g(timestamp)h(format)g(uses)f(the)
+h(v)-5 b(alue)42 b(of)f Fk(history)p 2697 1980 28 4 v
+41 w(commen)m(t)p 3098 1980 V 41 w(c)m(har)48 b Fq(to)42
+b(delimit)390 2090 y(timestamp)h(en)m(tries)g(in)f(the)g(history)h
(\014le.)76 b(If)42 b(that)h(v)-5 b(ariable)43 b(do)s(es)f(not)g(ha)m
-(v)m(e)i(a)f(v)-5 b(alue)42 b(\(the)390 1335 y(default\),)31
-b(timestamps)g(will)g(not)f(b)s(e)g(written.)3371 1560
+(v)m(e)i(a)f(v)-5 b(alue)42 b(\(the)390 2199 y(default\),)31
+b(timestamps)g(will)g(not)f(b)s(e)g(written.)3371 2382
y([V)-8 b(ariable])-3598 b Fh(char)54 b(history_expansion_char)390
-1669 y Fq(The)35 b(c)m(haracter)i(that)e(in)m(tro)s(duces)g(a)h
+2491 y Fq(The)35 b(c)m(haracter)i(that)e(in)m(tro)s(duces)g(a)h
(history)f(ev)m(en)m(t.)57 b(The)34 b(default)i(is)f(`)p
-Fp(!)p Fq('.)56 b(Setting)35 b(this)h(to)g(0)390 1779
-y(inhibits)30 b(history)g(expansion.)3371 2003 y([V)-8
+Fp(!)p Fq('.)56 b(Setting)35 b(this)h(to)g(0)390 2601
+y(inhibits)30 b(history)g(expansion.)3371 2783 y([V)-8
b(ariable])-3598 b Fh(char)54 b(history_subst_char)390
-2113 y Fq(The)40 b(c)m(haracter)i(that)g(in)m(v)m(ok)m(es)g(w)m(ord)f
+2893 y Fq(The)40 b(c)m(haracter)i(that)g(in)m(v)m(ok)m(es)g(w)m(ord)f
(substitution)f(if)h(found)e(at)i(the)g(start)g(of)g(a)g(line.)72
-b(The)390 2222 y(default)31 b(is)f(`)p Fp(^)p Fq('.)3371
-2447 y([V)-8 b(ariable])-3598 b Fh(char)54 b(history_comment_char)390
-2556 y Fq(During)37 b(tok)m(enization,)43 b(if)38 b(this)f(c)m
+b(The)390 3003 y(default)31 b(is)f(`)p Fp(^)p Fq('.)3371
+3185 y([V)-8 b(ariable])-3598 b Fh(char)54 b(history_comment_char)390
+3295 y Fq(During)37 b(tok)m(enization,)43 b(if)38 b(this)f(c)m
(haracter)j(is)e(seen)f(as)h(the)g(\014rst)f(c)m(haracter)j(of)e(a)g(w)
-m(ord,)h(then)390 2666 y(it)44 b(and)e(all)j(subsequen)m(t)d(c)m
+m(ord,)h(then)390 3404 y(it)44 b(and)e(all)j(subsequen)m(t)d(c)m
(haracters)j(up)d(to)i(a)g(newline)f(are)h(ignored,)i(suppressing)c
-(history)390 2776 y(expansion)30 b(for)g(the)h(remainder)f(of)g(the)h
+(history)390 3514 y(expansion)30 b(for)g(the)h(remainder)f(of)g(the)h
(line.)41 b(This)29 b(is)i(disabled)f(b)m(y)g(default.)3371
-3000 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e
-(history_word_delimiter)q(s)390 3110 y Fq(The)27 b(c)m(haracters)i
+3696 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e
+(history_word_delimiter)q(s)390 3806 y Fq(The)27 b(c)m(haracters)i
(that)f(separate)h(tok)m(ens)f(for)f Fp(history_tokenize\(\))p
Fq(.)35 b(The)27 b(default)h(v)-5 b(alue)28 b(is)f Fp(")390
-3219 y(\\t\\n\(\)<>;&|")p Fq(.)3371 3444 y([V)-8 b(ariable])-3598
+3916 y(\\t\\n\(\)<>;&|")p Fq(.)3371 4098 y([V)-8 b(ariable])-3598
b Fh(char)54 b(*)e(history_search_delimit)q(er_)q(cha)q(rs)390
-3553 y Fq(The)26 b(list)g(of)g(additional)h(c)m(haracters)h(whic)m(h)e
+4208 y Fq(The)26 b(list)g(of)g(additional)h(c)m(haracters)h(whic)m(h)e
(can)g(delimit)h(a)f(history)g(searc)m(h)h(string,)g(in)f(addition)390
-3663 y(to)31 b(space,)g(T)-8 b(AB,)32 b(`)p Fp(:)p Fq(')e(and)g(`)p
+4317 y(to)31 b(space,)g(T)-8 b(AB,)32 b(`)p Fp(:)p Fq(')e(and)g(`)p
Fp(?)p Fq(')g(in)g(the)h(case)g(of)g(a)g(substring)e(searc)m(h.)41
-b(The)30 b(default)h(is)f(empt)m(y)-8 b(.)3371 3887 y([V)g(ariable])
+b(The)30 b(default)h(is)f(empt)m(y)-8 b(.)3371 4500 y([V)g(ariable])
-3598 b Fh(char)54 b(*)e(history_no_expand_char)q(s)390
-3997 y Fq(The)29 b(list)i(of)f(c)m(haracters)h(whic)m(h)e(inhibit)h
+4609 y Fq(The)29 b(list)i(of)f(c)m(haracters)h(whic)m(h)e(inhibit)h
(history)g(expansion)f(if)h(found)e(immediately)j(follo)m(wing)390
-4106 y Fk(history)p 672 4106 V 40 w(expansion)p 1104
-4106 V 40 w(c)m(har)p Fq(.)41 b(The)30 b(default)g(is)h(space,)g(tab,)g
+4719 y Fk(history)p 672 4719 V 40 w(expansion)p 1104
+4719 V 40 w(c)m(har)p Fq(.)41 b(The)30 b(default)g(is)h(space,)g(tab,)g
(newline,)f(carriage)i(return,)e(and)g(`)p Fp(=)p Fq('.)3371
-4331 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_quotes_inhibi)q
-(t_ex)q(pan)q(sio)q(n)390 4440 y Fq(If)27 b(non-zero,)i(double-quoted)f
-(w)m(ords)g(are)g(not)g(scanned)f(for)h(the)g(history)g(expansion)f(c)m
-(haracter)390 4550 y(or)j(the)h(history)f(commen)m(t)i(c)m(haracter.)42
-b(The)30 b(default)g(v)-5 b(alue)31 b(is)g(0.)3371 4774
-y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57 b(*)c
-(history_inhibit_expans)q(ion)q(_fu)q(ncti)q(on)390 4884
-y Fq(This)32 b(should)h(b)s(e)f(set)i(to)g(the)g(address)e(of)i(a)f
-(function)g(that)h(tak)m(es)h(t)m(w)m(o)g(argumen)m(ts:)46
-b(a)34 b Fp(char)29 b(*)390 4994 y Fq(\()p Fk(string)8
+4902 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_quotes_inhibi)q
+(t_ex)q(pan)q(sio)q(n)390 5011 y Fq(If)33 b(non-zero,)j(the)d(history)h
+(expansion)f(co)s(de)h(implemen)m(ts)g(shell-lik)m(e)i(quoting:)48
+b(single-quoted)390 5121 y(w)m(ords)37 b(are)h(not)g(scanned)f(for)g
+(the)h(history)f(expansion)g(c)m(haracter)i(or)f(the)f(history)h
+(commen)m(t)390 5230 y(c)m(haracter,)48 b(and)42 b(double-quoted)h(w)m
+(ords)g(ma)m(y)g(ha)m(v)m(e)h(history)f(expansion)g(p)s(erformed,)i
+(since)390 5340 y(single)31 b(quotes)g(are)g(not)f(sp)s(ecial)h(within)
+f(double)g(quotes.)41 b(The)30 b(default)h(v)-5 b(alue)30
+b(is)h(0.)p eop end
+%%Page: 10 13
+TeXDict begin 10 12 bop 150 -116 a Fq(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1734 b(10)3371
+299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(history_quoting_state)390
+408 y Fq(An)27 b(application)j(ma)m(y)e(set)g(this)g(v)-5
+b(ariable)29 b(to)f(indicate)h(that)g(the)f(curren)m(t)f(line)h(b)s
+(eing)g(expanded)390 518 y(is)e(sub)5 b(ject)26 b(to)h(existing)g
+(quoting.)40 b(If)26 b(set)g(to)h(`)p Fp(')p Fq(',)g(the)g(history)f
+(expansion)g(function)g(will)g(assume)390 628 y(that)i(the)f(line)h(is)
+f(single-quoted)h(and)f(inhibit)f(expansion)h(un)m(til)h(it)g(reads)e
+(an)i(unquoted)e(closing)390 737 y(single)41 b(quote;)46
+b(if)40 b(set)h(to)f(`)p Fp(")p Fq(',)j(history)e(expansion)f(will)g
+(assume)g(the)g(line)h(is)f(double)g(quoted)390 847 y(un)m(til)26
+b(it)g(reads)f(an)g(unquoted)g(closing)h(double)f(quote.)40
+b(If)25 b(set)g(to)i(zero,)g(the)f(default,)g(the)g(history)390
+956 y(expansion)21 b(function)g(will)g(assume)g(the)g(line)h(is)f(not)g
+(quoted)g(and)g(treat)h(quote)g(c)m(haracters)g(within)390
+1066 y(the)29 b(line)g(as)g(describ)s(ed)f(ab)s(o)m(v)m(e.)42
+b(This)28 b(is)h(only)g(e\013ectiv)m(e)i(if)e Fk(history)p
+2726 1066 28 4 v 40 w(quotes)p 3021 1066 V 40 w(inhibit)p
+3324 1066 V 40 w(expansion)390 1176 y Fq(is)h(set.)3371
+1379 y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57
+b(*)c(history_inhibit_expans)q(ion)q(_fu)q(ncti)q(on)390
+1489 y Fq(This)32 b(should)h(b)s(e)f(set)i(to)g(the)g(address)e(of)i(a)
+f(function)g(that)h(tak)m(es)h(t)m(w)m(o)g(argumen)m(ts:)46
+b(a)34 b Fp(char)29 b(*)390 1598 y Fq(\()p Fk(string)8
b Fq(\))27 b(and)f(an)g Fp(int)g Fq(index)g(in)m(to)i(that)f(string)f
(\()p Fk(i)5 b Fq(\).)40 b(It)27 b(should)f(return)f(a)i(non-zero)g(v)
--5 b(alue)27 b(if)g(the)390 5103 y(history)i(expansion)g(starting)h(at)
+-5 b(alue)27 b(if)g(the)390 1708 y(history)i(expansion)g(starting)h(at)
g Fk(string[i])j Fq(should)28 b(not)i(b)s(e)e(p)s(erformed;)h(zero)h
-(if)f(the)g(expansion)390 5213 y(should)i(b)s(e)g(done.)45
+(if)f(the)g(expansion)390 1817 y(should)i(b)s(e)g(done.)45
b(It)32 b(is)g(in)m(tended)g(for)g(use)g(b)m(y)f(applications)i(lik)m
-(e)h(Bash)e(that)g(use)g(the)g(history)390 5322 y(expansion)e(c)m
+(e)h(Bash)e(that)g(use)g(the)g(history)390 1927 y(expansion)e(c)m
(haracter)i(for)e(additional)i(purp)s(oses.)39 b(By)30
b(default,)h(this)f(v)-5 b(ariable)31 b(is)g(set)g(to)g
-Fp(NULL)p Fq(.)p eop end
-%%Page: 10 13
-TeXDict begin 10 12 bop 150 -116 a Fq(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(History)1734 b(10)150
-299 y Fo(2.5)68 b(History)46 b(Programming)g(Example)150
-458 y Fq(The)30 b(follo)m(wing)i(program)e(demonstrates)h(simple)f(use)
-g(of)h(the)f Fl(gnu)g Fq(History)h(Library)-8 b(.)390
-633 y Fe(#include)41 b(<stdio.h>)390 720 y(#include)g
-(<readline/history.h>)390 894 y(main)f(\(argc,)h(argv\))586
-981 y(int)f(argc;)586 1068 y(char)g(**argv;)390 1156
-y({)468 1243 y(char)h(line[1024],)g(*t;)468 1330 y(int)f(len,)g(done)h
-(=)e(0;)468 1504 y(line[0])i(=)f(0;)468 1679 y(using_history)j(\(\);)
-468 1766 y(while)e(\(!done\))547 1853 y({)625 1940 y(printf)g
-(\("history$)g("\);)625 2027 y(fflush)g(\(stdout\);)625
-2115 y(t)f(=)f(fgets)i(\(line,)f(sizeof)h(\(line\))f(-)g(1,)g(stdin\);)
-625 2202 y(if)g(\(t)g(&&)f(*t\))704 2289 y({)782 2376
-y(len)h(=)g(strlen)g(\(t\);)782 2463 y(if)g(\(t[len)h(-)e(1])h(==)f
-('\\n'\))861 2550 y(t[len)h(-)g(1])f(=)h('\\0';)704 2638
-y(})625 2812 y(if)g(\(!t\))704 2899 y(strcpy)g(\(line,)h("quit"\);)625
-3073 y(if)f(\(line[0]\))704 3161 y({)782 3248 y(char)g(*expansion;)782
-3335 y(int)g(result;)782 3509 y(result)h(=)e(history_expand)k(\(line,)d
-(&expansion\);)782 3597 y(if)g(\(result\))861 3684 y(fprintf)h
-(\(stderr,)g("\045s\\n",)f(expansion\);)782 3858 y(if)g(\(result)h(<)e
-(0)h(||)f(result)i(==)f(2\))861 3945 y({)939 4032 y(free)g
-(\(expansion\);)939 4120 y(continue;)861 4207 y(})782
-4381 y(add_history)i(\(expansion\);)782 4468 y(strncpy)f(\(line,)g
-(expansion,)g(sizeof)g(\(line\))f(-)g(1\);)782 4555 y(free)g
-(\(expansion\);)704 4643 y(})625 4817 y(if)g(\(strcmp)h(\(line,)f
-("quit"\))h(==)f(0\))704 4904 y(done)g(=)f(1;)625 4991
-y(else)h(if)g(\(strcmp)h(\(line,)g("save"\))f(==)g(0\))704
-5078 y(write_history)i(\("history_file"\);)625 5166 y(else)e(if)g
-(\(strcmp)h(\(line,)g("read"\))f(==)g(0\))704 5253 y(read_history)i
-(\("history_file"\);)625 5340 y(else)e(if)g(\(strcmp)h(\(line,)g
-("list"\))f(==)g(0\))p eop end
+Fp(NULL)p Fq(.)150 2182 y Fo(2.5)68 b(History)46 b(Programming)g
+(Example)150 2342 y Fq(The)30 b(follo)m(wing)i(program)e(demonstrates)h
+(simple)f(use)g(of)h(the)f Fl(gnu)g Fq(History)h(Library)-8
+b(.)390 2463 y Fe(#include)41 b(<stdio.h>)390 2550 y(#include)g
+(<readline/history.h>)390 2725 y(main)f(\(argc,)h(argv\))586
+2812 y(int)f(argc;)586 2899 y(char)g(**argv;)390 2986
+y({)468 3073 y(char)h(line[1024],)g(*t;)468 3161 y(int)f(len,)g(done)h
+(=)e(0;)468 3335 y(line[0])i(=)f(0;)468 3509 y(using_history)j(\(\);)
+468 3597 y(while)e(\(!done\))547 3684 y({)625 3771 y(printf)g
+(\("history$)g("\);)625 3858 y(fflush)g(\(stdout\);)625
+3945 y(t)f(=)f(fgets)i(\(line,)f(sizeof)h(\(line\))f(-)g(1,)g(stdin\);)
+625 4032 y(if)g(\(t)g(&&)f(*t\))704 4120 y({)782 4207
+y(len)h(=)g(strlen)g(\(t\);)782 4294 y(if)g(\(t[len)h(-)e(1])h(==)f
+('\\n'\))861 4381 y(t[len)h(-)g(1])f(=)h('\\0';)704 4468
+y(})625 4643 y(if)g(\(!t\))704 4730 y(strcpy)g(\(line,)h("quit"\);)625
+4904 y(if)f(\(line[0]\))704 4991 y({)782 5078 y(char)g(*expansion;)782
+5166 y(int)g(result;)782 5340 y(result)h(=)e(history_expand)k(\(line,)d
+(&expansion\);)p eop end
%%Page: 11 14
TeXDict begin 11 13 bop 150 -116 a Fq(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(History)1734 b(11)704
-299 y Fe({)782 386 y(register)41 b(HIST_ENTRY)h(**the_list;)782
-473 y(register)f(int)f(i;)782 648 y(the_list)h(=)f(history_list)i
-(\(\);)782 735 y(if)e(\(the_list\))861 822 y(for)g(\(i)f(=)h(0;)f
-(the_list[i];)j(i++\))939 909 y(printf)f(\("\045d:)f(\045s\\n",)h(i)e
-(+)h(history_base,)i(the_list[i]->line\);)704 996 y(})625
-1083 y(else)e(if)g(\(strncmp)h(\(line,)g("delete",)g(6\))f(==)f(0\))704
-1171 y({)782 1258 y(int)h(which;)782 1345 y(if)g(\(\(sscanf)h(\(line)f
-(+)g(6,)g("\045d",)g(&which\)\))h(==)f(1\))861 1432 y({)939
-1519 y(HIST_ENTRY)i(*entry)e(=)g(remove_history)i(\(which\);)939
-1606 y(if)e(\(!entry\))1018 1694 y(fprintf)g(\(stderr,)i("No)d(such)i
-(entry)f(\045d\\n",)h(which\);)939 1781 y(else)1018 1868
-y({)1096 1955 y(free)f(\(entry->line\);)1096 2042 y(free)g(\(entry\);)
-1018 2130 y(})861 2217 y(})782 2304 y(else)861 2391 y({)939
-2478 y(fprintf)h(\(stderr,)g("non-numeric)h(arg)e(given)g(to)g
-(`delete'\\n"\);)861 2565 y(})704 2653 y(})547 2740 y(})390
-2827 y(})p eop end
+b(Programming)30 b(with)g(GNU)h(History)1734 b(11)782
+299 y Fe(if)40 b(\(result\))861 386 y(fprintf)h(\(stderr,)g
+("\045s\\n",)f(expansion\);)782 560 y(if)g(\(result)h(<)e(0)h(||)f
+(result)i(==)f(2\))861 648 y({)939 735 y(free)g(\(expansion\);)939
+822 y(continue;)861 909 y(})782 1083 y(add_history)i(\(expansion\);)782
+1171 y(strncpy)f(\(line,)g(expansion,)g(sizeof)g(\(line\))f(-)g(1\);)
+782 1258 y(free)g(\(expansion\);)704 1345 y(})625 1519
+y(if)g(\(strcmp)h(\(line,)f("quit"\))h(==)f(0\))704 1606
+y(done)g(=)f(1;)625 1694 y(else)h(if)g(\(strcmp)h(\(line,)g("save"\))f
+(==)g(0\))704 1781 y(write_history)i(\("history_file"\);)625
+1868 y(else)e(if)g(\(strcmp)h(\(line,)g("read"\))f(==)g(0\))704
+1955 y(read_history)i(\("history_file"\);)625 2042 y(else)e(if)g
+(\(strcmp)h(\(line,)g("list"\))f(==)g(0\))704 2130 y({)782
+2217 y(register)h(HIST_ENTRY)h(**the_list;)782 2304 y(register)f(int)f
+(i;)782 2478 y(the_list)h(=)f(history_list)i(\(\);)782
+2565 y(if)e(\(the_list\))861 2653 y(for)g(\(i)f(=)h(0;)f(the_list[i];)j
+(i++\))939 2740 y(printf)f(\("\045d:)f(\045s\\n",)h(i)e(+)h
+(history_base,)i(the_list[i]->line\);)704 2827 y(})625
+2914 y(else)e(if)g(\(strncmp)h(\(line,)g("delete",)g(6\))f(==)f(0\))704
+3001 y({)782 3088 y(int)h(which;)782 3176 y(if)g(\(\(sscanf)h(\(line)f
+(+)g(6,)g("\045d",)g(&which\)\))h(==)f(1\))861 3263 y({)939
+3350 y(HIST_ENTRY)i(*entry)e(=)g(remove_history)i(\(which\);)939
+3437 y(if)e(\(!entry\))1018 3524 y(fprintf)g(\(stderr,)i("No)d(such)i
+(entry)f(\045d\\n",)h(which\);)939 3611 y(else)1018 3699
+y({)1096 3786 y(free)f(\(entry->line\);)1096 3873 y(free)g(\(entry\);)
+1018 3960 y(})861 4047 y(})782 4134 y(else)861 4222 y({)939
+4309 y(fprintf)h(\(stderr,)g("non-numeric)h(arg)e(given)g(to)g
+(`delete'\\n"\);)861 4396 y(})704 4483 y(})547 4570 y(})390
+4658 y(})p eop end
%%Page: 12 15
TeXDict begin 12 14 bop 3659 -116 a Fq(12)150 299 y Fm(App)t(endix)52
b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359
@@ -6550,32 +6608,34 @@ b(21)150 100 y Fm(App)t(endix)52 b(C)81 b(F)-13 b(unction)52
b(and)h(V)-13 b(ariable)53 b(Index)150 400 y Fe(history_base)10
b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)25 b Fb(8)150 487 y Fe(history_comment_char)7 b Fa(:)17
+g(:)25 b Fb(9)150 487 y Fe(history_comment_char)7 b Fa(:)17
b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(9)150 574 y Fe
(history_expansion_char)i Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fb(9)150 661 y Fe(history_inhibit_expansion_fun)q(ctio)q(n)28
-b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37 b Fb(9)150
+b Fb(9)150 661 y Fe(history_inhibit_expansion_fun)q(ctio)q(n)26
+b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(10)150
749 y Fe(history_length)25 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)37 b Fb(8)150 836 y Fe(history_max_entries)9
+f(:)g(:)g(:)g(:)g(:)37 b Fb(9)150 836 y Fe(history_max_entries)9
b Fa(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(9)150
923 y Fe(history_no_expand_chars)16 b Fa(:)i(:)c(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31
b Fb(9)150 1010 y Fe(history_quotes_inhibit_expans)q(ion)11
b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
-b Fb(9)150 1097 y Fe(history_search_delimiter_char)q(s)15
-b Fa(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30
-b Fb(9)150 1184 y Fe(history_subst_char)12 b Fa(:)17
-b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(9)150
-1272 y Fe(history_word_delimiters)16 b Fa(:)i(:)c(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31
-b Fb(9)150 1359 y Fe(history_write_timestamps)13 b Fa(:)19
-b(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)28 b Fb(9)p eop end
+b Fb(9)150 1097 y Fe(history_quoting_state)f Fa(:)13
+b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)33 b Fb(10)150 1184 y Fe
+(history_search_delimiter_char)q(s)15 b Fa(:)k(:)13 b(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(9)150 1272 y Fe
+(history_subst_char)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+27 b Fb(9)150 1359 y Fe(history_word_delimiters)16 b
+Fa(:)i(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)31 b Fb(9)150 1446 y Fe(history_write_timestamps)13
+b Fa(:)19 b(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)28 b Fb(9)p eop end
%%Trailer
userdict /end-hook known{end-hook}if
diff --git a/doc/history_3.ps b/doc/history_3.ps
index 5ee3f23..75b6841 100644
--- a/doc/history_3.ps
+++ b/doc/history_3.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.3
-%%CreationDate: Wed Jul 1 10:32:47 2015
+%%CreationDate: Thu Dec 14 11:39:35 2017
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
@@ -240,7 +240,7 @@ BP
10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F0
(history \255 GNU History Library)108 96 Q F1(COPYRIGHT)72 112.8 Q F0
(The GNU History Library is Cop)108 124.8 Q
-(yright \251 1989-2014 by the Free Softw)-.1 E(are F)-.1 E
+(yright \251 1989-2017 by the Free Softw)-.1 E(are F)-.1 E
(oundation, Inc.)-.15 E F1(DESCRIPTION)72 141.6 Q F0(Man)108 153.6 Q
2.81(yp)-.15 G .31(rograms read input from the user a line at a time.)
-2.81 F .309(The GNU History library is able to k)5.309 F .309
@@ -332,7 +332,7 @@ F2(^)108 691.2 Q F0(The \214rst ar)144 691.2 Q 2.5(gument. That)-.18 F
R 2.564(ord. This)-.1 F .064(is usually the last ar)2.564 F .064
(gument, b)-.18 F .064(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F
.063(ord if there is only)-.1 F(one w)144 715.2 Q(ord in the line.)-.1 E
-(GNU History 6.3)72 768 Q(2015 May 24)138.175 E(1)202.335 E 0 Cg EP
+(GNU History 6.3)72 768 Q(2017 October 8)133.735 E(1)197.895 E 0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
@@ -442,8 +442,8 @@ G .066(le that uses the History library')-2.566 F 2.566(sf)-.55 G
-.25 F(public data structures.)108 662.4 Q F1(History Storage)87 691.2 Q
F0(The history list is an array of history entries.)108 703.2 Q 2.5(Ah)5
G(istory entry is declared as follo)-2.5 E(ws:)-.25 E F2(typedef void *)
-108 720 Q F1(histdata_t;)2.5 E F0(GNU History 6.3)72 768 Q(2015 May 24)
-138.175 E(2)202.335 E 0 Cg EP
+108 720 Q F1(histdata_t;)2.5 E F0(GNU History 6.3)72 768 Q
+(2017 October 8)133.735 E(2)197.895 E 0 Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
@@ -491,379 +491,389 @@ E F0(.)A F2(History List Management)87 530.4 Q F0
(These functions manage indi)108 542.4 Q(vidual entries on the history \
list, or set parameters managing the list itself.)-.25 E F1(void)108
566.4 Q F2(add_history)2.5 E F0(\()4.166 E F1(const c)A(har *string)-.15
-E F0(\))1.666 E(Place)108 578.4 Q F1(string)2.5 E F0
-(at the end of the history list.)2.5 E
-(The associated data \214eld \(if an)5 E(y\) is set to)-.15 E F2(NULL)
-2.5 E F0(.)A F1(void)108 602.4 Q F2(add_history_time)2.5 E F0(\()4.166 E
-F1(const c)A(har *string)-.15 E F0(\))1.666 E
+E F0(\))1.666 E(Place)108 578.4 Q F1(string)3.279 E F0 .779
+(at the end of the history list.)3.279 F .779
+(The associated data \214eld \(if an)5.779 F .779(y\) is set to)-.15 F
+F2(NULL)3.279 E F0 5.779(.I)C 3.279(ft)-5.779 G .78(he maxi-)-3.279 F
+.787(mum number of history entries has been set using)108 590.4 R F2
+(sti\215e_history\(\))3.286 E F0 3.286(,a)C .786(nd the ne)-3.286 F
+3.286(wn)-.25 G .786(umber of history entries)-3.286 F -.1(wo)108 602.4
+S(uld e).1 E(xceed that maximum, the oldest history entry is remo)-.15 E
+-.15(ve)-.15 G(d.).15 E F1(void)108 626.4 Q F2(add_history_time)2.5 E F0
+(\()4.166 E F1(const c)A(har *string)-.15 E F0(\))1.666 E
(Change the time stamp associated with the most recent history entry to)
-108 614.4 Q F1(string)2.5 E F0(.)A F1(HIST_ENTR)108 638.4 Q 2.5(Y*)-.18
+108 638.4 Q F1(string)2.5 E F0(.)A F1(HIST_ENTR)108 662.4 Q 2.5(Y*)-.18
G F2 -.18(re)C(mo).18 E -.1(ve)-.1 G(_history).1 E F0(\()4.166 E F1
-(int whic)A(h)-.15 E F0(\))1.666 E(Remo)108 650.4 Q .352 -.15(ve h)-.15
+(int whic)A(h)-.15 E F0(\))1.666 E(Remo)108 674.4 Q .352 -.15(ve h)-.15
H .052(istory entry at of).15 F(fset)-.25 E F1(whic)2.553 E(h)-.15 E F0
.053(from the history)2.553 F 5.053(.T)-.65 G .053(he remo)-5.053 F -.15
(ve)-.15 G 2.553(de).15 G .053(lement is returned so you can free the)
--2.553 F(line, data, and containing structure.)108 662.4 Q F1
-(histdata_t)108 686.4 Q F2(fr)2.5 E(ee_history_entry)-.18 E F0(\()4.166
-E F1(HIST_ENTR)A 2.5(Y*)-.18 G(histent)-2.5 E F0(\))1.666 E .934
-(Free the history entry)108 698.4 R F1(histent)3.433 E F0 .933(and an)
-3.433 F 3.433(yh)-.15 G .933(istory library pri)-3.433 F -.25(va)-.25 G
-.933(te data associated with it.).25 F .933(Returns the applica-)5.933 F
-(tion-speci\214c data so the caller can dispose of it.)108 710.4 Q
-(GNU History 6.3)72 768 Q(2015 May 24)138.175 E(3)202.335 E 0 Cg EP
+-2.553 F(line, data, and containing structure.)108 686.4 Q F1
+(histdata_t)108 710.4 Q F2(fr)2.5 E(ee_history_entry)-.18 E F0(\()4.166
+E F1(HIST_ENTR)A 2.5(Y*)-.18 G(histent)-2.5 E F0(\))1.666 E 3.31
+(Free the history entry)108 722.4 R F1(histent)5.81 E F0 3.309(and an)
+5.81 F 5.809(yh)-.15 G 3.309(istory library pri)-5.809 F -.25(va)-.25 G
+3.309(te data associated with it.).25 F 3.309(Returns the)8.309 F
+(GNU History 6.3)72 768 Q(2017 October 8)133.735 E(3)197.895 E 0 Cg EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library)
--.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E/F1
-10/Times-Italic@0 SF(HIST_ENTR)108 84 Q 2.5(Y*)-.18 G/F2 10/Times-Bold@0
-SF -.18(re)C(place_history_entry).18 E F0(\()4.166 E F1(int whic)A -.834
-(h, const)-.15 F -.15(ch)2.5 G(ar *line).15 E 1.666(,h)-.1 G
-(istdata_t data)-1.666 E F0(\))3.332 E(Mak)108 96 Q 3.062(et)-.1 G .562
-(he history entry at of)-3.062 F(fset)-.25 E F1(whic)3.062 E(h)-.15 E F0
-(ha)3.062 E -.15(ve)-.2 G F1(line)3.212 E F0(and)3.062 E F1(data)3.062 E
-F0 5.563(.T)C .563(his returns the old entry so the caller can dis-)
--5.563 F(pose of an)108 108 Q 2.5(ya)-.15 G(pplication-speci\214c data.)
--2.5 E(In the case of an in)5 E -.25(va)-.4 G(lid).25 E F1(whic)2.5 E(h)
--.15 E F0 2.5(,a)C F2(NULL)A F0(pointer is returned.)2.5 E F1(void)108
-132 Q F2(clear_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
-(Clear the history list by deleting all the entries.)108 144 Q F1(void)
-108 168 Q F2(sti\215e_history)2.5 E F0(\()4.166 E F1(int max)A F0(\))
-1.666 E(Sti\215e the history list, remembering only the last)108 180 Q
-F1(max)2.5 E F0(entries.)2.5 E F1(int)108 204 Q F2(unsti\215e_history)
-2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E .46
-(Stop sti\215ing the history)108 216 R 5.46(.T)-.65 G .46
-(his returns the pre)-5.46 F .46
+-.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E
+(application-speci\214c data so the caller can dispose of it.)108 84 Q
+/F1 10/Times-Italic@0 SF(HIST_ENTR)108 108 Q 2.5(Y*)-.18 G/F2 10
+/Times-Bold@0 SF -.18(re)C(place_history_entry).18 E F0(\()4.166 E F1
+(int whic)A -.834(h, const)-.15 F -.15(ch)2.5 G(ar *line).15 E 1.666(,h)
+-.1 G(istdata_t data)-1.666 E F0(\))3.332 E(Mak)108 120 Q 3.062(et)-.1 G
+.562(he history entry at of)-3.062 F(fset)-.25 E F1(whic)3.062 E(h)-.15
+E F0(ha)3.062 E -.15(ve)-.2 G F1(line)3.212 E F0(and)3.062 E F1(data)
+3.062 E F0 5.563(.T)C .563
+(his returns the old entry so the caller can dis-)-5.563 F(pose of an)
+108 132 Q 2.5(ya)-.15 G(pplication-speci\214c data.)-2.5 E
+(In the case of an in)5 E -.25(va)-.4 G(lid).25 E F1(whic)2.5 E(h)-.15 E
+F0 2.5(,a)C F2(NULL)A F0(pointer is returned.)2.5 E F1(void)108 156 Q F2
+(clear_history)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
+(Clear the history list by deleting all the entries.)108 168 Q F1(void)
+108 192 Q F2(sti\215e_history)2.5 E F0(\()4.166 E F1(int max)A F0(\))
+1.666 E .38(Sti\215e the history list, remembering only the last)108 204
+R F1(max)2.88 E F0 2.88(entries. The)2.88 F .38
+(history list will contain only)2.88 F F1(max)2.88 E F0(entries)2.88 E
+(at a time.)108 216 Q F1(int)108 240 Q F2(unsti\215e_history)2.5 E F0
+(\()4.166 E F1(void)A F0(\))1.666 E .46(Stop sti\215ing the history)108
+252 R 5.46(.T)-.65 G .46(his returns the pre)-5.46 F .46
(viously-set maximum number of history entries \(as set by)-.25 F F2
-(sti-)2.96 E(\215e_history\(\))108 228 Q F0 2.5(\). history)B -.1(wa)2.5
+(sti-)2.96 E(\215e_history\(\))108 264 Q F0 2.5(\). history)B -.1(wa)2.5
G 2.5(ss).1 G 2.5(ti\215ed. The)-2.5 F -.25(va)2.5 G(lue is positi).25 E
.3 -.15(ve i)-.25 H 2.5(ft).15 G(he history w)-2.5 E(as sti\215ed, ne)
-.1 E -.05(ga)-.15 G(ti).05 E .3 -.15(ve i)-.25 H 2.5(fi).15 G 2.5(tw)
--2.5 G(asn')-2.6 E(t.)-.18 E F1(int)108 252 Q F2(history_is_sti\215ed)
+-2.5 G(asn')-2.6 E(t.)-.18 E F1(int)108 288 Q F2(history_is_sti\215ed)
2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
(Returns non-zero if the history is sti\215ed, zero if it is not.)108
-264 Q F2(Inf)87 292.8 Q(ormation About the History List)-.25 E F0(These\
+300 Q F2(Inf)87 328.8 Q(ormation About the History List)-.25 E F0(These\
functions return information about the entire history list or indi)108
-304.8 Q(vidual list entries.)-.25 E F1(HIST_ENTR)108 328.8 Q 2.5(Y*)-.18
+340.8 Q(vidual list entries.)-.25 E F1(HIST_ENTR)108 364.8 Q 2.5(Y*)-.18
G(*)-2.5 E F2(history_list)2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
-.707(Return a)108 340.8 R F2(NULL)3.207 E F0 .707(terminated array of)
-3.207 F F1(HIST_ENTR)3.207 E 3.208(Y*)-.18 G F0 .708
-(which is the current input history)B 5.708(.E)-.65 G .708
-(lement 0 of this)-5.708 F(list is the be)108 352.8 Q(ginning of time.)
+.708(Return a)108 376.8 R F2(NULL)3.208 E F0 .708(terminated array of)
+3.208 F F1(HIST_ENTR)3.208 E 3.208(Y*)-.18 G F0 .708
+(which is the current input history)B 5.707(.E)-.65 G .707
+(lement 0 of this)-5.707 F(list is the be)108 388.8 Q(ginning of time.)
-.15 E(If there is no history)5 E 2.5(,r)-.65 G(eturn)-2.5 E F2(NULL)2.5
-E F0(.)A F1(int)108 376.8 Q F2(wher)2.5 E(e_history)-.18 E F0(\()4.166 E
-F1(void)A F0(\))1.666 E(Returns the of)108 388.8 Q
-(fset of the current history element.)-.25 E F1(HIST_ENTR)108 412.8 Q
+E F0(.)A F1(int)108 412.8 Q F2(wher)2.5 E(e_history)-.18 E F0(\()4.166 E
+F1(void)A F0(\))1.666 E(Returns the of)108 424.8 Q
+(fset of the current history element.)-.25 E F1(HIST_ENTR)108 448.8 Q
2.5(Y*)-.18 G F2(curr)A(ent_history)-.18 E F0(\()4.166 E F1(void)A F0
(\))1.666 E 1.373
(Return the history entry at the current position, as determined by)108
-424.8 R F2(wher)3.873 E(e_history\(\))-.18 E F0 6.373(.I)C 3.873(ft)
--6.373 G 1.373(here is no entry)-3.873 F(there, return a)108 436.8 Q F2
-(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1(HIST_ENTR)108 460.8 Q 2.5(Y*)
+460.8 R F2(wher)3.873 E(e_history\(\))-.18 E F0 6.373(.I)C 3.873(ft)
+-6.373 G 1.374(here is no entry)-3.873 F(there, return a)108 472.8 Q F2
+(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1(HIST_ENTR)108 496.8 Q 2.5(Y*)
-.18 G F2(history_get)A F0(\()4.166 E F1(int of)A(fset)-.18 E F0(\))
-1.666 E .287(Return the history entry at position)108 472.8 R F1(of)
-2.787 E(fset)-.18 E F0 2.787(,s)C .287(tarting from)-2.787 F F2
-(history_base)2.787 E F0 5.287(.I)C 2.787(ft)-5.287 G .287
-(here is no entry there, or if)-2.787 F F1(of)2.788 E(fset)-.18 E F0
-(is greater than the history length, return a)108 484.8 Q F2(NULL)2.5 E
-F0(pointer)2.5 E(.)-.55 E F1(time_t)108 508.8 Q F2(history_get_time)2.5
-E F0(\()4.166 E F1(HIST_ENTR)A 2.5(Y*)-.18 G F0(\))-.834 E(Return the t\
-ime stamp associated with the history entry passed as the ar)108 520.8 Q
-(gument.)-.18 E F1(int)108 544.8 Q F2(history_total_bytes)2.5 E F0(\()
-4.166 E F1(void)A F0(\))1.666 E .392
+1.666 E 1.069(Return the history entry at position)108 508.8 R F1(of)
+3.569 E(fset)-.18 E F0 6.069(.T)C 1.069(he range of v)-6.069 F 1.069
+(alid v)-.25 F 1.069(alues of)-.25 F F1(of)3.569 E(fset)-.18 E F0 1.068
+(starts at)3.569 F F2(history_base)3.568 E F0(and)3.568 E .286(ends at)
+108 520.8 R F2(history_length)2.786 E F0 2.786<ad31>2.786 G 5.286(.I)
+-2.786 G 2.786(ft)-5.286 G .286(here is no entry there, or if)-2.786 F
+F1(of)2.786 E(fset)-.18 E F0 .286(is outside the v)2.786 F .287
+(alid range, return a)-.25 F F2(NULL)2.787 E F0(pointer)108 532.8 Q(.)
+-.55 E F1(time_t)108 556.8 Q F2(history_get_time)2.5 E F0(\()4.166 E F1
+(HIST_ENTR)A 2.5(Y*)-.18 G F0(\))-.834 E(Return the time stamp associat\
+ed with the history entry passed as the ar)108 568.8 Q(gument.)-.18 E F1
+(int)108 592.8 Q F2(history_total_bytes)2.5 E F0(\()4.166 E F1(void)A F0
+(\))1.666 E .392
(Return the number of bytes that the primary history entries are using.)
-108 556.8 R .391(This function returns the sum of the)5.392 F
-(lengths of all the lines in the history)108 568.8 Q(.)-.65 E F2(Mo)87
-597.6 Q(ving Ar)-.1 E(ound the History List)-.18 E F0
-(These functions allo)108 609.6 Q 2.5(wt)-.25 G(he current inde)-2.5 E
+108 604.8 R .391(This function returns the sum of the)5.392 F
+(lengths of all the lines in the history)108 616.8 Q(.)-.65 E F2(Mo)87
+645.6 Q(ving Ar)-.1 E(ound the History List)-.18 E F0
+(These functions allo)108 657.6 Q 2.5(wt)-.25 G(he current inde)-2.5 E
2.5(xi)-.15 G(nto the history list to be set or changed.)-2.5 E F1(int)
-108 633.6 Q F2(history_set_pos)2.5 E F0(\()4.166 E F1(int pos)A F0(\))
-1.666 E .79(Set the current history of)108 645.6 R .79(fset to)-.25 F F1
+108 681.6 Q F2(history_set_pos)2.5 E F0(\()4.166 E F1(int pos)A F0(\))
+1.666 E .79(Set the current history of)108 693.6 R .79(fset to)-.25 F F1
(pos)3.29 E F0 3.29(,a)C 3.29(na)-3.29 G .79(bsolute inde)-3.29 F 3.29
(xi)-.15 G .79(nto the list.)-3.29 F .79(Returns 1 on success, 0 if)5.79
F F1(pos)3.29 E F0 .79(is less)3.29 F
-(than zero or greater than the number of history entries.)108 657.6 Q F1
-(HIST_ENTR)108 681.6 Q 2.5(Y*)-.18 G F2(pr)A -.15(ev)-.18 G
-(ious_history).15 E F0(\()4.166 E F1(void)A F0(\))1.666 E .208
-(Back up the current history of)108 693.6 R .208(fset to the pre)-.25 F
-.208(vious history entry)-.25 F 2.707(,a)-.65 G .207
-(nd return a pointer to that entry)-2.707 F 5.207(.I)-.65 G 2.707(ft)
--5.207 G .207(here is)-2.707 F(no pre)108 705.6 Q(vious entry)-.25 E 2.5
-(,r)-.65 G(eturn a)-2.5 E F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1
-(HIST_ENTR)108 729.6 Q 2.5(Y*)-.18 G F2(next_history)A F0(\()4.166 E F1
-(void)A F0(\))1.666 E(GNU History 6.3)72 768 Q(2015 May 24)138.175 E(4)
-202.335 E 0 Cg EP
+(than zero or greater than the number of history entries.)108 705.6 Q F1
+(HIST_ENTR)108 729.6 Q 2.5(Y*)-.18 G F2(pr)A -.15(ev)-.18 G
+(ious_history).15 E F0(\()4.166 E F1(void)A F0(\))1.666 E
+(GNU History 6.3)72 768 Q(2017 October 8)133.735 E(4)197.895 E 0 Cg EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library)
-.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E
-.332(If the current history of)108 84 R .333(fset refers to a v)-.25 F
-.333(alid history entry)-.25 F 2.833(,i)-.65 G .333
+.208(Back up the current history of)108 84 R .208(fset to the pre)-.25 F
+.208(vious history entry)-.25 F 2.707(,a)-.65 G .207
+(nd return a pointer to that entry)-2.707 F 5.207(.I)-.65 G 2.707(ft)
+-5.207 G .207(here is)-2.707 F(no pre)108 96 Q(vious entry)-.25 E 2.5
+(,r)-.65 G(eturn a)-2.5 E/F1 10/Times-Bold@0 SF(NULL)2.5 E F0(pointer)
+2.5 E(.)-.55 E/F2 10/Times-Italic@0 SF(HIST_ENTR)108 120 Q 2.5(Y*)-.18 G
+F1(next_history)A F0(\()4.166 E F2(void)A F0(\))1.666 E .332
+(If the current history of)108 132 R .333(fset refers to a v)-.25 F .333
+(alid history entry)-.25 F 2.833(,i)-.65 G .333
(ncrement the current history of)-2.833 F 2.833(fset. If)-.25 F .333
-(the possi-)2.833 F .202(bly-incremented history of)108 96 R .202
+(the possi-)2.833 F .202(bly-incremented history of)108 144 R .202
(fset refers to a v)-.25 F .202(alid history entry)-.25 F 2.702(,r)-.65
G .202(eturn a pointer to that entry; otherwise, return)-2.702 F(a)108
-108 Q/F1 10/Times-Bold@0 SF(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1
-(Sear)87 136.8 Q(ching the History List)-.18 E F0 .005
-(These functions allo)108 148.8 R 2.505(ws)-.25 G .006(earching of the \
-history list for entries containing a speci\214c string.)-2.505 F .006
-(Searching may be)5.006 F 1.452(performed both forw)108 160.8 R 1.452
-(ard and backw)-.1 F 1.451(ard from the current history position.)-.1 F
-1.451(The search may be)6.451 F/F2 10/Times-Italic@0 SF(anc)3.951 E(hor)
--.15 E(ed)-.37 E F0(,)A(meaning that the string must match at the be)108
-172.8 Q(ginning of the history entry)-.15 E(.)-.65 E F2(int)108 196.8 Q
-F1(history_sear)2.5 E(ch)-.18 E F0(\()4.166 E F2(const c)A(har *string)
+156 Q F1(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1(Sear)87 184.8 Q
+(ching the History List)-.18 E F0 .005(These functions allo)108 196.8 R
+2.505(ws)-.25 G .006(earching of the history list for entries containin\
+g a speci\214c string.)-2.505 F .006(Searching may be)5.006 F 1.452
+(performed both forw)108 208.8 R 1.452(ard and backw)-.1 F 1.451
+(ard from the current history position.)-.1 F 1.451(The search may be)
+6.451 F F2(anc)3.951 E(hor)-.15 E(ed)-.37 E F0(,)A
+(meaning that the string must match at the be)108 220.8 Q
+(ginning of the history entry)-.15 E(.)-.65 E F2(int)108 244.8 Q F1
+(history_sear)2.5 E(ch)-.18 E F0(\()4.166 E F2(const c)A(har *string)
-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))1.666 E .155
-(Search the history for)108 208.8 R F2(string)2.655 E F0 2.656(,s)C .156
+(Search the history for)108 256.8 R F2(string)2.655 E F0 2.656(,s)C .156
(tarting at the current history of)-2.656 F 2.656(fset. If)-.25 F F2
(dir)2.656 E(ection)-.37 E F0 .156(is less than 0, then the search)2.656
-F .802(is through pre)108 220.8 R .802
+F .802(is through pre)108 268.8 R .802
(vious entries, otherwise through subsequent entries.)-.25 F(If)5.801 E
F2(string)3.301 E F0 .801(is found, then the current his-)3.301 F .064
-(tory inde)108 232.8 R 2.564(xi)-.15 G 2.564(ss)-2.564 G .064
+(tory inde)108 280.8 R 2.564(xi)-.15 G 2.564(ss)-2.564 G .064
(et to that history entry)-2.564 F 2.564(,a)-.65 G .064(nd the v)-2.564
F .064(alue returned is the of)-.25 F .064
(fset in the line of the entry where)-.25 F F2(string)2.565 E F0 -.1(wa)
-108 244.8 S 2.5(sf).1 G 2.5(ound. Otherwise,)-2.5 F
-(nothing is changed, and a -1 is returned.)2.5 E F2(int)108 268.8 Q F1
+108 292.8 S 2.5(sf).1 G 2.5(ound. Otherwise,)-2.5 F
+(nothing is changed, and a -1 is returned.)2.5 E F2(int)108 316.8 Q F1
(history_sear)2.5 E(ch_pr)-.18 E(e\214x)-.18 E F0(\()4.166 E F2(const c)
A(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F0(\))
-1.666 E .684(Search the history for)108 280.8 R F2(string)3.183 E F0
+1.666 E .684(Search the history for)108 328.8 R F2(string)3.183 E F0
3.183(,s)C .683(tarting at the current history of)-3.183 F 3.183
(fset. The)-.25 F .683(search is anchored: matching lines)3.183 F 1.063
-(must be)108 292.8 R 1.063(gin with)-.15 F F2(string)3.563 E F0 6.063
+(must be)108 340.8 R 1.063(gin with)-.15 F F2(string)3.563 E F0 6.063
(.I)C(f)-6.063 E F2(dir)3.563 E(ection)-.37 E F0 1.064
(is less than 0, then the search is through pre)3.563 F 1.064
(vious entries, otherwise)-.25 F 1.115(through subsequent entries.)108
-304.8 R(If)6.115 E F2(string)3.615 E F0 1.115
+352.8 R(If)6.115 E F2(string)3.615 E F0 1.115
(is found, then the current history inde)3.615 F 3.614(xi)-.15 G 3.614
(ss)-3.614 G 1.114(et to that entry)-3.614 F 3.614(,a)-.65 G 1.114
-(nd the)-3.614 F(return v)108 316.8 Q(alue is 0.)-.25 E
+(nd the)-3.614 F(return v)108 364.8 Q(alue is 0.)-.25 E
(Otherwise, nothing is changed, and a -1 is returned.)5 E F2(int)108
-340.8 Q F1(history_sear)2.5 E(ch_pos)-.18 E F0(\()4.166 E F2(const c)A
+388.8 Q F1(history_sear)2.5 E(ch_pos)-.18 E F0(\()4.166 E F2(const c)A
(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E -.834(ection, int)
--.37 F(pos)2.5 E F0(\))3.332 E .603(Search for)108 352.8 R F2(string)
+-.37 F(pos)2.5 E F0(\))3.332 E .603(Search for)108 400.8 R F2(string)
3.103 E F0 .603(in the history list, starting at)3.103 F F2(pos)3.104 E
F0 3.104(,a)C 3.104(na)-3.104 G .604(bsolute inde)-3.104 F 3.104(xi)-.15
G .604(nto the list.)-3.104 F(If)5.604 E F2(dir)3.104 E(ection)-.37 E F0
.604(is ne)3.104 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(,).15 E .608
-(the search proceeds backw)108 364.8 R .608(ard from)-.1 F F2(pos)3.108
+(the search proceeds backw)108 412.8 R .608(ard from)-.1 F F2(pos)3.108
E F0 3.108(,o)C .608(therwise forw)-3.108 F 3.108(ard. Returns)-.1 F
.608(the absolute inde)3.108 F 3.108(xo)-.15 G 3.108(ft)-3.108 G .608
-(he history ele-)-3.108 F(ment where)108 376.8 Q F2(string)2.5 E F0 -.1
+(he history ele-)-3.108 F(ment where)108 424.8 Q F2(string)2.5 E F0 -.1
(wa)2.5 G 2.5(sf).1 G(ound, or -1 otherwise.)-2.5 E F1
-(Managing the History File)87 405.6 Q F0 .035(The History library can r\
-ead the history from and write it to a \214le.)108 417.6 R .036
+(Managing the History File)87 453.6 Q F0 .035(The History library can r\
+ead the history from and write it to a \214le.)108 465.6 R .036
(This section documents the functions for)5.035 F
-(managing a history \214le.)108 429.6 Q F2(int)108 453.6 Q F1 -.18(re)
+(managing a history \214le.)108 477.6 Q F2(int)108 501.6 Q F1 -.18(re)
2.5 G(ad_history).18 E F0(\()4.166 E F2(const c)A(har *\214lename)-.15 E
-F0(\))1.666 E .151(Add the contents of)108 465.6 R F2(\214lename)2.651 E
+F0(\))1.666 E .151(Add the contents of)108 513.6 R F2(\214lename)2.651 E
F0 .151(to the history list, a line at a time.)2.651 F(If)5.15 E F2
(\214lename)2.65 E F0(is)2.65 E F1(NULL)2.65 E F0 2.65(,t)C .15
-(hen read from)-2.65 F F2(~/.his-)2.65 E(tory)108 477.6 Q F0 5(.R)C
+(hen read from)-2.65 F F2(~/.his-)2.65 E(tory)108 525.6 Q F0 5(.R)C
(eturns 0 if successful, or)-5 E F1(err)2.5 E(no)-.15 E F0(if not.)2.5 E
-F2(int)108 501.6 Q F1 -.18(re)2.5 G(ad_history_range).18 E F0(\()4.166 E
+F2(int)108 549.6 Q F1 -.18(re)2.5 G(ad_history_range).18 E F0(\()4.166 E
F2(const c)A(har *\214lename)-.15 E 1.666(,i)-.1 G(nt fr)-1.666 E -.834
(om, int)-.45 F(to)2.5 E F0(\))3.332 E .052(Read a range of lines from)
-108 513.6 R F2(\214lename)2.553 E F0 2.553(,a)C .053
+108 561.6 R F2(\214lename)2.553 E F0 2.553(,a)C .053
(dding them to the history list.)-2.553 F .053(Start reading at line)
5.053 F F2(fr)2.553 E(om)-.45 E F0 .053(and end at)2.553 F F2(to)2.553 E
-F0(.)A(If)108 525.6 Q F2(fr)2.889 E(om)-.45 E F0 .389
+F0(.)A(If)108 573.6 Q F2(fr)2.889 E(om)-.45 E F0 .389
(is zero, start at the be)2.889 F 2.889(ginning. If)-.15 F F2(to)2.889 E
F0 .389(is less than)2.889 F F2(fr)2.889 E(om)-.45 E F0 2.889(,t)C .388
(hen read until the end of the \214le.)-2.889 F(If)5.388 E F2
-(\214lename)2.888 E F0(is)108 537.6 Q F1(NULL)2.5 E F0 2.5(,t)C
+(\214lename)2.888 E F0(is)108 585.6 Q F1(NULL)2.5 E F0 2.5(,t)C
(hen read from)-2.5 E F2(~/.history)2.5 E F0 5(.R)C
(eturns 0 if successful, or)-5 E F1(err)2.5 E(no)-.15 E F0(if not.)2.5 E
-F2(int)108 561.6 Q F1(write_history)2.5 E F0(\()4.166 E F2(const c)A
+F2(int)108 609.6 Q F1(write_history)2.5 E F0(\()4.166 E F2(const c)A
(har *\214lename)-.15 E F0(\))1.666 E .961(Write the current history to)
-108 573.6 R F2(\214lename)3.461 E F0 3.461(,o)C -.15(ve)-3.611 G
+108 621.6 R F2(\214lename)3.461 E F0 3.461(,o)C -.15(ve)-3.611 G
(rwriting).15 E F2(\214lename)3.461 E F0 .961(if necessary)3.461 F 5.961
(.I)-.65 G(f)-5.961 E F2(\214lename)3.462 E F0(is)3.462 E F1(NULL)3.462
-E F0 3.462(,t)C .962(hen write)-3.462 F(the history list to)108 585.6 Q
+E F0 3.462(,t)C .962(hen write)-3.462 F(the history list to)108 633.6 Q
F2(~/.history)2.5 E F0 5(.R)C(eturns 0 on success, or)-5 E F1(err)2.5 E
-(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F2(int)108 621.6 Q
+(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F2(int)108 669.6 Q
F1(append_history)2.5 E F0(\()4.166 E F2(int nelements,)A(const c)1.666
-E(har *\214lename)-.15 E F0(\))1.666 E .839(Append the last)108 633.6 R
+E(har *\214lename)-.15 E F0(\))1.666 E .839(Append the last)108 681.6 R
F2(nelements)3.339 E F0 .839(of the history list to)3.339 F F2
(\214lename)3.339 E F0 5.839(.I)C(f)-5.839 E F2(\214lename)3.339 E F0
(is)3.339 E F1(NULL)3.339 E F0 3.339(,t)C .838(hen append to)-3.339 F F2
-(~/.history)3.338 E F0(.)A(Returns 0 on success, or)108 645.6 Q F1(err)
+(~/.history)3.338 E F0(.)A(Returns 0 on success, or)108 693.6 Q F1(err)
2.5 E(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F2(int)108
-669.6 Q F1(history_truncate_\214le)2.5 E F0(\()4.166 E F2(const c)A
+717.6 Q F1(history_truncate_\214le)2.5 E F0(\()4.166 E F2(const c)A
(har *\214lename)-.15 E 1.666(,i)-.1 G(nt nlines)-1.666 E F0(\))1.666 E
--.35(Tr)108 681.6 S .38(uncate the history \214le).35 F F2(\214lename)
+-.35(Tr)108 729.6 S .38(uncate the history \214le).35 F F2(\214lename)
2.88 E F0 2.88(,l)C(ea)-2.88 E .38(ving only the last)-.2 F F2(nlines)
2.881 E F0 2.881(lines. If)2.881 F F2(\214lename)2.881 E F0(is)2.881 E
F1(NULL)2.881 E F0 2.881(,t)C(hen)-2.881 E F2(~/.history)2.881 E F0(is)
-2.881 E 2.5(truncated. Returns)108 693.6 R 2.5(0o)2.5 G 2.5(ns)-2.5 G
-(uccess, or)-2.5 E F1(err)2.5 E(no)-.15 E F0(on f)2.5 E(ailure.)-.1 E
-(GNU History 6.3)72 768 Q(2015 May 24)138.175 E(5)202.335 E 0 Cg EP
+2.881 E(GNU History 6.3)72 768 Q(2017 October 8)133.735 E(5)197.895 E 0
+Cg EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library)
--.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E/F1
-10/Times-Bold@0 SF(History Expansion)87 84 Q F0
-(These functions implement history e)108 96 Q(xpansion.)-.15 E/F2 10
-/Times-Italic@0 SF(int)108 120 Q F1(history_expand)2.5 E F0(\()4.166 E
-F2 -.15(ch)C(ar *string).15 E 1.666(,c)-.1 G(har **output)-1.816 E F0
-(\))1.666 E(Expand)108 132 Q F2(string)2.5 E F0 2.5(,p)C
-(lacing the result into)-2.5 E F2(output)2.5 E F0 2.5(,ap)C
-(ointer to a string.)-2.5 E(Returns:)5 E(0)144 144 Q .566(If no e)180
-144 R .566(xpansions took place \(or)-.15 F 3.065(,i)-.4 G 3.065(ft)
--3.065 G .565(he only change in the te)-3.065 F .565(xt w)-.15 F .565
-(as the remo)-.1 F -.25(va)-.15 G 3.065(lo).25 G 3.065(fe)-3.065 G
-(scape)-3.065 E(characters preceding the history e)180 156 Q
-(xpansion character\);)-.15 E(1)144 168 Q(if e)180 168 Q
-(xpansions did tak)-.15 E 2.5(ep)-.1 G(lace;)-2.5 E(-1)144 180 Q
-(if there w)180 180 Q(as an error in e)-.1 E(xpansion;)-.15 E(2)144 192
-Q(if the returned line should be displayed, b)180 192 Q(ut not e)-.2 E
--.15(xe)-.15 G(cuted, as with the).15 E F1(:p)2.5 E F0(modi\214er)2.5 E
-(.)-.55 E(If an error ocurred in e)108 204 Q(xpansion, then)-.15 E F2
-(output)2.5 E F0(contains a descripti)2.5 E .3 -.15(ve e)-.25 H
-(rror message.).15 E F2 -.15(ch)108 228 S(ar *).15 E F1(get_history_e)
-2.5 E -.1(ve)-.15 G(nt).1 E F0(\()4.166 E F2(const c)A(har *string)-.15
-E 1.666(,i)-.1 G(nt *cinde)-1.666 E -.834(x, int)-.2 F(qc)2.5 E(har)-.15
-E F0(\))3.332 E .262(Returns the te)108 240 R .262(xt of the history e)
--.15 F -.15(ve)-.25 G .262(nt be).15 F .263(ginning at)-.15 F F2(string)
-2.763 E F0(+)2.763 E F2(*cinde)2.763 E(x)-.2 E F0(.)A F2(*cinde)5.263 E
-(x)-.2 E F0 .263(is modi\214ed to point to after the)2.763 F -2.15 -.25
-(ev e)108 252 T .71(nt speci\214er).25 F 5.71(.A)-.55 G 3.21(tf)-5.71 G
-.71(unction entry)-3.21 F(,)-.65 E F2(cinde)3.21 E(x)-.2 E F0 .709
+-.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E 2.5
+(truncated. Returns)108 84 R 2.5(0o)2.5 G 2.5(ns)-2.5 G(uccess, or)-2.5
+E/F1 10/Times-Bold@0 SF(err)2.5 E(no)-.15 E F0(on f)2.5 E(ailure.)-.1 E
+F1(History Expansion)87 112.8 Q F0(These functions implement history e)
+108 124.8 Q(xpansion.)-.15 E/F2 10/Times-Italic@0 SF(int)108 148.8 Q F1
+(history_expand)2.5 E F0(\()4.166 E F2 -.15(ch)C(ar *string).15 E 1.666
+(,c)-.1 G(har **output)-1.816 E F0(\))1.666 E(Expand)108 160.8 Q F2
+(string)2.5 E F0 2.5(,p)C(lacing the result into)-2.5 E F2(output)2.5 E
+F0 2.5(,ap)C(ointer to a string.)-2.5 E(Returns:)5 E(0)144 172.8 Q .566
+(If no e)180 172.8 R .566(xpansions took place \(or)-.15 F 3.065(,i)-.4
+G 3.065(ft)-3.065 G .565(he only change in the te)-3.065 F .565(xt w)
+-.15 F .565(as the remo)-.1 F -.25(va)-.15 G 3.065(lo).25 G 3.065(fe)
+-3.065 G(scape)-3.065 E(characters preceding the history e)180 184.8 Q
+(xpansion character\);)-.15 E(1)144 196.8 Q(if e)180 196.8 Q
+(xpansions did tak)-.15 E 2.5(ep)-.1 G(lace;)-2.5 E(-1)144 208.8 Q
+(if there w)180 208.8 Q(as an error in e)-.1 E(xpansion;)-.15 E(2)144
+220.8 Q(if the returned line should be displayed, b)180 220.8 Q
+(ut not e)-.2 E -.15(xe)-.15 G(cuted, as with the).15 E F1(:p)2.5 E F0
+(modi\214er)2.5 E(.)-.55 E(If an error ocurred in e)108 232.8 Q
+(xpansion, then)-.15 E F2(output)2.5 E F0(contains a descripti)2.5 E .3
+-.15(ve e)-.25 H(rror message.).15 E F2 -.15(ch)108 256.8 S(ar *).15 E
+F1(get_history_e)2.5 E -.1(ve)-.15 G(nt).1 E F0(\()4.166 E F2(const c)A
+(har *string)-.15 E 1.666(,i)-.1 G(nt *cinde)-1.666 E -.834(x, int)-.2 F
+(qc)2.5 E(har)-.15 E F0(\))3.332 E .262(Returns the te)108 268.8 R .262
+(xt of the history e)-.15 F -.15(ve)-.25 G .262(nt be).15 F .263
+(ginning at)-.15 F F2(string)2.763 E F0(+)2.763 E F2(*cinde)2.763 E(x)
+-.2 E F0(.)A F2(*cinde)5.263 E(x)-.2 E F0 .263
+(is modi\214ed to point to after the)2.763 F -2.15 -.25(ev e)108 280.8 T
+.71(nt speci\214er).25 F 5.71(.A)-.55 G 3.21(tf)-5.71 G .71
+(unction entry)-3.21 F(,)-.65 E F2(cinde)3.21 E(x)-.2 E F0 .709
(points to the inde)3.21 F 3.209(xi)-.15 G(nto)-3.209 E F2(string)3.209
E F0 .709(where the history e)3.209 F -.15(ve)-.25 G .709
-(nt speci\214ca-).15 F .527(tion be)108 264 R(gins.)-.15 E F2(qc)5.527 E
-(har)-.15 E F0 .527(is a character that is allo)3.027 F .527
+(nt speci\214ca-).15 F .527(tion be)108 292.8 R(gins.)-.15 E F2(qc)5.527
+E(har)-.15 E F0 .527(is a character that is allo)3.027 F .527
(wed to end the e)-.25 F -.15(ve)-.25 G .528
(nt speci\214cation in addition to the `).15 F(`normal')-.74 E(')-.74 E
-(terminating characters.)108 276 Q F2 -.15(ch)108 300 S(ar **).15 E F1
-(history_tok)2.5 E(enize)-.1 E F0(\()4.166 E F2(const c)A(har *string)
--.15 E F0(\))1.666 E .239(Return an array of tok)108 312 R .239
+(terminating characters.)108 304.8 Q F2 -.15(ch)108 328.8 S(ar **).15 E
+F1(history_tok)2.5 E(enize)-.1 E F0(\()4.166 E F2(const c)A(har *string)
+-.15 E F0(\))1.666 E .239(Return an array of tok)108 340.8 R .239
(ens parsed out of)-.1 F F2(string)2.739 E F0 2.739(,m)C .238
(uch as the shell might.)-2.739 F .238(The tok)5.238 F .238
-(ens are split on the charac-)-.1 F(ters in the)108 324 Q F1(history_w)
-2.5 E(ord_delimiters)-.1 E F0 -.25(va)2.5 G
+(ens are split on the charac-)-.1 F(ters in the)108 352.8 Q F1
+(history_w)2.5 E(ord_delimiters)-.1 E F0 -.25(va)2.5 G
(riable, and shell quoting con).25 E -.15(ve)-.4 G(ntions are obe).15 E
-(yed.)-.15 E F2 -.15(ch)108 348 S(ar *).15 E F1(history_ar)2.5 E
+(yed.)-.15 E F2 -.15(ch)108 376.8 S(ar *).15 E F1(history_ar)2.5 E
(g_extract)-.1 E F0(\()4.166 E F2(int \214r)A -.834(st, int)-.1 F -.834
(last, const)2.5 F -.15(ch)2.5 G(ar *string).15 E F0(\))3.332 E .025
-(Extract a string se)108 360 R .025(gment consisting of the)-.15 F F2
+(Extract a string se)108 388.8 R .025(gment consisting of the)-.15 F F2
<8c72>2.526 E(st)-.1 E F0(through)2.526 E F2(last)2.526 E F0(ar)2.526 E
.026(guments present in)-.18 F F2(string)2.526 E F0 5.026(.A)C -.18(rg)
--5.026 G .026(uments are split).18 F(using)108 372 Q F1(history_tok)2.5
-E(enize\(\))-.1 E F0(.)A F1(History V)87 400.8 Q(ariables)-.92 E F0
-(This section describes the e)108 412.8 Q(xternally-visible v)-.15 E
+-5.026 G .026(uments are split).18 F(using)108 400.8 Q F1(history_tok)
+2.5 E(enize\(\))-.1 E F0(.)A F1(History V)87 429.6 Q(ariables)-.92 E F0
+(This section describes the e)108 441.6 Q(xternally-visible v)-.15 E
(ariables e)-.25 E(xported by the GNU History Library)-.15 E(.)-.65 E F2
-(int)108 436.8 Q F1(history_base)2.5 E F0(The logical of)108 448.8 Q
-(fset of the \214rst entry in the history list.)-.25 E F2(int)108 472.8
+(int)108 465.6 Q F1(history_base)2.5 E F0(The logical of)108 477.6 Q
+(fset of the \214rst entry in the history list.)-.25 E F2(int)108 501.6
Q F1(history_length)2.5 E F0
-(The number of entries currently stored in the history list.)108 484.8 Q
-F2(int)108 508.8 Q F1(history_max_entries)2.5 E F0
-(The maximum number of history entries.)108 520.8 Q
+(The number of entries currently stored in the history list.)108 513.6 Q
+F2(int)108 537.6 Q F1(history_max_entries)2.5 E F0
+(The maximum number of history entries.)108 549.6 Q
(This must be changed using)5 E F1(sti\215e_history\(\))2.5 E F0(.)A F2
-(int)108 544.8 Q F1(history_wite_timestamps)2.5 E F0 1.468
+(int)108 573.6 Q F1(history_wite_timestamps)2.5 E F0 1.468
(If non-zero, timestamps are written to the history \214le, so the)108
-556.8 R 3.968(yc)-.15 G 1.468(an be preserv)-3.968 F 1.468
-(ed between sessions.)-.15 F(The)6.468 E(def)108 568.8 Q .438(ault v)-.1
+585.6 R 3.968(yc)-.15 G 1.468(an be preserv)-3.968 F 1.468
+(ed between sessions.)-.15 F(The)6.468 E(def)108 597.6 Q .438(ault v)-.1
F .439(alue is 0, meaning that timestamps are not sa)-.25 F -.15(ve)-.2
G 2.939(d. The).15 F .439(current timestamp format uses the v)2.939 F
-.439(alue of)-.25 F F2(history_comment_c)108 580.8 Q(har)-.15 E F0 .051
+.439(alue of)-.25 F F2(history_comment_c)108 609.6 Q(har)-.15 E F0 .051
(to delimit timestamp entries in the history \214le.)2.552 F .051
(If that v)5.051 F .051(ariable does not ha)-.25 F .351 -.15(ve a v)-.2
-H(alue)-.1 E(\(the def)108 592.8 Q
-(ault\), timestamps will not be written.)-.1 E F2 -.15(ch)108 616.8 S
+H(alue)-.1 E(\(the def)108 621.6 Q
+(ault\), timestamps will not be written.)-.1 E F2 -.15(ch)108 645.6 S
(ar).15 E F1(history_expansion_char)2.5 E F0
-(The character that introduces a history e)108 628.8 Q -.15(ve)-.25 G
+(The character that introduces a history e)108 657.6 Q -.15(ve)-.25 G
2.5(nt. The).15 F(def)2.5 E(ault is)-.1 E F1(!)2.5 E F0 5(.S)C
(etting this to 0 inhibits history e)-5 E(xpansion.)-.15 E F2 -.15(ch)
-108 652.8 S(ar).15 E F1(history_subst_char)2.5 E F0
-(The character that in)108 664.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(sw).1 G
+108 681.6 S(ar).15 E F1(history_subst_char)2.5 E F0
+(The character that in)108 693.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(sw).1 G
(ord substitution if found at the start of a line.)-2.6 E(The def)5 E
-(ault is)-.1 E F1(^)2.5 E F0(.)A F2 -.15(ch)108 688.8 S(ar).15 E F1
-(history_comment_char)2.5 E F0 .116(During tok)108 700.8 R .117
+(ault is)-.1 E F1(^)2.5 E F0(.)A F2 -.15(ch)108 717.6 S(ar).15 E F1
+(history_comment_char)2.5 E F0 1.392(During tok)108 729.6 R 1.392
(enization, if this character is seen as the \214rst character of a w)
--.1 F .117(ord, then it and all subsequent char)-.1 F(-)-.2 E .277
-(acters up to a ne)108 712.8 R .276
-(wline are ignored, suppressing history e)-.25 F .276
-(xpansion for the remainder of the line.)-.15 F .276(This is dis-)5.276
-F(abled by def)108 724.8 Q(ault.)-.1 E(GNU History 6.3)72 768 Q
-(2015 May 24)138.175 E(6)202.335 E 0 Cg EP
+-.1 F 1.393(ord, then it and all subsequent)-.1 F(GNU History 6.3)72 768
+Q(2017 October 8)133.735 E(6)197.895 E 0 Cg EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF(HIST)72 48 Q(OR)-.18 E 124.845(Y\(3\) Library)
--.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E/F1
-10/Times-Italic@0 SF -.15(ch)108 84 S(ar *).15 E/F2 10/Times-Bold@0 SF
-(history_w)2.5 E(ord_delimiters)-.1 E F0
-(The characters that separate tok)108 96 Q(ens for)-.1 E F2(history_tok)
-2.5 E(enize\(\))-.1 E F0 5(.T)C(he def)-5 E(ault v)-.1 E(alue is)-.25 E
-F2 2.5("\\)2.5 G(t\\n\(\)<>;&|")-2.5 E F0(.)A F1 -.15(ch)108 120 S(ar *)
-.15 E F2(history_no_expand_chars)2.5 E F0 2.054
-(The list of characters which inhibit history e)108 132 R 2.054
+-.65 F(Functions Manual)2.5 E(HIST)127.345 E(OR)-.18 E(Y\(3\))-.65 E .31
+(characters up to a ne)108 84 R .31
+(wline are ignored, suppressing history e)-.25 F .309
+(xpansion for the remainder of the line.)-.15 F .309(This is)5.309 F
+(disabled by def)108 96 Q(ault.)-.1 E/F1 10/Times-Italic@0 SF -.15(ch)
+108 120 S(ar *).15 E/F2 10/Times-Bold@0 SF(history_w)2.5 E
+(ord_delimiters)-.1 E F0(The characters that separate tok)108 132 Q
+(ens for)-.1 E F2(history_tok)2.5 E(enize\(\))-.1 E F0 5(.T)C(he def)-5
+E(ault v)-.1 E(alue is)-.25 E F2 2.5("\\)2.5 G(t\\n\(\)<>;&|")-2.5 E F0
+(.)A F1 -.15(ch)108 156 S(ar *).15 E F2(history_no_expand_chars)2.5 E F0
+2.054(The list of characters which inhibit history e)108 168 R 2.054
(xpansion if found immediately follo)-.15 F(wing)-.25 E F2
-(history_expan-)4.555 E(sion_char)108 144 Q F0 5(.T)C(he def)-5 E
+(history_expan-)4.555 E(sion_char)108 180 Q F0 5(.T)C(he def)-5 E
(ault is space, tab, ne)-.1 E(wline,)-.25 E F2(\\r)2.5 E F0 2.5(,a)C(nd)
--2.5 E F2(=)2.5 E F0(.)A F1 -.15(ch)108 168 S(ar *).15 E F2
+-2.5 E F2(=)2.5 E F0(.)A F1 -.15(ch)108 204 S(ar *).15 E F2
(history_sear)2.5 E(ch_delimiter_chars)-.18 E F0 .401(The list of addit\
ional characters which can delimit a history search string, in addition\
- to space, tab,)108 180 R F1(:)2.901 E F0(and)2.901 E F1(?)2.901 E F0
-(in the case of a substring search.)108 192 Q(The def)5 E(ault is empty)
--.1 E(.)-.65 E F1(int)108 216 Q F2(history_quotes_inhibit_expansion)2.5
-E F0 .86(If non-zero, double-quoted w)108 228 R .861
+ to space, tab,)108 216 R F1(:)2.901 E F0(and)2.901 E F1(?)2.901 E F0
+(in the case of a substring search.)108 228 Q(The def)5 E(ault is empty)
+-.1 E(.)-.65 E F1(int)108 252 Q F2(history_quotes_inhibit_expansion)2.5
+E F0 .86(If non-zero, double-quoted w)108 264 R .861
(ords are not scanned for the history e)-.1 F .861
-(xpansion character or the history com-)-.15 F(ment character)108 240 Q
+(xpansion character or the history com-)-.15 F(ment character)108 276 Q
5(.T)-.55 G(he def)-5 E(ault v)-.1 E(alue is 0.)-.25 E F1(rl_lineb)108
-264 Q(uf_func_t *)-.2 E F2(history_inhibit_expansion_function)2.5 E F0
-.348(This should be set to the address of a function that tak)108 276 R
+300 Q(uf_func_t *)-.2 E F2(history_inhibit_expansion_function)2.5 E F0
+.348(This should be set to the address of a function that tak)108 312 R
.348(es tw)-.1 F 2.848(oa)-.1 G -.18(rg)-2.848 G .347(uments: a).18 F F2
.347(char *)2.847 F F0(\()2.847 E F1(string)A F0 2.847(\)a)C .347(nd an)
-2.847 F F2(int)2.847 E F0(inde)2.847 E(x)-.15 E .227
-(into that string \()108 288 R F1(i)A F0 2.727(\). It)B .227
+(into that string \()108 324 R F1(i)A F0 2.727(\). It)B .227
(should return a non-zero v)2.727 F .227(alue if the history e)-.25 F
.227(xpansion starting at)-.15 F F1(string[i])2.728 E F0 .228
-(should not)2.728 F .019(be performed; zero if the e)108 300 R .019
+(should not)2.728 F .019(be performed; zero if the e)108 336 R .019
(xpansion should be done.)-.15 F .019
(It is intended for use by applications lik)5.019 F(e)-.1 E F2(bash)
-2.519 E F0 .018(that use)2.519 F(the history e)108 312 Q
+2.519 E F0 .018(that use)2.519 F(the history e)108 348 Q
(xpansion character for additional purposes.)-.15 E(By def)5 E
(ault, this v)-.1 E(ariable is set to)-.25 E F2(NULL)2.5 E F0(.)A/F3
-10.95/Times-Bold@0 SF(FILES)72 328.8 Q F1(~/.history)109.666 340.8 Q F0
-(Def)144 352.8 Q(ault \214lename for reading and writing sa)-.1 E -.15
-(ve)-.2 G 2.5(dh).15 G(istory)-2.5 E F3(SEE ALSO)72 369.6 Q F1
-(The Gnu Readline Libr)108 381.6 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
-(ox and Chet Rame)-.15 E(y)-.15 E F1(The Gnu History Libr)108 393.6 Q
+10.95/Times-Bold@0 SF(FILES)72 364.8 Q F1(~/.history)109.666 376.8 Q F0
+(Def)144 388.8 Q(ault \214lename for reading and writing sa)-.1 E -.15
+(ve)-.2 G 2.5(dh).15 G(istory)-2.5 E F3(SEE ALSO)72 405.6 Q F1
+(The Gnu Readline Libr)108 417.6 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
+(ox and Chet Rame)-.15 E(y)-.15 E F1(The Gnu History Libr)108 429.6 Q
(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E
-F1(bash)108 405.6 Q F0(\(1\))A F1 -.37(re)108 417.6 S(adline).37 E F0
-(\(3\))A F3 -.548(AU)72 434.4 S(THORS).548 E F0(Brian F)108 446.4 Q
+F1(bash)108 441.6 Q F0(\(1\))A F1 -.37(re)108 453.6 S(adline).37 E F0
+(\(3\))A F3 -.548(AU)72 470.4 S(THORS).548 E F0(Brian F)108 482.4 Q
(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108
-458.4 Q(g)-.18 E(Chet Rame)108 475.2 Q 1.3 -.65(y, C)-.15 H(ase W).65 E
+494.4 Q(g)-.18 E(Chet Rame)108 511.2 Q 1.3 -.65(y, C)-.15 H(ase W).65 E
(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E
-(chet.rame)108 487.2 Q(y@case.edu)-.15 E F3 -.11(BU)72 504 S 2.738(GR)
-.11 G(EPOR)-2.738 E(TS)-.438 E F0 .16(If you \214nd a b)108 516 R .16
+(chet.rame)108 523.2 Q(y@case.edu)-.15 E F3 -.11(BU)72 540 S 2.738(GR)
+.11 G(EPOR)-2.738 E(TS)-.438 E F0 .16(If you \214nd a b)108 552 R .16
(ug in the)-.2 F F2(history)2.66 E F0(library)2.66 E 2.66(,y)-.65 G .16
(ou should report it.)-2.66 F .16(But \214rst, you should mak)5.16 F
-2.66(es)-.1 G .16(ure that it really is)-2.66 F 2.5(ab)108 528 S
+2.66(es)-.1 G .16(ure that it really is)-2.66 F 2.5(ab)108 564 S
(ug, and that it appears in the latest v)-2.7 E(ersion of the)-.15 E F2
(history)2.5 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.).15 E .705
-(Once you ha)108 544.8 R 1.005 -.15(ve d)-.2 H .705(etermined that a b)
+(Once you ha)108 580.8 R 1.005 -.15(ve d)-.2 H .705(etermined that a b)
.15 F .704(ug actually e)-.2 F .704(xists, mail a b)-.15 F .704
(ug report to)-.2 F F1 -.2(bu)3.204 G(g\255r).2 E(eadline)-.37 E F0(@)A
F1(gnu.or)A(g)-.37 E F0 5.704(.I)C 3.204(fy)-5.704 G(ou)-3.204 E(ha)108
-556.8 Q 1.809 -.15(ve a \214)-.2 H 1.509
+592.8 Q 1.809 -.15(ve a \214)-.2 H 1.509
(x, you are welcome to mail that as well!).15 F 1.51
(Suggestions and `philosophical' b)6.51 F 1.51(ug reports may be)-.2 F
-(mailed to)108 568.8 Q F1 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F1
+(mailed to)108 604.8 Q F1 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F1
(gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F2
-(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 585.6 Q
+(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 621.6 Q
(ug reports concerning this manual page should be directed to)-.2 E F1
-.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.).25 E
-(GNU History 6.3)72 768 Q(2015 May 24)138.175 E(7)202.335 E 0 Cg EP
+(GNU History 6.3)72 768 Q(2017 October 8)133.735 E(7)197.895 E 0 Cg EP
%%Trailer
end
%%EOF
diff --git a/doc/hstech.texi b/doc/hstech.texi
index bba7b59..dbc21c1 100644
--- a/doc/hstech.texi
+++ b/doc/hstech.texi
@@ -166,6 +166,9 @@ parameters managing the list itself.
@deftypefun void add_history (const char *string)
Place @var{string} at the end of the history list. The associated data
field (if any) is set to @code{NULL}.
+If the maximum number of history entries has been set using
+@code{stifle_history()}, and the new number of history entries would exceed
+that maximum, the oldest history entry is removed.
@end deftypefun
@deftypefun void add_history_time (const char *string)
@@ -198,6 +201,7 @@ Clear the history list by deleting all the entries.
@deftypefun void stifle_history (int max)
Stifle the history list, remembering only the last @var{max} entries.
+The history list will contain only @var{max} entries at a time.
@end deftypefun
@deftypefun int unstifle_history (void)
@@ -234,10 +238,12 @@ pointer.
@end deftypefun
@deftypefun {HIST_ENTRY *} history_get (int offset)
-Return the history entry at position @var{offset}, starting from
-@code{history_base} (@pxref{History Variables}).
-If there is no entry there, or if @var{offset}
-is greater than the history length, return a @code{NULL} pointer.
+Return the history entry at position @var{offset}.
+The range of valid
+values of @var{offset} starts at @code{history_base} and ends at
+@var{history_length} - 1 (@pxref{History Variables}).
+If there is no entry there, or if @var{offset} is outside the valid
+range, return a @code{NULL} pointer.
@end deftypefun
@deftypefun time_t history_get_time (HIST_ENTRY *entry)
@@ -397,7 +403,7 @@ to the ``normal'' terminating characters.
Return an array of tokens parsed out of @var{string}, much as the
shell might. The tokens are split on the characters in the
@var{history_word_delimiters} variable,
-and shell quoting conventions are obeyed.
+and shell quoting conventions are obeyed as described below.
@end deftypefun
@deftypefun {char *} history_arg_extract (int first, int last, const char *string)
@@ -470,8 +476,24 @@ carriage return, and @samp{=}.
@end deftypevar
@deftypevar int history_quotes_inhibit_expansion
-If non-zero, double-quoted words are not scanned for the history expansion
-character or the history comment character. The default value is 0.
+If non-zero, the history expansion code implements shell-like quoting:
+single-quoted words are not scanned for the history expansion
+character or the history comment character, and double-quoted words may
+have history expansion performed, since single quotes are not special
+within double quotes.
+The default value is 0.
+@end deftypevar
+
+@deftypevar int history_quoting_state
+An application may set this variable to indicate that the current line
+being expanded is subject to existing quoting. If set to @samp{'}, the
+history expansion function will assume that the line is single-quoted and
+inhibit expansion until it reads an unquoted closing single quote; if set
+to @samp{"}, history expansion will assume the line is double quoted until
+it reads an unquoted closing double quote. If set to zero, the default,
+the history expansion function will assume the line is not quoted and
+treat quote characters within the line as described above.
+This is only effective if @var{history_quotes_inhibit_expansion} is set.
@end deftypevar
@deftypevar {rl_linebuf_func_t *} history_inhibit_expansion_function
diff --git a/doc/hsuser.texi b/doc/hsuser.texi
index 04e192e..521ccc7 100644
--- a/doc/hsuser.texi
+++ b/doc/hsuser.texi
@@ -1,7 +1,7 @@
@ignore
This file documents the user interface to the GNU History library.
-Copyright (C) 1988--2016 Free Software Foundation, Inc.
+Copyright (C) 1988--2018 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
Permission is granted to make and distribute verbatim copies of this manual
@@ -124,7 +124,7 @@ The @code{lithist}
shell option causes the shell to save the command with embedded newlines
instead of semicolons.
The @code{shopt} builtin is used to set these options.
-@xref{Bash Builtins}, for a description of @code{shopt}.
+@xref{The Shopt Builtin}, for a description of @code{shopt}.
@node Bash History Builtins
@section Bash History Builtins
@@ -149,8 +149,8 @@ Both @var{first} and
@var{last} may be specified as a string (to locate the most recent
command beginning with that string) or as a number (an index into the
history list, where a negative number is used as an offset from the
-current command number). If @var{last} is not specified it is set to
-@var{first}. If @var{first} is not specified it is set to the previous
+current command number). If @var{last} is not specified, it is set to
+@var{first}. If @var{first} is not specified, it is set to the previous
command for editing and @minus{}16 for listing. If the @option{-l} flag is
given, the commands are listed on standard output. The @option{-n} flag
suppresses the command numbers when listing. The @option{-r} flag
@@ -176,6 +176,7 @@ and typing @samp{r} re-executes the last command (@pxref{Aliases}).
history [@var{n}]
history -c
history -d @var{offset}
+history -d @var{start}-@var{end}
history [-anrw] [@var{filename}]
history -ps @var{arg}
@end example
@@ -198,8 +199,17 @@ with the other options to replace the history list completely.
@item -d @var{offset}
Delete the history entry at position @var{offset}.
-@var{offset} should be specified as it appears when the history is
-displayed.
+If @var{offset} is positive, it should be specified as it appears when
+the history is displayed.
+If @var{offset} is negative, it is interpreted as relative to one greater
+than the last history position, so negative indices count back from the
+end of the history, and an index of @samp{-1} refers to the current
+@code{history -d} command.
+
+@item -d @var{start}-@var{end}
+Delete the history entries between positions @var{start} and @var{end},
+inclusive. Positive and negative values for @var{start} and @var{end}
+are interpreted as described above.
@item -a
Append the new history lines to the history file.
@@ -251,7 +261,9 @@ fix errors in previous commands quickly.
@ifset BashFeatures
History expansion is performed immediately after a complete line
-is read, before the shell breaks it into words.
+is read, before the shell breaks it into words, and is performed
+on each line individually. Bash attempts to inform the history
+expansion functions about quoting still in effect from previous lines.
@end ifset
History expansion takes place in two parts. The first is to determine
@@ -265,16 +277,26 @@ 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{!} by default.
+
+History expansion implements shell-like quoting conventions:
+a backslash can be used to remove the special handling for the next character;
+single quotes enclose verbatim sequences of characters, and can be used to
+inhibit history expansion;
+and characters enclosed within double quotes may be subject to history
+expansion, since backslash can escape the history expansion character,
+but single quotes may not, since they are not treated specially within
+double quotes.
+
@ifset BashFeatures
-Only @samp{\} and @samp{'} may be used to escape the history expansion
-character, but the history expansion character is
+When using the shell, only @samp{\} and @samp{'} may be used to escape the
+history expansion character, but the history expansion character is
also treated as quoted if it immediately precedes the closing double quote
in a double-quoted string.
@end ifset
@ifset BashFeatures
Several shell options settable with the @code{shopt}
-builtin (@pxref{Bash Builtins}) may be used to tailor
+builtin (@pxref{The Shopt Builtin}) may be used to tailor
the behavior of history expansion. If the
@code{histverify} shell option is enabled, and Readline
is being used, history substitutions are not immediately passed to
diff --git a/doc/readline.0 b/doc/readline.0
index 854c5bb..3654f6f 100644
--- a/doc/readline.0
+++ b/doc/readline.0
@@ -245,169 +245,173 @@ READLINE(3) Library Functions Manual READLINE(3)
Controls whether readline begins with a set of key bindings sim-
ilar to Emacs or vi. editing-mode can be set to either emacs or
vi.
+ emacs-mode-string (@)
+ If the show-mode-in-prompt variable is enabled, this string is
+ displayed immediately before the last line of the primary prompt
+ when emacs editing mode is active. The value is expanded like a
+ key binding, so the standard set of meta- and control prefixes
+ and backslash escape sequences is available. Use the \1 and \2
+ escapes to begin and end sequences of non-printing characters,
+ which can be used to embed a terminal control sequence into the
+ mode string.
enable-bracketed-paste (Off)
- When set to On, readline will configure the terminal in a way
+ When set to On, readline will configure the terminal in a way
that will enable it to insert each paste into the editing buffer
as a single string of characters, instead of treating each char-
- acter as if it had been read from the keyboard. This can pre-
- vent pasted characters from being interpreted as editing com-
+ acter as if it had been read from the keyboard. This can pre-
+ vent pasted characters from being interpreted as editing com-
mands.
enable-keypad (Off)
When set to On, readline will try to enable the application key-
- pad when it is called. Some systems need this to enable the
+ pad when it is called. Some systems need this to enable the
arrow keys.
enable-meta-key (On)
- When set to On, readline will try to enable any meta modifier
- key the terminal claims to support when it is called. On many
+ When set to On, readline will try to enable any meta modifier
+ key the terminal claims to support when it is called. On many
terminals, the meta key is used to send eight-bit characters.
expand-tilde (Off)
- If set to On, tilde expansion is performed when readline
+ If set to On, tilde expansion is performed when readline
attempts word completion.
history-preserve-point (Off)
- If set to On, the history code attempts to place point at the
- same location on each history line retrieved with previous-his-
+ If set to On, the history code attempts to place point at the
+ same location on each history line retrieved with previous-his-
tory or next-history.
history-size (unset)
- Set the maximum number of history entries saved in the history
- list. If set to zero, any existing history entries are deleted
+ Set the maximum number of history entries saved in the history
+ list. If set to zero, any existing history entries are deleted
and no new entries are saved. If set to a value less than zero,
- the number of history entries is not limited. By default, the
+ the number of history entries is not limited. By default, the
number of history entries is not limited. If an attempt is made
- to set history-size to a non-numeric value, the maximum number
+ to set history-size to a non-numeric value, the maximum number
of history entries will be set to 500.
horizontal-scroll-mode (Off)
- When set to On, makes readline use a single line for display,
+ When set to On, 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
+ becomes longer than the screen width rather than wrapping to a
new line.
input-meta (Off)
- If set to On, readline will enable eight-bit input (that is, it
- will not clear the eighth bit in the characters it reads),
+ If set to On, 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
- meta-flag is a synonym for this variable. The default is Off,
- but readline will set it to On if the locale contains eight-bit
+ meta-flag is a synonym for this variable. The default is Off,
+ but readline will set it to On if the locale contains eight-bit
characters.
isearch-terminators (``C-[ C-J'')
- The string of characters that should terminate an incremental
- search without subsequently executing the character as a com-
- mand. If this variable has not been given a value, the charac-
+ The string of characters that should terminate an incremental
+ search without subsequently executing the character as a com-
+ mand. If this variable has not been given a value, the charac-
ters ESC and C-J will terminate an incremental search.
keymap (emacs)
- Set the current readline keymap. The set of legal keymap names
- is 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 editing-mode also affects the default
+ Set the current readline keymap. The set of legal keymap names
+ is 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 editing-mode also affects the default
keymap.
- emacs-mode-string (@)
- This string is displayed immediately before the last line of the
- primary prompt when emacs editing mode is active. The value is
- expanded like a key binding, so the standard set of meta- and
- control prefixes and backslash escape sequences is available.
- Use the \1 and \2 escapes to begin and end sequences of non-
- printing characters, which can be used to embed a terminal con-
- trol sequence into the mode string.
keyseq-timeout (500)
- Specifies the duration readline will wait for a character when
- reading an ambiguous key sequence (one that can form a complete
+ Specifies the duration readline will wait for a character when
+ reading an ambiguous key sequence (one that can form a complete
key sequence using the input read so far, or can take additional
- input to complete a longer key sequence). If no input is
- received within the timeout, readline will use the shorter but
- complete key sequence. The value is specified in milliseconds,
- so a value of 1000 means that readline will wait one second for
- additional input. If this variable is set to a value less than
- or equal to zero, or to a non-numeric value, readline will wait
- until another key is pressed to decide which key sequence to
+ input to complete a longer key sequence). If no input is
+ received within the timeout, readline will use the shorter but
+ complete key sequence. The value is specified in milliseconds,
+ so a value of 1000 means that readline will wait one second for
+ additional input. If this variable is set to a value less than
+ or equal to zero, or to a non-numeric value, readline will wait
+ until another key is pressed to decide which key sequence to
complete.
mark-directories (On)
If set to On, completed directory names have a slash appended.
mark-modified-lines (Off)
- If set to On, history lines that have been modified are dis-
+ If set to On, history lines that have been modified are dis-
played with a preceding asterisk (*).
mark-symlinked-directories (Off)
If set to On, completed names which are symbolic links to direc-
- tories have a slash appended (subject to the value of
+ tories have a slash appended (subject to the value of
mark-directories).
match-hidden-files (On)
- This variable, when set to On, causes readline to match files
- whose names begin with a `.' (hidden files) when performing
- filename completion. If set to Off, the leading `.' must be
+ This variable, when set to On, causes readline to match files
+ whose names begin with a `.' (hidden files) when performing
+ filename completion. If set to Off, the leading `.' must be
supplied by the user in the filename to be completed.
menu-complete-display-prefix (Off)
- If set to On, menu completion displays the common prefix of the
+ If set to On, menu completion displays the common prefix of the
list of possible completions (which may be empty) before cycling
through the list.
output-meta (Off)
- If set to On, readline will display characters with the eighth
+ 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, but readline will set it to On if the locale
contains eight-bit characters.
page-completions (On)
- If set to On, readline uses an internal more-like pager to dis-
+ If set to On, readline uses an internal more-like pager to dis-
play a screenful of possible completions at a time.
print-completions-horizontally (Off)
- If set to On, readline will display completions with matches
- sorted horizontally in alphabetical order, rather than down the
+ If set to On, readline will display completions with matches
+ sorted horizontally in alphabetical order, rather than down the
screen.
revert-all-at-newline (Off)
- If set to On, readline will undo all changes to history lines
+ If set to On, readline will undo all changes to history lines
before returning when accept-line is executed. By default, his-
- tory lines may be modified and retain individual undo lists
+ tory lines may be modified and retain individual undo lists
across calls to readline.
show-all-if-ambiguous (Off)
- This alters the default behavior of the completion functions.
+ 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
+ cause the matches to be listed immediately instead of ringing
the bell.
show-all-if-unmodified (Off)
- This alters the default behavior of the completion functions in
+ 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 possi-
- ble partial completion (the possible completions don't share a
- common prefix) cause the matches to be listed immediately
+ which have more than one possible completion without any possi-
+ ble partial completion (the possible completions don't share a
+ common prefix) cause the matches to be listed immediately
instead of ringing the bell.
show-mode-in-prompt (Off)
- If set to On, add a character to the beginning of the prompt
- indicating the editing mode: emacs, vi command, or vi insertion.
- The mode strings are user-settable.
+ If set to On, add a string to the beginning of the prompt indi-
+ cating the editing mode: emacs, vi command, or vi insertion.
+ The mode strings are user-settable (e.g., emacs-mode-string).
skip-completed-text (Off)
- If set to On, this alters the default completion behavior when
- inserting a single match into the line. It's only active when
- performing completion in the middle of a word. If enabled,
- readline does not insert characters from the completion that
- match characters after point in the word being completed, so
+ If set to On, this alters the default completion behavior when
+ inserting a single match into the line. It's only active when
+ performing completion in the middle of a word. If enabled,
+ readline does not insert characters from the completion that
+ match characters after point in the word being completed, so
portions of the word following the cursor are not duplicated.
vi-cmd-mode-string ((cmd))
- This string is displayed immediately before the last line of the
- primary prompt when vi editing mode is active and in command
- mode. The value is expanded like a key binding, so the standard
- set of meta- and control prefixes and backslash escape sequences
- is available. Use the \1 and \2 escapes to begin and end
- sequences of non-printing characters, which can be used to embed
- a terminal control sequence into the mode string.
+ If the show-mode-in-prompt variable is enabled, this string is
+ displayed immediately before the last line of the primary prompt
+ when vi editing mode is active and in command mode. The value
+ is expanded like a key binding, so the standard set of meta- and
+ control prefixes and backslash escape sequences is available.
+ Use the \1 and \2 escapes to begin and end sequences of non-
+ printing characters, which can be used to embed a terminal con-
+ trol sequence into the mode string.
vi-ins-mode-string ((ins))
- This string is displayed immediately before the last line of the
- primary prompt when vi editing mode is active and in insertion
- mode. The value is expanded like a key binding, so the standard
- set of meta- and control prefixes and backslash escape sequences
- is available. Use the \1 and \2 escapes to begin and end
- sequences of non-printing characters, which can be used to embed
- a terminal control sequence into the mode string.
+ If the show-mode-in-prompt variable is enabled, this string is
+ displayed immediately before the last line of the primary prompt
+ when vi editing mode is active and in insertion mode. The value
+ is expanded like a key binding, so the standard set of meta- and
+ control prefixes and backslash escape sequences is available.
+ Use the \1 and \2 escapes to begin and end sequences of non-
+ printing characters, which can be used to embed a terminal con-
+ trol sequence into the mode string.
visible-stats (Off)
- If set to On, a character denoting a file's type as reported by
- stat(2) is appended to the filename when listing possible com-
+ If set to On, a character denoting a file's type as reported by
+ stat(2) is appended to the filename when listing possible com-
pletions.
Conditional 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
+ 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 edit-
- ing 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.
+ $if The $if construct allows bindings to be made based on the edit-
+ ing mode, the terminal being used, or the application using
+ readline. The text of the test, after any comparison operator,
+ extends to the end of the line; unless otherwise noted, no char-
+ acters 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
@@ -424,14 +428,26 @@ READLINE(3) Library Functions Manual READLINE(3)
This allows sun to match both sun and sun-cmd, for
instance.
+ version
+ The version test may be used to perform comparisons
+ against specific readline versions. The version expands
+ to the current readline version. The set of comparison
+ operators includes =, (and ==), !=, <=, >=, <, and >.
+ The version number supplied on the right side of the
+ operator consists of a major version number, an optional
+ decimal point, and an optional minor version (e.g., 7.1).
+ If the minor version is omitted, it is assumed to be 0.
+ The operator may be separated from the string version and
+ from the version number argument by whitespace.
+
application
The application construct is used to include application-
specific settings. Each program using the readline
- library sets the application name, and an initialization
+ library sets the application name, 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
+ 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
@@ -439,6 +455,16 @@ READLINE(3) Library Functions Manual READLINE(3)
"\C-xq": "\eb\"\ef\""
$endif
+ variable
+ The variable construct provides simple equality tests for
+ readline variables and values. The permitted comparison
+ operators are =, ==, and !=. The variable name must be
+ separated from the comparison operator by whitespace; the
+ operator may be separated from the value on the right
+ hand side by whitespace. Both string and boolean vari-
+ ables may be tested. Boolean variables must be tested
+ against the values on and off.
+
$endif This command, as seen in the previous example, terminates an $if
command.
@@ -509,6 +535,18 @@ READLINE(3) Library Functions Manual READLINE(3)
backward-word (M-b)
Move back to the start of the current or previous word. Words
are composed of alphanumeric characters (letters and digits).
+ previous-screen-line
+ Attempt to move point to the same physical screen column on the
+ previous physical screen line. This will not have the desired
+ effect if the current Readline line does not take up more than
+ one physical line or if point is not greater than the length of
+ the prompt plus the screen width.
+ next-screen-line
+ Attempt to move point to the same physical screen column on the
+ next physical screen line. This will not have the desired effect
+ if the current Readline line does not take up more than one
+ physical line or if the length of the current Readline line is
+ not greater than the length of the prompt plus the screen width.
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
@@ -752,20 +790,22 @@ READLINE(3) Library Functions Manual READLINE(3)
and store the definition.
call-last-kbd-macro (C-x e)
Re-execute the last keyboard macro defined, by making the char-
- acters in the macro appear as if typed at the keyboard.
- print-last-kbd-macro () Print the last keyboard macro defined in
- a format suitable for the inputrc file.
+ acters in the macro appear as if typed at the keyboard.
+ print-last-kbd-macro ()
+ Print the last keyboard macro defined in a format suitable for
+ the inputrc file.
Miscellaneous
re-read-init-file (C-x C-r)
- Read in the contents of the inputrc file, and incorporate any
+ 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
+ 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.
+ do-lowercase-version (M-A, M-B, M-x, ...)
+ If the metafied character x is uppercase, run the command that
+ is bound to the corresponding metafied lowercase character. The
+ behavior is undefined if x is already lowercase.
prefix-meta (ESC)
Metafy the next character typed. ESC f is equivalent to Meta-f.
undo (C-_, C-x C-u)
@@ -1076,4 +1116,4 @@ READLINE(3) Library Functions Manual READLINE(3)
-GNU Readline 7.0 2016 February 28 READLINE(3)
+GNU Readline 7.0 2017 December 28 READLINE(3)
diff --git a/doc/readline.3 b/doc/readline.3
index b57f00b..be89c2d 100644
--- a/doc/readline.3
+++ b/doc/readline.3
@@ -6,9 +6,9 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
-.\" Last Change: Sun Feb 28 15:42:34 EST 2016
+.\" Last Change: Thu Dec 28 14:49:51 EST 2017
.\"
-.TH READLINE 3 "2016 February 28" "GNU Readline 7.0"
+.TH READLINE 3 "2017 December 28" "GNU Readline 7.0"
.\"
.\" File Name macro. This used to be `.PN', for Path Name,
.\" but Sun doesn't seem to like that very much.
@@ -378,13 +378,13 @@ in emacs mode and to
.B #
in vi command mode.
.TP
-.B completion\-display\-width (-1)
+.B completion\-display\-width (\-1)
The number of screen columns used to display possible matches
when performing completion.
The value is ignored if it is less than 0 or greater than the terminal
screen width.
A value of 0 will cause matches to be displayed one per line.
-The default value is -1.
+The default value is \-1.
.TP
.B completion\-ignore\-case (Off)
If set to \fBOn\fP, readline performs filename matching and completion
@@ -438,6 +438,16 @@ can be set to either
or
.BR vi .
.TP
+.B emacs\-mode\-string (@)
+If the \fIshow\-mode\-in\-prompt\fP variable is enabled,
+this string is displayed immediately before the last line of the primary
+prompt when emacs editing mode is active. The value is expanded like a
+key binding, so the standard set of meta- and control prefixes and
+backslash escape sequences is available.
+Use the \e1 and \e2 escapes to begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
+sequence into the mode string.
+.TP
.B enable\-bracketed\-paste (Off)
When set to \fBOn\fP, readline will configure the terminal in a way
that will enable it to insert each paste into the editing buffer as a
@@ -506,15 +516,6 @@ The value of
.B editing\-mode
also affects the default keymap.
.TP
-.B emacs\-mode\-string (@)
-This string is displayed immediately before the last line of the primary
-prompt when emacs editing mode is active. The value is expanded like a
-key binding, so the standard set of meta- and control prefixes and
-backslash escape sequences is available.
-Use the \e1 and \e2 escapes to begin and end sequences of
-non-printing characters, which can be used to embed a terminal control
-sequence into the mode string.
-.TP
.B keyseq\-timeout (500)
Specifies the duration \fIreadline\fP will wait for a character when reading an
ambiguous key sequence (one that can form a complete key sequence using
@@ -592,9 +593,9 @@ a common prefix) cause the matches to be listed immediately instead
of ringing the bell.
.TP
.B show\-mode\-in\-prompt (Off)
-If set to \fBOn\fP, add a character to the beginning of the prompt
+If set to \fBOn\fP, add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi insertion.
-The mode strings are user-settable.
+The mode strings are user-settable (e.g., \fIemacs\-mode\-string\fP).
.TP
.B skip\-completed\-text (Off)
If set to \fBOn\fP, this alters the default completion behavior when
@@ -605,7 +606,8 @@ after point in the word being completed, so portions of the word
following the cursor are not duplicated.
.TP
.B vi\-cmd\-mode\-string ((cmd))
-This string is displayed immediately before the last line of the primary
+If the \fIshow\-mode\-in\-prompt\fP variable is enabled,
+this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in command mode.
The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
@@ -615,7 +617,8 @@ non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
.TP
.B vi\-ins\-mode\-string ((ins))
-This string is displayed immediately before the last line of the primary
+If the \fIshow\-mode\-in\-prompt\fP variable is enabled,
+this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in insertion mode.
The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
@@ -640,8 +643,9 @@ 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.
+readline. The text of the test, after any comparison operator,
+extends to the end of the line;
+unless otherwise noted, 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
@@ -663,6 +667,26 @@ to match both
and
.IR sun\-cmd ,
for instance.
+.IP \fBversion\fP
+The \fBversion\fP test may be used to perform comparisons against
+specific readline versions.
+The \fBversion\fP expands to the current readline version.
+The set of comparison operators includes
+.BR = ,
+(and
+.BR == ),
+.BR != ,
+.BR <= ,
+.BR >= ,
+.BR < ,
+and
+.BR > .
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., \fB7.1\fP). If the minor version is omitted, it
+is assumed to be \fB0\fP.
+The operator may be separated from the string \fBversion\fP
+and from the version number argument by whitespace.
.IP \fBapplication\fP
The \fBapplication\fP construct is used to include
application-specific settings. Each program using the readline
@@ -680,6 +704,15 @@ key sequence that quotes the current or previous word in \fBbash\fP:
\fB$endif\fP
.fi
.RE
+.IP \fIvariable\fP
+The \fIvariable\fP construct provides simple equality tests for readline
+variables and values.
+The permitted comparison operators are \fI=\fP, \fI==\fP, and \fI!=\fP.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values \fIon\fP and \fIoff\fP.
.RE
.IP \fB$endif\fP
This command, as seen in the previous example, terminates an
@@ -771,6 +804,19 @@ alphanumeric characters (letters and digits).
Move back to the start of the current or previous word. Words are
composed of alphanumeric characters (letters and digits).
.TP
+.B previous\-screen\-line
+Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not
+greater than the length of the prompt plus the screen width.
+.TP
+.B next\-screen\-line
+Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
+.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
@@ -1103,6 +1149,7 @@ and store the definition.
.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.
+.TP
.B print\-last\-kbd\-macro ()
Print the last keyboard macro defined in a format suitable for the
\fIinputrc\fP file.
@@ -1120,9 +1167,10 @@ 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.
+.B do\-lowercase\-version (M\-A, M\-B, M\-\fIx\fP, ...)
+If the metafied character \fIx\fP is uppercase, run the command
+that is bound to the corresponding metafied lowercase character.
+The behavior is undefined if \fIx\fP is already lowercase.
.TP
.B prefix\-meta (ESC)
Metafy the next character typed.
diff --git a/doc/readline.dvi b/doc/readline.dvi
index 3e11be9..f6ca0a0 100644
--- a/doc/readline.dvi
+++ b/doc/readline.dvi
Binary files differ
diff --git a/doc/readline.html b/doc/readline.html
index 2907a13..bb0ca68 100644
--- a/doc/readline.html
+++ b/doc/readline.html
@@ -1,6 +1,6 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on September, 7 2016 by texi2html 1.64 -->
+<!-- Created on December, 18 2018 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
@@ -651,6 +651,7 @@ The default value is <SAMP>`off'</SAMP>.
If set to <SAMP>`on'</SAMP>, and <VAR>completion-ignore-case</VAR> is enabled, Readline
treats hyphens (<SAMP>`-'</SAMP>) and underscores (<SAMP>`_'</SAMP>) as equivalent when
performing case-insensitive filename matching and completion.
+The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>completion-prefix-display-length</CODE>
@@ -707,7 +708,8 @@ set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
<DT><CODE>emacs-mode-string</CODE>
<DD><A NAME="IDX20"></A>
-This string is displayed immediately before the last line of the primary
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
prompt when emacs editing mode is active. The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
backslash escape sequences is available.
@@ -797,7 +799,7 @@ If this variable has not been given a value, the characters <KBD>ESC</KBD> and
<DT><CODE>keymap</CODE>
<DD><A NAME="IDX30"></A>
Sets Readline's idea of the current keymap for key binding commands.
-Acceptable <CODE>keymap</CODE> names are
+Built-in <CODE>keymap</CODE> names are
<CODE>emacs</CODE>,
<CODE>emacs-standard</CODE>,
<CODE>emacs-meta</CODE>,
@@ -808,6 +810,7 @@ Acceptable <CODE>keymap</CODE> names are
<CODE>vi-insert</CODE>.
<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE> (<CODE>vi-move</CODE> is also a
synonym); <CODE>emacs</CODE> is equivalent to <CODE>emacs-standard</CODE>.
+Applications may add additional names.
The default value is <CODE>emacs</CODE>.
The value of the <CODE>editing-mode</CODE> variable also affects the
default keymap.
@@ -920,9 +923,9 @@ The default value is <SAMP>`off'</SAMP>.
<DT><CODE>show-mode-in-prompt</CODE>
<DD><A NAME="IDX40"></A>
-If set to <SAMP>`on'</SAMP>, add a character to the beginning of the prompt
+If set to <SAMP>`on'</SAMP>, add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi insertion.
-The mode strings are user-settable.
+The mode strings are user-settable (e.g., <VAR>emacs-mode-string</VAR>).
The default value is <SAMP>`off'</SAMP>.
<P>
@@ -943,7 +946,8 @@ The default value is <SAMP>`off'</SAMP>.
<DT><CODE>vi-cmd-mode-string</CODE>
<DD><A NAME="IDX42"></A>
-This string is displayed immediately before the last line of the primary
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in command mode.
The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
@@ -956,7 +960,8 @@ The default is <SAMP>`(cmd)'</SAMP>.
<DT><CODE>vi-ins-mode-string</CODE>
<DD><A NAME="IDX43"></A>
-This string is displayed immediately before the last line of the primary
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in insertion mode.
The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
@@ -1007,7 +1012,7 @@ 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
+In the example above, <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
@@ -1146,8 +1151,9 @@ of tests. There are four parser directives used.
<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.
+Readline. The text of the test, after any comparison operator,
+extends to the end of the line;
+unless otherwise noted, no characters are required to isolate it.
<P>
<DL COMPACT>
@@ -1170,6 +1176,26 @@ allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
for instance.
<P>
+<DT><CODE>version</CODE>
+<DD>The <CODE>version</CODE> test may be used to perform comparisons against
+specific Readline versions.
+The <CODE>version</CODE> expands to the current Readline version.
+The set of comparison operators includes
+<SAMP>`='</SAMP> (and <SAMP>`=='</SAMP>), <SAMP>`!='</SAMP>, <SAMP>`&#60;='</SAMP>, <SAMP>`&#62;='</SAMP>, <SAMP>`&#60;'</SAMP>,
+and <SAMP>`&#62;'</SAMP>.
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., <SAMP>`7.1'</SAMP>). If the minor version is omitted, it
+is assumed to be <SAMP>`0'</SAMP>.
+The operator may be separated from the string <CODE>version</CODE> and
+from the version number argument by whitespace.
+The following example sets a variable if the Readline version being used
+is 7.0 or newer:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if version &#62;= 7.0
+set show-mode-in-prompt on
+$endif
+</pre></td></tr></table><P>
+
<DT><CODE>application</CODE>
<DD>The <VAR>application</VAR> construct is used to include
application-specific settings. Each program using the Readline
@@ -1182,6 +1208,22 @@ key sequence that quotes the current or previous word in Bash:
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endif
+</pre></td></tr></table><P>
+
+<DT><CODE>variable</CODE>
+<DD>The <VAR>variable</VAR> construct provides simple equality tests for Readline
+variables and values.
+The permitted comparison operators are <SAMP>`='</SAMP>, <SAMP>`=='</SAMP>, and <SAMP>`!='</SAMP>.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values <VAR>on</VAR> and <VAR>off</VAR>.
+The following example is equivalent to the <CODE>mode=emacs</CODE> test described
+above:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if editing-mode == emacs
+set show-mode-in-prompt on
+$endif
</pre></td></tr></table></DL>
<P>
@@ -1423,15 +1465,34 @@ Words are composed of letters and digits.
<P>
<A NAME="IDX57"></A>
-<DT><CODE>clear-screen (C-l)</CODE>
+<DT><CODE>previous-screen-line ()</CODE>
<DD><A NAME="IDX58"></A>
+Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not
+greater than the length of the prompt plus the screen width.
+<P>
+
+<A NAME="IDX59"></A>
+<DT><CODE>next-screen-line ()</CODE>
+<DD><A NAME="IDX60"></A>
+Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
+<P>
+
+<A NAME="IDX61"></A>
+<DT><CODE>clear-screen (C-l)</CODE>
+<DD><A NAME="IDX62"></A>
Clear the screen and redraw the current line,
leaving the current line at the top of the screen.
<P>
-<A NAME="IDX59"></A>
+<A NAME="IDX63"></A>
<DT><CODE>redraw-current-line ()</CODE>
-<DD><A NAME="IDX60"></A>
+<DD><A NAME="IDX64"></A>
Refresh the current line. By default, this is unbound.
<P>
@@ -1457,9 +1518,9 @@ Refresh the current line. By default, this is unbound.
<P>
<DL COMPACT>
-<A NAME="IDX61"></A>
+<A NAME="IDX65"></A>
<DT><CODE>accept-line (Newline or Return)</CODE>
-<DD><A NAME="IDX62"></A>
+<DD><A NAME="IDX66"></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
@@ -1468,66 +1529,66 @@ If this line is a modified history line, the history line is restored
to its original state.
<P>
-<A NAME="IDX63"></A>
+<A NAME="IDX67"></A>
<DT><CODE>previous-history (C-p)</CODE>
-<DD><A NAME="IDX64"></A>
+<DD><A NAME="IDX68"></A>
Move `back' through the history list, fetching the previous command.
<P>
-<A NAME="IDX65"></A>
+<A NAME="IDX69"></A>
<DT><CODE>next-history (C-n)</CODE>
-<DD><A NAME="IDX66"></A>
+<DD><A NAME="IDX70"></A>
Move `forward' through the history list, fetching the next command.
<P>
-<A NAME="IDX67"></A>
+<A NAME="IDX71"></A>
<DT><CODE>beginning-of-history (M-&#60;)</CODE>
-<DD><A NAME="IDX68"></A>
+<DD><A NAME="IDX72"></A>
Move to the first line in the history.
<P>
-<A NAME="IDX69"></A>
+<A NAME="IDX73"></A>
<DT><CODE>end-of-history (M-&#62;)</CODE>
-<DD><A NAME="IDX70"></A>
+<DD><A NAME="IDX74"></A>
Move to the end of the input history, i.e., the line currently
being entered.
<P>
-<A NAME="IDX71"></A>
+<A NAME="IDX75"></A>
<DT><CODE>reverse-search-history (C-r)</CODE>
-<DD><A NAME="IDX72"></A>
+<DD><A NAME="IDX76"></A>
Search backward starting at the current line and moving `up' through
the history as necessary. This is an incremental search.
<P>
-<A NAME="IDX73"></A>
+<A NAME="IDX77"></A>
<DT><CODE>forward-search-history (C-s)</CODE>
-<DD><A NAME="IDX74"></A>
+<DD><A NAME="IDX78"></A>
Search forward starting at the current line and moving `down' through
the history as necessary. This is an incremental search.
<P>
-<A NAME="IDX75"></A>
+<A NAME="IDX79"></A>
<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD><A NAME="IDX76"></A>
+<DD><A NAME="IDX80"></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.
The search string may match anywhere in a history line.
<P>
-<A NAME="IDX77"></A>
+<A NAME="IDX81"></A>
<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD><A NAME="IDX78"></A>
+<DD><A NAME="IDX82"></A>
Search forward starting at the current line and moving `down'
through the history as necessary using a non-incremental search
for a string supplied by the user.
The search string may match anywhere in a history line.
<P>
-<A NAME="IDX79"></A>
+<A NAME="IDX83"></A>
<DT><CODE>history-search-forward ()</CODE>
-<DD><A NAME="IDX80"></A>
+<DD><A NAME="IDX84"></A>
Search forward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
@@ -1535,9 +1596,9 @@ This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX81"></A>
+<A NAME="IDX85"></A>
<DT><CODE>history-search-backward ()</CODE>
-<DD><A NAME="IDX82"></A>
+<DD><A NAME="IDX86"></A>
Search backward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
@@ -1545,9 +1606,9 @@ This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX83"></A>
-<DT><CODE>history-substr-search-forward ()</CODE>
-<DD><A NAME="IDX84"></A>
+<A NAME="IDX87"></A>
+<DT><CODE>history-substring-search-forward ()</CODE>
+<DD><A NAME="IDX88"></A>
Search forward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
@@ -1555,9 +1616,9 @@ This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX85"></A>
-<DT><CODE>history-substr-search-backward ()</CODE>
-<DD><A NAME="IDX86"></A>
+<A NAME="IDX89"></A>
+<DT><CODE>history-substring-search-backward ()</CODE>
+<DD><A NAME="IDX90"></A>
Search backward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
@@ -1565,9 +1626,9 @@ This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX87"></A>
+<A NAME="IDX91"></A>
<DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD><A NAME="IDX88"></A>
+<DD><A NAME="IDX92"></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>,
@@ -1578,9 +1639,9 @@ Once the argument <VAR>n</VAR> is computed, the argument is extracted
as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified.
<P>
-<A NAME="IDX89"></A>
+<A NAME="IDX93"></A>
<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD><A NAME="IDX90"></A>
+<DD><A NAME="IDX94"></A>
Insert last argument to the previous command (the last word of the
previous history entry).
With a numeric argument, behave exactly like <CODE>yank-nth-arg</CODE>.
@@ -1617,71 +1678,71 @@ as if the <SAMP>`!$'</SAMP> history expansion had been specified.
<DL COMPACT>
-<A NAME="IDX91"></A>
+<A NAME="IDX95"></A>
<DT><CODE><I>end-of-file</I> (usually C-d)</CODE>
-<DD><A NAME="IDX92"></A>
+<DD><A NAME="IDX96"></A>
The character indicating end-of-file as set, for example, by
<CODE>stty</CODE>. If this character is read when there are no characters
on the line, and point is at the beginning of the line, Readline
interprets it as the end of input and returns EOF.
<P>
-<A NAME="IDX93"></A>
+<A NAME="IDX97"></A>
<DT><CODE>delete-char (C-d)</CODE>
-<DD><A NAME="IDX94"></A>
+<DD><A NAME="IDX98"></A>
Delete the character at point. If this function is bound to the
same character as the tty EOF character, as <KBD>C-d</KBD>
commonly is, see above for the effects.
<P>
-<A NAME="IDX95"></A>
+<A NAME="IDX99"></A>
<DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD><A NAME="IDX96"></A>
+<DD><A NAME="IDX100"></A>
Delete the character behind the cursor. A numeric argument means
to kill the characters instead of deleting them.
<P>
-<A NAME="IDX97"></A>
+<A NAME="IDX101"></A>
<DT><CODE>forward-backward-delete-char ()</CODE>
-<DD><A NAME="IDX98"></A>
+<DD><A NAME="IDX102"></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="IDX99"></A>
+<A NAME="IDX103"></A>
<DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD><A NAME="IDX100"></A>
+<DD><A NAME="IDX104"></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="IDX101"></A>
+<A NAME="IDX105"></A>
<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX102"></A>
+<DD><A NAME="IDX106"></A>
Insert a tab character.
<P>
-<A NAME="IDX103"></A>
+<A NAME="IDX107"></A>
<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
-<DD><A NAME="IDX104"></A>
+<DD><A NAME="IDX108"></A>
Insert yourself.
<P>
-<A NAME="IDX105"></A>
+<A NAME="IDX109"></A>
<DT><CODE>bracketed-paste-begin ()</CODE>
-<DD><A NAME="IDX106"></A>
+<DD><A NAME="IDX110"></A>
This function is intended to be bound to the "bracketed paste" escape
sequence sent by some terminals, and such a binding is assigned by default.
It allows Readline to insert the pasted text as a single unit without treating
each character as if it had been read from the keyboard. The characters
-are inserted as if each one was bound to <CODE>self-insert</CODE>) instead of
+are inserted as if each one was bound to <CODE>self-insert</CODE> instead of
executing any editing commands.
<P>
-<A NAME="IDX107"></A>
+<A NAME="IDX111"></A>
<DT><CODE>transpose-chars (C-t)</CODE>
-<DD><A NAME="IDX108"></A>
+<DD><A NAME="IDX112"></A>
Drag the character before the cursor forward over
the character at the cursor, moving the
cursor forward as well. If the insertion point
@@ -1690,39 +1751,39 @@ transposes the last two characters of the line.
Negative arguments have no effect.
<P>
-<A NAME="IDX109"></A>
+<A NAME="IDX113"></A>
<DT><CODE>transpose-words (M-t)</CODE>
-<DD><A NAME="IDX110"></A>
+<DD><A NAME="IDX114"></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="IDX111"></A>
+<A NAME="IDX115"></A>
<DT><CODE>upcase-word (M-u)</CODE>
-<DD><A NAME="IDX112"></A>
+<DD><A NAME="IDX116"></A>
Uppercase the current (or following) word. With a negative argument,
uppercase the previous word, but do not move the cursor.
<P>
-<A NAME="IDX113"></A>
+<A NAME="IDX117"></A>
<DT><CODE>downcase-word (M-l)</CODE>
-<DD><A NAME="IDX114"></A>
+<DD><A NAME="IDX118"></A>
Lowercase the current (or following) word. With a negative argument,
lowercase the previous word, but do not move the cursor.
<P>
-<A NAME="IDX115"></A>
+<A NAME="IDX119"></A>
<DT><CODE>capitalize-word (M-c)</CODE>
-<DD><A NAME="IDX116"></A>
+<DD><A NAME="IDX120"></A>
Capitalize the current (or following) word. With a negative argument,
capitalize the previous word, but do not move the cursor.
<P>
-<A NAME="IDX117"></A>
+<A NAME="IDX121"></A>
<DT><CODE>overwrite-mode ()</CODE>
-<DD><A NAME="IDX118"></A>
+<DD><A NAME="IDX122"></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
@@ -1762,106 +1823,106 @@ By default, this command is unbound.
<DL COMPACT>
-<A NAME="IDX119"></A>
+<A NAME="IDX123"></A>
<DT><CODE>kill-line (C-k)</CODE>
-<DD><A NAME="IDX120"></A>
+<DD><A NAME="IDX124"></A>
Kill the text from point to the end of the line.
<P>
-<A NAME="IDX121"></A>
+<A NAME="IDX125"></A>
<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD><A NAME="IDX122"></A>
+<DD><A NAME="IDX126"></A>
Kill backward from the cursor to the beginning of the current line.
<P>
-<A NAME="IDX123"></A>
+<A NAME="IDX127"></A>
<DT><CODE>unix-line-discard (C-u)</CODE>
-<DD><A NAME="IDX124"></A>
+<DD><A NAME="IDX128"></A>
Kill backward from the cursor to the beginning of the current line.
<P>
-<A NAME="IDX125"></A>
+<A NAME="IDX129"></A>
<DT><CODE>kill-whole-line ()</CODE>
-<DD><A NAME="IDX126"></A>
+<DD><A NAME="IDX130"></A>
Kill all characters on the current line, no matter where point is.
By default, this is unbound.
<P>
-<A NAME="IDX127"></A>
+<A NAME="IDX131"></A>
<DT><CODE>kill-word (M-d)</CODE>
-<DD><A NAME="IDX128"></A>
+<DD><A NAME="IDX132"></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="IDX129"></A>
+<A NAME="IDX133"></A>
<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD><A NAME="IDX130"></A>
+<DD><A NAME="IDX134"></A>
Kill the word behind point.
Word boundaries are the same as <CODE>backward-word</CODE>.
<P>
-<A NAME="IDX131"></A>
+<A NAME="IDX135"></A>
<DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD><A NAME="IDX132"></A>
+<DD><A NAME="IDX136"></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="IDX133"></A>
+<A NAME="IDX137"></A>
<DT><CODE>unix-filename-rubout ()</CODE>
-<DD><A NAME="IDX134"></A>
+<DD><A NAME="IDX138"></A>
Kill the word behind point, using white space and the slash character
as the word boundaries.
The killed text is saved on the kill-ring.
<P>
-<A NAME="IDX135"></A>
+<A NAME="IDX139"></A>
<DT><CODE>delete-horizontal-space ()</CODE>
-<DD><A NAME="IDX136"></A>
+<DD><A NAME="IDX140"></A>
Delete all spaces and tabs around point. By default, this is unbound.
<P>
-<A NAME="IDX137"></A>
+<A NAME="IDX141"></A>
<DT><CODE>kill-region ()</CODE>
-<DD><A NAME="IDX138"></A>
+<DD><A NAME="IDX142"></A>
Kill the text in the current region.
By default, this command is unbound.
<P>
-<A NAME="IDX139"></A>
+<A NAME="IDX143"></A>
<DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX140"></A>
+<DD><A NAME="IDX144"></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="IDX141"></A>
+<A NAME="IDX145"></A>
<DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX142"></A>
+<DD><A NAME="IDX146"></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="IDX143"></A>
+<A NAME="IDX147"></A>
<DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX144"></A>
+<DD><A NAME="IDX148"></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="IDX145"></A>
+<A NAME="IDX149"></A>
<DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX146"></A>
+<DD><A NAME="IDX150"></A>
Yank the top of the kill ring into the buffer at point.
<P>
-<A NAME="IDX147"></A>
+<A NAME="IDX151"></A>
<DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX148"></A>
+<DD><A NAME="IDX152"></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>
@@ -1885,16 +1946,16 @@ the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
<!--docid::SEC18::-->
<DL COMPACT>
-<A NAME="IDX149"></A>
+<A NAME="IDX153"></A>
<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX150"></A>
+<DD><A NAME="IDX154"></A>
Add this digit to the argument already accumulating, or start a new
argument. <KBD>M--</KBD> starts a negative argument.
<P>
-<A NAME="IDX151"></A>
+<A NAME="IDX155"></A>
<DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX152"></A>
+<DD><A NAME="IDX156"></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.
@@ -1929,33 +1990,33 @@ By default, this is not bound to a key.
<P>
<DL COMPACT>
-<A NAME="IDX153"></A>
+<A NAME="IDX157"></A>
<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX154"></A>
+<DD><A NAME="IDX158"></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="IDX155"></A>
+<A NAME="IDX159"></A>
<DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX156"></A>
+<DD><A NAME="IDX160"></A>
List the possible completions of the text before point.
When displaying completions, Readline sets the number of columns used
for display to the value of <CODE>completion-display-width</CODE>, the value of
the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order.
<P>
-<A NAME="IDX157"></A>
+<A NAME="IDX161"></A>
<DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX158"></A>
+<DD><A NAME="IDX162"></A>
Insert all completions of the text before point that would have
been generated by <CODE>possible-completions</CODE>.
<P>
-<A NAME="IDX159"></A>
+<A NAME="IDX163"></A>
<DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX160"></A>
+<DD><A NAME="IDX164"></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
@@ -1970,17 +2031,17 @@ This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
by default.
<P>
-<A NAME="IDX161"></A>
+<A NAME="IDX165"></A>
<DT><CODE>menu-complete-backward ()</CODE>
-<DD><A NAME="IDX162"></A>
+<DD><A NAME="IDX166"></A>
Identical to <CODE>menu-complete</CODE>, but moves backward through the list
of possible completions, as if <CODE>menu-complete</CODE> had been given a
negative argument.
<P>
-<A NAME="IDX163"></A>
+<A NAME="IDX167"></A>
<DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX164"></A>
+<DD><A NAME="IDX168"></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
@@ -2009,29 +2070,29 @@ This command is unbound by default.
<!--docid::SEC20::-->
<DL COMPACT>
-<A NAME="IDX165"></A>
+<A NAME="IDX169"></A>
<DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX166"></A>
+<DD><A NAME="IDX170"></A>
Begin saving the characters typed into the current keyboard macro.
<P>
-<A NAME="IDX167"></A>
+<A NAME="IDX171"></A>
<DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX168"></A>
+<DD><A NAME="IDX172"></A>
Stop saving the characters typed into the current keyboard macro
and save the definition.
<P>
-<A NAME="IDX169"></A>
+<A NAME="IDX173"></A>
<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX170"></A>
+<DD><A NAME="IDX174"></A>
Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
<P>
-<A NAME="IDX171"></A>
+<A NAME="IDX175"></A>
<DT><CODE>print-last-kbd-macro ()</CODE>
-<DD><A NAME="IDX172"></A>
+<DD><A NAME="IDX176"></A>
Print the last keboard macro defined in a format suitable for the
<VAR>inputrc</VAR> file.
<P>
@@ -2057,87 +2118,88 @@ Print the last keboard macro defined in a format suitable for the
<!--docid::SEC21::-->
<DL COMPACT>
-<A NAME="IDX173"></A>
+<A NAME="IDX177"></A>
<DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX174"></A>
+<DD><A NAME="IDX178"></A>
Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
any bindings or variable assignments found there.
<P>
-<A NAME="IDX175"></A>
+<A NAME="IDX179"></A>
<DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX176"></A>
+<DD><A NAME="IDX180"></A>
Abort the current editing command and
ring the terminal's bell (subject to the setting of
<CODE>bell-style</CODE>).
<P>
-<A NAME="IDX177"></A>
-<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX178"></A>
-If the metafied character <VAR>x</VAR> is lowercase, run the command
-that is bound to the corresponding uppercase character.
+<A NAME="IDX181"></A>
+<DT><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, <small>...</small>)</CODE>
+<DD><A NAME="IDX182"></A>
+If the metafied character <VAR>x</VAR> is upper case, run the command
+that is bound to the corresponding metafied lower case character.
+The behavior is undefined if <VAR>x</VAR> is already lower case.
<P>
-<A NAME="IDX179"></A>
+<A NAME="IDX183"></A>
<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX180"></A>
+<DD><A NAME="IDX184"></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="IDX181"></A>
+<A NAME="IDX185"></A>
<DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX182"></A>
+<DD><A NAME="IDX186"></A>
Incremental undo, separately remembered for each line.
<P>
-<A NAME="IDX183"></A>
+<A NAME="IDX187"></A>
<DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX184"></A>
+<DD><A NAME="IDX188"></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="IDX185"></A>
+<A NAME="IDX189"></A>
<DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX186"></A>
+<DD><A NAME="IDX190"></A>
Perform tilde expansion on the current word.
<P>
-<A NAME="IDX187"></A>
+<A NAME="IDX191"></A>
<DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX188"></A>
+<DD><A NAME="IDX192"></A>
Set the mark to the point. If a
numeric argument is supplied, the mark is set to that position.
<P>
-<A NAME="IDX189"></A>
+<A NAME="IDX193"></A>
<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX190"></A>
+<DD><A NAME="IDX194"></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="IDX191"></A>
+<A NAME="IDX195"></A>
<DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX192"></A>
+<DD><A NAME="IDX196"></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="IDX193"></A>
+<A NAME="IDX197"></A>
<DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX194"></A>
+<DD><A NAME="IDX198"></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="IDX195"></A>
+<A NAME="IDX199"></A>
<DT><CODE>skip-csi-sequence ()</CODE>
-<DD><A NAME="IDX196"></A>
+<DD><A NAME="IDX200"></A>
Read enough characters to consume a multi-key sequence such as those
defined for keys like Home and End. Such sequences begin with a
Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
@@ -2147,9 +2209,9 @@ stray characters into the editing buffer. This is unbound by default,
but usually bound to ESC-[.
<P>
-<A NAME="IDX197"></A>
+<A NAME="IDX201"></A>
<DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX198"></A>
+<DD><A NAME="IDX202"></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
@@ -2160,43 +2222,43 @@ the line.
In either case, the line is accepted as if a newline had been typed.
<P>
-<A NAME="IDX199"></A>
+<A NAME="IDX203"></A>
<DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX200"></A>
+<DD><A NAME="IDX204"></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="IDX201"></A>
+<A NAME="IDX205"></A>
<DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX202"></A>
+<DD><A NAME="IDX206"></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="IDX203"></A>
+<A NAME="IDX207"></A>
<DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX204"></A>
+<DD><A NAME="IDX208"></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="IDX205"></A>
+<A NAME="IDX209"></A>
<DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX206"></A>
+<DD><A NAME="IDX210"></A>
When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
editing mode.
<P>
-<A NAME="IDX207"></A>
+<A NAME="IDX211"></A>
<DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX208"></A>
+<DD><A NAME="IDX212"></A>
When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
editing mode.
<P>
@@ -2331,8 +2393,8 @@ the simplest way possible, perhaps to replace calls in your code to
<CODE>gets()</CODE> or <CODE>fgets()</CODE>.
</P><P>
-<A NAME="IDX209"></A>
-<A NAME="IDX210"></A>
+<A NAME="IDX213"></A>
+<A NAME="IDX214"></A>
</P><P>
The function <CODE>readline()</CODE> prints a prompt <VAR>prompt</VAR>
@@ -2358,6 +2420,13 @@ 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>
+Readline performs some expansion on the <VAR>prompt</VAR> before it is
+displayed on the screen. See the description of <CODE>rl_expand_prompt</CODE>
+(see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A>) for additional details, especially if <VAR>prompt</VAR>
+will contain characters that do not consume physical screen space when
+displayed.
+</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.
@@ -2648,7 +2717,7 @@ command functions.
These variables are available to function writers.
</P><P>
-<A NAME="IDX211"></A>
+<A NAME="IDX215"></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
@@ -2658,7 +2727,7 @@ the memory allocated to <CODE>rl_line_buffer</CODE>.
</DL>
</P><P>
-<A NAME="IDX212"></A>
+<A NAME="IDX216"></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>
@@ -2666,7 +2735,7 @@ the memory allocated to <CODE>rl_line_buffer</CODE>.
</DL>
</P><P>
-<A NAME="IDX213"></A>
+<A NAME="IDX217"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_end</B>
<DD>The number of characters present in <CODE>rl_line_buffer</CODE>. When
@@ -2675,7 +2744,7 @@ the memory allocated to <CODE>rl_line_buffer</CODE>.
</DL>
</P><P>
-<A NAME="IDX214"></A>
+<A NAME="IDX218"></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
@@ -2683,7 +2752,7 @@ and point define a <EM>region</EM>.
</DL>
</P><P>
-<A NAME="IDX215"></A>
+<A NAME="IDX219"></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
@@ -2691,7 +2760,7 @@ line immediately.
</DL>
</P><P>
-<A NAME="IDX216"></A>
+<A NAME="IDX220"></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
@@ -2700,7 +2769,7 @@ than reading up to a character bound to <CODE>accept-line</CODE>.
</DL>
</P><P>
-<A NAME="IDX217"></A>
+<A NAME="IDX221"></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
@@ -2708,7 +2777,7 @@ way to stuff a single character into the input stream.
</DL>
</P><P>
-<A NAME="IDX218"></A>
+<A NAME="IDX222"></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;
@@ -2717,7 +2786,7 @@ they were called directly or by Readline's dispatching mechanism.
</DL>
</P><P>
-<A NAME="IDX219"></A>
+<A NAME="IDX223"></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
@@ -2727,7 +2796,7 @@ the beginning of the newly-blank line.
</DL>
</P><P>
-<A NAME="IDX220"></A>
+<A NAME="IDX224"></A>
<DL>
<DT><U>Variable:</U> char * <B>rl_prompt</B>
<DD>The prompt Readline uses. This is set from the argument to
@@ -2737,7 +2806,7 @@ be used to modify the prompt string after calling <CODE>readline()</CODE>.
</DL>
</P><P>
-<A NAME="IDX221"></A>
+<A NAME="IDX225"></A>
<DL>
<DT><U>Variable:</U> char * <B>rl_display_prompt</B>
<DD>The string displayed as the prompt. This is usually identical to
@@ -2746,7 +2815,7 @@ use the prompt string as a message area, such as incremental search.
</DL>
</P><P>
-<A NAME="IDX222"></A>
+<A NAME="IDX226"></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
@@ -2759,14 +2828,14 @@ never sets it.
</DL>
</P><P>
-<A NAME="IDX223"></A>
+<A NAME="IDX227"></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="IDX224"></A>
+<A NAME="IDX228"></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
@@ -2777,7 +2846,7 @@ value 0x0402.
</DL>
</P><P>
-<A NAME="IDX225"></A>
+<A NAME="IDX229"></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
@@ -2785,7 +2854,7 @@ emulation.
</DL>
</P><P>
-<A NAME="IDX226"></A>
+<A NAME="IDX230"></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,
@@ -2794,7 +2863,7 @@ the first time it is called.
</DL>
</P><P>
-<A NAME="IDX227"></A>
+<A NAME="IDX231"></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.
@@ -2803,7 +2872,7 @@ The value allows conditional parsing of the inputrc file
</DL>
</P><P>
-<A NAME="IDX228"></A>
+<A NAME="IDX232"></A>
<DL>
<DT><U>Variable:</U> FILE * <B>rl_instream</B>
<DD>The stdio stream from which Readline reads input.
@@ -2811,7 +2880,7 @@ If <CODE>NULL</CODE>, Readline defaults to <VAR>stdin</VAR>.
</DL>
</P><P>
-<A NAME="IDX229"></A>
+<A NAME="IDX233"></A>
<DL>
<DT><U>Variable:</U> FILE * <B>rl_outstream</B>
<DD>The stdio stream to which Readline performs output.
@@ -2819,7 +2888,7 @@ If <CODE>NULL</CODE>, Readline defaults to <VAR>stdout</VAR>.
</DL>
</P><P>
-<A NAME="IDX230"></A>
+<A NAME="IDX234"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_prefer_env_winsize</B>
<DD>If non-zero, Readline gives values found in the <CODE>LINES</CODE> and
@@ -2828,7 +2897,7 @@ from the kernel when computing the screen dimensions.
</DL>
</P><P>
-<A NAME="IDX231"></A>
+<A NAME="IDX235"></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
@@ -2837,7 +2906,7 @@ example.
</DL>
</P><P>
-<A NAME="IDX232"></A>
+<A NAME="IDX236"></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
@@ -2845,7 +2914,7 @@ before <CODE>readline</CODE> prints the first prompt.
</DL>
</P><P>
-<A NAME="IDX233"></A>
+<A NAME="IDX237"></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
@@ -2854,7 +2923,7 @@ starts reading input characters.
</DL>
</P><P>
-<A NAME="IDX234"></A>
+<A NAME="IDX238"></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
@@ -2864,7 +2933,7 @@ is no keyboard input.
</DL>
</P><P>
-<A NAME="IDX235"></A>
+<A NAME="IDX239"></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
@@ -2876,7 +2945,7 @@ setting <VAR>rl_input_available_hook</VAR> as well.
</DL>
</P><P>
-<A NAME="IDX236"></A>
+<A NAME="IDX240"></A>
<DL>
<DT><U>Variable:</U> rl_hook_func_t * <B>rl_signal_event_hook</B>
<DD>If non-zero, this is the address of a function to call if a read system
@@ -2884,7 +2953,7 @@ call is interrupted when Readline is reading terminal input.
</DL>
</P><P>
-<A NAME="IDX237"></A>
+<A NAME="IDX241"></A>
<DL>
<DT><U>Variable:</U> rl_hook_func_t * <B>rl_input_available_hook</B>
<DD>If non-zero, Readline will use this function's return value when it needs
@@ -2909,7 +2978,7 @@ setting <VAR>rl_input_available_hook</VAR> as well.
</DL>
</P><P>
-<A NAME="IDX238"></A>
+<A NAME="IDX242"></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
@@ -2919,7 +2988,7 @@ redisplay function (see section <A HREF="readline.html#SEC35">2.4.6 Redisplay</A
</DL>
</P><P>
-<A NAME="IDX239"></A>
+<A NAME="IDX243"></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
@@ -2930,7 +2999,7 @@ By default, this is set to <CODE>rl_prep_terminal</CODE>
</DL>
</P><P>
-<A NAME="IDX240"></A>
+<A NAME="IDX244"></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
@@ -2941,7 +3010,7 @@ By default, this is set to <CODE>rl_deprep_terminal</CODE>
</DL>
</P><P>
-<A NAME="IDX241"></A>
+<A NAME="IDX245"></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
@@ -2949,7 +3018,7 @@ currently executing readline function was found.
</DL>
</P><P>
-<A NAME="IDX242"></A>
+<A NAME="IDX246"></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
@@ -2957,21 +3026,21 @@ last key binding occurred.
</DL>
</P><P>
-<A NAME="IDX243"></A>
+<A NAME="IDX247"></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="IDX244"></A>
+<A NAME="IDX248"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_executing_key</B>
<DD>The key that caused the dispatch to the currently-executing Readline function.
</DL>
</P><P>
-<A NAME="IDX245"></A>
+<A NAME="IDX249"></A>
<DL>
<DT><U>Variable:</U> char * <B>rl_executing_keyseq</B>
<DD>The full key sequence that caused the dispatch to the currently-executing
@@ -2979,14 +3048,14 @@ Readline function.
</DL>
</P><P>
-<A NAME="IDX246"></A>
+<A NAME="IDX250"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_key_sequence_length</B>
<DD>The number of characters in <VAR>rl_executing_keyseq</VAR>.
</DL>
</P><P>
-<A NAME="IDX247"></A>
+<A NAME="IDX251"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_readline_state</B>
<DD>A variable with bit values that encapsulate the current Readline state.
@@ -3056,7 +3125,7 @@ and is about to return the line to the caller.
</DL>
</P><P>
-<A NAME="IDX248"></A>
+<A NAME="IDX252"></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
@@ -3064,7 +3133,7 @@ the user. Only valid in a bindable command function.
</DL>
</P><P>
-<A NAME="IDX249"></A>
+<A NAME="IDX253"></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
@@ -3073,7 +3142,7 @@ command function.
</DL>
</P><P>
-<A NAME="IDX250"></A>
+<A NAME="IDX254"></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
@@ -3152,7 +3221,7 @@ programmer, should bind the functions you write to descriptive names as
well. Readline provides a function for doing that:
</P><P>
-<A NAME="IDX251"></A>
+<A NAME="IDX255"></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
@@ -3192,7 +3261,7 @@ get run. You can make your own keymaps, copy existing keymaps, and tell
Readline which keymap to use.
</P><P>
-<A NAME="IDX252"></A>
+<A NAME="IDX256"></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
@@ -3201,14 +3270,14 @@ Readline which keymap to use.
</DL>
</P><P>
-<A NAME="IDX253"></A>
+<A NAME="IDX257"></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="IDX254"></A>
+<A NAME="IDX258"></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,
@@ -3217,7 +3286,7 @@ the Meta digits bound to produce numeric arguments.
</DL>
</P><P>
-<A NAME="IDX255"></A>
+<A NAME="IDX259"></A>
<DL>
<DT><U>Function:</U> void <B>rl_discard_keymap</B> <I>(Keymap keymap)</I>
<DD>Free the storage associated with the data in <VAR>keymap</VAR>.
@@ -3225,7 +3294,7 @@ The caller should free <VAR>keymap</VAR>.
</DL>
</P><P>
-<A NAME="IDX256"></A>
+<A NAME="IDX260"></A>
<DL>
<DT><U>Function:</U> void <B>rl_free_keymap</B> <I>(Keymap keymap)</I>
<DD>Free all storage associated with <VAR>keymap</VAR>. This calls
@@ -3233,25 +3302,33 @@ The caller should free <VAR>keymap</VAR>.
</DL>
</P><P>
+<A NAME="IDX261"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_empty_keymap</B> <I>(Keymap keymap)</I>
+<DD>Return non-zero if there are no keys bound to functions in <VAR>keymap</VAR>;
+zero if there are any keys bound.
+</DL>
+</P><P>
+
Readline has several internal keymaps. These functions allow you to
change which keymap is active.
</P><P>
-<A NAME="IDX257"></A>
+<A NAME="IDX262"></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="IDX258"></A>
+<A NAME="IDX263"></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="IDX259"></A>
+<A NAME="IDX264"></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
@@ -3259,7 +3336,7 @@ be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="read
</DL>
</P><P>
-<A NAME="IDX260"></A>
+<A NAME="IDX265"></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
@@ -3267,6 +3344,27 @@ be supplied in a <CODE>set keymap</CODE> inputrc line (see section <A HREF="read
</DL>
</P><P>
+<A NAME="IDX266"></A>
+<DL>
+<DT><U>Function:</U> int <B>rl_set_keymap_name</B> <I>(const char *name, Keymap keymap)</I>
+<DD>Set the name of <VAR>keymap</VAR>. This name will then be "registered" and
+available for use in a <CODE>set keymap</CODE> inputrc directive
+see section <A HREF="readline.html#SEC9">1.3 Readline Init File</A>).
+The <VAR>name</VAR> may not be one of Readline's builtin keymap names;
+you may not add a different name for one of Readline's builtin keymaps.
+You may replace the name associated with a given keymap by calling this
+function more than once with the same <VAR>keymap</VAR> argument.
+You may associate a registered <VAR>name</VAR> with a new keymap by calling this
+function more than once with the same <VAR>name</VAR> argument.
+There is no way to remove a named keymap once the name has been
+registered.
+Readline will make a copy of <VAR>name</VAR>.
+The return value is greater than zero unless <VAR>name</VAR> is one of
+Readline's builtin keymap names or <VAR>keymap</VAR> is one of Readline's
+builtin keymaps.
+</DL>
+</P><P>
+
<A NAME="Binding Keys"></A>
<HR SIZE="6">
<A NAME="SEC32"></A>
@@ -3304,7 +3402,7 @@ initialization function assigned to the <CODE>rl_startup_hook</CODE> variable
These functions manage key bindings.
</P><P>
-<A NAME="IDX261"></A>
+<A NAME="IDX267"></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.
@@ -3312,7 +3410,7 @@ Returns non-zero in the case of an invalid <VAR>key</VAR>.
</DL>
</P><P>
-<A NAME="IDX262"></A>
+<A NAME="IDX268"></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>.
@@ -3320,7 +3418,7 @@ Returns non-zero in the case of an invalid <VAR>key</VAR>.
</DL>
</P><P>
-<A NAME="IDX263"></A>
+<A NAME="IDX269"></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
@@ -3330,7 +3428,7 @@ already bound.
</DL>
</P><P>
-<A NAME="IDX264"></A>
+<A NAME="IDX270"></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>.
@@ -3339,7 +3437,7 @@ already bound.
</DL>
</P><P>
-<A NAME="IDX265"></A>
+<A NAME="IDX271"></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.
@@ -3347,7 +3445,7 @@ Returns non-zero in case of error.
</DL>
</P><P>
-<A NAME="IDX266"></A>
+<A NAME="IDX272"></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>.
@@ -3355,21 +3453,21 @@ Returns non-zero in case of error.
</DL>
</P><P>
-<A NAME="IDX267"></A>
+<A NAME="IDX273"></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="IDX268"></A>
+<A NAME="IDX274"></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="IDX269"></A>
+<A NAME="IDX275"></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
@@ -3379,7 +3477,7 @@ The return value is non-zero if <VAR>keyseq</VAR> is invalid.
</DL>
</P><P>
-<A NAME="IDX270"></A>
+<A NAME="IDX276"></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
@@ -3389,14 +3487,14 @@ The return value is non-zero if <VAR>keyseq</VAR> is invalid.
</DL>
</P><P>
-<A NAME="IDX271"></A>
+<A NAME="IDX277"></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="IDX272"></A>
+<A NAME="IDX278"></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
@@ -3406,7 +3504,7 @@ already bound.
</DL>
</P><P>
-<A NAME="IDX273"></A>
+<A NAME="IDX279"></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>.
@@ -3415,7 +3513,7 @@ already bound.
</DL>
</P><P>
-<A NAME="IDX274"></A>
+<A NAME="IDX280"></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
@@ -3426,7 +3524,7 @@ necessary. The initial keymap in which to do bindings is <VAR>map</VAR>.
</DL>
</P><P>
-<A NAME="IDX275"></A>
+<A NAME="IDX281"></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
@@ -3435,7 +3533,7 @@ perform any key bindings and variable assignments found
</DL>
</P><P>
-<A NAME="IDX276"></A>
+<A NAME="IDX282"></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>
@@ -3466,24 +3564,37 @@ 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="IDX277"></A>
+<A NAME="IDX283"></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="IDX278"></A>
+<A NAME="IDX284"></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>).
+It takes a "translated" key sequence and should not be used if the key sequence
+can include NUL.
</DL>
</P><P>
-<A NAME="IDX279"></A>
+<A NAME="IDX285"></A>
+<DL>
+<DT><U>Function:</U> rl_command_func_t * <B>rl_function_of_keyseq_len</B> <I>(const char *keyseq, size_t len, Keymap map, int *type)</I>
+<DD>Return the function invoked by <VAR>keyseq</VAR> of length <VAR>len</VAR>
+in keymap <VAR>map</VAR>. Equivalent to <CODE>rl_function_of_keyseq</CODE> with the
+addition of the <VAR>len</VAR> parameter.
+It takes a "translated" key sequence and should be used if the key sequence
+can include NUL.
+</DL>
+</P><P>
+
+<A NAME="IDX286"></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
@@ -3491,7 +3602,7 @@ invoke <VAR>function</VAR> in the current keymap.
</DL>
</P><P>
-<A NAME="IDX280"></A>
+<A NAME="IDX287"></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
@@ -3499,7 +3610,7 @@ invoke <VAR>function</VAR> in the keymap <VAR>map</VAR>.
</DL>
</P><P>
-<A NAME="IDX281"></A>
+<A NAME="IDX288"></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
@@ -3509,14 +3620,14 @@ the list is formatted in such a way that it can be made part of an
</DL>
</P><P>
-<A NAME="IDX282"></A>
+<A NAME="IDX289"></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="IDX283"></A>
+<A NAME="IDX290"></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
@@ -3526,7 +3637,7 @@ should free the array, but not the pointers, using <CODE>free</CODE> or
</DL>
</P><P>
-<A NAME="IDX284"></A>
+<A NAME="IDX291"></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
@@ -3581,7 +3692,7 @@ tells what to undo, not how to undo it. <CODE>UNDO_BEGIN</CODE> and
<CODE>rl_end_undo_group()</CODE>.
</P><P>
-<A NAME="IDX285"></A>
+<A NAME="IDX292"></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
@@ -3591,7 +3702,7 @@ information usually comes from calls to <CODE>rl_insert_text()</CODE> and
</DL>
</P><P>
-<A NAME="IDX286"></A>
+<A NAME="IDX293"></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
@@ -3600,7 +3711,7 @@ for each call to <CODE>rl_begin_undo_group()</CODE>.
</DL>
</P><P>
-<A NAME="IDX287"></A>
+<A NAME="IDX294"></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
@@ -3608,14 +3719,14 @@ text runs from <VAR>start</VAR> to <VAR>end</VAR>, and encompasses <VAR>text</VA
</DL>
</P><P>
-<A NAME="IDX288"></A>
+<A NAME="IDX295"></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="IDX289"></A>
+<A NAME="IDX296"></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
@@ -3629,7 +3740,7 @@ 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="IDX290"></A>
+<A NAME="IDX297"></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
@@ -3656,7 +3767,7 @@ that text.
<!--docid::SEC35::-->
<P>
-<A NAME="IDX291"></A>
+<A NAME="IDX298"></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
@@ -3664,7 +3775,7 @@ of <CODE>rl_line_buffer</CODE>.
</DL>
</P><P>
-<A NAME="IDX292"></A>
+<A NAME="IDX299"></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
@@ -3672,7 +3783,7 @@ Readline thinks the screen display is correct.
</DL>
</P><P>
-<A NAME="IDX293"></A>
+<A NAME="IDX300"></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,
@@ -3680,7 +3791,7 @@ usually after outputting a newline.
</DL>
</P><P>
-<A NAME="IDX294"></A>
+<A NAME="IDX301"></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
@@ -3692,14 +3803,14 @@ It should be used after setting <VAR>rl_already_prompted</VAR>.
</DL>
</P><P>
-<A NAME="IDX295"></A>
+<A NAME="IDX302"></A>
<DL>
<DT><U>Function:</U> int <B>rl_clear_visible_line</B> <I>(void)</I>
<DD>Clear the screen lines corresponding to the current line's contents.
</DL>
</P><P>
-<A NAME="IDX296"></A>
+<A NAME="IDX303"></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
@@ -3707,14 +3818,14 @@ starting on a new line.
</DL>
</P><P>
-<A NAME="IDX297"></A>
+<A NAME="IDX304"></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="IDX298"></A>
+<A NAME="IDX305"></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>.
@@ -3725,7 +3836,7 @@ redisplay.
</DL>
</P><P>
-<A NAME="IDX299"></A>
+<A NAME="IDX306"></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>,
@@ -3738,7 +3849,7 @@ before calling this function.
</DL>
</P><P>
-<A NAME="IDX300"></A>
+<A NAME="IDX307"></A>
<DL>
<DT><U>Function:</U> int <B>rl_clear_message</B> <I>(void)</I>
<DD>Clear the message in the echo area. If the prompt was saved with a call to
@@ -3747,7 +3858,7 @@ call <CODE>rl_restore_prompt</CODE> before calling this function.
</DL>
</P><P>
-<A NAME="IDX301"></A>
+<A NAME="IDX308"></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
@@ -3755,7 +3866,7 @@ displaying a new message in the message area with <CODE>rl_message()</CODE>.
</DL>
</P><P>
-<A NAME="IDX302"></A>
+<A NAME="IDX309"></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
@@ -3766,7 +3877,7 @@ corresponding call to <CODE>rl_clear_message</CODE>.
</DL>
</P><P>
-<A NAME="IDX303"></A>
+<A NAME="IDX310"></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
@@ -3784,7 +3895,7 @@ be used to embed terminal-specific escape sequences in prompts.
</DL>
</P><P>
-<A NAME="IDX304"></A>
+<A NAME="IDX311"></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
@@ -3811,7 +3922,7 @@ to the result.
<!--docid::SEC36::-->
<P>
-<A NAME="IDX305"></A>
+<A NAME="IDX312"></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.
@@ -3819,7 +3930,7 @@ Returns the number of characters inserted.
</DL>
</P><P>
-<A NAME="IDX306"></A>
+<A NAME="IDX313"></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.
@@ -3827,7 +3938,7 @@ Returns the number of characters deleted.
</DL>
</P><P>
-<A NAME="IDX307"></A>
+<A NAME="IDX314"></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
@@ -3835,7 +3946,7 @@ the current line.
</DL>
</P><P>
-<A NAME="IDX308"></A>
+<A NAME="IDX315"></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
@@ -3847,7 +3958,7 @@ not a kill, a new kill ring slot is used.
</DL>
</P><P>
-<A NAME="IDX309"></A>
+<A NAME="IDX316"></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
@@ -3874,7 +3985,7 @@ by a key bound to a macro. Not especially useful; use
<!--docid::SEC37::-->
<P>
-<A NAME="IDX310"></A>
+<A NAME="IDX317"></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.
@@ -3886,7 +3997,7 @@ the <CODE>rl_event_hook</CODE> variable.
</DL>
</P><P>
-<A NAME="IDX311"></A>
+<A NAME="IDX318"></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
@@ -3894,7 +4005,7 @@ be the keyboard.
</DL>
</P><P>
-<A NAME="IDX312"></A>
+<A NAME="IDX319"></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"
@@ -3905,7 +4016,7 @@ before Readline attempts to read characters from the terminal with
</DL>
</P><P>
-<A NAME="IDX313"></A>
+<A NAME="IDX320"></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>
@@ -3913,7 +4024,7 @@ is called. This sets <VAR>rl_pending_input</VAR>.
</DL>
</P><P>
-<A NAME="IDX314"></A>
+<A NAME="IDX321"></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
@@ -3922,7 +4033,7 @@ pending input has not already been read with <CODE>rl_read_key()</CODE>.
</DL>
</P><P>
-<A NAME="IDX315"></A>
+<A NAME="IDX322"></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
@@ -3952,7 +4063,7 @@ Returns the old timeout value.
<!--docid::SEC38::-->
<P>
-<A NAME="IDX316"></A>
+<A NAME="IDX323"></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>
@@ -3962,7 +4073,7 @@ read eight-bit input.
</DL>
</P><P>
-<A NAME="IDX317"></A>
+<A NAME="IDX324"></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
@@ -3971,7 +4082,7 @@ the state in which it was before the most recent call to
</DL>
</P><P>
-<A NAME="IDX318"></A>
+<A NAME="IDX325"></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
@@ -3980,7 +4091,7 @@ The bindings are performed in <VAR>kmap</VAR>.
</DL>
</P><P>
-<A NAME="IDX319"></A>
+<A NAME="IDX326"></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
@@ -3989,7 +4100,7 @@ The bindings are performed in <VAR>kmap</VAR>.
</DL>
</P><P>
-<A NAME="IDX320"></A>
+<A NAME="IDX327"></A>
<DL>
<DT><U>Function:</U> int <B>rl_tty_set_echoing</B> <I>(int value)</I>
<DD>Set Readline's idea of whether or not it is echoing output to its output
@@ -4000,7 +4111,7 @@ This function returns the previous value.
</DL>
</P><P>
-<A NAME="IDX321"></A>
+<A NAME="IDX328"></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
@@ -4028,7 +4139,7 @@ environment variable is used.
<!--docid::SEC39::-->
<P>
-<A NAME="IDX322"></A>
+<A NAME="IDX329"></A>
<DL>
<DT><U>Function:</U> int <B>rl_save_state</B> <I>(struct readline_state *sp)</I>
<DD>Save a snapshot of Readline's internal state to <VAR>sp</VAR>.
@@ -4038,7 +4149,7 @@ The caller is responsible for allocating the structure.
</DL>
</P><P>
-<A NAME="IDX323"></A>
+<A NAME="IDX330"></A>
<DL>
<DT><U>Function:</U> int <B>rl_restore_state</B> <I>(struct readline_state *sp)</I>
<DD>Restore Readline's internal state to that stored in <VAR>sp</VAR>, which must
@@ -4049,7 +4160,7 @@ The caller is responsible for freeing the structure.
</DL>
</P><P>
-<A NAME="IDX324"></A>
+<A NAME="IDX331"></A>
<DL>
<DT><U>Function:</U> void <B>rl_free</B> <I>(void *mem)</I>
<DD>Deallocate the memory pointed to by <VAR>mem</VAR>. <VAR>mem</VAR> must have been
@@ -4057,7 +4168,7 @@ allocated by <CODE>malloc</CODE>.
</DL>
</P><P>
-<A NAME="IDX325"></A>
+<A NAME="IDX332"></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>.
@@ -4067,7 +4178,7 @@ current line is cleared.
</DL>
</P><P>
-<A NAME="IDX326"></A>
+<A NAME="IDX333"></A>
<DL>
<DT><U>Function:</U> void <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>
@@ -4075,7 +4186,7 @@ characters, possibly reallocating it if necessary.
</DL>
</P><P>
-<A NAME="IDX327"></A>
+<A NAME="IDX334"></A>
<DL>
<DT><U>Function:</U> int <B>rl_initialize</B> <I>(void)</I>
<DD>Initialize or re-initialize Readline's internal state.
@@ -4084,21 +4195,21 @@ reading any input.
</DL>
</P><P>
-<A NAME="IDX328"></A>
+<A NAME="IDX335"></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="IDX329"></A>
+<A NAME="IDX336"></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="IDX330"></A>
+<A NAME="IDX337"></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
@@ -4118,28 +4229,28 @@ The following are implemented as macros, defined in <CODE>chardefs.h</CODE>.
Applications should refrain from using them.
</P><P>
-<A NAME="IDX331"></A>
+<A NAME="IDX338"></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="IDX332"></A>
+<A NAME="IDX339"></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="IDX333"></A>
+<A NAME="IDX340"></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="IDX334"></A>
+<A NAME="IDX341"></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
@@ -4147,7 +4258,7 @@ uppercase character.
</DL>
</P><P>
-<A NAME="IDX335"></A>
+<A NAME="IDX342"></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
@@ -4155,7 +4266,7 @@ lowercase character.
</DL>
</P><P>
-<A NAME="IDX336"></A>
+<A NAME="IDX343"></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.
@@ -4180,7 +4291,7 @@ lowercase character.
<!--docid::SEC40::-->
<P>
-<A NAME="IDX337"></A>
+<A NAME="IDX344"></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>.
@@ -4190,7 +4301,7 @@ use <CODE>rl_generic_bind()</CODE> instead.
</DL>
</P><P>
-<A NAME="IDX338"></A>
+<A NAME="IDX345"></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
@@ -4200,7 +4311,7 @@ that it can be made part of an <CODE>inputrc</CODE> file and re-read.
</DL>
</P><P>
-<A NAME="IDX339"></A>
+<A NAME="IDX346"></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>.
@@ -4210,7 +4321,7 @@ file (see section <A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax<
</DL>
</P><P>
-<A NAME="IDX340"></A>
+<A NAME="IDX347"></A>
<DL>
<DT><U>Function:</U> char * <B>rl_variable_value</B> <I>(const char *variable)</I>
<DD>Return a string representing the value of the Readline variable <VAR>variable</VAR>.
@@ -4218,7 +4329,7 @@ For boolean variables, this string is either <SAMP>`on'</SAMP> or <SAMP>`off'</S
</DL>
</P><P>
-<A NAME="IDX341"></A>
+<A NAME="IDX348"></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
@@ -4228,7 +4339,7 @@ that it can be made part of an <CODE>inputrc</CODE> file and re-read.
</DL>
</P><P>
-<A NAME="IDX342"></A>
+<A NAME="IDX349"></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
@@ -4236,7 +4347,7 @@ a balancing character when <CODE>blink-matching-paren</CODE> has been enabled.
</DL>
</P><P>
-<A NAME="IDX343"></A>
+<A NAME="IDX350"></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>.
@@ -4248,7 +4359,7 @@ values for only those capabilities Readline uses.
</DL>
</P><P>
-<A NAME="IDX344"></A>
+<A NAME="IDX351"></A>
<DL>
<DT><U>Function:</U> void <B>rl_clear_history</B> <I>(void)</I>
<DD>Clear the history list by deleting all of the entries, in the same manner
@@ -4284,7 +4395,7 @@ also be invoked as a `callback' function from an event loop. There
are functions available to make this easy.
</P><P>
-<A NAME="IDX345"></A>
+<A NAME="IDX352"></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
@@ -4297,7 +4408,7 @@ line when it it finished with it.
</DL>
</P><P>
-<A NAME="IDX346"></A>
+<A NAME="IDX353"></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
@@ -4317,7 +4428,7 @@ the terminal settings are modified for Readline's use again.
</DL>
</P><P>
-<A NAME="IDX347"></A>
+<A NAME="IDX354"></A>
<DL>
<DT><U>Function:</U> void <B>rl_callback_sigcleanup</B> <I>(void)</I>
<DD>Clean up any internal state the callback interface uses to maintain state
@@ -4328,7 +4439,7 @@ calls this when appropriate.
</DL>
</P><P>
-<A NAME="IDX348"></A>
+<A NAME="IDX355"></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.
@@ -4647,7 +4758,7 @@ 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="IDX349"></A>
+<A NAME="IDX356"></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
@@ -4659,7 +4770,7 @@ The default value of <CODE>rl_catch_signals</CODE> is 1.
</DL>
</P><P>
-<A NAME="IDX350"></A>
+<A NAME="IDX357"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_catch_sigwinch</B>
<DD>If this variable is set to a non-zero value,
@@ -4670,7 +4781,7 @@ The default value of <CODE>rl_catch_sigwinch</CODE> is 1.
</DL>
</P><P>
-<A NAME="IDX351"></A>
+<A NAME="IDX358"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_persistent_signal_handlers</B>
<DD>If an application using the callback interface wishes Readline's signal
@@ -4683,7 +4794,7 @@ The default value of <CODE>rl_persistent_signal_handlers</CODE> is 0.
</DL>
</P><P>
-<A NAME="IDX352"></A>
+<A NAME="IDX359"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_change_environment</B>
<DD>If this variable is set to a non-zero value,
@@ -4703,7 +4814,7 @@ Readline provides convenience functions to do the necessary terminal
and internal state cleanup upon receipt of a signal.
</P><P>
-<A NAME="IDX353"></A>
+<A NAME="IDX360"></A>
<DL>
<DT><U>Function:</U> int <B>rl_pending_signal</B> <I>(void)</I>
<DD>Return the signal number of the most recent signal Readline received but
@@ -4711,7 +4822,7 @@ has not yet handled, or 0 if there is no pending signal.
</DL>
</P><P>
-<A NAME="IDX354"></A>
+<A NAME="IDX361"></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
@@ -4721,7 +4832,7 @@ all signals, depending on the values of <CODE>rl_catch_signals</CODE> and
</DL>
</P><P>
-<A NAME="IDX355"></A>
+<A NAME="IDX362"></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
@@ -4733,7 +4844,7 @@ current input line.
</DL>
</P><P>
-<A NAME="IDX356"></A>
+<A NAME="IDX363"></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
@@ -4742,13 +4853,30 @@ handlers, depending on the values of <CODE>rl_catch_signals</CODE> and
</DL>
</P><P>
+If an application wants to force Readline to handle any signals that
+have arrived while it has been executing, <CODE>rl_check_signals()</CODE>
+will call Readline's internal signal handler if there are any pending
+signals. This is primarily intended for those applications that use
+a custom <CODE>rl_getc_function</CODE> (see section <A HREF="readline.html#SEC28">2.3 Readline Variables</A>) and wish
+to handle signals received while waiting for input.
+</P><P>
+
+<A NAME="IDX364"></A>
+<DL>
+<DT><U>Function:</U> void <B>rl_check_signals</B> <I>(void)</I>
+<DD>If there are any pending signals, call Readline's internal signal handling
+functions to process them. <CODE>rl_pending_signal()</CODE> can be used independently
+to determine whether or not there are any pending signals.
+</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="IDX357"></A>
+<A NAME="IDX365"></A>
<DL>
<DT><U>Function:</U> void <B>rl_echo_signal_char</B> <I>(int sig)</I>
<DD>If an application wishes to install its own signal handlers, but still
@@ -4758,14 +4886,14 @@ function with <VAR>sig</VAR> set to <CODE>SIGINT</CODE>, <CODE>SIGQUIT</CODE>, o
</DL>
</P><P>
-<A NAME="IDX358"></A>
+<A NAME="IDX366"></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="IDX359"></A>
+<A NAME="IDX367"></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
@@ -4779,7 +4907,7 @@ is still interested in the screen dimensions, Readline's idea of the screen
size may be queried.
</P><P>
-<A NAME="IDX360"></A>
+<A NAME="IDX368"></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
@@ -4787,7 +4915,7 @@ variables pointed to by the arguments.
</DL>
</P><P>
-<A NAME="IDX361"></A>
+<A NAME="IDX369"></A>
<DL>
<DT><U>Function:</U> void <B>rl_reset_screen_size</B> <I>(void)</I>
<DD>Cause Readline to reobtain the screen size and recalculate its dimensions.
@@ -4797,7 +4925,7 @@ variables pointed to by the arguments.
The following functions install and remove Readline's signal handlers.
</P><P>
-<A NAME="IDX362"></A>
+<A NAME="IDX370"></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>,
@@ -4807,7 +4935,7 @@ The following functions install and remove Readline's signal handlers.
</DL>
</P><P>
-<A NAME="IDX363"></A>
+<A NAME="IDX371"></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
@@ -4920,7 +5048,7 @@ Such a generator function is referred to as an
</OL>
<P>
-<A NAME="IDX364"></A>
+<A NAME="IDX372"></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
@@ -4929,7 +5057,7 @@ that does the initial simple matching selection algorithm (see
</DL>
</P><P>
-<A NAME="IDX365"></A>
+<A NAME="IDX373"></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
@@ -4965,7 +5093,7 @@ Here is the complete list of callable completion functions present in
Readline.
</P><P>
-<A NAME="IDX366"></A>
+<A NAME="IDX374"></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
@@ -4979,7 +5107,7 @@ a common prefix.
</DL>
</P><P>
-<A NAME="IDX367"></A>
+<A NAME="IDX375"></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
@@ -4991,7 +5119,7 @@ argument depending on <VAR>invoking_key</VAR>.
</DL>
</P><P>
-<A NAME="IDX368"></A>
+<A NAME="IDX376"></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
@@ -5000,7 +5128,7 @@ argument depending on <VAR>invoking_key</VAR>.
</DL>
</P><P>
-<A NAME="IDX369"></A>
+<A NAME="IDX377"></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
@@ -5009,7 +5137,7 @@ This calls <CODE>rl_complete_internal()</CODE> with an argument of <SAMP>`*'</SA
</DL>
</P><P>
-<A NAME="IDX370"></A>
+<A NAME="IDX378"></A>
<DL>
<DT><U>Function:</U> int <B>rl_completion_mode</B> <I>(rl_command_func_t *cfunc)</I>
<DD>Returns the appropriate value to pass to <CODE>rl_complete_internal()</CODE>
@@ -5021,7 +5149,7 @@ the same interface as <CODE>rl_complete()</CODE>.
</DL>
</P><P>
-<A NAME="IDX371"></A>
+<A NAME="IDX379"></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
@@ -5039,7 +5167,7 @@ when there are no more matches.
</DL>
</P><P>
-<A NAME="IDX372"></A>
+<A NAME="IDX380"></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.
@@ -5050,7 +5178,7 @@ Readline functions).
</DL>
</P><P>
-<A NAME="IDX373"></A>
+<A NAME="IDX381"></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
@@ -5078,7 +5206,7 @@ for subsequent calls.
<!--docid::SEC48::-->
<P>
-<A NAME="IDX374"></A>
+<A NAME="IDX382"></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>.
@@ -5087,7 +5215,7 @@ the default filename completer.
</DL>
</P><P>
-<A NAME="IDX375"></A>
+<A NAME="IDX383"></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.
@@ -5104,7 +5232,7 @@ completion even if this function returns no matches.
</DL>
</P><P>
-<A NAME="IDX376"></A>
+<A NAME="IDX384"></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
@@ -5121,7 +5249,7 @@ to reset this character.
</DL>
</P><P>
-<A NAME="IDX377"></A>
+<A NAME="IDX385"></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
@@ -5134,7 +5262,7 @@ that delimits the filename (usually <SAMP>`''</SAMP> or <SAMP>`"'</SAMP>). If
</DL>
</P><P>
-<A NAME="IDX378"></A>
+<A NAME="IDX386"></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
@@ -5147,7 +5275,7 @@ used to break words for the completer.
</DL>
</P><P>
-<A NAME="IDX379"></A>
+<A NAME="IDX387"></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
@@ -5160,7 +5288,7 @@ from the array must be freed.
</DL>
</P><P>
-<A NAME="IDX380"></A>
+<A NAME="IDX388"></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
@@ -5183,7 +5311,7 @@ The function should not modify the directory argument if it returns 0.
</DL>
</P><P>
-<A NAME="IDX381"></A>
+<A NAME="IDX389"></A>
<DL>
<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_directory_rewrite_hook;</B>
<DD>If non-zero, this is the address of a function to call when completing
@@ -5203,7 +5331,7 @@ The function should not modify the directory argument if it returns 0.
</DL>
</P><P>
-<A NAME="IDX382"></A>
+<A NAME="IDX390"></A>
<DL>
<DT><U>Variable:</U> rl_icppfunc_t * <B>rl_filename_stat_hook</B>
<DD>If non-zero, this is the address of a function for the completer to
@@ -5219,7 +5347,7 @@ The function should not modify the directory argument if it returns 0.
</DL>
</P><P>
-<A NAME="IDX383"></A>
+<A NAME="IDX391"></A>
<DL>
<DT><U>Variable:</U> rl_dequote_func_t * <B>rl_filename_rewrite_hook</B>
<DD>If non-zero, this is the address of a function called when reading
@@ -5238,7 +5366,7 @@ allocated string.
</DL>
</P><P>
-<A NAME="IDX384"></A>
+<A NAME="IDX392"></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
@@ -5255,7 +5383,7 @@ You may call that function from this hook.
</DL>
</P><P>
-<A NAME="IDX385"></A>
+<A NAME="IDX393"></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
@@ -5265,14 +5393,14 @@ which break words for completion in Bash:
</DL>
</P><P>
-<A NAME="IDX386"></A>
+<A NAME="IDX394"></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="IDX387"></A>
+<A NAME="IDX395"></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
@@ -5281,7 +5409,7 @@ which break words for completion in Bash:
</DL>
</P><P>
-<A NAME="IDX388"></A>
+<A NAME="IDX396"></A>
<DL>
<DT><U>Variable:</U> rl_cpvfunc_t * <B>rl_completion_word_break_hook</B>
<DD>If non-zero, this is the address of a function to call when Readline is
@@ -5293,7 +5421,7 @@ returns <CODE>NULL</CODE>, <CODE>rl_completer_word_break_characters</CODE> is us
</DL>
</P><P>
-<A NAME="IDX389"></A>
+<A NAME="IDX397"></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.
@@ -5303,7 +5431,7 @@ unless they also appear within this list.
</DL>
</P><P>
-<A NAME="IDX390"></A>
+<A NAME="IDX398"></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
@@ -5311,7 +5439,7 @@ when they appear in a completed filename. The default is the null string.
</DL>
</P><P>
-<A NAME="IDX391"></A>
+<A NAME="IDX399"></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
@@ -5322,7 +5450,7 @@ shell variables and hostnames.
</DL>
</P><P>
-<A NAME="IDX392"></A>
+<A NAME="IDX400"></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
@@ -5332,7 +5460,7 @@ indicates that Readline should never ask the user.
</DL>
</P><P>
-<A NAME="IDX393"></A>
+<A NAME="IDX401"></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
@@ -5342,10 +5470,12 @@ 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.
+It is set to the default before any application-specific completion function
+is called, and may only be changed within such a function.
</DL>
</P><P>
-<A NAME="IDX394"></A>
+<A NAME="IDX402"></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
@@ -5355,7 +5485,7 @@ is called, and may only be changed within such a function.
</DL>
</P><P>
-<A NAME="IDX395"></A>
+<A NAME="IDX403"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_quote_character</B>
<DD>When Readline is completing quoted text, as delimited by one of the
@@ -5365,7 +5495,7 @@ This is set before any application-specific completion function is called.
</DL>
</P><P>
-<A NAME="IDX396"></A>
+<A NAME="IDX404"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_suppress_quote</B>
<DD>If non-zero, Readline does not append a matching quote character when
@@ -5375,7 +5505,7 @@ is called, and may only be changed within such a function.
</DL>
</P><P>
-<A NAME="IDX397"></A>
+<A NAME="IDX405"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_found_quote</B>
<DD>When Readline is completing quoted text, it sets this variable
@@ -5385,7 +5515,7 @@ This is set before any application-specific completion function is called.
</DL>
</P><P>
-<A NAME="IDX398"></A>
+<A NAME="IDX406"></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
@@ -5400,7 +5530,7 @@ function modifies the value, the user's preferences are honored.
</DL>
</P><P>
-<A NAME="IDX399"></A>
+<A NAME="IDX407"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_ignore_completion_duplicates</B>
<DD>If non-zero, then duplicates in the matches are removed.
@@ -5408,7 +5538,7 @@ The default is 1.
</DL>
</P><P>
-<A NAME="IDX400"></A>
+<A NAME="IDX408"></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
@@ -5422,7 +5552,7 @@ characters in <CODE>rl_filename_quote_characters</CODE> and
</DL>
</P><P>
-<A NAME="IDX401"></A>
+<A NAME="IDX409"></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
@@ -5436,7 +5566,7 @@ by <CODE>rl_filename_quoting_function</CODE>.
</DL>
</P><P>
-<A NAME="IDX402"></A>
+<A NAME="IDX410"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_attempted_completion_over</B>
<DD>If an application-specific completion function assigned to
@@ -5447,7 +5577,7 @@ It should be set only by an application's completion function.
</DL>
</P><P>
-<A NAME="IDX403"></A>
+<A NAME="IDX411"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_sort_completion_matches</B>
<DD>If an application sets this variable to 0, Readline will not sort the
@@ -5459,7 +5589,7 @@ matches.
</DL>
</P><P>
-<A NAME="IDX404"></A>
+<A NAME="IDX412"></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
@@ -5471,7 +5601,7 @@ the same interface as <CODE>rl_complete()</CODE>.
</DL>
</P><P>
-<A NAME="IDX405"></A>
+<A NAME="IDX413"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_completion_invoking_key</B>
<DD>Set to the final character in the key sequence that invoked one of the
@@ -5481,7 +5611,7 @@ function is called.
</DL>
</P><P>
-<A NAME="IDX406"></A>
+<A NAME="IDX414"></A>
<DL>
<DT><U>Variable:</U> int <B>rl_inhibit_completion</B>
<DD>If this variable is non-zero, completion is inhibited. The completion
@@ -6628,7 +6758,7 @@ to permit their use in free software.
<TR><TD></TD><TD valign=top><A HREF="readline.html#SEC4">notation, readline</A></TD><TD valign=top><A HREF="readline.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#IDX210">readline, function</A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214">readline, function</A></TD><TD valign=top><A HREF="readline.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="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
@@ -6720,447 +6850,455 @@ to permit their use in free software.
<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#IDX333"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX336"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX335"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX340"><CODE>_rl_digit_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX343"><CODE>_rl_digit_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX339"><CODE>_rl_lowercase_p</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX342"><CODE>_rl_to_lower</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX341"><CODE>_rl_to_upper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX338"><CODE>_rl_uppercase_p</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX175"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX61"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.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>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX65"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.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>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX51"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX52"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX95"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX96"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX99"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX55"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX56"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.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>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX71"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX72"><CODE>beginning-of-history (M-&#38;#60;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX45"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX46"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="readline.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="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX6">bind-tty-special-chars</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX7">blink-matching-paren</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX106"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>bracketed-paste-begin ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</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#IDX169"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX57"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX58"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX173"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX61"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX62"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX8">colored-completion-prefix</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX9">colored-stats</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX10">comment-begin</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX11">completion-display-width</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX12">completion-ignore-case</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX13">completion-map-case</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX14">completion-prefix-display-length</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX15">completion-query-items</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX16">convert-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX145"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX143"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX144"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX93"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><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="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><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="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX97"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX139"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX140"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX153"><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="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX154"><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="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX17">disable-completion</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177"><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="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178"><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="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX181"><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182"><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX203"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX204"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX18">echo-control-characters</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX19">editing-mode</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX205"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX206"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX210"><CODE>emacs-editing-mode (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX20">emacs-mode-string</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX21">enable-bracketed-paste</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX22">enable-keypad</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX167"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX168"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX91"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX92"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX70"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX95"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX96"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX73"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX74"><CODE>end-of-history (M-&#38;#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX47"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX48"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX193"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX194"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX23">expand-tilde</A></TD><TD valign=top><A HREF="readline.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#IDX97"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX98"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX101"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX102"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX49"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX50"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX73"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX74"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX53"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX54"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX24">history-preserve-point</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX85"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX25">history-size</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX85"><CODE>history-substr-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX86"><CODE>history-substr-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX83"><CODE>history-substr-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX84"><CODE>history-substr-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>history-substring-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>history-substring-search-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>history-substring-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>history-substring-search-forward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX26">horizontal-scroll-mode</A></TD><TD valign=top><A HREF="readline.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#IDX27">input-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX197"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX198"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX157"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX158"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX201"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX202"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX29">isearch-terminators</A></TD><TD valign=top><A HREF="readline.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#IDX30">keymap</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX119"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX120"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX125"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX126"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX141"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX142"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX129"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX130"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX31">mark-modified-lines</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX32">mark-symlinked-directories</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX33">match-hidden-files</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX161"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX162"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX163"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX164"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX34">menu-complete-display-prefix</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX28">meta-flag</A></TD><TD valign=top><A HREF="readline.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#IDX65"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.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>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX77"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX78"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX75"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX76"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX69"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX70"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="readline.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>next-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX60"><CODE>next-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX81"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX82"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX79"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX80"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX35">output-meta</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX117"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX118"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX121"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX122"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX36">page-completions</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX179"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX180"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX63"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.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>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX171"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX172"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX159"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX160"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC19">1.4.6 Letting Readline Type For You</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX67"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.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>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="readline.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>previous-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX58"><CODE>previous-screen-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX175"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX176"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</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#IDX99"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX100"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX103"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX104"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX173"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX174"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX209"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX59"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX60"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX71"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX72"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX177"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX178"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213"><CODE>readline</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC24">2.1 Basic Behavior</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX63"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX64"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC14">1.4.1 Commands For Moving</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX75"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX76"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX37">revert-all-at-newline</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX183"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX184"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222">rl_already_prompted</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX375">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX402">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX386">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX385">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_bind_key_if_unbound</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_bind_key_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269"><CODE>rl_bind_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_bind_keyseq_if_unbound</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_bind_keyseq_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>rl_bind_keyseq_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242">rl_binding_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX345"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX348"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX346"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX347"><CODE>rl_callback_sigcleanup</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX349">rl_catch_signals</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX350">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX352">rl_change_environment</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX378">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX354"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX344"><CODE>rl_clear_history</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX363"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_clear_visible_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX364"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX367"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX366"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX389">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX387">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX393">rl_completion_append_character</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX384">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX365">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX374">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX397">rl_completion_found_quote</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX405">rl_completion_invoking_key</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX398">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX371"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX370"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX392">rl_completion_query_items</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX395">rl_completion_quote_character</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX394">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX396">rl_completion_suppress_quote</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX404">rl_completion_type</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX388">rl_completion_word_break_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240">rl_deprep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX380">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX381">rl_directory_rewrite_hook;</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218">rl_dispatching</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221">rl_display_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215">rl_done</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX357"><CODE>rl_echo_signal_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250">rl_editing_mode</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX213">rl_end</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219">rl_erase_empty_line</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234">rl_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244">rl_executing_key</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241">rl_executing_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245">rl_executing_keyseq</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243">rl_executing_macro</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248">rl_explicit_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX400">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX372"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX377">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX390">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX401">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX376">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX383">rl_filename_rewrite_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX382">rl_filename_stat_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324"><CODE>rl_free</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256"><CODE>rl_free_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX355"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX360"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX343"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235">rl_getc_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX399">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX379">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX406">rl_inhibit_completion</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237">rl_input_available_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX369"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228">rl_instream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246">rl_key_sequence_length</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231">rl_last_func</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223">rl_library_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211">rl_line_buffer</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX337"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX338"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX214">rl_mark</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX290"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249">rl_numeric_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229">rl_outstream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217">rl_pending_input</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX353"><CODE>rl_pending_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX351">rl_persistent_signal_handlers</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212">rl_point</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX368"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233">rl_pre_input_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230">rl_prefer_env_winsize</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239">rl_prep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220">rl_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227">rl_readline_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247">rl_readline_state</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224">rl_readline_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238">rl_redisplay_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX356"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX361"><CODE>rl_reset_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX358"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323"><CODE>rl_restore_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322"><CODE>rl_save_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX342"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX359"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX362"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236">rl_signal_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX403">rl_sort_completion_matches</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX391">rl_special_prefixes</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232">rl_startup_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226">rl_terminal_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320"><CODE>rl_tty_set_echoing</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319"><CODE>rl_tty_unset_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX373"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX339"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX341"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX340"><CODE>rl_variable_value</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX255"><CODE>rl_add_defun</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC30">2.4.1 Naming a Function</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX291"><CODE>rl_add_funmap_entry</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX294"><CODE>rl_add_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX336"><CODE>rl_alphabetic</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX226">rl_already_prompted</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX383">rl_attempted_completion_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX410">rl_attempted_completion_over</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX394">rl_basic_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX393">rl_basic_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX292"><CODE>rl_begin_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX267"><CODE>rl_bind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX269"><CODE>rl_bind_key_if_unbound</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX270"><CODE>rl_bind_key_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX268"><CODE>rl_bind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX275"><CODE>rl_bind_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX278"><CODE>rl_bind_keyseq_if_unbound</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX279"><CODE>rl_bind_keyseq_if_unbound_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX276"><CODE>rl_bind_keyseq_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX246">rl_binding_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX352"><CODE>rl_callback_handler_install</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX355"><CODE>rl_callback_handler_remove</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX353"><CODE>rl_callback_read_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX354"><CODE>rl_callback_sigcleanup</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC41">2.4.12 Alternate Interface</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX356">rl_catch_signals</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX357">rl_catch_sigwinch</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX359">rl_change_environment</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX386">rl_char_is_quoted_p</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX364"><CODE>rl_check_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX361"><CODE>rl_cleanup_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX351"><CODE>rl_clear_history</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX307"><CODE>rl_clear_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX321"><CODE>rl_clear_pending_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX371"><CODE>rl_clear_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX302"><CODE>rl_clear_visible_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX372"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX375"><CODE>rl_complete</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX374"><CODE>rl_complete_internal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX397">rl_completer_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX395">rl_completer_word_break_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX401">rl_completion_append_character</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX392">rl_completion_display_matches_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX373">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC46">2.6.1 How Completing Works</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX382">rl_completion_entry_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX405">rl_completion_found_quote</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX413">rl_completion_invoking_key</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX406">rl_completion_mark_symlink_dirs</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX379"><CODE>rl_completion_matches</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX378"><CODE>rl_completion_mode</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX400">rl_completion_query_items</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX403">rl_completion_quote_character</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX402">rl_completion_suppress_append</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX404">rl_completion_suppress_quote</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX412">rl_completion_type</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX396">rl_completion_word_break_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX257"><CODE>rl_copy_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX314"><CODE>rl_copy_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX304"><CODE>rl_crlf</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX313"><CODE>rl_delete_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX244">rl_deprep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX324"><CODE>rl_deprep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX335"><CODE>rl_ding</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX388">rl_directory_completion_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX389">rl_directory_rewrite_hook;</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX259"><CODE>rl_discard_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX222">rl_dispatching</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX337"><CODE>rl_display_match_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX225">rl_display_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX296"><CODE>rl_do_undo</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX219">rl_done</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX365"><CODE>rl_echo_signal_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX254">rl_editing_mode</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX261"><CODE>rl_empty_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX217">rl_end</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX293"><CODE>rl_end_undo_group</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX223">rl_erase_empty_line</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX238">rl_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX320"><CODE>rl_execute_next</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX248">rl_executing_key</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX245">rl_executing_keymap</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX249">rl_executing_keyseq</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX247">rl_executing_macro</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX310"><CODE>rl_expand_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX252">rl_explicit_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX333"><CODE>rl_extend_line_buffer</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX408">rl_filename_completion_desired</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX380"><CODE>rl_filename_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX385">rl_filename_dequoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX398">rl_filename_quote_characters</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX409">rl_filename_quoting_desired</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX384">rl_filename_quoting_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX391">rl_filename_rewrite_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX390">rl_filename_stat_hook</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX299"><CODE>rl_forced_update_display</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX331"><CODE>rl_free</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX260"><CODE>rl_free_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX362"><CODE>rl_free_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX295"><CODE>rl_free_undo_list</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX288"><CODE>rl_function_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX284"><CODE>rl_function_of_keyseq</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX285"><CODE>rl_function_of_keyseq_len</CODE></A></TD><TD valign=top><A HREF="readline.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_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX280"><CODE>rl_generic_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX262"><CODE>rl_get_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX264"><CODE>rl_get_keymap_by_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX265"><CODE>rl_get_keymap_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX368"><CODE>rl_get_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX350"><CODE>rl_get_termcap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX318"><CODE>rl_getc</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX239">rl_getc_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX229">rl_gnu_readline_p</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX407">rl_ignore_completion_duplicates</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX387">rl_ignore_some_completions_function</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX414">rl_inhibit_completion</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX334"><CODE>rl_initialize</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX241">rl_input_available_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX377"><CODE>rl_insert_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX312"><CODE>rl_insert_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX232">rl_instream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX286"><CODE>rl_invoking_keyseqs</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX287"><CODE>rl_invoking_keyseqs_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX250">rl_key_sequence_length</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX315"><CODE>rl_kill_text</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX235">rl_last_func</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX227">rl_library_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX215">rl_line_buffer</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX289"><CODE>rl_list_funmap_names</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX344"><CODE>rl_macro_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX345"><CODE>rl_macro_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX256"><CODE>rl_make_bare_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX258"><CODE>rl_make_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX218">rl_mark</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX306"><CODE>rl_message</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX297"><CODE>rl_modifying</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC34">2.4.5 Allowing Undoing</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX283"><CODE>rl_named_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC33">2.4.4 Associating Function Names and Bindings</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX220">rl_num_chars_to_read</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX253">rl_numeric_arg</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX300"><CODE>rl_on_new_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX301"><CODE>rl_on_new_line_with_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX233">rl_outstream</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX281"><CODE>rl_parse_and_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX221">rl_pending_input</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX360"><CODE>rl_pending_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX358">rl_persistent_signal_handlers</A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX216">rl_point</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX376"><CODE>rl_possible_completions</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX237">rl_pre_input_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX234">rl_prefer_env_winsize</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX243">rl_prep_term_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX323"><CODE>rl_prep_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX224">rl_prompt</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX316"><CODE>rl_push_macro_input</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC36">2.4.7 Modifying Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX282"><CODE>rl_read_init_file</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX317"><CODE>rl_read_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX231">rl_readline_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX251">rl_readline_state</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX228">rl_readline_version</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX298"><CODE>rl_redisplay</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX242">rl_redisplay_function</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX332"><CODE>rl_replace_line</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX363"><CODE>rl_reset_after_signal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX303"><CODE>rl_reset_line_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX369"><CODE>rl_reset_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX328"><CODE>rl_reset_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX366"><CODE>rl_resize_terminal</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX309"><CODE>rl_restore_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX330"><CODE>rl_restore_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX308"><CODE>rl_save_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX329"><CODE>rl_save_state</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC39">2.4.10 Utility Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX277"><CODE>rl_set_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX322"><CODE>rl_set_keyboard_input_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX263"><CODE>rl_set_keymap</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX266"><CODE>rl_set_keymap_name</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC31">2.4.2 Selecting a Keymap</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX349"><CODE>rl_set_paren_blink_timeout</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX311"><CODE>rl_set_prompt</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX367"><CODE>rl_set_screen_size</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX370"><CODE>rl_set_signals</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC44">2.5 Readline Signal Handling</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX305"><CODE>rl_show_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC35">2.4.6 Redisplay</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX240">rl_signal_event_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX411">rl_sort_completion_matches</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX399">rl_special_prefixes</A></TD><TD valign=top><A HREF="readline.html#SEC48">2.6.3 Completion Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX236">rl_startup_hook</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX319"><CODE>rl_stuff_char</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC37">2.4.8 Character Input</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX230">rl_terminal_name</A></TD><TD valign=top><A HREF="readline.html#SEC28">2.3 Readline Variables</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX325"><CODE>rl_tty_set_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX327"><CODE>rl_tty_set_echoing</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX326"><CODE>rl_tty_unset_default_bindings</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC38">2.4.9 Terminal Management</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX274"><CODE>rl_unbind_command_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX273"><CODE>rl_unbind_function_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX271"><CODE>rl_unbind_key</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX272"><CODE>rl_unbind_key_in_map</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC32">2.4.3 Binding Keys</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX381"><CODE>rl_username_completion_function</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC47">2.6.2 Completion Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX346"><CODE>rl_variable_bind</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX348"><CODE>rl_variable_dumper</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC40">2.4.11 Miscellaneous Functions</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX347"><CODE>rl_variable_value</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX103"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX104"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX187"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX188"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>self-insert (a, b, A, 1, !, &#60;small&#62;...&#60;/small&#62;)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX191"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX192"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX38">show-all-if-ambiguous</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX39">show-all-if-unmodified</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX40">show-mode-in-prompt</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX41">skip-completed-text</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX195"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX196"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX165"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX166"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX199"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX200"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX169"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC20">1.4.7 Keyboard Macros</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX170"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX101"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX102"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX107"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX108"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX109"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX110"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX105"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX106"><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX189"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX190"><CODE>tilde-expand (M-~)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX113"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX114"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX181"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX182"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX151"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX133"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX134"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX123"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX124"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX131"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX132"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX111"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX112"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX185"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX186"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX155"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX156"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC18">1.4.5 Specifying Numeric Arguments</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX137"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX138"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX127"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX128"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX135"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX136"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX115"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC16">1.4.3 Commands For Changing Text</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX116"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="readline.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#IDX42">vi-cmd-mode-string</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX207"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX208"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX211"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX212"><CODE>vi-editing-mode (M-C-j)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC21">1.4.8 Some Miscellaneous Commands</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX43">vi-ins-mode-string</A></TD><TD valign=top><A HREF="readline.html#SEC10">1.3.1 Readline Init File Syntax</A></TD></TR>
<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX44">visible-stats</A></TD><TD valign=top><A HREF="readline.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#IDX145"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX146"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX89"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX90"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX87"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX88"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX147"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
-<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX148"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX149"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX150"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX93"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX94"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX91"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC15">1.4.2 Commands For Manipulating The History</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX92"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="readline.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>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.html#SEC17">1.4.4 Killing And Yanking</A></TD></TR>
+<TR><TD></TD><TD valign=top><A HREF="readline.html#IDX152"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="readline.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;
@@ -7369,7 +7507,7 @@ to permit their use in free software.
<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</I> on <I>September, 7 2016</I>
+This document was generated by <I>chet</I> on <I>December, 18 2018</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
@@ -7531,7 +7669,7 @@ the following structure:
<BR>
<FONT SIZE="-1">
This document was generated
-by <I>chet</I> on <I>September, 7 2016</I>
+by <I>chet</I> on <I>December, 18 2018</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
diff --git a/doc/readline.info b/doc/readline.info
index 6eb3efa..a0f841c 100644
--- a/doc/readline.info
+++ b/doc/readline.info
@@ -1,7 +1,7 @@
-This is readline.info, produced by makeinfo version 6.1 from rlman.texi.
+This is readline.info, produced by makeinfo version 6.5 from rlman.texi.
-This manual describes the GNU Readline Library (version 7.0, 16 July
-2016), a library which aids in the consistency of user interface across
+This manual describes the GNU Readline Library (version 8.0, 30 November
+2018), a library which aids in the consistency of user interface across
discrete programs which provide a command line interface.
Copyright (C) 1988-2016 Free Software Foundation, Inc.
@@ -414,7 +414,7 @@ Variable Settings
If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
Readline treats hyphens ('-') and underscores ('_') as
equivalent when performing case-insensitive filename matching
- and completion.
+ and completion. The default value is 'off'.
'completion-prefix-display-length'
The length in characters of the common prefix of a list of
@@ -458,14 +458,14 @@ Variable Settings
This variable can be set to either 'emacs' or 'vi'.
'emacs-mode-string'
- This string is displayed immediately before the last line of
- the primary prompt when emacs editing mode is active. The
- value is expanded like a key binding, so the standard set of
- meta- and control prefixes and backslash escape sequences is
- available. Use the '\1' and '\2' escapes to begin and end
- sequences of non-printing characters, which can be used to
- embed a terminal control sequence into the mode string. The
- default is '@'.
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when emacs editing mode is active. The value is
+ expanded like a key binding, so the standard set of meta- and
+ control prefixes and backslash escape sequences is available.
+ Use the '\1' and '\2' escapes to begin and end sequences of
+ non-printing characters, which can be used to embed a terminal
+ control sequence into the mode string. The default is '@'.
'enable-bracketed-paste'
When set to 'On', Readline will configure the terminal in a
@@ -529,13 +529,13 @@ Variable Settings
'keymap'
Sets Readline's idea of the current keymap for key binding
- commands. Acceptable 'keymap' names are 'emacs',
+ commands. Built-in 'keymap' names are 'emacs',
'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move',
'vi-command', and 'vi-insert'. 'vi' is equivalent to
'vi-command' ('vi-move' is also a synonym); 'emacs' is
- equivalent to 'emacs-standard'. The default value is 'emacs'.
- The value of the 'editing-mode' variable also affects the
- default keymap.
+ equivalent to 'emacs-standard'. Applications may add
+ additional names. The default value is 'emacs'. The value of
+ the 'editing-mode' variable also affects the default keymap.
'keyseq-timeout'
Specifies the duration Readline will wait for a character when
@@ -617,10 +617,10 @@ Variable Settings
default value is 'off'.
'show-mode-in-prompt'
- If set to 'on', add a character to the beginning of the prompt
+ If set to 'on', add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi
- insertion. The mode strings are user-settable. The default
- value is 'off'.
+ insertion. The mode strings are user-settable (e.g.,
+ EMACS-MODE-STRING). The default value is 'off'.
'skip-completed-text'
If set to 'on', this alters the default completion behavior
@@ -636,24 +636,26 @@ Variable Settings
'off'.
'vi-cmd-mode-string'
- This string is displayed immediately before the last line of
- the primary prompt when vi editing mode is active and in
- command mode. The value is expanded like a key binding, so
- the standard set of meta- and control prefixes and backslash
- escape sequences is available. Use the '\1' and '\2' escapes
- to begin and end sequences of non-printing characters, which
- can be used to embed a terminal control sequence into the mode
- string. The default is '(cmd)'.
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when vi editing mode is active and in command mode.
+ The value is expanded like a key binding, so the standard set
+ of meta- and control prefixes and backslash escape sequences
+ is available. Use the '\1' and '\2' escapes to begin and end
+ sequences of non-printing characters, which can be used to
+ embed a terminal control sequence into the mode string. The
+ default is '(cmd)'.
'vi-ins-mode-string'
- This string is displayed immediately before the last line of
- the primary prompt when vi editing mode is active and in
- insertion mode. The value is expanded like a key binding, so
- the standard set of meta- and control prefixes and backslash
- escape sequences is available. Use the '\1' and '\2' escapes
- to begin and end sequences of non-printing characters, which
- can be used to embed a terminal control sequence into the mode
- string. The default is '(ins)'.
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when vi editing mode is active and in insertion mode.
+ The value is expanded like a key binding, so the standard set
+ of meta- and control prefixes and backslash escape sequences
+ is available. Use the '\1' and '\2' escapes to begin and end
+ sequences of non-printing characters, which can be used to
+ embed a terminal control sequence into the mode string. The
+ default is '(ins)'.
'visible-stats'
If set to 'on', a character denoting a file's type is appended
@@ -684,7 +686,7 @@ Key Bindings
Meta-Rubout: backward-kill-word
Control-o: "> output"
- In the above example, 'C-u' is bound to the function
+ In the example above, '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
@@ -776,8 +778,9 @@ 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.
+ The text of the test, after any comparison operator, extends to the
+ end of the line; unless otherwise noted, no characters are required
+ to isolate it.
'mode'
The 'mode=' form of the '$if' directive is used to test
@@ -794,6 +797,22 @@ four parser directives used.
the portion of the terminal name before the first '-'. This
allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
+ 'version'
+ The 'version' test may be used to perform comparisons against
+ specific Readline versions. The 'version' expands to the
+ current Readline version. The set of comparison operators
+ includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The
+ version number supplied on the right side of the operator
+ consists of a major version number, an optional decimal point,
+ and an optional minor version (e.g., '7.1'). If the minor
+ version is omitted, it is assumed to be '0'. The operator may
+ be separated from the string 'version' and from the version
+ number argument by whitespace. The following example sets a
+ variable if the Readline version being used is 7.0 or newer:
+ $if version >= 7.0
+ set show-mode-in-prompt on
+ $endif
+
'application'
The APPLICATION construct is used to include
application-specific settings. Each program using the
@@ -807,6 +826,20 @@ four parser directives used.
"\C-xq": "\eb\"\ef\""
$endif
+ 'variable'
+ The VARIABLE construct provides simple equality tests for
+ Readline variables and values. The permitted comparison
+ operators are '=', '==', and '!='. The variable name must be
+ separated from the comparison operator by whitespace; the
+ operator may be separated from the value on the right hand
+ side by whitespace. Both string and boolean variables may be
+ tested. Boolean variables must be tested against the values
+ ON and OFF. The following example is equivalent to the
+ 'mode=emacs' test described above:
+ $if editing-mode == emacs
+ set show-mode-in-prompt on
+ $endif
+
'$endif'
This command, as seen in the previous example, terminates an '$if'
command.
@@ -982,6 +1015,20 @@ File: readline.info, Node: Commands For Moving, Next: Commands For History, U
Move back to the start of the current or previous word. Words are
composed of letters and digits.
+'previous-screen-line ()'
+ Attempt to move point to the same physical screen column on the
+ previous physical screen line. This will not have the desired
+ effect if the current Readline line does not take up more than one
+ physical line or if point is not greater than the length of the
+ prompt plus the screen width.
+
+'next-screen-line ()'
+ Attempt to move point to the same physical screen column on the
+ next physical screen line. This will not have the desired effect
+ if the current Readline line does not take up more than one
+ physical line or if the length of the current Readline line is not
+ greater than the length of the prompt plus the screen width.
+
'clear-screen (C-l)'
Clear the screen and redraw the current line, leaving the current
line at the top of the screen.
@@ -1047,13 +1094,13 @@ File: readline.info, Node: Commands For History, Next: Commands For Text, Pre
string must match at the beginning of a history line. This is a
non-incremental search. By default, this command is unbound.
-'history-substr-search-forward ()'
+'history-substring-search-forward ()'
Search forward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
non-incremental search. By default, this command is unbound.
-'history-substr-search-backward ()'
+'history-substring-search-backward ()'
Search backward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
@@ -1122,7 +1169,7 @@ File: readline.info, Node: Commands For Text, Next: Commands For Killing, Pre
assigned by default. It allows Readline to insert the pasted text
as a single unit without treating each character as if it had been
read from the keyboard. The characters are inserted as if each one
- was bound to 'self-insert') instead of executing any editing
+ was bound to 'self-insert' instead of executing any editing
commands.
'transpose-chars (C-t)'
@@ -1331,9 +1378,10 @@ File: readline.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up:
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.
+'do-lowercase-version (M-A, M-B, M-X, ...)'
+ If the metafied character X is upper case, run the command that is
+ bound to the corresponding metafied lower case character. The
+ behavior is undefined if X is already lower case.
'prefix-meta (<ESC>)'
Metafy the next character typed. This is for keyboards without a
@@ -1507,6 +1555,11 @@ the final newline removed, so only the text remains.
line is empty at that point, then '(char *)NULL' is returned.
Otherwise, the line is ended just as if a newline had been typed.
+ Readline performs some expansion on the PROMPT before it is displayed
+on the screen. See the description of 'rl_expand_prompt' (*note
+Redisplay::) for additional details, especially if PROMPT will contain
+characters that do not consume physical screen space when displayed.
+
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.
@@ -2064,6 +2117,10 @@ which keymap to use.
Free all storage associated with KEYMAP. This calls
'rl_discard_keymap' to free subordindate keymaps and macros.
+ -- Function: int rl_empty_keymap (Keymap keymap)
+ Return non-zero if there are no keys bound to functions in KEYMAP;
+ zero if there are any keys bound.
+
Readline has several internal keymaps. These functions allow you to
change which keymap is active.
@@ -2083,6 +2140,21 @@ change which keymap is active.
supplied in a 'set keymap' inputrc line (*note Readline Init
File::).
+ -- Function: int rl_set_keymap_name (const char *name, Keymap keymap)
+ Set the name of KEYMAP. This name will then be "registered" and
+ available for use in a 'set keymap' inputrc directive *note
+ Readline Init File::). The NAME may not be one of Readline's
+ builtin keymap names; you may not add a different name for one of
+ Readline's builtin keymaps. You may replace the name associated
+ with a given keymap by calling this function more than once with
+ the same KEYMAP argument. You may associate a registered NAME with
+ a new keymap by calling this function more than once with the same
+ NAME argument. There is no way to remove a named keymap once the
+ name has been registered. Readline will make a copy of NAME. The
+ return value is greater than zero unless NAME is one of Readline's
+ builtin keymap names or KEYMAP is one of Readline's builtin
+ keymaps.
+

File: readline.info, Node: Binding Keys, Next: Associating Function Names and Bindings, Prev: Keymaps, Up: Readline Convenience Functions
@@ -2205,7 +2277,16 @@ associate a new function name with an arbitrary function.
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').
+ (one of 'ISFUNC', 'ISKMAP', or 'ISMACR'). It takes a "translated"
+ key sequence and should not be used if the key sequence can include
+ NUL.
+
+ -- Function: rl_command_func_t * rl_function_of_keyseq_len (const char
+ *keyseq, size_t len, Keymap map, int *type)
+ Return the function invoked by KEYSEQ of length LEN in keymap MAP.
+ Equivalent to 'rl_function_of_keyseq' with the addition of the LEN
+ parameter. It takes a "translated" key sequence and should be used
+ if the key sequence can include NUL.
-- Function: char ** rl_invoking_keyseqs (rl_command_func_t *function)
Return an array of strings representing the key sequences used to
@@ -2853,10 +2934,10 @@ understands the EOF character or "exit" to exit the program.
break;
}
if (sigwinch_received)
- {
+ {
rl_resize_terminal ();
sigwinch_received = 0;
- }
+ }
if (r < 0)
continue;
@@ -2994,6 +3075,19 @@ terminal and internal state cleanup upon receipt of a signal.
signal handlers, depending on the values of 'rl_catch_signals' and
'rl_catch_sigwinch'.
+ If an application wants to force Readline to handle any signals that
+have arrived while it has been executing, 'rl_check_signals()' will call
+Readline's internal signal handler if there are any pending signals.
+This is primarily intended for those applications that use a custom
+'rl_getc_function' (*note Readline Variables::) and wish to handle
+signals received while waiting for input.
+
+ -- Function: void rl_check_signals (void)
+ If there are any pending signals, call Readline's internal signal
+ handling functions to process them. 'rl_pending_signal()' can be
+ used independently to determine whether or not there are any
+ pending signals.
+
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.
@@ -3381,7 +3475,9 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam
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.
+ specification. It is set to the default before any
+ application-specific completion function is called, and may only be
+ changed within such a function.
-- Variable: int rl_completion_suppress_append
If non-zero, RL_COMPLETION_APPEND_CHARACTER is not appended to
@@ -4500,10 +4596,10 @@ Function and Variable Index
* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13)
* capitalize-word (M-c): Commands For Text. (line 64)
* character-search (C-]): Miscellaneous Commands.
- (line 41)
+ (line 42)
* character-search-backward (M-C-]): Miscellaneous Commands.
- (line 46)
-* clear-screen (C-l): Commands For Moving. (line 26)
+ (line 47)
+* clear-screen (C-l): Commands For Moving. (line 40)
* colored-completion-prefix: Readline Init File Syntax.
(line 52)
* colored-stats: Readline Init File Syntax.
@@ -4538,21 +4634,21 @@ Function and Variable Index
* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6)
* disable-completion: Readline Init File Syntax.
(line 113)
-* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands.
+* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
(line 14)
* downcase-word (M-l): Commands For Text. (line 60)
* dump-functions (): Miscellaneous Commands.
- (line 69)
+ (line 70)
* dump-macros (): Miscellaneous Commands.
- (line 81)
+ (line 82)
* dump-variables (): Miscellaneous Commands.
- (line 75)
+ (line 76)
* echo-control-characters: Readline Init File Syntax.
(line 118)
* editing-mode: Readline Init File Syntax.
(line 123)
* emacs-editing-mode (C-e): Miscellaneous Commands.
- (line 87)
+ (line 88)
* emacs-mode-string: Readline Init File Syntax.
(line 129)
* enable-bracketed-paste: Readline Init File Syntax.
@@ -4565,7 +4661,7 @@ Function and Variable Index
(line 22)
* end-of-line (C-e): Commands For Moving. (line 9)
* exchange-point-and-mark (C-x C-x): Miscellaneous Commands.
- (line 36)
+ (line 37)
* expand-tilde: Readline Init File Syntax.
(line 158)
* forward-backward-delete-char (): Commands For Text. (line 21)
@@ -4581,16 +4677,16 @@ Function and Variable Index
(line 46)
* history-size: Readline Init File Syntax.
(line 168)
-* history-substr-search-backward (): Commands For History.
+* history-substring-search-backward (): Commands For History.
(line 64)
-* history-substr-search-forward (): Commands For History.
+* history-substring-search-forward (): Commands For History.
(line 58)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 177)
* input-meta: Readline Init File Syntax.
(line 184)
* insert-comment (M-#): Miscellaneous Commands.
- (line 60)
+ (line 61)
* insert-completions (M-*): Commands For Completion.
(line 18)
* isearch-terminators: Readline Init File Syntax.
@@ -4621,6 +4717,7 @@ Function and Variable Index
(line 184)
* next-history (C-n): Commands For History.
(line 16)
+* next-screen-line (): Commands For Moving. (line 33)
* non-incremental-forward-search-history (M-n): Commands For History.
(line 40)
* non-incremental-reverse-search-history (M-p): Commands For History.
@@ -4633,31 +4730,32 @@ Function and Variable Index
* possible-completions (M-?): Commands For Completion.
(line 11)
* prefix-meta (<ESC>): Miscellaneous Commands.
- (line 18)
+ (line 19)
* previous-history (C-p): Commands For History.
(line 12)
+* previous-screen-line (): Commands For Moving. (line 26)
* print-last-kbd-macro (): Keyboard Macros. (line 17)
* quoted-insert (C-q or C-v): Commands For Text. (line 26)
* re-read-init-file (C-x C-r): Miscellaneous Commands.
(line 6)
* readline: Basic Behavior. (line 12)
-* redraw-current-line (): Commands For Moving. (line 30)
+* redraw-current-line (): Commands For Moving. (line 44)
* reverse-search-history (C-r): Commands For History.
(line 26)
* revert-all-at-newline: Readline Init File Syntax.
(line 267)
* revert-line (M-r): Miscellaneous Commands.
- (line 25)
+ (line 26)
* rl_add_defun: Function Naming. (line 18)
* rl_add_funmap_entry: Associating Function Names and Bindings.
- (line 45)
+ (line 54)
* rl_add_undo: Allowing Undoing. (line 39)
* rl_alphabetic: Utility Functions. (line 38)
* rl_already_prompted: Readline Variables. (line 63)
* rl_attempted_completion_function: Completion Variables.
(line 11)
* rl_attempted_completion_over: Completion Variables.
- (line 253)
+ (line 255)
* rl_basic_quote_characters: Completion Variables.
(line 143)
* rl_basic_word_break_characters: Completion Variables.
@@ -4684,6 +4782,8 @@ Function and Variable Index
(line 90)
* rl_char_is_quoted_p: Completion Variables.
(line 45)
+* rl_check_signals: Readline Signal Handling.
+ (line 133)
* rl_cleanup_after_signal: Readline Signal Handling.
(line 107)
* rl_clear_history: Miscellaneous Functions.
@@ -4691,7 +4791,7 @@ Function and Variable Index
* rl_clear_message: Redisplay. (line 51)
* rl_clear_pending_input: Character Input. (line 29)
* rl_clear_signals: Readline Signal Handling.
- (line 166)
+ (line 179)
* rl_clear_visible_line: Redisplay. (line 25)
* rl_complete: How Completing Works.
(line 46)
@@ -4712,11 +4812,11 @@ Function and Variable Index
* rl_completion_entry_function <1>: Completion Variables.
(line 6)
* rl_completion_found_quote: Completion Variables.
- (line 212)
+ (line 214)
* rl_completion_invoking_key: Completion Variables.
- (line 276)
+ (line 278)
* rl_completion_mark_symlink_dirs: Completion Variables.
- (line 218)
+ (line 220)
* rl_completion_matches: Completion Functions.
(line 43)
* rl_completion_mode: Completion Functions.
@@ -4724,13 +4824,13 @@ Function and Variable Index
* rl_completion_query_items: Completion Variables.
(line 178)
* rl_completion_quote_character: Completion Variables.
- (line 200)
+ (line 202)
* rl_completion_suppress_append: Completion Variables.
- (line 194)
+ (line 196)
* rl_completion_suppress_quote: Completion Variables.
- (line 206)
+ (line 208)
* rl_completion_type: Completion Variables.
- (line 268)
+ (line 270)
* rl_completion_word_break_hook: Completion Variables.
(line 151)
* rl_copy_keymap: Keymaps. (line 16)
@@ -4751,8 +4851,9 @@ Function and Variable Index
* rl_done: Readline Variables. (line 27)
* rl_do_undo: Allowing Undoing. (line 47)
* rl_echo_signal_char: Readline Signal Handling.
- (line 130)
+ (line 143)
* rl_editing_mode: Readline Variables. (line 281)
+* rl_empty_keymap: Keymaps. (line 33)
* rl_end: Readline Variables. (line 18)
* rl_end_undo_group: Allowing Undoing. (line 34)
* rl_erase_empty_line: Readline Variables. (line 46)
@@ -4766,7 +4867,7 @@ Function and Variable Index
* rl_explicit_arg: Readline Variables. (line 272)
* rl_extend_line_buffer: Utility Functions. (line 26)
* rl_filename_completion_desired: Completion Variables.
- (line 233)
+ (line 235)
* rl_filename_completion_function: Completion Functions.
(line 57)
* rl_filename_dequoting_function: Completion Variables.
@@ -4774,7 +4875,7 @@ Function and Variable Index
* rl_filename_quote_characters: Completion Variables.
(line 166)
* rl_filename_quoting_desired: Completion Variables.
- (line 243)
+ (line 245)
* rl_filename_quoting_function: Completion Variables.
(line 23)
* rl_filename_rewrite_hook: Completion Variables.
@@ -4788,28 +4889,30 @@ Function and Variable Index
(line 113)
* rl_free_undo_list: Allowing Undoing. (line 44)
* rl_function_dumper: Associating Function Names and Bindings.
- (line 29)
+ (line 38)
* rl_function_of_keyseq: Associating Function Names and Bindings.
(line 13)
+* rl_function_of_keyseq_len: Associating Function Names and Bindings.
+ (line 22)
* rl_funmap_names: Associating Function Names and Bindings.
- (line 39)
+ (line 48)
* rl_generic_bind: Binding Keys. (line 87)
* rl_getc: Character Input. (line 14)
* rl_getc_function: Readline Variables. (line 128)
-* rl_get_keymap: Keymaps. (line 36)
-* rl_get_keymap_by_name: Keymaps. (line 42)
-* rl_get_keymap_name: Keymaps. (line 47)
+* rl_get_keymap: Keymaps. (line 40)
+* rl_get_keymap_by_name: Keymaps. (line 46)
+* rl_get_keymap_name: Keymaps. (line 51)
* rl_get_screen_size: Readline Signal Handling.
- (line 149)
+ (line 162)
* rl_get_termcap: Miscellaneous Functions.
(line 41)
* rl_gnu_readline_p: Readline Variables. (line 82)
* rl_ignore_completion_duplicates: Completion Variables.
- (line 229)
+ (line 231)
* rl_ignore_some_completions_function: Completion Variables.
(line 55)
* rl_inhibit_completion: Completion Variables.
- (line 282)
+ (line 284)
* rl_initialize: Utility Functions. (line 30)
* rl_input_available_hook: Readline Variables. (line 140)
* rl_insert_completions: Completion Functions.
@@ -4817,16 +4920,16 @@ Function and Variable Index
* rl_insert_text: Modifying Text. (line 6)
* rl_instream: Readline Variables. (line 96)
* rl_invoking_keyseqs: Associating Function Names and Bindings.
- (line 20)
+ (line 29)
* rl_invoking_keyseqs_in_map: Associating Function Names and Bindings.
- (line 24)
+ (line 33)
* rl_key_sequence_length: Readline Variables. (line 199)
* rl_kill_text: Modifying Text. (line 18)
* rl_last_func: Readline Variables. (line 109)
* rl_library_version: Readline Variables. (line 72)
* rl_line_buffer: Readline Variables. (line 8)
* rl_list_funmap_names: Associating Function Names and Bindings.
- (line 35)
+ (line 44)
* rl_macro_bind: Miscellaneous Functions.
(line 6)
* rl_macro_dumper: Miscellaneous Functions.
@@ -4870,28 +4973,29 @@ Function and Variable Index
(line 121)
* rl_reset_line_state: Redisplay. (line 29)
* rl_reset_screen_size: Readline Signal Handling.
- (line 153)
+ (line 166)
* rl_reset_terminal: Terminal Management. (line 34)
* rl_resize_terminal: Readline Signal Handling.
- (line 136)
+ (line 149)
* rl_restore_prompt: Redisplay. (line 60)
* rl_restore_state: Utility Functions. (line 11)
* rl_save_prompt: Redisplay. (line 56)
* rl_save_state: Utility Functions. (line 6)
* rl_set_key: Binding Keys. (line 71)
* rl_set_keyboard_input_timeout: Character Input. (line 34)
-* rl_set_keymap: Keymaps. (line 39)
+* rl_set_keymap: Keymaps. (line 43)
+* rl_set_keymap_name: Keymaps. (line 56)
* rl_set_paren_blink_timeout: Miscellaneous Functions.
(line 36)
* rl_set_prompt: Redisplay. (line 80)
* rl_set_screen_size: Readline Signal Handling.
- (line 140)
+ (line 153)
* rl_set_signals: Readline Signal Handling.
- (line 160)
+ (line 173)
* rl_show_char: Redisplay. (line 36)
* rl_signal_event_hook: Readline Variables. (line 136)
* rl_sort_completion_matches: Completion Variables.
- (line 260)
+ (line 262)
* rl_special_prefixes: Completion Variables.
(line 171)
* rl_startup_hook: Readline Variables. (line 114)
@@ -4914,7 +5018,7 @@ Function and Variable Index
(line 25)
* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 33)
* set-mark (C-@): Miscellaneous Commands.
- (line 32)
+ (line 33)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 273)
* show-all-if-unmodified: Readline Init File Syntax.
@@ -4924,15 +5028,15 @@ Function and Variable Index
* skip-completed-text: Readline Init File Syntax.
(line 294)
* skip-csi-sequence (): Miscellaneous Commands.
- (line 51)
+ (line 52)
* start-kbd-macro (C-x (): Keyboard Macros. (line 6)
* tab-insert (M-<TAB>): Commands For Text. (line 30)
* tilde-expand (M-~): Miscellaneous Commands.
- (line 29)
+ (line 30)
* transpose-chars (C-t): Commands For Text. (line 45)
* transpose-words (M-t): Commands For Text. (line 51)
* undo (C-_ or C-x C-u): Miscellaneous Commands.
- (line 22)
+ (line 23)
* universal-argument (): Numeric Arguments. (line 10)
* unix-filename-rubout (): Commands For Killing.
(line 32)
@@ -4944,11 +5048,11 @@ Function and Variable Index
* vi-cmd-mode-string: Readline Init File Syntax.
(line 307)
* vi-editing-mode (M-C-j): Miscellaneous Commands.
- (line 91)
+ (line 92)
* vi-ins-mode-string: Readline Init File Syntax.
- (line 317)
+ (line 318)
* visible-stats: Readline Init File Syntax.
- (line 327)
+ (line 329)
* yank (C-y): Commands For Killing.
(line 59)
* yank-last-arg (M-. or M-_): Commands For History.
@@ -4961,58 +5065,58 @@ Function and Variable Index

Tag Table:
-Node: Top861
-Node: Command Line Editing1586
-Node: Introduction and Notation2238
-Node: Readline Interaction3862
-Node: Readline Bare Essentials5054
-Node: Readline Movement Commands6838
-Node: Readline Killing Commands7799
-Node: Readline Arguments9718
-Node: Searching10763
-Node: Readline Init File12916
-Node: Readline Init File Syntax14070
-Node: Conditional Init Constructs33977
-Node: Sample Init File36503
-Node: Bindable Readline Commands39621
-Node: Commands For Moving40676
-Node: Commands For History41537
-Node: Commands For Text45796
-Node: Commands For Killing49239
-Node: Numeric Arguments51406
-Node: Commands For Completion52546
-Node: Keyboard Macros54515
-Node: Miscellaneous Commands55203
-Node: Readline vi Mode59054
-Node: Programming with GNU Readline60871
-Node: Basic Behavior61857
-Node: Custom Functions65261
-Node: Readline Typedefs66744
-Node: Function Writing68378
-Node: Readline Variables69692
-Node: Readline Convenience Functions82364
-Node: Function Naming83436
-Node: Keymaps84698
-Node: Binding Keys86691
-Node: Associating Function Names and Bindings91239
-Node: Allowing Undoing93524
-Node: Redisplay96074
-Node: Modifying Text100098
-Node: Character Input101345
-Node: Terminal Management103243
-Node: Utility Functions105066
-Node: Miscellaneous Functions108394
-Node: Alternate Interface110983
-Node: A Readline Example113725
-Node: Alternate Interface Example115664
-Node: Readline Signal Handling119196
-Node: Custom Completers127579
-Node: How Completing Works128299
-Node: Completion Functions131606
-Node: Completion Variables135180
-Node: A Short Completion Example150824
-Node: GNU Free Documentation License163603
-Node: Concept Index188777
-Node: Function and Variable Index190298
+Node: Top865
+Node: Command Line Editing1590
+Node: Introduction and Notation2242
+Node: Readline Interaction3866
+Node: Readline Bare Essentials5058
+Node: Readline Movement Commands6842
+Node: Readline Killing Commands7803
+Node: Readline Arguments9722
+Node: Searching10767
+Node: Readline Init File12920
+Node: Readline Init File Syntax14074
+Node: Conditional Init Constructs34233
+Node: Sample Init File38430
+Node: Bindable Readline Commands41548
+Node: Commands For Moving42603
+Node: Commands For History44170
+Node: Commands For Text48435
+Node: Commands For Killing51877
+Node: Numeric Arguments54044
+Node: Commands For Completion55184
+Node: Keyboard Macros57153
+Node: Miscellaneous Commands57841
+Node: Readline vi Mode61763
+Node: Programming with GNU Readline63580
+Node: Basic Behavior64566
+Node: Custom Functions68249
+Node: Readline Typedefs69732
+Node: Function Writing71366
+Node: Readline Variables72680
+Node: Readline Convenience Functions85352
+Node: Function Naming86424
+Node: Keymaps87686
+Node: Binding Keys90765
+Node: Associating Function Names and Bindings95313
+Node: Allowing Undoing98092
+Node: Redisplay100642
+Node: Modifying Text104666
+Node: Character Input105913
+Node: Terminal Management107811
+Node: Utility Functions109634
+Node: Miscellaneous Functions112962
+Node: Alternate Interface115551
+Node: A Readline Example118293
+Node: Alternate Interface Example120232
+Node: Readline Signal Handling123764
+Node: Custom Completers132813
+Node: How Completing Works133533
+Node: Completion Functions136840
+Node: Completion Variables140414
+Node: A Short Completion Example156205
+Node: GNU Free Documentation License168984
+Node: Concept Index194158
+Node: Function and Variable Index195679

End Tag Table
diff --git a/doc/readline.pdf b/doc/readline.pdf
index 01d26a6..95f99b9 100644
--- a/doc/readline.pdf
+++ b/doc/readline.pdf
Binary files differ
diff --git a/doc/readline.ps b/doc/readline.ps
index 03ab0fa..41cdd24 100644
--- a/doc/readline.ps
+++ b/doc/readline.ps
@@ -1,8 +1,8 @@
%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.996 Copyright 2016 Radical Eye Software
+%%Creator: dvips(k) 5.998 Copyright 2018 Radical Eye Software
%%Title: readline.dvi
-%%CreationDate: Wed Sep 7 17:16:25 2016
-%%Pages: 80
+%%CreationDate: Tue Dec 18 16:44:18 2018
+%%Pages: 81
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10
@@ -12,7 +12,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 600 -t letter -o readline.ps readline.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2016.09.07:1716
+%DVIPSSource: TeX output 2018.12.18:1144
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -2902,6 +2902,7 @@ FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
dup 12 /fi put
dup 13 /fl put
dup 42 /asterisk put
@@ -3144,356 +3145,367 @@ E636DDD749286B80A5C22474B49FC5C093A8215D49B30ADA383485030AEE93AF
BABB827D996E563D1681528F54353D1245ED78D1915CFBB5595E3B9272ACF503
8FEE0B65C4CD9D5783F948ECAB51BA25F77DFA440C1D8B636FF6A15E6BB0800B
AD6C7A22C4F0BF6C9A19F0E696B103D8150AAA337C303ABE10C87D87549D150C
-2D9665F99AADD64B2A8D89FCF9E50C08878645F932A79211C3D5E20F52D4D829
-0635C9A1AD845676304507AE33C76AFB216A17417C0DAF7735D8ADC647BA2AD6
-1970A15C7CB7720F527DAEC4E528E2D4DE4F6E2525A655331FE2C56415A28389
-E7FD57B9C79522C1D822F82CFE0BC3F399DCDB9414D5478F9966438C3C6B4D54
-621D44ABB27135B7EF06B892E86D1403C8874230F10B839B587645725DC3264A
-0A093A5326A2152DDFA19E2F2D4FD9F85BE5E8B5AE8B1A5885CB61B5EFEAEB48
-1B83E387773E29896C843F8B7FF6C85FC1513ECDA95D5A73767C032C26AA7958
-78DB1B6A9AF5F3FBD623AD518C8264DD237FF9444A3FEE0CD66100EC6C3E0885
-5F54DD846625251635E6050885500B6BFAD25B26E1656C13224728657C5A9D8C
-028A05FA2C2667C93490FECE298C6B5FC086BDECD05A09FE01CC0C3A2962B81A
-B06DD897304FECF8707F5EE7C591F5082371B34305B0B6C5C6560DB03E56B066
-895CC11D2EC8A8483943FEFD6714A5B4E2113DD3DA3292B1A4537F90AF4F7EF7
-9600048D2178DCD1CCC9B5B35A4B4D3BE6DDA1B26846E695CF293C39AA20C283
-5D25314A601B53948B679FDD50C77FBBDB381F7FDD9EB1D56142D848902897A0
-37879477BF786B2E5B7EC5C4B362B1C22E1061B76774E42DFD6B5DC8945D7EC6
-BB58102CE5A47903E87D629839AC651F1319485AF8535EEB1792F5BC0A24DF5A
-747BA7A8D638A14CD46408DCC140AF3EB7A16352476E2377503A0ED24E30BBB2
-3709D90FC7FDDC3303450FEA53923C7D8D6B8830C25017C03091C9A41E13B8C2
-504D710E1CBACF18BA8C822C839852F9CC032ADAA6B30D189F0B0C44F44E1F1D
-618C2F7EC4992C1B50443DBB0B797408296965B9887EDB1B4DE1D3E13130D728
-CAB5DB991669B762F59D5FCA766486B5C1B2824F8513ED8A13DF27B58114722C
-8288DE27F5F532DEED0CE260E1AF0DDF996C15B201C57152D48454D9454AAD60
-21A9C6F5030DA7735ADEFA843470D6B80512E38207C7D67AB521B582EE2A0462
-B25A4CE6B0844FD99BE4F6FBF7A1046412C358EE796204CD4DD02384B50A9DB1
-A5EA96C4300311D01E444A43A97B1EA4DCF3CDF1A1FD7012569DC6C94C56DCF9
-AB3A7A354160A14F23BDCD300E4DA56184BE96770AFB9920BE1641E4F4189EB5
-421319F90FDEAE7877148E8760458AED89CD92B5F85D81A961D856BF1ABC9A44
-714C7CAC016BFE8BE8AFC5A7F6574851BE740A89DBB24A5640EDDDEAA73D25B3
-5CC35177701510F2C8622792554F2CEDFF22747DD82489AC2BF0529BECAC2FC2
-383EFF6986DCF54BF651144AD9555D469F5CD25D03BC8F791E58E217CF046889
-A817AC7A65317C64169B288FCD4C32589D9CB0D2DD2C9A6B78E6AC615258373E
-4A370F122D5AB9C61096615B0034C575C77B3F691BE431FD668D5A6997C566DB
-102675B020C2E6D6E8CB5D0F98065ECA2C7C8406157AE8554865358C320105A3
-5FE5A04FA7C00BB61322A161225592572F036972562BFA92C9261CF5F5FBC338
-66E0C7CFAAB786E0F2109806055AA2BC02E07D035A3B9F40598349EB8955AE1C
-2AD9EF253E24FF4AA72AD9119BEFC7D030AC460C72D8A6485D71FD6E64F26605
-7F216F1262CCEF6C7788EEA2D5045B50EFBCE201002F2DA952663E700CB1E7DE
-2E5595B63C15A74DD4AFC43F49A17B98F280A0DB93468483E303CEFD6BAC0A25
-01133CC56A739542E161824C00AB14838C919465400B7A63AF39D275F74EF7A7
-CEE565D6B27CF60C0CF051DECE02760CB9557BF8733E5D2650AAC9AEFBCFFF4E
-16F166538B4F5CB6DA9FA35F0CFBDDFDC52AC0F6D497CF2371243E544AD82DF7
-A674DE4F5C3210B4A0F2247C5E4D1D9DD52B77FE4820BB31FC7E1A66EDA0D642
-8C4FEA60420D1BBEAE8BD82754959775E085EF4F48908BB872BF9CB489F1045B
-90196A086F4E8206336898862766AF2A788D8515FC2E109715562119541467EA
-7CFABF282AE108C6AB6EBC6E9E2D39148C515BCE60C82C844601BF6C6F60404B
-D4D71550695A36934AFB58E2941038544267DEA004CD70EAA317B35F24B73DC9
-C18E3A7C7F2D15C9684C7B6136E1CA1FB0790BF57ECA4C6E9CF8CA194F7501A3
-40313506C9786CACCFDFC023ADD205B5D2F8969446339E234B1EDEB209A1D8D0
-D83687CBA22D416B03DF86727A90F38A90587B01ACBD191531060EE185DBEDC2
-88D3EFD6D90C4E08F5AC850E7DC2AC401EF71DDAF704AB7342D2E20418451A71
-A053BEE600BB67C08BDAB8F4804314362F7723670B1CAA770FB8BDC0EC7A2940
-F59A3151B37A8D6FD2C33ABC0C4736C499560A8467032160527EE380E2B953E0
-ABE1044F25C916B659AE48F451D5170A6483714FCC1814D63808B3BDA0A6523A
-086F1B5A1BF2AE5AF2386F34FC48755FE08342FB4FA5F8CFDB05C26A2E99017C
-613C1B2559057F85D3F7C6E8FBDB1496FA2EE4277B53B78A7EDADF1DFA092894
-FE49251ABB42A17FAE6D64F89352F81904E2DA683271811C8F57B95024263A1B
-224E5BC6A7960004A06424EA54CA9DF0125FD41D3D9BD7D691991D2318B98213
-082D42D3B3EFF8934378D24C5F324B04789AE0A4D0B85EC7C6FB1F96F70AF4BD
-8E7A2523D4A58F5A886EF68DBC7ACB31DFBC850D521A548AEB32B450B83D94B3
-191E9AD9A76D7896A757EBD70B306CAB141331BE35D1D53029E9170A6150868A
-558BCA6A981DB3F7029A880F99AEDB0729797F1EF3D7E33090BF8AAB8A3A6666
-7594DF11908259DFD243D61E5F58EFD99ACA51FD4F4E301E1035E4D4A68AC20E
-53F38DF2805C5A1391257DBCBA60506F20FB62AAB36F494898AD59E9E3FB35E3
-558A514B0575FCC353E40F669C20062A2B78E34DA785F16707C237841000B2BB
-05B823C7A6F36714393388E545EAABCCED35B2C9EBF246F1C96EAD0CE77776AF
-527064F94ABEF0BFC205D7258DCC8BC27CB9A1D60E29711CBFE6D84BEF1F30EE
-542F38F3E4AB8E2B9642E36A1D0A9BBA1142C4610AC1C526038A5F6C7CF27E66
-913559FD83C607251522E47C0CE7B04E019AAE62096A4A71927EED385F341557
-14571A45D3CE80152DA0E11098A34A4C22A39643542107C38CDEF226DE48E06B
-D5FEF7F519B502430A85CC5962A9D5B21845D95EF65154F1E76043A03F4DDF75
-EEC0BAA7EBC8A050E400EF24C92626151A7CC19937CD582F5C72AB3714363933
-735DA8F18A6EBEDD0D0D3123E1E3B2C3EE63ADD771F3E8E167400A0D9963F4E1
-32989DC5C6A0F8E733C5A8903D51890727FA784AA80EC96ED00068144079F666
-CD56313B9D53F2EC7166130F3535015B54BC74228D18C10BD35BEB3023AAFB05
-9195CFFDF7D720CB475C3113F3FCD8809908BAF80A2DE2DAFF8046B9B6FFC43F
-C05B6352B9ACFC7EABA392E5C093CE878C09A8B4B1683EC28868CF9E1F9F75E3
-E1AEDC271CE1B1F09E23C6F7244B7136EF4E084C43A6B402163FE26193B37BDD
-DD9A0185A72E56698DD9D11A687271AB26EAC04FB31E866CBD1139447D0A3A92
-8FD24A0044295C66581D4F6690290E50CE0722EF268FB1BBE356BDC34763B739
-27E175BD3CE25A737011E2C9E757922B15990BEC4B04E679953668096A092830
-0743B59C1E2847F86F83FCBE1CE581334D0587E09941A7BD130127B4B1F108FC
-1B694ABD46F845E23CB93BBA2578E85D6FE8AC4DB864C2EE10C87FCBE9B48E8C
-0CE58BD562C35B5ACD5A021B393F3ABB5E590F87968990A55BB58112F3E2CBEF
-0F1291BF0CD479680DBF583F7ED63F4729FA31F72C1B2D32B1ED756DC4CA06CC
-D899A042EDE28F1B51B6A79564801C167974D9C29C0A11393D14B683B2B9E0B4
-0ACD7C42AF39FA933792677EC37433C3A300DBF42138AB7D2CB9272E8B9452D9
-33BABDF4EA0018ED50B9380083A0458157F5FFE7B26848990FD109C5C52E3639
-CCC77BDD245835C495C7EF4D0D4F6B918706E59C66A30C25A667016880CFDC40
-629C408A693B1F3FE143F50397DC9A74CA226BAD0E6E692B701E6FD252FCD920
-66E1AE29F2F622F5B187F70CDD2FEAF0BA2E83E2E1FA6B506A008764E9DD9801
-4F71CD55456BF709F29651F3A54E58F0B996AA50DE7F67A3A0A680FB825DFCC6
-08F5AF3229B9552669C989259F604E442A1B203A9ED199AE676E26639A0111AB
-56EE045ADDFDCE371CDE015587DA2D9667E41305A551E6C23502735E4A611BD3
-CE813B0C48B6804795C61CD26DFA9A6FEA35FD220DA021BFCF45F3FBF73FD950
-73BB5FA315FD3CAA11250EC4B885E85DDC2F3D0C57A7D88EA36A61BB73ADE9EA
-EBC099AB8EA6E9D90DF7297D832DF9C7F3342001F47AE7E08BAE6385F9834640
-02E8D3A43A740ACC4839AEE72A6C8C71A271772EFAF4A03837E46A87AE22A75F
-B4D9AE8C3D26FF05F633DE8B7AD207E34283E215BCAB4E49C2F8D1243C4B52F7
-613E33445D78C03DDA5F065517C1D412D851BCD3F1D4FC92EF9B7F4FF0F37402
-68765359BFE1EA54FC7A06A8A5DE12213749AE1EA6398A951FDD77AD67A927AC
-98488F40E8AD555CE99FEE690F90185DE08FB7C79F1BF981BAC33F42A697782A
-3CD23599C95BB79DF38FEED0FF8C65E970BEDB0CDDE79D7400C40E862D1C7950
-FAC3AB2A4D600EB782FA19032D0EA8AA5E407A5ACFEAAE1AF34C635834D1F3FB
-215BE64717C8DFE02C6FC578AEED8E60A38C394FF1086E6B26BD72082B2E5032
-3291F66490B2357EE660B4F1058F59A2C794DF6F5DDD34CAB7B9E3A1BCD45AA9
-CC531DD1B5D82EFC354B126EAFB6B634E8CEF5A6336B093CA092064E5DA4EE2C
-B7DC39A83E4B17468F3C7CAAD1EC9B788A80351F631679C811FF9EBCE1511DFF
-74647868AE47A4ED0CEE23C92C82234A3390BB291B0943EAB7D7C60B01F4CAD7
-849F69EB2F397747F1B4F3627C2017C452ED8681D2036878A2305E991CA7A956
-A70C65C0E00956B1EC2E0B8EC3E3F2245CCB928F38A8BEE3F5562BBFD91B0F53
-1DAAAB37ED748E6206EA88D0D34C8EF8210EB08DD64BB5CF08C2BAD47CA4844D
-37CB18CBC391385D70853FAB7CFA5B3DEA7D680192BFC7AF5D03A4216FF0EAFE
-7D7129FF72747684D23A49DD6BB5757DE2A541FA2DDB1608E2042425D5EA82DC
-6DD4D9E5761AA17E87F228999B2A85D80A2D16151621607B46AA9B937D9F5A6A
-99645BA00E3F283CF4704709B7D9225FA27538A570A81BC5A753A53A3F84AEB6
-7A5768B3544A3544EA3710C8FA9C4A97EFB175806E98F99162DA852A483BE261
-9F9AE8B6D9F992BCBA318A3E1801443F6744913EBF6EA12F57B2AED0EADB0295
-BEAE8F30B98C75D784ABB89A655DD3E52A4A03E53F76291427DC01150F84CD13
-817E383A32F4E7A269161AD523AEABFFAF672893985ABB0FB5BDACCA9FAD6E0A
-4BD3C6548F1D70E09CDF9193DF3FABA096237B5AC0F37DC8E22BB8DBF3A47600
-04D1BBBF3A530DC1D91E43E13E81EC5BBE1679C2FE91BAC7143597952514561E
-49FE6A52A21F74F2C33BBF74137D837270DACAB552A5E383F17C56306FEFC95E
-B01E5784F794AC3537512758A39140197ED8AC44ACA4BD08163BC62AB1088EF0
-57BF3C3F1CD1DDBA1D35F35E38D10218A254CA1F3C1D9A2B09C7CDFFD644D53A
-A774C13D4F3F6649C3592080FEE648BFCB64199FAD9C50BD4629C7558F8B9C85
-2A018ACCE2E97297234A4E8DFD30272B8677CAD5522995C843E42EFC40D9525E
-72F0FF1284D7D9697FD059A9E971752CDD53D107A959ACC95FCD7253E335437E
-EB3681B4F7B294AA20FF64C55B58960857BB5CB135F25B4FE8DC01D8F6221166
-398FDB12803EFCBFEBC10661A6710853C26462359B358E001281714413C6F519
-2A1BF8F8365BD944DFA3D37BFC2615873E5EBBCC9674620DE1289F02B871B9C7
-190D20CFF1C94C63E16D8F650DF31E9184B7B9DCAC498506C4D010E6AA206E44
-F7409FC2397A1A0F4C71996ACD0FFD92438D09AA65980A5C07203DB217DDD304
-577CAB05ED16C95A718D159D0D89F35BC759803A9616C966B2F6B83130875AA9
-E4BA946283AEE9951BDD54BFA2FE97247E55CAAA8C6617A38F1D238A0AE20479
-AD4C38C7128C22DCE47B24243626D80AAEB5589EBBE694601AC2FC8335E0B18C
-2117716DA407DBCBD549F98513144B55B232A8E15A3E91A4B1AE0BF4D05CF529
-3662EF7C1F19840CF7CA1EA8A9C34BB8C131BF28330752940BA745AC7115C12D
-D5F849263DA81315EA568CD449D71DF2DFB48F21593E77967D001135F190E741
-68432760880A8AFC473B8C00FBFF6FB1DC62DF226D4B9A2A2016521310E6C53C
-109997CFD9EE0507398C370D57FD34BD4BAFC43F5F4EFB0B529DE5DEDF2AD861
-CC3A1649767B0337A292587DCBF4790A536799D80DC7D59116CD96CA5AC4D097
-4E0B4636A0E98725577142192C60B4FC0B9EC63B27B79C588349BC6A948F950F
-D420AEAE5960BDD9386A2E9C650DE9F809843B70379A82861715B59CBB6E07B3
-A6936B58CDB867E42155962A4A9716020A76BAD3AB161C177FA5A3B0EA6877B6
-34805971D6BCF456488F8948A26337D333AA4C326AFD40CE92AA4693D7C9C652
-15EA9E1136C627EFE5710ACCC0DE48601AF3C290469BFB99EF9F5C3F9C1E9D28
-7D33B3FA428065F82CA627E6EB3B33DEC6433A9992DB39470C43FED86D9DC51B
-0B8B18B6055859410680CF0729C3C68143672111134D43145B49E7B6078C2DFA
-8D729BDA4C992053A331CC286D48E71D2836FB34955BEE283114B032A254C4A5
-6AA3B04EE180A52340CD2D866C016D8A90CA17FBBFFB590314F6ECC1A0CFD2E1
-EB1E7EDB1CBAFEC81DFD611663374D8F61A79665817FCABC91FD9E8B2DCA54FD
-496471AAE352CDF77DBF77FF8B958CC775FC8987ED56D47436108B532D06C539
-C93BE08C1F15BD0DED5FB4431CA51A0E1D928AB5179980D5C1C72183DEA1B0DB
-4E681C77050E17A237265AF8481F3DFC2577AD81A99755D1060DB6404C0B9192
-71EA08B637D7DFC92F6EA52B2932D6D94EC5466CB4426EA86761667A6472D2E1
-2754B9BC073B6314AE79A0E8E0521AD175E357C64CA94F53FCDBD071D85224D4
-60B860765E061B3535836F0947C662CB46FCEAC11FE4E4BA65DFC244D35C12B4
-EB294D91AF25AA74DD2EFA11B23291EF4D669188032AB782A464DB4A96918A7B
-2CE55A8F366538BD6F662E0B1F16AD17ED31CA54E34CEE6F6CEB7F879227C0AA
-73CE5FAD5716265D89BADC893E8E2A9CD8A5ACC9F526FDECE819C5B59B56DC9B
-2C19DB3AF066857472CCAE64AC15D2A2E83B67D154E4176EF46528FD310ED4E5
-C5597E3633893070E0320C3274C79D93219669C58F960D6AEDB12CDD10271F45
-5687E8051CE7376B3A7BBCE9283841554E59977BCB0FC2712634ACE047725F79
-CE8078234EDE4BCAAC52A7ACE4336A28F01213A933692A93B4CA3FE8F9707F52
-B8036ACA14DD2291AF0B9D6E30097F96F18991C4D22DA7EFB7213CBC7D7EDF1C
-BFE0F8EDC002776574BE8E670F05AD0F187980AC5D4A69FEDE2A2CD2042C9051
-2A6C3EFEC84726F515CFE2D1D85A00AB04AC1CDE10E71FC50BC77164C2F7410D
-D33202303ECAFAE4DD04C1BDABBA55DFDCCFEC85BBD33D1ACA6A014765979996
-6BED212018E18C94A199075B905F844AC71697BAAC57D4C8ADCAB4CC1E009FAC
-94136877462494F7B87B3D4BD407BDC37580D76AFEDB3757034169A5470FDD63
-B259D5C871703076C6EC057CA1D3EA563699ED9745712CFE045A2CAA4013F9BE
-906AD05F241F6594A41AE4F8CA6DCFE4648D07A2812E1E30F842A086821D4E8C
-1F2696BE79AD738F3391B25D76EFA2B538B1F6B8BBC0E2C02DB96E1DE069DC97
-5DA1B3EEF715CF0194F5EB83BFB99A95E2A3C496CC3325975770EAA1FEF1965D
-63118B6D1691CB9BC1DE64F54454EF2F308F4AF8A2912B26C003A6109E74DF2D
-C362F64A2224D9AE5556CE304F36F6E9058FCDA1BCFED037D1566739DB5FC1FC
-515E68EC300DC3030C87964F0B570E04B546BF63C8CFC8E9F7FCC5BE73040878
-4C7970B143BEF493C0E5D3CF30A2A84FF59DE05DE744656C1D1C3D183F20849D
-E7891FB9B089559D92D214ED0B4B5D99F8F62511261AD093C40555378FA2CFA1
-EA3FFFE209EA917E239B0142BD07EDC431A09313968193C9722D346FE6A1DEA7
-472CBC65618518F66BAEF1726AD9732AA80C55C47A77EC300B99E4A93328B082
-5AF089DACF5CF990574746C900737281E317F3049C9D3ABAF1A69CB45ADCB607
-E416EDC17ABECCFBD9522E4FA1ADC791E2702C0733E32DE2399C9DABAB98F1B7
-9A0561A1302E8F796C3D6307611156248C4107AE7D52C096095FE557D451916F
-0D1FFF64FF025CE907539288AD4A78CE4340776D7A3821B44BFB449B3EC06DBF
-B9F206412140FDB39E7B0D4AF9C7954F41ECB2E195D7D534DF808C088D44D05A
-3EDDC8D2AFF98E5A01F0E5EBFD5E111F1E94A6F1192F7773D6DAEB99F5448878
-BBD382441D88FB151BA9049857D1BE43F7EB4F3064040BC09E780B416C602D3C
-7AE80A893E7CE1D1CCB12C9B5C4F117DE2AEBFE58D282E82DF7599D626FDAA56
-B22CB870FBB84CF467F527BAF76BCA9B62E919F985447A4241580C2DDBD4BD84
-895ABD448A3DC9C5E76644601D896F7C661A04973430F256F1101AACC5863852
-3BC66EF61AF2050768BAFFBD4ED3F022AC29AE10966726C96759804EC851B9DB
-189B4182AE046B89C6D8916A2DD1F7BCB905A78F1AE02A2CB792DF650058EB68
-8A883D07831D1C9F17E8D335AFCFBA8EB1B2B1F154D479BE34CEC4A2142D10D0
-4AA292F662B1413DD7F61FD2B078539EADB90B376E79263C16884426737C8966
-AA95ABB6A47334C4FA517BB7ED2631F2E45538EE74509E6B90B0518A84A85EBE
-05DA1345ED923DC890751028B2A87AFA015E780E28BA13BA5EF2D56FD8C28989
-35BD31E51BE528E01DAA7BDEFD6D69DF4FC3D3F3834C733EF9F1D82B293E67C7
-127206FED8469006B75DC4DE58DBD2DFDCFCC0B692A18179CC49588D55B55F5F
-AC6822951DD3523BD80D9A0C621CB55D838F21FBE4AC7DFB5CF649B3812EBA04
-443B87AA2769461CEDCCB7DD165311E8E8301F75E22A3FE070A8AAFDF516A747
-83DBCAC1845EF4908FD4F989DB6C8508E022FC6E418B15325D6FD68207EF6AAA
-F36D4827FCEA6D255853BD4828D5D96120082BF3EAE9D25E853869E7B15772BF
-5D304E9B9402AE5E4785B941D80C6BEE7257F32B06E503714F0F58D2F5A0E4B6
-553D6981BADDDC0FCEDBBFD8A9786F547E2FBE351806E24DBED5E7250434F1C1
-874E27806813B465341F1067408D410CEA11DFD4DD43BD0F7C37137534A7287E
-88645F756C94AE4BF112059DF28206C9C284504534D6918C48844C7F113B2F3F
-60134EB669D44AA8678D567949417246137A07D408D8B2B39307C69C111624BC
-06E9C21AA647BA024693BE1701F0BAF31779AE6604AD8C0BD6704579E3F455D0
-E50AB8CF742BA6B0DB00F3AB9EF2A320D387EC2DC3FBA56882561ECDE05E3DF0
-284468E17427E0380A8EE1F7397A9A68EA44A983F5601B7439798648C44B5002
-2C46DF31C565D6921E4F36F187C80EFEF431D0942A1B826A32E6A086D32A8FB5
-32B9FB8B69830F4E85870FE725FE3A165883C02DA76C52F7B8D5B43E08F28A13
-C334E4C56CA0EB1685B3D31F48EEFBA6CF746AA1354AF678EF9DFB2029F9EF8B
-DA16C4433F7AEB2AC4697E083CDF99967A439F6FD27FA20B6DC0EAB15263E0CE
-D829EFCD81E9B8AE8A10BE6EEE4887D82A90187B3491E640B793C6B737887DE5
-4BD34925B94024F572BAB7337F8FBE9F7555324D0868859714AF3C39C244F090
-9DC75E6B412807FAA6D1CC59372F880C3D92A42252C0BB59C70756110BFAFF17
-7925424D22E44DDDA06282660F297E9408B5BC48F7EFE9F2A6C013DC066D0897
-8F42B0FBEC4661CEF4E32A9B645EF3042168D130EC732251D204C865CF66E8A3
-FC7593C4AB47B7A0458407D897331B59EEDB55E8A756A2A46DF57FF9501B6097
-C5A3F83F886A8D274E551A380110EBFD6114D1128E0C5E150F24C9E4CCCB1F26
-E45C35A5F9DB01DCD9378E75B4E91F5516649E1FE95346EA77025D6A6E097B2A
-A96607E5B00B7DD63056695C91867D81C87F142CBD32A2F406E4364A79809AE8
-678408145904D7953368B76DFB3CE9B515A8100B9BE48F3E06CB5AE0754286AF
-3B74EE8EA53248EA78EE1B3056D99BA82026120445FC5D741256EC188746575D
-98AC261B1F0F3D2F3E9F419528B283E03EA088402F59155B78991524CDFB6972
-36D960944B87BC93A957DA334D1F1A81D1170812DCC54252A2950A1FD0A0C1CC
-1112BE9F025CE692338D0A74044998141172FDC4FA6EBC4308980584B2C9EE93
-BB7F9790855A43B8E56CC7BED417EBD0BAD492ADD5C01A1F828C40A9C204A8D7
-D4702A8DD66970C35F9817ADB93ACF1251DE81515B024BB311C6A0C2AB7B02DC
-67EEADC48F34B4CE9DE97E1C5F9DC4AB9D3F3DFFEC1F33FE6B063A416ACB9550
-79ADBBD5211A5D7AE55598697D97061C33814B16BBC57BE95D85864AA34F09C9
-3CD9F4C680FDD1A0D0287927362AD7208B0CEAC764B170420751EFE0D8FF4EAF
-FA33300D7988AE87B6981DF28042A939EED106192A57514C346F8E3B70C5669E
-0F68F83C831266438CB655C4A528989A6D6DEC65CAB5DC96D96F5ACEC627A0E7
-F65FA1A4DF6632700F75F10570C38C45B251F869625749BC2E36A73DBE3364FB
-41E65DFA56B3D21773759992D2336BEB9FF1B826FE3013DA081B3F9077927B56
-B13D927477C3E6DA953BC596E08C88317C44B8F8A99F214ADED3B37017FBE2C1
-51EBBD6E8154B80200FE79E87AD2DF9F209A6E92650B4959691B81D18FED6922
-8B487845E86F8ED9C278320377324823DA3586BC14EA9F0898BB8758401B4941
-122966004F816E8041EAD238D34D4E1B7522AC8813BCFB3C493156301A8EB727
-DFB2C9AF03D36BE76012262211B6125F3AC3D2696062030EE8C4057D5A440EA3
-2DEFF54AF40847E9DB6FF52CE05A144BF029279D7E7F475EF359F6EEE57CA73C
-766F531239C7C20632F0406E59CBE7B82E748DC4821DC3BB5A9E8839AF394379
-E4414531E9A33357D53E8EEA40C89F305C89D206C76899F6551DC03DE784D1F3
-5406358D090984C821868CFCC802951323FCBDD7889FE605CB59D47DAE70D51F
-2DDB76A4BC12803950CC2D87173A0BC86ACB8F3B8DB8FF6CD368278875C612EB
-321F81BFA21409B2D104C5EDC9513E201B55EE4CB7D277F8E3C31379282EF20D
-E95FD44CE14DEDE46F57CB89B878257C11B44F9C5BD2725FAFDB06F8AE82115C
-82CE9785D532BA6A0D549C7E4A89874D4FCEFCFC953E047CF6C42F192AF98198
-600C0E2FC7ACC70BAEF17E4E6B6BDA55404209B323CEC1175A29EB07D89C90F7
-2781E2E8161BDB1328ACB0B554D55D40DBC70ED35FAD8950B12898AA0C78181D
-969F176B4C5E7A3BAE81E7333CCC72647924C8D81B80CF45FD1961F22C71F997
-48FE909F9FB2FDB4BD34AF3D2970584E5613854E60350B044DBD909F47E08947
-863492B2FD64A09278BE1E871299873B8FE4A369CCFF8FBCA350270C9C21F1DD
-4D45EB8E64CB1AA4992805C054D18B10B850CF4239463BE7E69B66A46B0AE2F4
-8F8D56DB81AE1D7AB5EC1F1E6364839343E7B493750001B900FC4605A79B5280
-CAE81F403638E95F1B808ACD5B869C121D6D0A483EBFE9150CFDEA209F39609E
-BAAB6FD1BAC01238ACC3AA27AD0F14294929F5F7BE6F70BC600E6B0FA8751B78
-AB8BEF76E12F6BDF143939D12D3662FC4E670107737356884C58193DB16913AF
-B71DB7820B8529E3B9CD7B0EFDF4861509B53B84B39E32755481E713142E1CCC
-B4287E676DB8378EEF3886D5C1A822EEF91C2FA58F4596B10B84098A36AC3139
-D5DADED54EB027C01FD1E61C05923E97E796B6A166BC618FBB411F9C566256F5
-42D09809D70124117B1986CF64668A374B899B6685149747D08F20517B8849F2
-E9DC7E236211DF7CB0C30C34B0DD8C7EAEA9F0A437DF2F570F14962987CAA07D
-955CE87C33D9CA3E92325C0FB3AC82201F6960582C328112D212ACF722FFE9D0
-EDDEEEEFC284B9F6E0CAD92CF2CEFF2A8FB9D78F4CC27A868AF2B8B4F796CAD5
-5A890FCD43E629531F5445287FFAEB991AA96330DCB9ED0FEE20D2FFDEAE62DF
-BE40E03F8BFB5E1E5C30D4942C88C2FB01A389DB883FCBAE582013B5A32DF6DE
-719910B94C6A62CD0BBC7F7FDD062BC957D2401F0D0DCFD1425FF9905B9A3ACA
-07A34CCA87A8FEFC7646A0700FFE05FF58C3398EBB4CB3E092DE2D7D447F4A18
-C95E3EB5E50D999C2106C19D101289203D6C14958A61EB6F115C959107B79706
-46760598AD6AF0B0F5179B59C4702F7F59B3122F16D8855BB3BCE8D81811CE0A
-5B617F2FF26A46CF236BF08FD260922E45FE256F0D614AA52573D95B7B52A6A0
-B20B33E944F20A5A63BC06FBFBBE1992B892D6E3DD95E4F4652A687BBC5F459C
-9DAEC07AEDD6F5A888AD4B8B4B8D413AD6FDB60D003B12BDB5453FEE0FAD8361
-4D2E5662AE9DB3C7A1C3BDDF511E7873ACC4DDBB6961B347605B517DD6D224B3
-ED1EC2C9191EF39EBDB04B68F57957C1C1E3F211B2A96D2A92F06881D83DCA6B
-BCBAE478457938C0E3D8D479066886FA42FDE879B2065E0283F96E5F6DDE1F91
-E714C5A6FAF4A993F8AEAE646D74BDC4F925AA3A3AE592F76B5C2158316D9106
-051125B6E0B84B96634DBB43F4A1EF91C6BC3B5CDCCBE5B2C535EA855A76CE56
-E49C7318EF4AC0DF560CFF816CE7603408BEB7B5E9A39290BE3BE3F6B92147C8
-83BB1CFAA6A71287F529CEB22F47CE90EE0802E3DAB53E6DC698FF43DDA214D1
-1E1F03F2FB3DD19385F46BC7C7CF0E019C8906C4EF56FAA9CDC74F90B376C66D
-185FD4BADF2E2C1CB1E4D11321F3D4E9D8D9A2C80A6DDE363EA6787D053E4F2A
-15896B4B3B5E4CF2E031D4465CDCA4E020F93F4EAA0DEB90747F9EE613432089
-CE941380DA8467ED635BF129451851461BC2FA05299C6DF6EE30C9EFDD3553A9
-478FA7AD4F2BC03BD5ADB8C1D0D15878E53C6B4BBF24B481C25872B23E22DE43
-B7FA58FAA3E4EC7C43727BAA5575B566C2EC1872D38427DF0F9A03BA1E1ADEDD
-C9836CDF2D393162243B829986BC12FCEC7ED67482893E4C4914DB0234DEC65E
-CCDA6238417C5F6DE88455EC76690AC15620CC0309B3F08D69EAB599A4CBF73E
-6FE894B59EF90D89EA07EEA16F6EBC0616397E09BC37E6B6100913936FE94F5F
-4605BC819080BDBA1C94B93008AEC817F2E58A0BC111F3458AA8E21F2879CA2A
-0152A04AA78096EF13D556BA218B2BE6C1E109A35A77B0E0E8E4D8004ECA48BE
-8F0521C073A7D2A9CEA815190BB08E7936AC2477A288DA75B049594E5A4B0338
-7CF5BB1543AC24EC1A0192173D1A760BF113428679B20E79EC8C5085DB4B8EB7
-62BDA226163328F00980585550167917C57B736ED6E526107F8337F899866972
-63D7AF32A35FF242426C02AEF00FF556D1E27C47ED1B296852F7A10FE7DB5A83
-17590C0F27D13C7A1B4520DCC32E1D6F986B30DAEF1C7EBA224549F7F8A09B4F
-C9FD2CE806D1E1B09362BE3FA40864A6FC000360C8A66E7B551B02D5C45F4865
-626A8F6A5D715D5DB8D7FBBF15F68F9C6729725445710C599E046A2672C1CD10
-7301199212D7BECEF0F1C3C0397FB5AC9056016A2E2A9DB940418F6A48B59EDA
-2A1B933C94C0C803827A147E73CB788F2C9E1F0F83D91FC05DC2A4A64D8C4A53
-D6E44B74601F9D166EF2659A00F2B7DC48325AC579037A09F5BA742C9907E82C
-5601760A58226B5E2A45A4EEE141AF05160792DA28B6526951F61CF145E09866
-6AB7AE5062F7C067F465F80B8B5D0BAA16578466914D1CD46728CF729E5A5B58
-53AA7B9B6D8584783B3AAFAD6DB6E6D83D3B9E3B49838FABCF15DFD27B942085
-8D558384C6E8FCEC737AE906BE7FD93E064D05F11E2C3FA298EBD79F9ED507F0
-67E63A9872D5098010CF25B37C411D07DC9F031FB010C7580400E0CBC3082B1B
-639DB5CD83E4E2FBE053F6276B4C2E1A377E5272E5F61AD1393628D1271F1674
-036618662105313C2FC28F46A7A1708374E30A286E60AAFF2F59C327932DBB18
-C005CAF3F09C03F4429CF730DD43B999C674182345A6AB3134971967DCA53617
-A774B8C0DCA86B3CC35E55976C7C97350B893EF62A9E27D703C162899318F9C9
-98A6D5B784FFF003447C3E3D37605685B0CE56164B2654439574E7B7B6C64880
-86A1535CA6CBF5A510CCC01F697E70044E628EBA260DAE665B675643D2F0CE79
-0214C9EDCC2358A65AB948CC2DBD91249A89F23533305A186C7CD08406FA5B57
-650F1C8DA43CEA9B43ED008779C479877F3F25E9845D32BB36E060775B504968
-2516885FA691147563DEBE34EE66974F0E1403ED2FCE832F6E4E6487344451AD
-0D11291D5717A0A416A1F18F11C6BD8D7653062D766A3992FF752F4E845ECCE0
-B534CDB4A70A19D18699112324892EAE60B8057A1C5D428E92900D32B0271DC6
-4EB7C7EADB45D72D28982AC53AE8F39ADE725033768D4D0324AF2BEE24723277
-2D8320BB3C763CC0C3E65DAC85DEFAFDCB38E1BA43BE97057713A2404E5BA967
-66FA39408CF01C57790A278289708B026128BD20F4D3C62A374B958332C2B802
-F99A69899D1815751C88EE9D30E5764D7F85AF93914110517E04EF6BB6350006
-4D741B1068C14ADA3D55ED1BBF362A3F3BFBDC3197C5339A8F6274027C9FB9B7
-C5A85C1976B8B80A5148C5C3C016CFD3B3B047459A527588059E67901BB2E636
-3A928D08A457C3D07D94828E7A7C5E42F1AF828223B76F80788F6490CE8A4F2B
-A9FADEC4C4326A3A8E4263C1B50AA3CF512ECCEF138B83D046C63F7E9AF3CB01
-22A817B69E952CC2AC8F8D6DD351CFD35BF1D099224F6F6DCAC634FD1A91C44C
-A43FFAAC51EDE8C70461BE4804D42D6E2C30020C6023C3300499265AB962D2BD
-A525C13DBF57C0667B8326F93AE2407C2F06D2D5000AFADAFEE75306F53DDC29
-FAF38F78E24952875BD5DA26E415E79CD9D235E7B58BEEB622DE88BEFE3A6EA7
-AE071E717C74BE4D2879523E19D1695C5DC9B0CE7747D7BE310A500A328789CF
-F7E13FF4DB930A5C47DAE5A7B60478A073AFF513AB072AFAC7B1D0951289A394
-EB3E1C7C24ABD116231C5AF69B6E9F731B075C029E9181186E362373BE65D8E4
-340911295E477040582DC1900AFF1442D093CD2EC69BF862D30D98623112FE78
-D0FB148C142A676CED55662196C4F3AEA7F00597F76FF5CAD60D69CB509323B5
-B50817BA67D652BAEFAD30E09C8D8BA94CD182C45B9F8E75597E9BD5E5B0FA75
-8328A828460D9F083EA95353A7056C35CED7C51B261400F95F06DCCBEE056234
-9BBAB2170B0B8ACB5317A9BF7B10656522E2E80C6BB4B13926760663EBE24DC9
-9E7A085A48EE1AED815DD696A4E714BE30301253B8D59CB79BDFCAB2D0F3CB3F
-FF287160949649E3DEF014A3067BBC951225F5CB5996CA4AC4B7CE2B48FBC86E
-249FE59F0760D8D29CB89F48CA3794E2EAF4C993A9C9A61169A82EB971A1B8C7
-D3FF801959F0B944C9071716090419A47E14BCE4B5A92F07A7F9F1F85C68607F
-3EE0E5D5BFE6A2A4B1222AFC173C38E527DE7380A560B8C80B1DCC10A2907457
-142853C57D18D002E1CDDA5036A97FD8B1550D069863D8982933C524F8BD759F
-C31EA8FF8363FBCE2464D64CD503C06A81F97D9318D95AD42A297118ED8F941E
-C7229700CDD96B855404A66576242801C480AFD57D7B79AE00C159613807E628
-0F7F370B3929DEB7
+2D9665F99AADD64CF8FB790966D2E63B22CBF1B1F1DBA95E3E233469085EC593
+0061E1CCC33F1B16293CC11C0B056473F6C8F7949142314CC2B8CA8582DAF280
+9A41AB9C8FEA6088FD3044FA72A6A754D4E46610BE64E308209D819B23894C90
+085143D0997EF4DAFC31A250BE0C3A45109E895B0612BC18513B71507D0CE5F5
+052E003166D1B15238ABF9942D4FEE2451DDC06CB4101F11D261B9318D0BF6E5
+C467A31637743F2DAA90E874E79C2E402EC53CFA9A5F4546BE39A838B5572D1D
+1B5732C3B25713C60BA9DE651D74163A0F9B5710261E0D8980D1C8249CAD7F6E
+FE7ECAC7BD98B3D195DACD921E686C510E89FE720C180F04C9BC350E6569D98F
+A47AF940C5AAEFC1126AF1B85C57E2210E5354A5219CA51A3BBAE42C02B584AF
+FF81BAC8673F4A37A22C8BF682898DCA81288AE3E8B243375A5BF77526B5AA60
+1549E16B2D8D9B5151D27055E5702D895FB238EF2A533E1A8C85E565F2D5D0EB
+BD23CE36C8DAE8ACC54D6F30F68A4C513404B11D78A2F5F19836DEFCA67D2A21
+B75599819E576001830F03E7056E5E485F336EC4A4BE51FD2D46064A8D37F346
+A24BF0E1A977FF91DA4A22C604D1F6080524BB3B040FE0A359E15F6ACCF22CCF
+FE1A903559F0DE0DC0E96EB5D0D11BFA464635982378D6A160599702C98D8F2A
+E6E104974C94798F458F5E74A628723172377477D4E5E2694083BE189224B59D
+A1DCE9671EB9E5DF532ADF8AC863018D7E8C602F9A6E698D3A353DF3F70CE34B
+5193795E0B96A2F3B4D964924BF553FE384A914D58E5395E288FA82B71D64DF5
+CE4873425BBD32BC37404F494778872BE88203C113A12496B7C0A8331F58A592
+3376B02CE5CFCDE0E48ED0FBBA4C257CD7EE90C3EC862EF8175698926DE0B68E
+462B317EC6A1148DBF9BBCCDA4BD4CB905C7BCCE2915E89FB30FD70DC83CE40B
+A698FECF8278CEDD28309C5B1A639F987830B5ACAD2D66305FC2D866D0A74288
+A49CA23BA8857DF6F63DCF7C1A425C48A8D36D4D65CA427754C951776EEBD9D6
+6A18FAE4237B87CC59D2A1CD47BB12A877F00FE69838FB242978FA21ED6CA2AB
+76492465AA22220F58A181D7A6FFEEDEBC8FBE966A2353247EC3D8330E9CB18C
+EF1D61D9909CECDB6B943673C127AF7CDB6B249F9E202A4C9B110423B9F7C782
+66357A31DCAE814615A5A319182B42A3582872E8DE39FC9C6579C64AC8F443E4
+97840C614357A81758DA9F7FE5593160A2C5EA3BD9F7250F65E00A127A35D0F2
+91F02F2B7CB13D558D362004ED8B7126005C308E9CEE7796682A323B2AE86A30
+9E23684DF6FBE6BA8616419D6419B1830FED91B1933EC68B290840B300B10370
+B58EB5E097B674B5C3E7509174EAB21C7452FF9B52C2980CFFB1230B55348BE7
+4D9BD6B7AE5E1B1CF2F1C95BBEB0A6CED99260EBC0B344D036D1BCEA9FEDC85D
+9EC1F2C9B6F2FE607E2D24F771C23E03C9BA75D8C8799094DF3C4E0304BBCF3F
+25E0C964294228B1C7AAB6BC474449FD8E699B65D311A3CFBA80F6ABB9CE5926
+497FFF0CCA03755C4C20CDE7FF1B317E71412DD8E82B08AFEDA6E1CF6FE6DC8C
+4E38B7416EB6373345C36E9CD7089B0E054A6594D8B0AB88AE4DAFD9BF6AB83E
+32EE0923D01E66D56E0684FA96D3D3325492FE933F0E1D3A7C74BAB6AB15BB0A
+3512EA91A63ADF032B278E3A13F71BA8DA4E0CA6112BBFC2D15237FFE47BBB49
+3EFCAA4139E445306633370700E381E1C001337F82009014A092E52B491061AB
+7F8019D9C7CE4B358E5E8E9BD41BF9B50ED6C2D79FD73B716334E51297085657
+40B6428AD16333CC0108DEC3E57CF0E7EE528663707187A44DD55954AC5CEDF1
+B451688321E2E825A259FBB7D26DC8BFBADBAD045C0077E5BE68B818ECD13765
+8C636EDDC2B6433BCA62599EC4B2593D7BEF1355D549C5383ED246AB2C3E6FAE
+5AC81CACB0C3A84895847407DAB75B5786B364B13FE0F246BBF6869BDB3117BD
+B0B85BBF14F699A315DB6BE54552D0C9CD10BACAFD6A91280F4AE599F2BC79E7
+6FC2289A136E1A07D38376C2D3173EF851A097CC87101F638F27F7EDAB572B81
+6C02CE27E16F5A58A120D3F57CAA19090C95AEB29CAD81F7451C9D23BCE1F3F4
+90813DFEC50B2A82CB907AE154A161A711C039FC174E1E35BAFAAC8F23EE8542
+1B29DFD1272E1DF5FD019AF2A477264829B8A1CAD37BC8EFBE06105E74DEB850
+32D99CB23B7C73C4588DBD5082A81757A29661FD48C26E5F912C8FE91A8B4F34
+D824965E08E9F09F07566E0B150C472FFAE787983834A7DD0A107CDB74E88971
+C070FB0E9CAA2C89F38438F7A03FE86FDD1952A3297832BF47482ED86A1F7C3D
+417A40F376FDAA0C5C2B4ABBBF81B7A7F98FC188DB9D3F24105A5C46F8E95190
+1A7D3FB0AE4239F449D511BD67956B1EC1F525FB18D59DB64E85130B5A0AACB8
+49F428C3E0C6D49F427F9D8F46C8215AFEB1DC8E7826FDC15743BBED087943A5
+03268D2111B030FB2AF950FB31DC9A586A9AE5885611A41D472847A793024FA6
+1231C822056A467806328FA7E5377ED793B35F63573F732F37E2CB77542F5202
+971DB462A9BC62FB026804113A5D5302D425F0F0010FF5FEC527D6B186DF1472
+C26CFB745BB58EDB9E4BB82ED93F79C14B02F024EB4A5B201150FE555974275A
+A7EC7B3A43D51CC07E2B500C58CB1A3D3053E8EEEEDB175B34E07F8AA5870B92
+C2B83FD176DDD5759AEB0B2E830E322B79C1594DAB6F1A480947039960E7C336
+3806AD208BD519261EC06BCEBF9644C4E393C341AD01975BBA98EE091729FB6B
+65525C29EF52AE7E192A157B14E9A966AE44F754BCB8921A41A254FE73004558
+C24C0104B05BB03F2D728036478234EDA8BFC50EB7AF9E3DE533FBCF4218ADE0
+CCBAEC68D1E58D193C5C8E44E09048ABB8A424BF47095C3026213A737D21811C
+ED6D5FB33558AC6DE47E36F895AA3F28BB8D2D95F47760464FA43F651C8D1AF7
+8FDA203C85FF5E528DE450A45381F6E4EC602D60163FB6A37C5DCB71BBEFA92D
+F92FCF38A84961D4ABC19697A787FA9821B2413A442358E1E7055B60958A8441
+141F65BEB4FCF018BB5A03AE7CA3DBCC895EFF8603A58D1F1E4A5738087D1F6F
+658E8473D006D46182C7765010DED78D28FF964BC738EE4511836BA8E37F476E
+CCD904515D8AF4F4D55EDE81CD9A7D0E4882A1B1230D3C3B2054ED59CDB47824
+6237B62DDAB266F6182FA0DE3C6A6CC8140FFC9CA0D1AFDE2D392F9ED900AE6D
+D306E0269C8392A77262AB2BAB9622A78B581D6B5B25135A45C86E4FC44E1859
+8E7299ABFF56499E0D80036F1898C33D11E086D5109165D0A65763B58784E4DF
+A19184B3CE380708B9F8064BE7A284BECC8A7E05A7E80EAFE929077887FC5485
+979A21EA5C3464B0245EA502125F58D12109F004B9E10EB64FC70AACDE12D286
+3866345A485C6014B1AFC036EF065ECABF161963CBE455FBF38FE747AF3D87D3
+9B879F6601C8EA1E53A47FE615E3D2449674B731FD77F7FF7558E353D85927B1
+24C2791F1D7BE9077673ED97E09E9CEF3F1CFEFFE483A4C85FC66942107B83C0
+08B334BA91782F11887BB695F8085949039303FC16E7BBE6702D86DC4AD3F016
+721E0727FB713005968432C736C922F28479C4B79D47BD822F9EF2C32B53258B
+CC9F638CC7463F17C87D714EA9FE17CB12C9D52991498A99BBC00FEAA9459D3B
+0C46C260B3C26A235674A22FABB22342B1B826D55F26D6FFC7C8B25BB1AC8D4F
+C5DA87FA9725BC2CAE75C46BAAC2497A7B82AC0A5493BBBEFBC8F4C20454CE54
+047BCC7D34652F3A313241A2DFB5C0D5D2044FCB9BCD362B782ED0C0C1C5DD8D
+644A84F13EFC98BD46B9D6D49BC1893C05E74A51F920B4CD231216524A833C18
+C0C67EA86C86F556F84D15E829275BF4727A1090822CB62FF416BAD2DF0C18C7
+045120FA62D43C8F1577E599E5C76CC674742E7C4BEFE404C8648DF0A9817FF8
+DB061845085EF12F5DEB46ECBD3FC434A4F28104D1C96147BF965C89C87598B9
+E08B55487D12A8BA75494EA42D647BC8B1BFEEA70115EA418B1D76BE05EDC032
+BE66EAF3E08361D0CB03AE9F87AE76FD60D22FD28B6355742159334EA6C06555
+377F938C762AF675FC18593FF5917EBF6F9BECCDC4F1E4B844E5632F8722B459
+F3F62EF90B2EBC752093FFAF98578152000F2EBFD23B8D811C811AEB1B7BB623
+692DAC3C3797214E2E50302CAE5A55A1A81ACAF8C2B93722857441653DFE9B5A
+B22A0BCC5CCBA2193DE5EE973F47B09D9DDF8BFEA812308A500966411E4C9813
+C4128790573AE6E8BEEC11F442AC98EE1DF17600D80281A3DC33ACA9A92ED59C
+AEDC5005BC9D0D4BDB75FC84F23977D5265BA8D5C40267A5FB948D5E914B2090
+A8CE7735EC55A70FFB7FC6BB6C40667D9DB75152746C5B1E04F44EC49EFC78E8
+7511FFE34892778437B27045839303B9BCEF1C6266C4FF22FC7C0719D5FECD7A
+EA23D1ED55B7D774B8A235D811FAD3BEC77D0D0BF0889D3830D3000AC07E2BB0
+49568B90D869CC9F6E9C2A4803B410E33A464EC7048D27526E3EC5BA95949A3D
+3FE96D48DB7243324A5181DF197181F193FEE8691C04E919E8884F77CD1AE088
+8D4777228CA4C9758D346DABF4BB658B44B66AB7D02B2FCF07A9A70683E8D03F
+F421D37C558BABDF1389102B2E4427448CF9D3EC745F87C6B970C7AA2A0D0373
+AFD00324D47487B33E335ED4A850D4195FD05FEC6E864BA4E9C72CEDE18207E3
+597838606BEBB1150637FC79798BD2CD18F7FE5FA60F8FEFF89AE6B0FA468BB9
+C38089C05B49BA1CDBDDB40715BB20F659A8553D4FE63F2CD5A4C3C627CE252A
+9058EEB29BA9F90E69727ACC6CB705F3A51D1D1B4A3A4D7CBC53FB9916CC1FFA
+2DCCA0E1BB275480F173E9E565D5B3581F2CD148A2D7AC0F072B0DEDD92E2320
+0D48A2D1A21F00D8EC27B2840BFF210DCBFB89B0E7A6ACAD1FB9F73ACDE3037E
+CDBB9B62A0B1CB500417F36A8A70B309281CC592B689114E06896536E79CA043
+213962462A6E79BA5AE61D82EEE6CDE9A7878F8AAF84588727538A70E346B80A
+24A4C5EFE6342C38C335FE9B46A7F7DDFE091477F0C020B40D2352D7F50AB515
+795E60906ADA155CFEA213D90C11DCDE1C9A8DBAFF45E562C9929DFCD863FA47
+0937D34E73B01868A0F6772F7E0353026097B916A2D952A0289B7007E32C074F
+CAA9B38B81EFC7B1313C5D00F88C5F068A02224AA46903836B20C5241C3266C7
+F18C157ECFC0EDF5C1A835DFB194C2C1112E02AF28F500FE4C680F39042E880E
+FBB55CB05298E82E7EBA0A69CAED282D56098212F8B73801D42FE9505AAD177D
+3422E7AD6EAE8E97512926073E2940F9C9AC2F48CE3B13497843AF201D6B6B64
+32238DC319F66C3E7E2118CAB1110F5DDF17B5A0ECCD97FFB1CEDA94FDDC8040
+52FD1C57F7E66BE37F1A33D440BF2F4AFBBCB38797E32D9ED00CB78D9FCDA9C3
+4B3E98B085C9BE53FDD4241324181A62493942C21F78C88A7D8D2345382517E4
+42F191649B1A74C5D7C2B43164666282BE2956CB777A838B879F044CA1D1CD78
+C2BDAB54A72511C29CB289655E41843869013840A68027DAF0C549CA3760B60C
+B8E0819AC2B88F09F3C6D31EC3CBB473363EA397BDB78E912D724C9E3E419E73
+94EA9BF281C2BF8F00CA535B079C7DEBEB727E5E7D0E0204870F92D71DE705E1
+1846972B3D45EB1487A77C218AB7852D683730B5CA16F599E00DE83226D80516
+5176621A65E12D48284DD265D56FC330D9290066454370198D9770FE4E10DC7A
+EFAD00E7717CAF5931D1BB8307D587B89B535EAEECD6DE63AFDD6D61B013202E
+CBCF3337F7E982EA2F32BEF54F522F9F1867DD30B628861D15539359AEBDC060
+A756F4E6B5867259933D91215DC32B2CBCD08335A3A2F5C501AF422A961EB188
+76622B3ECCABCBF3276CCF83B07D20444DDCBCD728784649170B7CF1E13CAE2E
+DB4423DB8A6AD7ACC12CC0EAA93B48F0A82C45E14D6DB4D88ECE6724E1D3512D
+7570ECE04BB2DA767401E742205B4962677B0F04DA96EC4143917AA9C3C7F832
+0CE3E99FB8980962968C8D8C77E40EFB211029C725A872AB549C0E44CAB2D033
+08BCE7D54F951917881E289D411B7F9CF62E850D979CA9A9B4F1B993AEB8E40A
+45A6F7E178DBC7DDEF689DCB3716668FE53809996A636B187B0E5136BFA883CE
+F2FECF459920E58D453937FEE8DC4A562E1747531860F1DEDCFA8022B40ECC6E
+0651E6E710337D5C340C1B5E7315B6C788A2D7B2A1A2E17AE2EC1F9A19137D85
+6B97EF446C16B33F2EB9B5E5BA62C9ACCE5A56880D3C052B40A5B4F6DF4BA7AF
+63675AFE59D925C328E85956F5E873B3199D1587EB3786ED7C223AE9CC580377
+F9312B24BBC20C89AB5894D807D2ACA57AB522F65BF8C2ED5FA0394761BCE8A8
+EFD4DD67954EA00127D6DCDC1F34BCF10A05D699658DCC4BA2002623E9488AAE
+037E2BCF2872BD4757BCC1EABB3AC5BD53997109155647E74606E36BC01B777E
+B5DF4290548694898999E0D010E21B15A9F9952644DEE4BFE4BC9144302F8CA6
+0ECA6DB2CB809729B51AF8AA5EE0718CF5B888D26D968D0C6859C513009D06A6
+A752724C7DBDBC0E44A1519A4FBF3751D45674E1A48BBF77511F10916C0B64F7
+56A6397A6F87470433B5D6B4BCA543AC09BC6EBC2AAEE66366CF2D712AC54A9C
+22C8EB38DD43A3A9259E65AFBB66BBE006C91BF3A33F5C96140EA1909664A52D
+1DD8AC38E0874DD82C3C1DA26F174862691D6FF3A184ED4CBE325FF0009F3DF3
+58063B1B87DC2082BF928B86631C8AE7B6E5E6F740A22CDFDE990B85C8C95661
+46E1C9AF820165F23F79CE75BE8BEACE1A93BB99F090D77A5001DF044E8250AC
+50D1132E13C5DA0E3AB87B8032DEBD4172AE3C1450773CDB95778C038029D7CC
+B9617DF174352590FA1A5D59A6409FFEC99BF0262E2C9CA86E3FAB1D7B3E2B5C
+ED9A12D619817A979A37E8A795E65A2C597A5FFB20639E02162CF3C89002C9ED
+79357F3C287213C2331681A5A83B19562A7AE8C7F145ABCC8064F754348836E4
+A9149FF7D6C902698914027F26270BA0B900DCA5B54A7149946F450C3F099A0D
+D7BA65F2A63F85B2F0AA00C1317B18A981C62FDA579BF9D4AFF8935EE4FDB17D
+86566BE4FBB131807B983D7E435331853B0E37C1F081864BDF90E616CB6C6225
+7743C718EEA4427EA841C2B18CD64FE10A97C4F0F312270CD53B107047194E94
+5F68F13D1B7A709240DDE46B5CD930179CFA9FB55FCBFB6735E7424DD1DA7389
+87B3CC0556367AE585BEA4794B973B299BD3EE4D9FA80833042297973210041A
+97D389C51C7715FE143F36F0600682A0B2D9FF2A32752F385AA6431DEEA4F4F7
+727834A01CB8FB8521238AAB2840E0C0B8D8E9EA78671AD5FDE58A29C3984917
+92674B76312846AA81ABCD41AE8FA2E606D014E0B809F1392E77286995D05DB0
+0B6707915FBA9CBD725428E6BAAA754DC45499A430CE931EA84A432C88003580
+42ADD71F3290FD1E099F3542C1C0058A88CBBF059DEA3DCC463CD567231CAFC5
+6C6918ABB202A048B710C2762E6BE6EABDE006A2557CF525831C42F6119FC97C
+BC5362C9D26C535CC109345F27C1EFEFD7BB6C851B94FA8F041A7DF0647C4189
+2F36858579E3A8117C8D166DA1203E956BEF76B53A96229D17B9A0AC825D0D8C
+985F5CD86C6BC4410FA3FD976128C2FB3C11D28C42BF48C412CBEF8DC43A3E82
+8ADE7AB8FEFBC97A7C56A87AD689899B3E5D425178BA486D128A441701812B2E
+155D773C36EFC26E895B1E42C266C0A42FFB9843B1543D612AE11A9BB79F667C
+BC1EB4B71F90EAA3F76E7A74E14C67A702DDFA7D47527DA34075E55513DF8CBE
+9805495F6D9465C9E6C125578FF2FAD484A20D1236ACA83CB397F36758EF29E3
+008B29781C8AE84EF10271631A505802A815EA85DCF750C94CBC7078FECF2633
+461CB3786651E2D9A1D5843E346360BA511DA13FA80C38AAF32FC71F83760C17
+2BAD518FE7D7F3BC4D519D00242DBED65B9DBE9CE156DFF29A8BE5509A999044
+E7C773C7FCBC7DE8E39CCD8A2AD23847A5375C668426024577B92BAF13737982
+D0F4FEBFC0B737ABAABC60413DA58E484ACF4CFC5D000AA7F716D73CEAE4EF7D
+D0583E039FC5581D45B20BC7E997BA580900C317209B3438693B81FE56A089E9
+2B45DA8FE45ED4B4495EB7B7DFAF908498EB1E083FFD92F6BBAA81152F2182FD
+38633737BE1A8F1306C28BE15EB1A9C62E34695EBC19FBA95616C5EE9011C793
+44451F7EB64694A13BBACF00BD13CD1A53723145B924A7816B8BB903AF48269A
+5A2C190F02C5796FC21DCCE0E5E8ABFEAED20AD3AF2986E166079D6E4E724B6D
+295FD7A137DC0827C7E7BC12EB5E852EDB1D8196141F5DCF225D797EC491BD58
+B40F99AD789075C138C7111C0CD94916861E1635B28A56E7AB874EC147A9B520
+D2747FF57C462C505031BF269CC8B8944179F52BD89309B0EF555BEACE3EE882
+DA6D5B23900D951B52DBBF6D599A456E1C26A764881E4CF9B6441E614DBC6FF0
+22E41E54FDDC9261BD091C14DD2CEB08E465664D9641B90D514D890952625E89
+C8FE9D3683FC9555D345994554DDB1AA757554EB7213ACB5E23F2EC9E0B366CC
+3918AB38BE0CF3142B017B1D6A82930035B8DBA75E4C82B3F05C471C16A39F58
+5BE508CD96725D68622D374B2D9DF5E20AB55211C688D82241AEC10C5F34524C
+713F440298F0C972EE583D7DAD6DF8A4ECA94D74E386580FD6F17EF1C500407F
+93B2289EA48CBECEFDEF0FE42468B8F995DCE0E0EBC3331030F9E643DEC6FA43
+B217D08818769349B66F543DD4D615BC7422811B515DBFE38C7BCDF873CCAA9B
+229E05B247B5E1CDA8ECC2B2DD9EAFE1ECB46A9984720984ADE2F7CAC17F29F2
+AEC25F3569706327C9B1874AE5CA3D9EED82789A97E5E472D29B44AD4F067205
+57713A251B3E0189DC75DDA15AB7AB5C8BD70408AAEFB7C2D64567AFD28D2441
+C87B3A24F95BD0EFFDCD4AC40AA1654869FC996DFB4BF398A3BE1615B42A5BF3
+51CA13D3EB4DD8DF09E042254EA1014128C8F3A16DDCFB327D1EEAE7FBD60210
+52896DEAE39BA93CDF5EA4CF44B5606C894327FB1384F1631A13A40DB6C9A171
+FE440F2703849E0BA34FE0CA0D4C1FC9325096107F7E0DAE33972DD7EA56B64C
+1143A671EFA91DA6164FAA378BB47717AFD582FBBFCC5079179A014B09BA5E4F
+1921B31139230E21CD4F51B8ACF4B124FC627EFB24C59D537584D2E0176EDE3D
+F28018366A9DC6D32A524ADC1AC95FECAE94F6BCFC34BD966830F89DDD183027
+81DEB19FB81642C2248BDAFE1E76AF63E2E5D7B877A35E0EFA8B31560281EF50
+C7E30E6D51DEC5815FF32C8D77E4998A9371B77A8E0011BC5E11491CFFC0B194
+82454CAE336A9D3B86CFA3A511BDBDF5A9FA1BB86BBCCAAC317B20ED0CF5B808
+8120204E23A07F6C0E13446D6FAE7C5F1A72C2A205FF0D805A63A7040CEED398
+22969E4915A3B9FDE22FF9B51DCD706F80D1D6B564EE47F6564EC8684BEE04DE
+7A737A2AA16D61CFC9F1FC46679D110666B558C597C25808CCD4E792B357FAE2
+48E81C572A431F77168F45B478C45AE1F8D941972BCF70322EA91042A3F2C2CF
+25F90D648F6DFF6BF44DDDCFE538195FF0509A630C430315D82C6B6AC0FE40C8
+D6326397CC9710B327289ABF1E7A9ADA9F96A0EF63BC555BD3EA6BBE56C8E8E0
+A5B3D5C2A3242F825F865C87A9958509460EBAB50FCBE4018297038650A0A988
+4503FEA808399FDBDDFBD0448A26AC3CC0738301BAC87757F68455764C04FB46
+DA8ED6DA80738F50D45D1D2BB96B2ED4427C8D115534C849AB959E0ACA334ADB
+C1213FE6A99BD6647FD6EC8EC55B41D0FFFC677D913D48FAA4F2203F43458736
+71B4C678BE42D124DAA986A6E0BC1A634308AA35AA5B1BEA20AE164CD35F6343
+E2E21E4F339D471D227E25AAB6DE30F8715C8C1F62A66160833E07A78036AC10
+6B3F0B6E559E6049F6C65E25547E8270CB82864B0EC463621CCA7D76EEBC9361
+5F56E1E22C476241F9D804997C5353AD62715113DA0AC722B990527E4BF6D172
+4BBFA0A0AA0C5CA8008FC177A05F7908111D61865E8737DBDAF30E92164B39E6
+58583B4A0583EBA4203AB1532DF32BFA8A72A48FB4B585F9DD9ECF88622EEBFF
+EDE453A1C00148A6B718D7CADE28C2DF77B7EA48C81491E94852D326738E92AE
+29ED6ADD34C78190593E83404AD4BCCBB6CDFEAE9D4F177F71103206CA4B2D30
+E4DA7DCBF952616648EB555A445739868AA4A14A75B05DB425937450222F9BBF
+64F7C19BE2D5DA4EF552F40503BD7F3EA50E8C2A162AA8A844F0922DE1E577D8
+770FAAB2541F2212D61622683CBF025160174F914B098283646B37DADE179CDD
+50609510739EB25E11388DEE403D1B9CF2D5ED8F472AC9413069CDCBBBADFF24
+6BAA20942B7F8374DEE26ACD9411DBF4706C4B892A9DD5817FCE01C0494CC23C
+047EDECA0BB875FD5244550DD25E62EF09299F74205A66978C912C5A53C6B4E8
+D08E5A1939955FD15E8E5100DC6EDED963DB99B422CE461EDECB09BAB62CF8C8
+0F1A5EA6C6CDF8CB80FD3C042CAF38404C1C316B9FFCF8B52E4683B33EA525B6
+7103B83C2B7B2538FF157C564876BE135246768C9FC7ED67EC6AFB708870AC09
+911E384A83B35E00B44A3A4BD1DD43153F2CFD11E72695CAC8AFD5F3803A9435
+51BFFC367448EB7FE9D193C58661E3954E42EB60F72CE9D30182144F78B9B127
+B7305C61B97638530B15715670AA4946FBDF19865FFB380C1CF5E814E27D8C27
+9112A309A85846044215AD34ABD5DBB9A6CD61A02507B4D6BFA05995BB8871EA
+8E9695A147EE66A210F1E217A2E52B345BE95891AC31C6B3E95876DAC5891FAC
+5CCF1A6C451D59491398614DF4166041B9C0CA71F52FCF46D85F080185E5020B
+995458A641715B12387001934B33354349522715A6B6AF9510AB8E9DCE3890F1
+7310B5F8024E0B402B34B4F152BF4696D8A77614D3279ED6AAFFF6FB8DBF2052
+5AC7675F7EE907A6A9E24F69643A17D96284FB2ACAEF0327833B91E74562841B
+9647D4E45365EB5F143C068B560BC54627D2B4AC3E0CD6574BEF0A6D8707FD89
+182B8613E9E0C43CD6CA97538CFD387DB8BCEA74F30A1234363407A511DC27B7
+5F32A3C8ACA1F86D2E9043880EE84275E68419E79D161A0013E0A109EA37BD68
+6B1E1AD4D5B50FFCEDE468DBB54D8CD564A02699FA10C65D87E5D8D28E391A5C
+C3BC6AE2E18F71DAC5EA7F271B6C6832FDBF0D8D25104CF52BD93912398F6751
+04F081F02D01ADC4F8845493EB11C5EC45C3673C2A785F70E3E3C696200C54D0
+B35553C773F42057F10A7977FAF61697CE1D1E66AFC9ED7FC59C31ED12814343
+2DC663B506C6AAA7F416065EF6830C21739FAB9FBEF85236D165F8FDB3ECBFE7
+A15CFF27A4D6011C2C300A813C00524CE6C54EDC08920659EEBC434CF13294CE
+6D31A137A49FAAFE7ACE6A13029A3F1258C1F00C296BF9838984F0AEC83848E1
+90616090EB1CB156E5416B06F57135FBA8513565364070A315EB58874FB05E18
+6EA1B28F4218F4BCEB6FD1308175FF6C279BA6E003E984B6701BB4E1FDB3524D
+DE45A62C8B6CD6D076263BDC8E2DAF770ABC416980141AF61E93F104FF825EEE
+38C47092D068E8A387CFC722271EEB54977366BAE5B59A28E2907B2FABF4BE0E
+3B213D8BFB40EB63F6985405D1322FDB941168A14D5908847351C613DC9AB450
+F30F2FA3E7E587CF0BF5C212958396DB53559E255813B1A3230847383DE89757
+F8D5DB7B2A40ED6B17851CB4F16C6B92E36D56AA8879D35FA42741E56F8BB482
+5CDE18EC31720C3A4ED4E1D9B0DA78F33BC3766310EADBC2E62EEFA37E5B6F5D
+548954B8BCF32391084B7624F90CDC81BA7C859B328FFD4CCB10037B74B6AA2E
+3490B6792BF8AE8BD32484BE3BBC6CF4AA9520A5453DC57B84C0191593463399
+3E0DBA9A650C7C4E1EA4B89C92EE2969FC3DECFA3476857AB671A7C448E9E34A
+ECA841CFFA739F5AFC35E6D79874BD3E2EA8D296AAE4CA5B6638B42B4532D73F
+9A827505C2FF61C679FEDEDF42A89238EFF0ED6262CCCF1C83D7C853582CECD6
+ACAA428D727EB24C7D73BD180BB4656BB86C4FD851E0B4630BEC3A26E8E8AA35
+EF46DA4ED0DC5265BECEF32EC4276B232028C0F838AD7ED8302840D0028C8D09
+E6339EDC71B1296946153D0CF942074774A641BEC0EBA5F8E1339057F5894EDC
+71C129E2A6FA176658ED2ACD7624CD0A1C097B1D2D473C2BC3B6AA57FE523C7F
+8C8E440D35DC20742596B4CB3BDAFE616CB5E62AE65D31591D86404824AE822C
+11A005FF2126019C235F46E97017EB522D9607EBE470A7829E7C26644E8FF329
+14D99E34D496CD5BF856DC28DFB0D444F1645B91A66BFFC2E8BE1E16FFF6C014
+531CF12A160AB4A04C60AA8128FD963C41BACCB964DA973BEF5E9A24135D97F3
+F5366C576598570701B017D6B926CC26EF1B5D542CE5E1F70F6D1E87503BA8B4
+03B6FF8B89FBC69CE1CE1D4350D9FBCB4F82911F1703EBA205FA9334D610AD4D
+7A1CC4D1E6C1F4CEA2B44EACCFDAF8E03380D28601CC1D9348C97D8F9CE57EEA
+E47FBBDD1380BE9DE4EDB9DAB33DE3902C0A21658FDECC414EC3B3A0EED730FC
+C48AD1E41183A824E52F97BD1A2A2064A57465AD4C43BDE090AECFD9D6367BDB
+12BBB6A243D46477EE41DFDFDB2B117932EC0D031D72A308FC31A15F849FCE51
+8DBC93E3E0CA7616450E70FD78608545568E5D6A48671984C2DDC3E1E1D9F1A9
+85D99FC7B17BDC29A205DDF584A84547DCA587C2A954DF22D576850847B52D68
+BA8030B7931FBAF0AB8D08A765E24DE5F0D8B221BD705E2003502134DEC27581
+18E341F63C4E112C22870E7BF587D2886C42E16F206900F3667B3D3383E1304F
+DBD345CFB73716CA68ACA9791DF448074464F4B50CCEEC86E21E3C3A914AB2E2
+42336C063BB1236E0D4D48C957B4B6C9ECBFE9A96494FFD42DAEE4536A1FF654
+A9C7C34B296FD670C6C1C6BF3B6FA4C24EE3758C588A47D94E96FBDC5FF9BECD
+A8BBCB4BA781008B6A5CC88493CBE3F6D74E67E5CD30BC3872077D886AAC9F9C
+C070D36E84E752A2A636CF68F451FBC903450B9FD36792C1CF9E49CC98B4890A
+B65231EAF73628ECC8B3C318901FF387326E2CC40A3218A79071ACF1A225CB0C
+FC850EF019A47820388A26586AB2979166B97F1E167A64426E08C03B4EA97213
+61F08047F258694E32087F982EE546B9B5A5BA3E8CD96377A0B5690C5F0020A7
+96FB7829996F9D25D67EE802E05AA9A40290FAB56CE8F8D1447216BB83AE7B63
+B96722E3E9466215BF614F1D8AFC25E59C2EB9C2C7D13F5B9D00D18A998D618F
+BE7ADB4129B33A71C35B11E2E9DE1961E623A39AA6276FF6E4ECC389360D6075
+554162F67D69D66D5FB21359E375E528E1E14D7CB385C3E8476F900207C7E8AA
+9474F526899E8EC5027BE24D551E74C8C99B39160551F7B7BE2003F8D9343939
+49305B8D3522FEAB0D0C413FBDE5F6397618C5E7DA59ED5BC3FA4CD95CFC98CC
+ACB69A0A7803ECEABDA3FB3589EAB7551D7E1E3D0DFA60D4F1FDCECCC2BD79FA
+C806C2CCE4DF768D8454893403B10BB44A2D23629372B018D10F184614DC9C59
+F10DEC6D77AB55A710C807E7D555995673508F2228F427A37855549508A6F41F
+880D9E983C9FFA5E0B1E8829525804536BCF213CB21E7D0A94F2C13E1599B2EB
+135464B3B6CA16D1A3E5424CA492C77963C098F398B61CA9D713E0D86C7F223E
+CA4C83F02025A632339487C7CB700CE2B648A84B8A96D405E93F686066EFE7F9
+3601B8A93E1E17B4EA42FE70D24C7E18CDA5CC7CE64B6B5C96888935DF566C84
+99AA5688329E1DAA4073F7EC4FFB0DDD5D3E430D2ED49E31D611F97984AB0D7E
+7E151E6B18DCD4DCFF6F0952EDC070C71798CFE7F458A3533D7608C131265743
+B34354738E20F027AC853F5FE6BFBE06A9431C7BC6E86B9F74EA06843E71E749
+8471F0F91BF4C9EB8AEAFE5C7DA3B6317266AE50991E4F658CB22077273441AC
+D8788536F218BEB4F32A95F802755A902AAF18FED775CB55BE2301E115BF3834
+DBD7D9A09E6031E8D366B7B1F5B2F6143406372388354E221E736BAF04DB167E
+423AB83D3FB3416F3FAB96FCFFA567CE33E5C684EB6A5FAE0106EDE8E26D86C3
+916B4BFEFCBB239A592E0610F5B879CBC0CFFFC5C6F1C1D60DAB644ED9671882
+89787E9AAE0779271A5E608103DD84A19D22651FAD3F47E1C71A0A429B751F25
+405C770D8F1F014892446E7ABB968D5F30AB29EF6C00F45723E03C9C33FCEFE3
+778CCC1769123D59372C1260DA94D75D1FEA47B8860A6674522C415EAF1372E5
+A2F0299CC85619A331EB47B492AB04C22D02977D239697703ECB8FF91FCE19DB
+33EECA83DA27D6C99679801EEB419803F8C78EA9AC14B7FA77B4334D09C56980
+BAAC8CEB54DB7363EC708ECDF3A858996BF50D9BC98E8825E3D0731387EA967F
+B16E477EAEE8486B8B428C497004A16777B440C1BE6B194DAFE214C8512085F8
+45AFD6AD0202D937F11EF41C09B62A76C4729C4720916EAFA5CF0F2B536337B7
+38167F80AB0393FCF141E31CF356199858645544DF50965FBB2AD9738E22FB25
+7CF67EE01BD054345DF144731D396FC10418ADF0AB6D860358AC0ECD35576567
+F427153D2EAA47A94FA141D9A90D5B06AC547F873647CA5DB91FB5EFE02D764E
+3F5A7D7B1B79A48B876B9B1131FF3B7E3DC14D3CA47C9914277CD8AFB4D8DFD8
+3FAA28D06D9C98CA4F72B6FA1A3DCF8B62559584932A9E7000EBA74B76304119
+1CEC18643B0C195D48E6AB0596FE33C56265F76F580BB4AEEF851BFE33A0386A
+A986B0963ACFCE2954D72840F6C47A20A842F4030C7E7CB22453957F4510F279
+BD8378CEFF2CFCFC864A53299D02EE336E820566272A7FBD161969DFCBBCF3A1
+FADE251D3A1CE607A21CF3A07E1B40F4D303E8000C3AF67612D7D1040EBB4008
+4DCB1AC2E82E0F96795ED044FCEB28DAA619F2499A80430D74A3DF6FE928726B
+0902342AE27753E36AF2CD68DA7A39641D76EAF425E6079D0B01DA2B0033B22D
+9E28588F45E886A3BB1CD5DA3194F07670BABC5FFD5F430D3B5BB616A809ED06
+EA2F183D9D6A672A93E92A36CA61A235901597DE9812713A118A51107EBC1A25
+7A6CB70D73ED31318A7314A3C3D0C35C9BDB25155878F4AAB36ED33D8DC1294D
+84EA63B78170786493CB3CA7EA7A3DF8844758229829AEADDD93203B38B2085B
+81FE224939B203E64E400BC0D7EED4DC438E0942928E89DCF80F7C510A2B1F87
+97D83BCE1F0AE770D59E03498868A302E40147792168A9C07A60BF308F2F689B
+5FB4E9BC9F7DBA4068C52A25CB31F180DECF0C5D80292D89B5F61FFC3846AE9C
+F0D774B011044C43F547BC1E6B8A0D32E5B25D12803EE8F260D2F8A956A5B46F
+6B795EC9E40D1458E7C2D416DE04456EF0624DFA0E8F4279C50B3DFEFA57E3B4
+7EED73A53F4635ACA9CA58899427418741803A65BEF5C12B58221E6C685C4B04
+04AA4391E8B16C9E7D044902F38929BAE586471ADD2C42F58BC7F126A3BE43F3
+736935703A2593B6909A9075582D57731EB5E73A8CD2568620A99017A021FD0D
+0F346DBB9DFBEC179B3070968000112ACD77FBF93F9882CC6D171CF9F3CF19FC
+F87F9312E9A30ED4245588A00DE6FC587EC478361CECB9FFCDF1A47A662DCADC
+218BCDE6C92E1633F01A1C5665FE00F722A48AF55A373A4349C35D866BC4AF64
+429E0BF610943FFF401A8EB08A0E6674E171D994BB79E2FEAE8ADFFBC4A2FA4F
+FB80E16038BB2D7EA409374AA194754B711868431B3ED8EAD9D7B14616AC5C98
+0F2FC106F7C6A78B838D788497F0BC2A7D4598B5F11380385E17D9786D5AEB00
+ED987B1047EE244A645F458C8785D372D90E71F89F73B97A4CA9B34535A29136
+9F97926F249DE89A572AB57A4E5D82C484CCDAA5DB645DAEE36231C7472F2BA5
+29F46FFE55CEC8F4770031564696B5DB9102C854E9EC60C5BCD6E1EBC8623DBF
+891C89C4BFB53A6A2C7B9A7004A58D0A1B7E65C39361B88D41E392938F09B48D
+7B82E3C8BF0129EC393F1F4A78B0FF832CA1A7A702C7FCB85A7FBFE1A9CA2403
+F0AEBBBDB6D490F6A65504B5A1F8CEEF14BF73D7BE2FFAA3665A7ADE79B73085
+D4AF6BE52B26E45F1368F929AE47A25AD81E36FFF85B048878BA7E500D22BDAF
+3D3C08BC57D7B546F54060C1F42C5A13064DB85A3EE7ECFAE562B1D8F759555D
+
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -6603,12 +6615,12 @@ TeXDict begin 40258431 52099146 1000 600 600 (readline.dvi)
39 39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39
39 39 39 39 39 39 39 3[39 1[39 39 39 39 39 39 39 39 39
39 39 39 39 39 39 39 1[39 39 39 33[{}86 74.7198 /CMTT9
-rf /Ff 134[53 53 72 53 55 39 39 39 53 55 50 55 83 28
-53 1[28 55 50 30 44 55 44 55 50 20[62 77 1[36 2[65 68
-22[28 1[28 1[50 28[55 55 12[{}34 99.6264 /CMSL10 rf /Fg
-214[35 35 40[{}2 90.9091 /CMSS10 rf /Fh 133[52 52 52
-52 52 52 52 52 52 52 52 52 52 52 52 52 1[52 52 52 52
-52 52 52 52 52 1[52 18[52 52 1[52 2[52 52 9[52 16[52
+rf /Ff 133[44 53 53 72 53 55 39 39 39 53 55 50 55 83
+28 53 1[28 55 50 30 44 55 44 55 50 20[62 77 1[36 2[65
+68 22[28 1[28 1[50 28[55 55 12[{}35 99.6264 /CMSL10 rf
+/Fg 214[35 35 40[{}2 90.9091 /CMSS10 rf /Fh 133[52 52
+52 52 52 52 52 52 52 52 52 52 52 52 52 52 1[52 52 52
+52 52 52 52 52 52 1[52 18[52 52 1[52 2[52 52 9[52 16[52
42[{}33 99.6264 /CMTT10 rf /Fi 134[65 65 89 65 68 48
48 50 1[68 61 68 102 34 65 1[34 68 61 37 56 68 55 68
60 7[93 1[127 93 94 85 68 92 3[96 116 74 96 1[46 96 1[77
@@ -6616,7 +6628,7 @@ rf /Ff 134[53 53 72 53 55 39 39 39 53 55 50 55 83 28
109.091 /CMBX12 rf /Fj 133[40 48 48 66 48 51 35 36 36
48 51 45 51 76 25 48 1[25 51 45 28 40 51 40 51 45 9[93
1[68 66 51 67 1[62 71 68 83 57 71 1[33 68 1[59 62 69
-66 64 68 15[45 45 2[30 31[51 51 12[{}49 90.9091 /CMSL10
+66 64 68 15[45 45 2[30 31[51 51 53 11[{}50 90.9091 /CMSL10
rf /Fk 134[44 1[60 42 49 30 37 38 1[46 46 51 74 23 2[28
1[42 1[42 46 42 1[46 84[51 12[{}19 90.9091 /CMTI10 rf
/Fl 134[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
@@ -6661,29 +6673,31 @@ ifelse
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 150 1318 a Fu(GNU)65 b(Readline)g(Library)p
-150 1418 3600 34 v 1873 1515 a Ft(Edition)30 b(7.0,)i(for)e
-Fs(Readline)e(Library)h Ft(V)-8 b(ersion)31 b(7.0.)3367
-1623 y(July)f(2016)150 4927 y Fr(Chet)45 b(Ramey)-11
-b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150
-5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)
--11 b(oundation)p 150 5141 3600 17 v eop end
+150 1418 3600 34 v 1873 1515 a Ft(Edition)30 b(8.0,)i(for)e
+Fs(Readline)e(Library)h Ft(V)-8 b(ersion)31 b(8.0.)3139
+1623 y(No)m(v)m(em)m(b)s(er)g(2018)150 4927 y Fr(Chet)45
+b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l
+(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11
+b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141
+3600 17 v eop end
%%Page: 2 2
-TeXDict begin 2 1 bop 150 4413 a Ft(This)40 b(man)m(ual)g(describ)s(es)
-g(the)g(GNU)h(Readline)g(Library)f(\(v)m(ersion)h(7.0,)j(16)e(July)d
-(2016\),)46 b(a)40 b(library)150 4523 y(whic)m(h)f(aids)g(in)g(the)g
-(consistency)h(of)g(user)e(in)m(terface)j(across)f(discrete)g(programs)
-e(whic)m(h)h(pro)m(vide)h(a)150 4633 y(command)30 b(line)h(in)m
-(terface.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577
-4767 y Fq(\015)f Ft(1988{2016)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)
--8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21
-b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s
-(dify)e(this)i(do)s(cumen)m(t)f(under)f(the)390 5011
-y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g
-(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)
-390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46
-b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5
-b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)
-31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8
+TeXDict begin 2 1 bop 150 4413 a Ft(This)22 b(man)m(ual)h(describ)s(es)
+g(the)g(GNU)g(Readline)h(Library)e(\(v)m(ersion)i(8.0,)h(30)f(No)m(v)m
+(em)m(b)s(er)g(2018\),)j(a)c(library)150 4523 y(whic)m(h)39
+b(aids)g(in)g(the)g(consistency)h(of)g(user)e(in)m(terface)j(across)f
+(discrete)g(programs)e(whic)m(h)h(pro)m(vide)h(a)150
+4633 y(command)30 b(line)h(in)m(terface.)150 4767 y(Cop)m(yrigh)m(t)602
+4764 y(c)577 4767 y Fq(\015)f Ft(1988{2016)35 b(F)-8
+b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390
+4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8
+b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f
+(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8
+b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26
+b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43
+b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8
+b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46
+b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31
+b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8
b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390
5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8
b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end
@@ -6727,7 +6741,7 @@ h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29
b Ft(12)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22
b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Ft(12)275 1992 y(1.4)92
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Ft(13)275 1992 y(1.4)92
b(Bindable)30 b(Readline)h(Commands)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Ft(16)399 2101
@@ -6736,7 +6750,7 @@ b Fn(:)f(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)31 b Ft(16)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8
b(or)31 b(Manipulating)g(The)f(History)f Fn(:)15 b(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Ft(16)399
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Ft(17)399
2320 y(1.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8
b(ext)12 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)25
@@ -6790,11 +6804,11 @@ h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)34
b Ft(32)399 4133 y(2.4.2)93 b(Selecting)32 b(a)e(Keymap)9
b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)22 b Ft(32)399 4242 y(2.4.3)93 b(Binding)30
+f(:)h(:)f(:)g(:)h(:)22 b Ft(33)399 4242 y(2.4.3)93 b(Binding)30
b(Keys)15 b Fn(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28
-b Ft(33)399 4352 y(2.4.4)93 b(Asso)s(ciating)32 b(F)-8
+b Ft(34)399 4352 y(2.4.4)93 b(Asso)s(ciating)32 b(F)-8
b(unction)31 b(Names)g(and)e(Bindings)d Fn(:)16 b(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b Ft(35)399
4462 y(2.4.5)93 b(Allo)m(wing)32 b(Undoing)26 b Fn(:)16
@@ -6807,24 +6821,24 @@ h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)23
b Ft(37)399 4681 y(2.4.7)93 b(Mo)s(difying)30 b(T)-8
b(ext)16 b Fn(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28 b Ft(38)399
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28 b Ft(39)399
4790 y(2.4.8)93 b(Character)31 b(Input)22 b Fn(:)13 b(:)j(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)35 b Ft(38)399 4900 y(2.4.9)93 b(T)-8 b(erminal)30
+(:)g(:)35 b Ft(39)399 4900 y(2.4.9)93 b(T)-8 b(erminal)30
b(Managemen)m(t)17 b Fn(:)h(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)30 b Ft(39)399 5010 y(2.4.10)93
+g(:)h(:)f(:)h(:)f(:)g(:)30 b Ft(40)399 5010 y(2.4.10)93
b(Utilit)m(y)33 b(F)-8 b(unctions)24 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36
b Ft(40)399 5119 y(2.4.11)93 b(Miscellaneous)33 b(F)-8
b(unctions)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)36 b Ft(41)399 5229 y(2.4.12)93 b(Alternate)32
+f(:)h(:)f(:)36 b Ft(42)399 5229 y(2.4.12)93 b(Alternate)32
b(In)m(terface)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Ft(42)399 5338
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Ft(43)399 5338
y(2.4.13)93 b(A)31 b(Readline)g(Example)12 b Fn(:)j(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25
@@ -6833,34 +6847,34 @@ b Ft(43)p eop end
TeXDict begin -2 3 bop 3699 -116 a Ft(ii)399 83 y(2.4.14)93
b(Alternate)32 b(In)m(terface)g(Example)18 b Fn(:)e(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)31 b Ft(44)275 193 y(2.5)92 b(Readline)31
+f(:)g(:)h(:)f(:)h(:)31 b Ft(45)275 193 y(2.5)92 b(Readline)31
b(Signal)f(Handling)18 b Fn(:)e(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31 b Ft(46)275 302
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31 b Ft(47)275 302
y(2.6)92 b(Custom)29 b(Completers)e Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)40 b Ft(49)399 412 y(2.6.1)93 b(Ho)m(w)31 b(Completing)g(W)-8
+(:)40 b Ft(50)399 412 y(2.6.1)93 b(Ho)m(w)31 b(Completing)g(W)-8
b(orks)11 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)24 b Ft(49)399 521 y(2.6.2)93 b(Completion)31
+g(:)h(:)f(:)h(:)24 b Ft(50)399 521 y(2.6.2)93 b(Completion)31
b(F)-8 b(unctions)28 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b Ft(50)399 631 y(2.6.3)93
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b Ft(51)399 631 y(2.6.3)93
b(Completion)31 b(V)-8 b(ariables)18 b Fn(:)e(:)g(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b
-Ft(51)399 741 y(2.6.4)93 b(A)30 b(Short)g(Completion)h(Example)15
+Ft(52)399 741 y(2.6.4)93 b(A)30 b(Short)g(Completion)h(Example)15
b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28 b
-Ft(56)150 991 y Fr(App)t(endix)44 b(A)119 b(GNU)39 b(F)-11
+Ft(57)150 991 y Fr(App)t(endix)44 b(A)119 b(GNU)39 b(F)-11
b(ree)38 b(Do)t(cumen)l(tation)i(License)25 b Fo(:)20
-b(:)32 b Fr(65)150 1269 y(Concept)45 b(Index)36 b Fo(:)19
+b(:)32 b Fr(66)150 1269 y(Concept)45 b(Index)36 b Fo(:)19
b(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
-h(:)49 b Fr(73)150 1548 y(F)-11 b(unction)44 b(and)h(V)-11
+h(:)49 b Fr(74)150 1548 y(F)-11 b(unction)44 b(and)h(V)-11
b(ariable)45 b(Index)20 b Fo(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fr(74)p
+f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fr(75)p
eop end
%%Page: 1 5
TeXDict begin 1 4 bop 3705 -116 a Ft(1)150 299 y Fp(1)80
@@ -7192,125 +7206,127 @@ Fs(visible)p Ft(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g
(one)g(is)g(a)m(v)-5 b(ailable.)51 b(If)33 b(set)g(to)1110
737 y(`)p Fs(audible)p Ft(')j(\(the)i(default\),)i(Readline)e(attempts)
g(to)h(ring)e(the)g(terminal's)1110 847 y(b)s(ell.)630
-993 y Fs(bind-tty-special-chars)1110 1103 y Ft(If)e(set)g(to)h(`)p
+1005 y Fs(bind-tty-special-chars)1110 1115 y Ft(If)e(set)g(to)h(`)p
Fs(on)p Ft(')f(\(the)g(default\),)i(Readline)f(attempts)g(to)g(bind)d
-(the)i(con)m(trol)1110 1212 y(c)m(haracters)30 b(treated)g(sp)s
+(the)i(con)m(trol)1110 1224 y(c)m(haracters)30 b(treated)g(sp)s
(ecially)g(b)m(y)f(the)g(k)m(ernel's)h(terminal)f(driv)m(er)g(to)h
-(their)1110 1322 y(Readline)h(equiv)-5 b(alen)m(ts.)630
-1468 y Fs(blink-matching-paren)1110 1577 y Ft(If)36 b(set)g(to)h(`)p
+(their)1110 1334 y(Readline)h(equiv)-5 b(alen)m(ts.)630
+1492 y Fs(blink-matching-paren)1110 1602 y Ft(If)36 b(set)g(to)h(`)p
Fs(on)p Ft(',)h(Readline)f(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j
-(the)f(cursor)e(to)i(an)1110 1687 y(op)s(ening)k(paren)m(thesis)h(when)
+(the)f(cursor)e(to)i(an)1110 1711 y(op)s(ening)k(paren)m(thesis)h(when)
f(a)h(closing)h(paren)m(thesis)e(is)h(inserted.)74 b(The)1110
-1797 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 1943
-y Fs(colored-completion-prefi)o(x)1110 2052 y Ft(If)f(set)h(to)g(`)p
+1821 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 1979
+y Fs(colored-completion-prefi)o(x)1110 2089 y Ft(If)f(set)h(to)g(`)p
Fs(on)p Ft(',)g(when)e(listing)i(completions,)h(Readline)f(displa)m(ys)
-g(the)f(com-)1110 2162 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s
+g(the)f(com-)1110 2198 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s
(ossible)f(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110
-2271 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g
-(v)-5 b(alue)40 b(of)g(the)g Fs(LS_COLORS)1110 2381 y
+2308 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g
+(v)-5 b(alue)40 b(of)g(the)g Fs(LS_COLORS)1110 2418 y
Ft(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30
-b(default)h(is)f(`)p Fs(off)p Ft('.)630 2527 y Fs(colored-stats)1110
-2637 y Ft(If)c(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(displa)m(ys)g
+b(default)h(is)f(`)p Fs(off)p Ft('.)630 2576 y Fs(colored-stats)1110
+2685 y Ft(If)c(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(displa)m(ys)g
(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110
-2746 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67
+2795 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67
b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110
-2856 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fs(LS_COLORS)d
+2905 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fs(LS_COLORS)d
Ft(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110
-2966 y(is)30 b(`)p Fs(off)p Ft('.)630 3112 y Fs(comment-begin)1110
-3221 y Ft(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of)
-h(the)h(line)f(when)g(the)1110 3331 y Fs(insert-comment)26
+3014 y(is)30 b(`)p Fs(off)p Ft('.)630 3173 y Fs(comment-begin)1110
+3282 y Ft(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of)
+h(the)h(line)f(when)g(the)1110 3392 y Fs(insert-comment)26
b Ft(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5
-b(alue)31 b(is)f Fs("#")p Ft(.)630 3477 y Fs(completion-display-width)
-1110 3587 y Ft(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used)
-g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 3696
+b(alue)31 b(is)f Fs("#")p Ft(.)630 3550 y Fs(completion-display-width)
+1110 3660 y Ft(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used)
+g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 3769
y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5
b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)1110
-3806 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39
+3879 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39
b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110
-3915 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e
+3988 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e
(line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630
-4061 y Fs(completion-ignore-case)1110 4171 y Ft(If)d(set)h(to)g(`)p
+4147 y Fs(completion-ignore-case)1110 4256 y Ft(If)d(set)h(to)g(`)p
Fs(on)p Ft(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i
-(and)e(completion)1110 4281 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)
+(and)e(completion)1110 4366 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)
40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Fs(off)p
-Ft('.)630 4427 y Fs(completion-map-case)1110 4536 y Ft(If)22
+Ft('.)630 4524 y Fs(completion-map-case)1110 4634 y Ft(If)22
b(set)g(to)h(`)p Fs(on)p Ft(',)h(and)e Fj(completion-ignore-case)31
-b Ft(is)22 b(enabled,)i(Readline)f(treats)1110 4646 y(h)m(yphens)29
+b Ft(is)22 b(enabled,)i(Readline)f(treats)1110 4743 y(h)m(yphens)29
b(\(`)p Fs(-)p Ft('\))j(and)e(underscores)g(\(`)p Fs(_)p
Ft('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110
-4756 y(case-insensitiv)m(e)j(\014lename)d(matc)m(hing)i(and)e
-(completion.)630 4902 y Fs(completion-prefix-displa)o(y-le)o(ngth)1110
-5011 y Ft(The)h(length)g(in)g(c)m(haracters)i(of)f(the)f(common)h
-(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 5121
-y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s
-(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 5230
-y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e
-(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 5340
-y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)
-f(completions.)p eop end
+4853 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
+(completion.)85 b(The)44 b(default)1110 4963 y(v)-5 b(alue)31
+b(is)f(`)p Fs(off)p Ft('.)630 5121 y Fs(completion-prefix-displa)o
+(y-le)o(ngth)1110 5230 y Ft(The)h(length)g(in)g(c)m(haracters)i(of)f
+(the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110
+5340 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s
+(di\014cation.)41 b(When)29 b(set)h(to)h(a)p eop end
%%Page: 6 10
TeXDict begin 6 9 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(6)630 299 y Fs
-(completion-query-items)1110 408 y Ft(The)26 b(n)m(um)m(b)s(er)f(of)h
-(p)s(ossible)g(completions)h(that)g(determines)f(when)f(the)i(user)1110
-518 y(is)i(ask)m(ed)h(whether)f(the)h(list)g(of)f(p)s(ossibilities)h
-(should)e(b)s(e)h(displa)m(y)m(ed.)41 b(If)29 b(the)1110
-628 y(n)m(um)m(b)s(er)d(of)h(p)s(ossible)f(completions)i(is)f(greater)h
-(than)e(this)h(v)-5 b(alue,)28 b(Readline)1110 737 y(will)f(ask)g(the)f
-(user)g(whether)g(or)g(not)h(he)f(wishes)g(to)i(view)e(them;)i
-(otherwise,)1110 847 y(they)d(are)f(simply)g(listed.)40
-b(This)23 b(v)-5 b(ariable)25 b(m)m(ust)g(b)s(e)e(set)i(to)g(an)g(in)m
-(teger)g(v)-5 b(alue)1110 956 y(greater)26 b(than)f(or)f(equal)i(to)f
-(0.)40 b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i
-(should)1110 1066 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g
-(is)g Fs(100)p Ft(.)630 1285 y Fs(convert-meta)1110 1395
-y Ft(If)22 b(set)g(to)h(`)p Fs(on)p Ft(',)h(Readline)f(will)f(con)m(v)m
+b(Command)29 b(Line)i(Editing)2153 b(6)1110 299 y(v)-5
+b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e(longer)j
+(than)e(this)g(v)-5 b(alue)27 b(are)1110 408 y(replaced)k(with)f(an)g
+(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)f(completions.)630
+565 y Fs(completion-query-items)1110 675 y Ft(The)c(n)m(um)m(b)s(er)f
+(of)h(p)s(ossible)g(completions)h(that)g(determines)f(when)f(the)i
+(user)1110 784 y(is)i(ask)m(ed)h(whether)f(the)h(list)g(of)f(p)s
+(ossibilities)h(should)e(b)s(e)h(displa)m(y)m(ed.)41
+b(If)29 b(the)1110 894 y(n)m(um)m(b)s(er)d(of)h(p)s(ossible)f
+(completions)i(is)f(greater)h(than)e(this)h(v)-5 b(alue,)28
+b(Readline)1110 1003 y(will)f(ask)g(the)f(user)g(whether)g(or)g(not)h
+(he)f(wishes)g(to)i(view)e(them;)i(otherwise,)1110 1113
+y(they)d(are)f(simply)g(listed.)40 b(This)23 b(v)-5 b(ariable)25
+b(m)m(ust)g(b)s(e)e(set)i(to)g(an)g(in)m(teger)g(v)-5
+b(alue)1110 1223 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40
+b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i(should)1110
+1332 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g
+Fs(100)p Ft(.)630 1489 y Fs(convert-meta)1110 1598 y
+Ft(If)22 b(set)g(to)h(`)p Fs(on)p Ft(',)h(Readline)f(will)f(con)m(v)m
(ert)i(c)m(haracters)f(with)f(the)g(eigh)m(th)h(bit)f(set)1110
-1504 y(to)33 b(an)e Fm(asci)r(i)h Ft(k)m(ey)h(sequence)f(b)m(y)g
+1708 y(to)33 b(an)e Fm(asci)r(i)h Ft(k)m(ey)h(sequence)f(b)m(y)g
(stripping)f(the)h(eigh)m(th)h(bit)f(and)f(pre\014xing)1110
-1614 y(an)24 b Fs(ESC)g Ft(c)m(haracter,)j(con)m(v)m(erting)f(them)f
-(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 1724
+1817 y(an)24 b Fs(ESC)g Ft(c)m(haracter,)j(con)m(v)m(erting)f(them)f
+(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 1927
y(The)i(default)h(v)-5 b(alue)28 b(is)f(`)p Fs(on)p Ft(',)i(but)d(will)
i(b)s(e)f(set)h(to)g(`)p Fs(off)p Ft(')g(if)f(the)h(lo)s(cale)h(is)f
-(one)1110 1833 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630
-2052 y Fs(disable-completion)1110 2162 y Ft(If)k(set)h(to)h(`)p
+(one)1110 2037 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630
+2193 y Fs(disable-completion)1110 2303 y Ft(If)k(set)h(to)h(`)p
Fs(On)p Ft(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60
-b(Completion)1110 2271 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h
+b(Completion)1110 2412 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h
(in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110
-2381 y(to)31 b Fs(self-insert)p Ft(.)38 b(The)30 b(default)g(is)h(`)p
-Fs(off)p Ft('.)630 2600 y Fs(echo-control-characters)1110
-2710 y Ft(When)f(set)h(to)g(`)p Fs(on)p Ft(',)f(on)g(op)s(erating)h
-(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 2819
+2522 y(to)31 b Fs(self-insert)p Ft(.)38 b(The)30 b(default)g(is)h(`)p
+Fs(off)p Ft('.)630 2679 y Fs(echo-control-characters)1110
+2788 y Ft(When)f(set)h(to)g(`)p Fs(on)p Ft(',)f(on)g(op)s(erating)h
+(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 2898
y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d
-(to)j(a)f(signal)g(generated)1110 2929 y(from)e(the)g(k)m(eyb)s(oard.)
-41 b(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 3148
-y Fs(editing-mode)1110 3258 y Ft(The)d Fs(editing-mode)e
+(to)j(a)f(signal)g(generated)1110 3007 y(from)e(the)g(k)m(eyb)s(oard.)
+41 b(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 3164
+y Fs(editing-mode)1110 3273 y Ft(The)d Fs(editing-mode)e
Ft(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k)
-m(ey)i(bind-)1110 3367 y(ings)25 b(is)g(used.)38 b(By)26
+m(ey)i(bind-)1110 3383 y(ings)25 b(is)g(used.)38 b(By)26
b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,)
-1110 3477 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to)
+1110 3493 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to)
h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110
-3587 y(b)s(e)g(set)h(to)g(either)g(`)p Fs(emacs)p Ft(')e(or)h(`)p
-Fs(vi)p Ft('.)630 3806 y Fs(emacs-mode-string)1110 3915
-y Ft(This)f(string)h(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e
-(the)h(last)g(line)h(of)e(the)h(pri-)1110 4025 y(mary)43
-b(prompt)g(when)f(emacs)i(editing)g(mo)s(de)f(is)g(activ)m(e.)82
-b(The)43 b(v)-5 b(alue)44 b(is)1110 4134 y(expanded)28
-b(lik)m(e)i(a)f(k)m(ey)g(binding,)f(so)h(the)g(standard)f(set)h(of)g
-(meta-)g(and)f(con-)1110 4244 y(trol)36 b(pre\014xes)e(and)h(bac)m
-(kslash)h(escap)s(e)g(sequences)g(is)f(a)m(v)-5 b(ailable.)58
-b(Use)36 b(the)1110 4354 y(`)p Fs(\\1)p Ft(')i(and)f(`)p
-Fs(\\2)p Ft(')h(escap)s(es)g(to)h(b)s(egin)e(and)h(end)f(sequences)h
-(of)g(non-prin)m(ting)1110 4463 y(c)m(haracters,)27 b(whic)m(h)c(can)h
-(b)s(e)f(used)f(to)j(em)m(b)s(ed)e(a)h(terminal)g(con)m(trol)h
-(sequence)1110 4573 y(in)m(to)31 b(the)g(mo)s(de)f(string.)41
-b(The)29 b(default)i(is)f(`)p Fs(@)p Ft('.)630 4792 y
-Fs(enable-bracketed-paste)1110 4902 y Ft(When)24 b(set)h(to)h(`)p
-Fs(On)p Ft(',)g(Readline)f(will)g(con\014gure)f(the)h(terminal)g(in)f
-(a)h(w)m(a)m(y)g(that)1110 5011 y(will)k(enable)f(it)h(to)g(insert)g
-(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e(as)i(a)f
-(single)1110 5121 y(string)33 b(of)f(c)m(haracters,)j(instead)e(of)g
-(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110
+3602 y(b)s(e)g(set)h(to)g(either)g(`)p Fs(emacs)p Ft(')e(or)h(`)p
+Fs(vi)p Ft('.)630 3759 y Fs(emacs-mode-string)1110 3868
+y Ft(If)j(the)h Fj(sho)m(w-mo)s(de-in-prompt)h Ft(v)-5
+b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
+3978 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)1110 4088 y(emacs)g(editing)h(mo)s
+(de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f
+(lik)m(e)h(a)h(k)m(ey)f(bind-)1110 4197 y(ing,)27 b(so)f(the)f
+(standard)g(set)h(of)f(meta-)i(and)e(con)m(trol)i(pre\014xes)d(and)h
+(bac)m(kslash)1110 4307 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5
+b(ailable.)41 b(Use)25 b(the)f(`)p Fs(\\1)p Ft(')f(and)h(`)p
+Fs(\\2)p Ft(')g(escap)s(es)g(to)g(b)s(egin)1110 4416
+y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m(haracters,)j
+(whic)m(h)c(can)h(b)s(e)f(used)1110 4526 y(to)h(em)m(b)s(ed)f(a)g
+(terminal)h(con)m(trol)h(sequence)f(in)m(to)g(the)f(mo)s(de)g(string.)
+61 b(The)1110 4635 y(default)31 b(is)f(`)p Fs(@)p Ft('.)630
+4792 y Fs(enable-bracketed-paste)1110 4902 y Ft(When)24
+b(set)h(to)h(`)p Fs(On)p Ft(',)g(Readline)f(will)g(con\014gure)f(the)h
+(terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110 5011 y(will)k(enable)f(it)h
+(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e
+(as)i(a)f(single)1110 5121 y(string)33 b(of)f(c)m(haracters,)j(instead)
+e(of)g(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110
5230 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49
b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110
5340 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41
@@ -7384,32 +7400,32 @@ Fl(C-J)g Ft(will)h(terminate)g(an)1110 5340 y(incremen)m(tal)c(searc)m
%%Page: 8 12
TeXDict begin 8 11 bop 150 -116 a Ft(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fs(keymap)192
-b Ft(Sets)39 b(Readline's)g(idea)h(of)f(the)g(curren)m(t)f(k)m(eymap)h
-(for)g(k)m(ey)g(binding)f(com-)1110 408 y(mands.)81 b(Acceptable)47
-b Fs(keymap)42 b Ft(names)i(are)h Fs(emacs)p Ft(,)i Fs(emacs-standard)p
+b Ft(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h
+(for)f(k)m(ey)h(binding)1110 408 y(commands.)71 b(Built-in)41
+b Fs(keymap)e Ft(names)h(are)h Fs(emacs)p Ft(,)h Fs(emacs-standard)p
Ft(,)1110 518 y Fs(emacs-meta)p Ft(,)99 b Fs(emacs-ctlx)p
Ft(,)f Fs(vi)p Ft(,)j Fs(vi-move)p Ft(,)f Fs(vi-command)p
Ft(,)f(and)1110 628 y Fs(vi-insert)p Ft(.)81 b Fs(vi)44
b Ft(is)h(equiv)-5 b(alen)m(t)46 b(to)g Fs(vi-command)c
-Ft(\()p Fs(vi-move)h Ft(is)i(also)h(a)1110 737 y(synon)m(ym\);)g
-Fs(emacs)39 b Ft(is)i(equiv)-5 b(alen)m(t)42 b(to)g Fs(emacs-standard)p
-Ft(.)68 b(The)40 b(default)1110 847 y(v)-5 b(alue)52
-b(is)f Fs(emacs)p Ft(.)103 b(The)51 b(v)-5 b(alue)52
-b(of)f(the)h Fs(editing-mode)c Ft(v)-5 b(ariable)52 b(also)1110
-956 y(a\013ects)32 b(the)e(default)h(k)m(eymap.)630 1113
-y Fs(keyseq-timeout)1110 1223 y Ft(Sp)s(eci\014es)25
-b(the)g(duration)g(Readline)h(will)g(w)m(ait)g(for)g(a)f(c)m(haracter)i
-(when)e(read-)1110 1332 y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h
-(sequence)f(\(one)g(that)h(can)f(form)g(a)g(complete)h(k)m(ey)1110
-1442 y(sequence)j(using)e(the)i(input)e(read)h(so)g(far,)h(or)g(can)f
-(tak)m(e)i(additional)f(input)1110 1551 y(to)g(complete)g(a)f(longer)h
-(k)m(ey)f(sequence\).)49 b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h
-(within)1110 1661 y(the)43 b(timeout,)48 b(Readline)43
-b(will)g(use)g(the)g(shorter)g(but)f(complete)j(k)m(ey)e(se-)1110
-1771 y(quence.)c(Readline)26 b(uses)f(this)h(v)-5 b(alue)26
-b(to)g(determine)g(whether)f(or)g(not)h(input)1110 1880
-y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m(t)f(input)g
-(source)h(\()p Fs(rl_instream)d Ft(b)m(y)i(default\).)1110
+Ft(\()p Fs(vi-move)h Ft(is)i(also)h(a)1110 737 y(synon)m(ym\);)41
+b Fs(emacs)c Ft(is)h(equiv)-5 b(alen)m(t)39 b(to)f Fs(emacs-standard)p
+Ft(.)59 b(Applications)1110 847 y(ma)m(y)32 b(add)e(additional)i
+(names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f
+Fs(emacs)p Ft(.)41 b(The)30 b(v)-5 b(alue)1110 956 y(of)31
+b(the)f Fs(editing-mode)d Ft(v)-5 b(ariable)31 b(also)h(a\013ects)f
+(the)g(default)g(k)m(eymap.)630 1113 y Fs(keyseq-timeout)1110
+1223 y Ft(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m
+(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 1332
+y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f
+(form)g(a)g(complete)h(k)m(ey)1110 1442 y(sequence)j(using)e(the)i
+(input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input)
+1110 1551 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49
+b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110
+1661 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter)
+g(but)f(complete)j(k)m(ey)e(se-)1110 1771 y(quence.)c(Readline)26
+b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h
+(input)1110 1880 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m
+(t)f(input)g(source)h(\()p Fs(rl_instream)d Ft(b)m(y)i(default\).)1110
1990 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h
(milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that)
1110 2099 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
@@ -7460,59 +7476,61 @@ TeXDict begin 9 12 bop 150 -116 a Ft(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2153 b(9)1110 299 y(default)26
b(is)f(`)p Fs(off)p Ft(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p
Fs(on)p Ft(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110
-408 y(eigh)m(t-bit)k(c)m(haracters.)630 596 y Fs(page-completions)1110
-706 y Ft(If)h(set)i(to)f(`)p Fs(on)p Ft(',)h(Readline)g(uses)e(an)h(in)
+408 y(eigh)m(t-bit)k(c)m(haracters.)630 581 y Fs(page-completions)1110
+690 y Ft(If)h(set)i(to)f(`)p Fs(on)p Ft(',)h(Readline)g(uses)e(an)h(in)
m(ternal)h Fs(more)p Ft(-lik)m(e)f(pager)g(to)h(displa)m(y)1110
-816 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.)
+800 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.)
47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Fs(on)p Ft(')1110
-925 y(b)m(y)e(default.)630 1113 y Fs(print-completions-horizo)o(ntal)o
-(ly)1110 1223 y Ft(If)23 b(set)i(to)g(`)p Fs(on)p Ft(',)g(Readline)g
+909 y(b)m(y)e(default.)630 1082 y Fs(print-completions-horizo)o(ntal)o
+(ly)1110 1191 y Ft(If)23 b(set)i(to)g(`)p Fs(on)p Ft(',)g(Readline)g
(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110
-1332 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c
-(than)g(do)m(wn)g(the)h(screen.)1110 1442 y(The)30 b(default)g(is)h(`)p
-Fs(off)p Ft('.)630 1630 y Fs(revert-all-at-newline)1110
-1739 y Ft(If)e(set)h(to)g(`)p Fs(on)p Ft(',)g(Readline)g(will)g(undo)f
+1301 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c
+(than)g(do)m(wn)g(the)h(screen.)1110 1410 y(The)30 b(default)g(is)h(`)p
+Fs(off)p Ft('.)630 1583 y Fs(revert-all-at-newline)1110
+1692 y Ft(If)e(set)h(to)g(`)p Fs(on)p Ft(',)g(Readline)g(will)g(undo)f
(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110
-1849 y(returning)f(when)f Fs(accept-line)f Ft(is)j(executed.)41
-b(By)29 b(default,)g(history)g(lines)1110 1958 y(ma)m(y)42
+1802 y(returning)f(when)f Fs(accept-line)f Ft(is)j(executed.)41
+b(By)29 b(default,)g(history)g(lines)1110 1911 y(ma)m(y)42
b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h
-(across)g(calls)h(to)1110 2068 y Fs(readline)p Ft(.)38
-b(The)30 b(default)h(is)f(`)p Fs(off)p Ft('.)630 2256
-y Fs(show-all-if-ambiguous)1110 2365 y Ft(This)f(alters)i(the)f
+(across)g(calls)h(to)1110 2021 y Fs(readline)p Ft(.)38
+b(The)30 b(default)h(is)f(`)p Fs(off)p Ft('.)630 2193
+y Fs(show-all-if-ambiguous)1110 2303 y Ft(This)f(alters)i(the)f
(default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40
-b(If)29 b(set)1110 2475 y(to)f(`)p Fs(on)p Ft(',)g(w)m(ords)f(whic)m(h)
+b(If)29 b(set)1110 2412 y(to)f(`)p Fs(on)p Ft(',)g(w)m(ords)f(whic)m(h)
g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause)
-1110 2585 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i
-(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 2694 y(The)30
+1110 2522 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i
+(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 2632 y(The)30
b(default)g(v)-5 b(alue)31 b(is)g(`)p Fs(off)p Ft('.)630
-2882 y Fs(show-all-if-unmodified)1110 2992 y Ft(This)38
+2804 y Fs(show-all-if-unmodified)1110 2913 y Ft(This)38
b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h
-(functions)e(in)h(a)1110 3101 y(fashion)25 b(similar)h(to)g
+(functions)e(in)h(a)1110 3023 y(fashion)25 b(similar)h(to)g
Fj(sho)m(w-all-if-am)m(biguous)p Ft(.)41 b(If)25 b(set)h(to)h(`)p
-Fs(on)p Ft(',)f(w)m(ords)f(whic)m(h)1110 3211 y(ha)m(v)m(e)32
+Fs(on)p Ft(',)f(w)m(ords)f(whic)m(h)1110 3133 y(ha)m(v)m(e)32
b(more)f(than)f(one)i(p)s(ossible)e(completion)i(without)f(an)m(y)g(p)s
-(ossible)f(par-)1110 3320 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
-f(completions)h(don't)f(share)g(a)h(common)1110 3430
+(ossible)f(par-)1110 3242 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 3352
y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g
-(immediately)i(instead)e(of)h(ring-)1110 3540 y(ing)g(the)f(b)s(ell.)41
+(immediately)i(instead)e(of)h(ring-)1110 3461 y(ing)g(the)f(b)s(ell.)41
b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Fs(off)p
-Ft('.)630 3727 y Fs(show-mode-in-prompt)1110 3837 y Ft(If)g(set)g(to)h
-(`)p Fs(on)p Ft(',)f(add)f(a)i(c)m(haracter)g(to)g(the)f(b)s(eginning)g
-(of)g(the)g(prompt)f(indi-)1110 3947 y(cating)j(the)g(editing)f(mo)s
-(de:)42 b(emacs,)33 b(vi)e(command,)g(or)g(vi)g(insertion.)43
-b(The)1110 4056 y(mo)s(de)30 b(strings)g(are)h(user-settable.)42
-b(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Fs(off)p
-Ft('.)630 4244 y Fs(skip-completed-text)1110 4354 y Ft(If)h(set)i(to)f
-(`)p Fs(on)p Ft(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s
-(eha)m(vior)f(when)f(in-)1110 4463 y(serting)d(a)h(single)g(matc)m(h)f
-(in)m(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s
-(erform-)1110 4573 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f
-(w)m(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)1110
-4682 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h
-(that)f(matc)m(h)g(c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g
-(the)g(w)m(ord)f(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g
-(w)m(ord)1110 4902 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g
-(duplicated.)45 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
+Ft('.)630 3634 y Fs(show-mode-in-prompt)1110 3743 y Ft(If)24
+b(set)h(to)g(`)p Fs(on)p Ft(',)g(add)f(a)h(string)f(to)h(the)f(b)s
+(eginning)g(of)g(the)h(prompt)e(indicating)1110 3853
+y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi)
+h(insertion.)49 b(The)32 b(mo)s(de)1110 3962 y(strings)45
+b(are)h(user-settable)g(\(e.g.,)51 b Fj(emacs-mo)s(de-string)8
+b Ft(\).)87 b(The)45 b(default)1110 4072 y(v)-5 b(alue)31
+b(is)f(`)p Fs(off)p Ft('.)630 4244 y Fs(skip-completed-text)1110
+4354 y Ft(If)i(set)i(to)f(`)p Fs(on)p Ft(',)h(this)f(alters)g(the)g
+(default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110
+4463 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40
+b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)1110
+4573 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53
+b(If)35 b(enabled,)g(readline)g(do)s(es)1110 4682 y(not)41
+b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g
+(c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f
+(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110
+4902 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45
+b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
5011 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g
(after)h(the)g(`)p Fs(e)p Ft(')f(in)1110 5121 y(`)p Fs(Makefile)p
Ft(')c(will)i(result)f(in)g(`)p Fs(Makefile)p Ft(')f(rather)h(than)h(`)
@@ -7522,203 +7540,251 @@ b(alue)1110 5340 y(is)30 b(`)p Fs(off)p Ft('.)p eop end
%%Page: 10 14
TeXDict begin 10 13 bop 150 -116 a Ft(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2107 b(10)630 299 y Fs
-(vi-cmd-mode-string)1110 408 y Ft(This)29 b(string)h(is)f(displa)m(y)m
-(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h(of)e(the)h(pri-)
-1110 518 y(mary)21 b(prompt)g(when)f(vi)i(editing)g(mo)s(de)f(is)g
-(activ)m(e)j(and)d(in)g(command)g(mo)s(de.)1110 628 y(The)38
-b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g(binding,)g
-(so)g(the)f(standard)g(set)h(of)1110 737 y(meta-)30 b(and)e(con)m(trol)
-i(pre\014xes)e(and)g(bac)m(kslash)h(escap)s(e)g(sequences)g(is)g(a)m(v)
--5 b(ail-)1110 847 y(able.)50 b(Use)33 b(the)h(`)p Fs(\\1)p
-Ft(')f(and)g(`)p Fs(\\2)p Ft(')g(escap)s(es)g(to)h(b)s(egin)f(and)g
-(end)f(sequences)i(of)1110 956 y(non-prin)m(ting)40 b(c)m(haracters,)45
-b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal)
-1110 1066 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g
-(string.)41 b(The)30 b(default)h(is)f(`)p Fs(\(cmd\))p
-Ft('.)630 1209 y Fs(vi-ins-mode-string)1110 1319 y Ft(This)f(string)h
-(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h
-(of)e(the)h(pri-)1110 1428 y(mary)25 b(prompt)f(when)g(vi)h(editing)h
-(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)1110
-1538 y(The)38 b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g
-(binding,)g(so)g(the)f(standard)g(set)h(of)1110 1648
-y(meta-)30 b(and)e(con)m(trol)i(pre\014xes)e(and)g(bac)m(kslash)h
-(escap)s(e)g(sequences)g(is)g(a)m(v)-5 b(ail-)1110 1757
-y(able.)50 b(Use)33 b(the)h(`)p Fs(\\1)p Ft(')f(and)g(`)p
-Fs(\\2)p Ft(')g(escap)s(es)g(to)h(b)s(egin)f(and)g(end)f(sequences)i
-(of)1110 1867 y(non-prin)m(ting)40 b(c)m(haracters,)45
-b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal)
-1110 1976 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g
-(string.)41 b(The)30 b(default)h(is)f(`)p Fs(\(ins\))p
-Ft('.)630 2120 y Fs(visible-stats)1110 2229 y Ft(If)h(set)i(to)f(`)p
-Fs(on)p Ft(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s
-(e)g(is)g(app)s(ended)e(to)j(the)1110 2339 y(\014lename)e(when)e
-(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p
-Fs(off)p Ft('.)150 2482 y(Key)f(Bindings)630 2592 y(The)41
-b(syn)m(tax)i(for)f(con)m(trolling)h(k)m(ey)g(bindings)e(in)h(the)g
-(init)g(\014le)g(is)g(simple.)75 b(First)43 b(y)m(ou)630
-2701 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h(the)g(command)f(that)i
-(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 b(The)27 b(follo)m(wing)630
-2811 y(sections)37 b(con)m(tain)g(tables)g(of)f(the)g(command)f(name,)j
-(the)e(default)g(k)m(eybinding,)h(if)f(an)m(y)-8 b(,)630
-2921 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h
-(do)s(es.)630 3047 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g(name)g(of)g
-(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g(the)g(init)630
-3157 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m(ou)g(wish)f(to)h
-(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)630
-3266 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
+(vi-cmd-mode-string)1110 408 y Ft(If)33 b(the)h Fj(sho)m(w-mo)s
+(de-in-prompt)h Ft(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f
+(is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g
+(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110
+628 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command)g
+(mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110
+737 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f
+(standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110
+847 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is)g
+(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Fs(\\1)p
+Ft(')1110 956 y(and)23 b(`)p Fs(\\2)p Ft(')h(escap)s(es)h(to)f(b)s
+(egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110
+1066 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)
+h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 1176
+y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
+Fs(\(cmd\))p Ft('.)630 1340 y Fs(vi-ins-mode-string)1110
+1450 y Ft(If)j(the)h Fj(sho)m(w-mo)s(de-in-prompt)h Ft(v)-5
+b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
+1559 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)1110 1669 y(vi)35
+b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)
+54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 1778 y(panded)26
+b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g
+(meta-)h(and)e(con)m(trol)1110 1888 y(pre\014xes)34 b(and)g(bac)m
+(kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57
+b(Use)35 b(the)g(`)p Fs(\\1)p Ft(')1110 1998 y(and)23
+b(`)p Fs(\\2)p Ft(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g
+(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 2107
+y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h
+(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2217
+y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
+Fs(\(ins\))p Ft('.)630 2381 y Fs(visible-stats)1110 2491
+y Ft(If)h(set)i(to)f(`)p Fs(on)p Ft(',)h(a)f(c)m(haracter)i(denoting)e
+(a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the)1110
+2600 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42
+b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)150 2765
+y(Key)f(Bindings)630 2874 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h
+(k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75
+b(First)43 b(y)m(ou)630 2984 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)
+h(the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41
+b(The)27 b(follo)m(wing)630 3093 y(sections)37 b(con)m(tain)g(tables)g
+(of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an)
+m(y)-8 b(,)630 3203 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 3340 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g
+(name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g
+(the)g(init)630 3450 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m
+(ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)
+630 3559 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g
-(and)630 3376 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
+(and)630 3669 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
(terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72
-b(The)40 b(name)h(of)630 3485 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
+b(The)40 b(name)h(of)630 3778 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
(expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h
-(what)h(y)m(ou)g(\014nd)e(most)630 3595 y(comfortable.)630
-3721 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h
+(what)h(y)m(ou)g(\014nd)e(most)630 3888 y(comfortable.)630
+4025 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h
(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630
-3831 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g
-(\(a)h Fj(macro)5 b Ft(\).)630 3974 y Fj(k)m(eyname)g
+4134 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g
+(\(a)h Fj(macro)5 b Ft(\).)630 4299 y Fj(k)m(eyname)g
Ft(:)42 b Fj(function-name)35 b Ft(or)c Fj(macro)1110
-4084 y(k)m(eyname)k Ft(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s
+4408 y(k)m(eyname)k Ft(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s
(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350
-4210 y Fs(Control-u:)45 b(universal-argument)1350 4320
-y(Meta-Rubout:)f(backward-kill-word)1350 4430 y(Control-o:)h(">)i
-(output")1110 4556 y Ft(In)94 b(the)g(ab)s(o)m(v)m(e)i(example,)111
+4545 y Fs(Control-u:)45 b(universal-argument)1350 4655
+y(Meta-Rubout:)f(backward-kill-word)1350 4765 y(Control-o:)h(">)i
+(output")1110 4902 y Ft(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112
b Fl(C-u)94 b Ft(is)g(b)s(ound)f(to)i(the)f(function)1110
-4666 y Fs(universal-argument)p Ft(,)124 b Fl(M-DEL)107
-b Ft(is)i(b)s(ound)e(to)j(the)f(function)1110 4775 y
+5011 y Fs(universal-argument)p Ft(,)124 b Fl(M-DEL)107
+b Ft(is)i(b)s(ound)e(to)j(the)f(function)1110 5121 y
Fs(backward-kill-word)p Ft(,)75 b(and)69 b Fl(C-o)g Ft(is)h(b)s(ound)e
-(to)j(run)d(the)i(macro)1110 4885 y(expressed)45 b(on)h(the)g(righ)m(t)
+(to)j(run)d(the)i(macro)1110 5230 y(expressed)45 b(on)h(the)g(righ)m(t)
g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p
-Fs(>)1110 4994 y(output)p Ft(')29 b(in)m(to)i(the)g(line\).)1110
-5121 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g
-(names)f(are)g(recognized)h(while)1110 5230 y(pro)s(cessing)40
-b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 b Fj(DEL)p
-Ft(,)42 b Fj(ESC)p Ft(,)g Fj(ESCAPE)p Ft(,)f Fj(LFD)p
-Ft(,)1110 5340 y Fj(NEWLINE)p Ft(,)31 b Fj(RET)p Ft(,)f
-Fj(RETURN)p Ft(,)g Fj(R)m(UBOUT)p Ft(,)h Fj(SP)-8 b(A)m(CE)p
-Ft(,)31 b Fj(SPC)p Ft(,)e(and)h Fj(T)-8 b(AB)p Ft(.)p
+Fs(>)1110 5340 y(output)p Ft(')29 b(in)m(to)i(the)g(line\).)p
eop end
%%Page: 11 15
TeXDict begin 11 14 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(11)630 299 y Fs(")p
-Fj(k)m(eyseq)r Fs(")p Ft(:)41 b Fj(function-name)36 b
-Ft(or)30 b Fj(macro)1110 408 y(k)m(eyseq)k Ft(di\013ers)d(from)f
-Fj(k)m(eyname)37 b Ft(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f
-(denoting)g(an)g(en-)1110 518 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)
-f(sp)s(eci\014ed,)h(b)m(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110
-628 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h Ft(Emacs)f(st)m(yle)i
-(k)m(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110
-737 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s(ecial)h(c)m
-(haracter)g(names)f(are)g(not)1110 847 y(recognized.)1350
-981 y Fs("\\C-u":)46 b(universal-argument)1350 1091 y("\\C-x\\C-r":)f
-(re-read-init-file)1350 1200 y("\\e[11~":)g("Function)h(Key)g(1")1110
-1334 y Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74
-b Fl(C-u)64 b Ft(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110
-1444 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)g(w)m(as)g(in)g
-(the)f(\014rst)g(example\),)49 b(`)p Fl(C-x)1110 1554
+b(Command)29 b(Line)i(Editing)2107 b(11)1110 299 y(A)62
+b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g(names)f(are)g
+(recognized)h(while)1110 408 y(pro)s(cessing)40 b(this)f(k)m(ey)i
+(binding)e(syn)m(tax:)60 b Fj(DEL)p Ft(,)42 b Fj(ESC)p
+Ft(,)g Fj(ESCAPE)p Ft(,)f Fj(LFD)p Ft(,)1110 518 y Fj(NEWLINE)p
+Ft(,)31 b Fj(RET)p Ft(,)f Fj(RETURN)p Ft(,)g Fj(R)m(UBOUT)p
+Ft(,)h Fj(SP)-8 b(A)m(CE)p Ft(,)31 b Fj(SPC)p Ft(,)e(and)h
+Fj(T)-8 b(AB)p Ft(.)630 677 y Fs(")p Fj(k)m(eyseq)r Fs(")p
+Ft(:)41 b Fj(function-name)36 b Ft(or)30 b Fj(macro)1110
+787 y(k)m(eyseq)k Ft(di\013ers)d(from)f Fj(k)m(eyname)37
+b Ft(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110
+896 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m(y)
+f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 1006 y(double)29
+b(quotes.)41 b(Some)29 b Fm(gnu)h Ft(Emacs)f(st)m(yle)i(k)m(ey)f(escap)
+s(es)g(can)g(b)s(e)f(used,)g(as)1110 1115 y(in)k(the)h(follo)m(wing)i
+(example,)f(but)e(the)h(sp)s(ecial)h(c)m(haracter)g(names)f(are)g(not)
+1110 1225 y(recognized.)1350 1359 y Fs("\\C-u":)46 b
+(universal-argument)1350 1469 y("\\C-x\\C-r":)f(re-read-init-file)1350
+1578 y("\\e[11~":)g("Function)h(Key)g(1")1110 1713 y
+Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 b Fl(C-u)64
+b Ft(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110
+1822 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)g(w)m(as)g(in)g
+(the)f(\014rst)g(example\),)49 b(`)p Fl(C-x)1110 1932
y(C-r)p Ft(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f
Fs(re-read-init-file)p Ft(,)c(and)j(`)p Fs(ESC)h([)g(1)g(1)1110
-1663 y(~)p Ft(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
-Fs(Function)e(Key)g(1)p Ft('.)630 1822 y(The)g(follo)m(wing)i
+2041 y(~)p Ft(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
+Fs(Function)e(Key)g(1)p Ft('.)630 2200 y(The)g(follo)m(wing)i
Fm(gnu)f Ft(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5
-b(ailable)32 b(when)d(sp)s(ecifying)630 1932 y(k)m(ey)i(sequences:)630
-2091 y Fl(\\C-)336 b Ft(con)m(trol)32 b(pre\014x)630
-2250 y Fl(\\M-)336 b Ft(meta)31 b(pre\014x)630 2408 y
+b(ailable)32 b(when)d(sp)s(ecifying)630 2310 y(k)m(ey)i(sequences:)630
+2469 y Fl(\\C-)336 b Ft(con)m(trol)32 b(pre\014x)630
+2628 y Fl(\\M-)336 b Ft(meta)31 b(pre\014x)630 2787 y
Fl(\\e)384 b Ft(an)30 b(escap)s(e)h(c)m(haracter)630
-2567 y Fl(\\\\)384 b Ft(bac)m(kslash)630 2726 y Fl(\\)p
+2945 y Fl(\\\\)384 b Ft(bac)m(kslash)630 3104 y Fl(\\)p
Fs(")g(")p Ft(,)30 b(a)h(double)f(quotation)i(mark)630
-2885 y Fl(\\')384 b Fs(')p Ft(,)30 b(a)h(single)g(quote)g(or)f(ap)s
-(ostrophe)630 3044 y(In)d(addition)h(to)g(the)g Fm(gnu)f
+3263 y Fl(\\')384 b Fs(')p Ft(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe)630 3422 y(In)d(addition)h(to)g(the)g Fm(gnu)f
Ft(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g
-(bac)m(kslash)630 3154 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
-3313 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 3471
-y Fs(\\b)384 b Ft(bac)m(kspace)630 3630 y Fs(\\d)g Ft(delete)630
-3789 y Fs(\\f)g Ft(form)30 b(feed)630 3948 y Fs(\\n)384
-b Ft(newline)630 4107 y Fs(\\r)g Ft(carriage)32 b(return)630
-4266 y Fs(\\t)384 b Ft(horizon)m(tal)32 b(tab)630 4425
-y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630 4584 y Fs(\\)p
+(bac)m(kslash)630 3532 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
+3691 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 3850
+y Fs(\\b)384 b Ft(bac)m(kspace)630 4008 y Fs(\\d)g Ft(delete)630
+4167 y Fs(\\f)g Ft(form)30 b(feed)630 4326 y Fs(\\n)384
+b Ft(newline)630 4485 y Fs(\\r)g Ft(carriage)32 b(return)630
+4644 y Fs(\\t)384 b Ft(horizon)m(tal)32 b(tab)630 4803
+y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630 4962 y Fs(\\)p
Fl(nnn)288 b Ft(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5
b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fj(nnn)e
-Ft(\(one)i(to)1110 4693 y(three)c(digits\))630 4852 y
+Ft(\(one)i(to)1110 5071 y(three)c(digits\))630 5230 y
Fs(\\x)p Fl(HH)288 b Ft(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e
(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39
-b Fj(HH)1110 4962 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630
-5121 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e
-(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630
-5230 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21
-b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f(name.)38
-b(In)630 5340 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23
-b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m(e)j
-(are)e(expanded.)37 b(Bac)m(kslash)p eop end
+b Fj(HH)1110 5340 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))p
+eop end
%%Page: 12 16
TeXDict begin 12 15 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(12)630 299 y(will)40
-b(quote)h(an)m(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k
-(including)39 b(`)p Fs(")p Ft(')h(and)g(`)p Fs(')p Ft('.)69
-b(F)-8 b(or)630 408 y(example,)28 b(the)e(follo)m(wing)h(binding)d
-(will)i(mak)m(e)h(`)p Fl(C-x)j Fs(\\)p Ft(')c(insert)f(a)h(single)h(`)p
-Fs(\\)p Ft(')f(in)m(to)g(the)g(line:)870 536 y Fs("\\C-x\\\\":)45
-b("\\\\")150 721 y Fi(1.3.2)63 b(Conditional)41 b(Init)g(Constructs)150
-868 y Ft(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f(in)g
-(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150
-978 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g
-(bindings)d(and)h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s
-(erformed)f(as)i(the)150 1087 y(result)f(of)h(tests.)41
-b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150
-1233 y Fs($if)336 b Ft(The)31 b Fs($if)f Ft(construct)i(allo)m(ws)h
-(bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g
-(the)630 1342 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g
-(application)h(using)f(Readline.)64 b(The)38 b(text)h(of)f(the)g(test)
-630 1452 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m
-(haracters)i(are)f(required)e(to)i(isolate)i(it.)630
-1597 y Fs(mode)288 b Ft(The)30 b Fs(mode=)e Ft(form)i(of)g(the)h
-Fs($if)e Ft(directiv)m(e)j(is)e(used)f(to)i(test)g(whether)e(Read-)1110
-1707 y(line)44 b(is)f(in)g Fs(emacs)f Ft(or)h Fs(vi)g
-Ft(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g(conjunction)
-1110 1816 y(with)c(the)h(`)p Fs(set)29 b(keymap)p Ft(')38
-b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110
-1926 y(the)32 b Fs(emacs-standard)c Ft(and)j Fs(emacs-ctlx)d
-Ft(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 2036 y(starting)f(out)g
-(in)f Fs(emacs)f Ft(mo)s(de.)630 2181 y Fs(term)288 b
+b(Command)29 b(Line)i(Editing)2107 b(12)630 299 y(When)37
+b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e(or)f(double)g
+(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 408 y(indicate)23
+b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 b(text)i(is)e(assumed)g
+(to)h(b)s(e)f(a)h(function)f(name.)38 b(In)630 518 y(the)22
+b(macro)f(b)s(o)s(dy)-8 b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g
+(describ)s(ed)e(ab)s(o)m(v)m(e)j(are)e(expanded.)37 b(Bac)m(kslash)630
+628 y(will)j(quote)h(an)m(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f
+(text,)k(including)39 b(`)p Fs(")p Ft(')h(and)g(`)p Fs(')p
+Ft('.)69 b(F)-8 b(or)630 737 y(example,)28 b(the)e(follo)m(wing)h
+(binding)d(will)i(mak)m(e)h(`)p Fl(C-x)j Fs(\\)p Ft(')c(insert)f(a)h
+(single)h(`)p Fs(\\)p Ft(')f(in)m(to)g(the)g(line:)870
+873 y Fs("\\C-x\\\\":)45 b("\\\\")150 1073 y Fi(1.3.2)63
+b(Conditional)41 b(Init)g(Constructs)150 1220 y Ft(Readline)c(implemen)
+m(ts)g(a)h(facilit)m(y)g(similar)f(in)g(spirit)f(to)i(the)f
+(conditional)h(compilation)g(features)f(of)150 1330 y(the)31
+b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g(bindings)d(and)
+h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s(erformed)f(as)i(the)
+150 1440 y(result)f(of)h(tests.)41 b(There)30 b(are)h(four)f(parser)f
+(directiv)m(es)j(used.)150 1601 y Fs($if)336 b Ft(The)31
+b Fs($if)f Ft(construct)i(allo)m(ws)h(bindings)d(to)i(b)s(e)e(made)i
+(based)f(on)g(the)g(editing)h(mo)s(de,)g(the)630 1711
+y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h(application)g(using)f
+(Readline.)59 b(The)36 b(text)h(of)f(the)h(test,)630
+1821 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f(to)h
+(the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630
+1930 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i
+(it.)630 2091 y Fs(mode)288 b Ft(The)30 b Fs(mode=)e
+Ft(form)i(of)g(the)h Fs($if)e Ft(directiv)m(e)j(is)e(used)f(to)i(test)g
+(whether)e(Read-)1110 2201 y(line)44 b(is)f(in)g Fs(emacs)f
+Ft(or)h Fs(vi)g Ft(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g
+(conjunction)1110 2311 y(with)c(the)h(`)p Fs(set)29 b(keymap)p
+Ft(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110
+2420 y(the)32 b Fs(emacs-standard)c Ft(and)j Fs(emacs-ctlx)d
+Ft(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 2530 y(starting)f(out)g
+(in)f Fs(emacs)f Ft(mo)s(de.)630 2691 y Fs(term)288 b
Ft(The)26 b Fs(term=)g Ft(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f
-(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 2291 y(ings,)38
+(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 2800 y(ings,)38
b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g
-(the)g(terminal's)1110 2400 y(function)24 b(k)m(eys.)39
+(the)g(terminal's)1110 2910 y(function)24 b(k)m(eys.)39
b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p
-Fs(=)p Ft(')g(is)g(tested)h(against)1110 2510 y(b)s(oth)k(the)h(full)g
+Fs(=)p Ft(')g(is)g(tested)h(against)1110 3020 y(b)s(oth)k(the)h(full)g
(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g
-(terminal)1110 2619 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
+(terminal)1110 3129 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
Fs(-)p Ft('.)50 b(This)33 b(allo)m(ws)i Fs(sun)e Ft(to)h(matc)m(h)g(b)s
-(oth)f Fs(sun)g Ft(and)1110 2729 y Fs(sun-cmd)p Ft(,)c(for)h(instance.)
-630 2874 y Fs(application)1110 2984 y Ft(The)21 b Fj(application)j
+(oth)f Fs(sun)g Ft(and)1110 3239 y Fs(sun-cmd)p Ft(,)c(for)h(instance.)
+630 3400 y Fs(version)144 b Ft(The)44 b Fs(version)f
+Ft(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i
+(against)1110 3509 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74
+b(The)42 b Fs(version)d Ft(expands)i(to)h(the)g(curren)m(t)1110
+3619 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h
+(op)s(erators)f(includes)f(`)p Fs(=)p Ft(')h(\(and)1110
+3729 y(`)p Fs(==)p Ft('\),)33 b(`)p Fs(!=)p Ft(',)f(`)p
+Fs(<=)p Ft(',)h(`)p Fs(>=)p Ft(',)f(`)p Fs(<)p Ft(',)h(and)e(`)p
+Fs(>)p Ft('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h
+(on)1110 3838 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g
+(consists)h(of)f(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110
+3948 y(an)45 b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44
+b(an)i(optional)g(minor)f(v)m(ersion)h(\(e.g.,)1110 4057
+y(`)p Fs(7.1)p Ft('\).)40 b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g
+(omitted,)h(it)f(is)g(assumed)f(to)h(b)s(e)f(`)p Fs(0)p
+Ft('.)40 b(The)1110 4167 y(op)s(erator)34 b(ma)m(y)g(b)s(e)f(separated)
+g(from)g(the)h(string)f Fs(version)f Ft(and)h(from)g(the)1110
+4276 y(v)m(ersion)39 b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f
+(whitespace.)67 b(The)38 b(follo)m(wing)i(example)1110
+4386 y(sets)31 b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m
+(ersion)f(b)s(eing)g(used)g(is)g(7.0)i(or)e(new)m(er:)1350
+4521 y Fs($if)47 b(version)f(>=)h(7.0)1350 4631 y(set)g
+(show-mode-in-prompt)42 b(on)1350 4741 y($endif)630 4902
+y(application)1110 5011 y Ft(The)21 b Fj(application)j
Ft(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h
-(set-)1110 3093 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
+(set-)1110 5121 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
(Readline)g(library)g(sets)g(the)g Fj(application)1110
-3203 y(name)p Ft(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
+5230 y(name)p Ft(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110
-3313 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h
-(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 3422
-y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f
-(sequence)h(that)f(quotes)1110 3532 y(the)e(curren)m(t)f(or)g(previous)
-g(w)m(ord)g(in)g(Bash:)1350 3659 y Fs($if)47 b(Bash)1350
-3769 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350
-3878 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 3988 y($endif)150
-4133 y($endif)192 b Ft(This)29 b(command,)i(as)f(seen)h(in)f(the)g
-(previous)g(example,)h(terminates)g(an)g Fs($if)e Ft(command.)150
-4279 y Fs($else)240 b Ft(Commands)29 b(in)h(this)h(branc)m(h)e(of)i
+5340 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h
+(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)p eop end
+%%Page: 13 17
+TeXDict begin 13 16 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(13)1110 299 y(instance,)35
+b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f(sequence)h(that)f
+(quotes)1110 408 y(the)e(curren)m(t)f(or)g(previous)g(w)m(ord)g(in)g
+(Bash:)1350 543 y Fs($if)47 b(Bash)1350 653 y(#)g(Quote)g(the)g
+(current)f(or)h(previous)e(word)1350 762 y("\\C-xq":)h
+("\\eb\\"\\ef\\"")1350 872 y($endif)630 1031 y(variable)96
+b Ft(The)33 b Fj(v)-5 b(ariable)39 b Ft(construct)33
+b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g(Readline)1110
+1141 y(v)-5 b(ariables)32 b(and)f(v)-5 b(alues.)45 b(The)32
+b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i(`)p
+Fs(=)p Ft(',)1110 1250 y(`)p Fs(==)p Ft(',)49 b(and)44
+b(`)p Fs(!=)p Ft('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g
+(b)s(e)g(separated)g(from)g(the)1110 1360 y(comparison)25
+b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s
+(e)f(separated)1110 1469 y(from)33 b(the)h(v)-5 b(alue)35
+b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52
+b(Both)35 b(string)1110 1579 y(and)i(b)s(o)s(olean)g(v)-5
+b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39
+b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 1689 y(tested)46
+b(against)g(the)f(v)-5 b(alues)46 b Fj(on)f Ft(and)f
+Fj(o\013)p Ft(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110
+1798 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Fs(mode=emacs)e
+Ft(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 1933 y
+Fs($if)47 b(editing-mode)d(==)k(emacs)1350 2042 y(set)f
+(show-mode-in-prompt)42 b(on)1350 2152 y($endif)150 2311
+y($endif)192 b Ft(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous)
+g(example,)h(terminates)g(an)g Fs($if)e Ft(command.)150
+2471 y Fs($else)240 b Ft(Commands)29 b(in)h(this)h(branc)m(h)e(of)i
(the)f Fs($if)g Ft(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g
-(fails.)150 4424 y Fs($include)96 b Ft(This)43 b(directiv)m(e)i(tak)m
+(fails.)150 2630 y Fs($include)96 b Ft(This)43 b(directiv)m(e)i(tak)m
(es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g
-(commands)630 4534 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
+(commands)630 2740 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e
-(from)630 4643 y Fs(/etc/inputrc)p Ft(:)870 4771 y Fs($include)46
-b(/etc/inputrc)150 4956 y Fi(1.3.3)63 b(Sample)41 b(Init)g(File)150
-5103 y Ft(Here)27 b(is)f(an)h(example)g(of)f(an)h Fj(inputrc)k
+(from)630 2849 y Fs(/etc/inputrc)p Ft(:)870 2984 y Fs($include)46
+b(/etc/inputrc)150 3183 y Fi(1.3.3)63 b(Sample)41 b(Init)g(File)150
+3330 y Ft(Here)27 b(is)f(an)h(example)g(of)f(an)h Fj(inputrc)k
Ft(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5
-b(ariable)27 b(assignmen)m(t,)i(and)150 5212 y(conditional)j(syn)m
+b(ariable)27 b(assignmen)m(t,)i(and)150 3440 y(conditional)j(syn)m
(tax.)p eop end
-%%Page: 13 17
-TeXDict begin 13 16 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(13)p eop end
%%Page: 14 18
TeXDict begin 14 17 bop 150 -116 a Ft(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2107 b(14)390 408 y Fs(#)47
@@ -7790,2859 +7856,2956 @@ TeXDict begin 16 19 bop 150 -116 a Ft(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2107 b(16)390 299 y Fs(#)47
b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390
628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390
-847 y($endif)150 1085 y Fr(1.4)68 b(Bindable)45 b(Readline)i(Commands)
-150 1244 y Ft(This)25 b(section)i(describ)s(es)d(Readline)j(commands)e
+847 y($endif)150 1089 y Fr(1.4)68 b(Bindable)45 b(Readline)i(Commands)
+150 1248 y Ft(This)25 b(section)i(describ)s(es)d(Readline)j(commands)e
(that)h(ma)m(y)g(b)s(e)f(b)s(ound)f(to)i(k)m(ey)h(sequences.)39
-b(Command)150 1354 y(names)30 b(without)h(an)f(accompan)m(ying)i(k)m
+b(Command)150 1358 y(names)30 b(without)h(an)f(accompan)m(ying)i(k)m
(ey)f(sequence)g(are)g(un)m(b)s(ound)c(b)m(y)k(default.)275
-1487 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fj(p)s(oin)m(t)h
+1493 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fj(p)s(oin)m(t)h
Ft(refers)e(to)h(the)f(curren)m(t)g(cursor)g(p)s(osition,)h(and)f
-Fj(mark)31 b Ft(refers)150 1597 y(to)40 b(a)f(cursor)f(p)s(osition)h
+Fj(mark)31 b Ft(refers)150 1603 y(to)40 b(a)f(cursor)f(p)s(osition)h
(sa)m(v)m(ed)h(b)m(y)f(the)g Fs(set-mark)d Ft(command.)66
b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f(p)s(oin)m(t)g(and)150
-1706 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f Fj(region)p
-Ft(.)150 1903 y Fi(1.4.1)63 b(Commands)42 b(F)-10 b(or)41
-b(Mo)m(ving)150 2074 y Fs(beginning-of-line)26 b(\(C-a\))630
-2183 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(curren)m(t)g
-(line.)150 2340 y Fs(end-of-line)d(\(C-e\))630 2450 y
+1713 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f Fj(region)p
+Ft(.)150 1913 y Fi(1.4.1)63 b(Commands)42 b(F)-10 b(or)41
+b(Mo)m(ving)150 2085 y Fs(beginning-of-line)26 b(\(C-a\))630
+2195 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(curren)m(t)g
+(line.)150 2355 y Fs(end-of-line)d(\(C-e\))630 2464 y
Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150
-2607 y Fs(forward-char)c(\(C-f\))630 2716 y Ft(Mo)m(v)m(e)32
-b(forw)m(ard)e(a)h(c)m(haracter.)150 2873 y Fs(backward-char)c(\(C-b\))
-630 2983 y Ft(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150
-3140 y Fs(forward-word)d(\(M-f\))630 3249 y Ft(Mo)m(v)m(e)32
+2625 y Fs(forward-char)c(\(C-f\))630 2734 y Ft(Mo)m(v)m(e)32
+b(forw)m(ard)e(a)h(c)m(haracter.)150 2895 y Fs(backward-char)c(\(C-b\))
+630 3004 y Ft(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150
+3165 y Fs(forward-word)d(\(M-f\))630 3274 y Ft(Mo)m(v)m(e)32
b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41
b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630
-3359 y(digits.)150 3516 y Fs(backward-word)27 b(\(M-b\))630
-3625 y Ft(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g
+3384 y(digits.)150 3544 y Fs(backward-word)27 b(\(M-b\))630
+3654 y Ft(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g
(curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34
-b(are)g(comp)s(osed)630 3735 y(of)d(letters)g(and)f(digits.)150
-3892 y Fs(clear-screen)d(\(C-l\))630 4001 y Ft(Clear)g(the)g(screen)f
-(and)h(redra)m(w)f(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f
-(curren)m(t)g(line)g(at)g(the)g(top)630 4111 y(of)k(the)f(screen.)150
-4268 y Fs(redraw-current-line)25 b(\(\))630 4377 y Ft(Refresh)30
+b(are)g(comp)s(osed)630 3763 y(of)d(letters)g(and)f(digits.)150
+3923 y Fs(previous-screen-line)25 b(\(\))630 4033 y Ft(A)m(ttempt)41
+b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e(to)h(the)f(same)h(ph)m(ysical)g
+(screen)f(column)g(on)g(the)g(previous)630 4143 y(ph)m(ysical)26
+b(screen)f(line.)39 b(This)24 b(will)i(not)f(ha)m(v)m(e)h(the)f
+(desired)g(e\013ect)h(if)f(the)h(curren)m(t)e(Readline)630
+4252 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d(more)i(than)f(one)g(ph)m
+(ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f(not)h(greater)g(than)630
+4362 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i(screen)f(width.)
+150 4522 y Fs(next-screen-line)c(\(\))630 4632 y Ft(A)m(ttempt)g(to)f
+(mo)m(v)m(e)i(p)s(oin)m(t)d(to)i(the)e(same)i(ph)m(ysical)f(screen)g
+(column)f(on)h(the)f(next)h(ph)m(ysical)630 4741 y(screen)e(line.)39
+b(This)23 b(will)g(not)h(ha)m(v)m(e)h(the)e(desired)g(e\013ect)i(if)e
+(the)g(curren)m(t)h(Readline)g(line)f(do)s(es)630 4851
+y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m(ysical)h(line)g(or)f
+(if)g(the)h(length)f(of)h(the)f(curren)m(t)g(Readline)630
+4960 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g(of)f(the)h
+(prompt)e(plus)h(the)g(screen)h(width.)150 5121 y Fs(clear-screen)c
+(\(C-l\))630 5230 y Ft(Clear)g(the)g(screen)f(and)h(redra)m(w)f(the)h
+(curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)g(line)g(at)g(the)g
+(top)630 5340 y(of)k(the)f(screen.)p eop end
+%%Page: 17 21
+TeXDict begin 17 20 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(17)150 299 y Fs
+(redraw-current-line)25 b(\(\))630 408 y Ft(Refresh)30
b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s
-(ound.)150 4574 y Fi(1.4.2)63 b(Commands)42 b(F)-10 b(or)41
-b(Manipulating)h(The)f(History)150 4745 y Fs(accept-line)27
-b(\(Newline)h(or)i(Return\))630 4854 y Ft(Accept)36 b(the)g(line)f
+(ound.)150 596 y Fi(1.4.2)63 b(Commands)42 b(F)-10 b(or)41
+b(Manipulating)h(The)f(History)150 761 y Fs(accept-line)27
+b(\(Newline)h(or)i(Return\))630 871 y Ft(Accept)36 b(the)g(line)f
(regardless)h(of)f(where)g(the)g(cursor)g(is.)55 b(If)34
b(this)h(line)h(is)f(non-empt)m(y)-8 b(,)37 b(it)630
-4964 y(ma)m(y)32 b(b)s(e)g(added)f(to)h(the)g(history)g(list)h(for)e
+981 y(ma)m(y)32 b(b)s(e)g(added)f(to)h(the)g(history)g(list)h(for)e
(future)g(recall)j(with)d Fs(add_history\(\))p Ft(.)42
-b(If)31 b(this)630 5074 y(line)g(is)f(a)h(mo)s(di\014ed)e(history)h
+b(If)31 b(this)630 1090 y(line)g(is)f(a)h(mo)s(di\014ed)e(history)h
(line,)h(the)g(history)f(line)h(is)f(restored)h(to)g(its)g(original)g
-(state.)150 5230 y Fs(previous-history)26 b(\(C-p\))630
-5340 y Ft(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g
-(fetc)m(hing)g(the)g(previous)f(command.)p eop end
-%%Page: 17 21
-TeXDict begin 17 20 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(17)150 299 y Fs(next-history)27
-b(\(C-n\))630 408 y Ft(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i
+(state.)150 1237 y Fs(previous-history)26 b(\(C-p\))630
+1347 y Ft(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g
+(fetc)m(hing)g(the)g(previous)f(command.)150 1494 y Fs(next-history)d
+(\(C-n\))630 1604 y Ft(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i
(history)f(list,)i(fetc)m(hing)f(the)g(next)f(command.)150
-558 y Fs(beginning-of-history)25 b(\(M-<\))630 667 y
-Ft(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8
-b(.)150 817 y Fs(end-of-history)26 b(\(M->\))630 927
+1751 y Fs(beginning-of-history)25 b(\(M-<\))630 1861
+y Ft(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8
+b(.)150 2008 y Fs(end-of-history)26 b(\(M->\))630 2117
y Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8
b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150
-1076 y Fs(reverse-search-history)24 b(\(C-r\))630 1186
+2265 y Fs(reverse-search-history)24 b(\(C-r\))630 2374
y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g
(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630
-1295 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 b(is)i(an)f(incremen)m
-(tal)i(searc)m(h.)150 1445 y Fs(forward-search-history)24
-b(\(C-s\))630 1554 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+2484 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 b(is)i(an)f(incremen)m
+(tal)i(searc)m(h.)150 2631 y Fs(forward-search-history)24
+b(\(C-s\))630 2741 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)
-630 1664 y(history)30 b(as)h(necessary)-8 b(.)41 b(This)30
-b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 1813 y Fs
+630 2850 y(history)30 b(as)h(necessary)-8 b(.)41 b(This)30
+b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 2998 y Fs
(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-p\))630 1923 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
+b(\(M-p\))630 3107 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g
-(his-)630 2032 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m
+(his-)630 3217 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m
(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630
-2142 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m
-(ywhere)g(in)f(a)h(history)f(line.)150 2291 y Fs
+3326 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m
+(ywhere)g(in)f(a)h(history)f(line.)150 3474 y Fs
(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-n\))630 2401 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+b(\(M-n\))630 3583 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)
-630 2511 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m
+630 3693 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m
(tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i(the)630
-2620 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)
-m(ywhere)g(in)f(a)h(history)f(line.)150 2770 y Fs
-(history-search-forward)24 b(\(\))630 2879 y Ft(Searc)m(h)42
+3802 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)
+m(ywhere)g(in)f(a)h(history)f(line.)150 3950 y Fs
+(history-search-forward)24 b(\(\))630 4059 y Ft(Searc)m(h)42
b(forw)m(ard)f(through)f(the)i(history)f(for)g(the)h(string)f(of)h(c)m
-(haracters)h(b)s(et)m(w)m(een)f(the)630 2989 y(start)36
+(haracters)h(b)s(et)m(w)m(een)f(the)630 4169 y(start)36
b(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)58
b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630
-3098 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
+4278 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48
-b(By)33 b(default,)g(this)630 3208 y(command)d(is)h(un)m(b)s(ound.)150
-3357 y Fs(history-search-backward)24 b(\(\))630 3467
+b(By)33 b(default,)g(this)630 4388 y(command)d(is)h(un)m(b)s(ound.)150
+4535 y Fs(history-search-backward)24 b(\(\))630 4645
y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g
(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630
-3577 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)
+4754 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)
58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630
-3686 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
+4864 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48
-b(By)33 b(default,)g(this)630 3796 y(command)d(is)h(un)m(b)s(ound.)150
-3945 y Fs(history-substr-search-fo)o(rwar)o(d)24 b(\(\))630
-4055 y Ft(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g
+b(By)33 b(default,)g(this)630 4974 y(command)d(is)h(un)m(b)s(ound.)150
+5121 y Fs(history-substring-search)o(-for)o(ward)24 b(\(\))630
+5230 y Ft(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g
(the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f(the)630
-4164 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
-(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere)
-630 4274 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h
-(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e
-(command)630 4384 y(is)e(un)m(b)s(ound.)150 4533 y Fs
-(history-substr-search-ba)o(ckwa)o(rd)24 b(\(\))630 4643
-y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g
-(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630
-4752 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
+5340 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere)
-630 4862 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h
-(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e
-(command)630 4971 y(is)e(un)m(b)s(ound.)150 5121 y Fs(yank-nth-arg)d
-(\(M-C-y\))630 5230 y Ft(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f
-(the)h(previous)e(command)h(\(usually)g(the)g(second)g(w)m(ord)630
-5340 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46
-b(With)32 b(an)g(argumen)m(t)g Fj(n)p Ft(,)g(insert)g(the)g
-Fj(n)p Ft(th)f(w)m(ord)g(from)p eop end
+p eop end
%%Page: 18 22
TeXDict begin 18 21 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(18)630 299 y(the)35
-b(previous)f(command)h(\(the)g(w)m(ords)g(in)f(the)h(previous)g
-(command)f(b)s(egin)h(with)f(w)m(ord)630 408 y(0\).)69
-b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f
+b(Command)29 b(Line)i(Editing)2107 b(18)630 299 y(in)32
+b(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h
+(searc)m(h.)47 b(By)33 b(default,)h(this)e(command)630
+408 y(is)e(un)m(b)s(ound.)150 573 y Fs(history-substring-search)o(-bac)
+o(kwar)o(d)24 b(\(\))630 683 y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g
+(through)f(the)h(history)g(for)g(the)f(string)h(of)g(c)m(haracters)h(b)
+s(et)m(w)m(een)g(the)630 793 y(start)29 b(of)g(the)g(curren)m(t)g(line)
+g(and)f(the)h(p)s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g
+(matc)m(h)h(an)m(ywhere)630 902 y(in)i(a)h(history)g(line.)47
+b(This)32 b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47
+b(By)33 b(default,)h(this)e(command)630 1012 y(is)e(un)m(b)s(ound.)150
+1177 y Fs(yank-nth-arg)d(\(M-C-y\))630 1286 y Ft(Insert)37
+b(the)g(\014rst)f(argumen)m(t)i(to)f(the)h(previous)e(command)h
+(\(usually)g(the)g(second)g(w)m(ord)630 1396 y(on)32
+b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 b(With)32
+b(an)g(argumen)m(t)g Fj(n)p Ft(,)g(insert)g(the)g Fj(n)p
+Ft(th)f(w)m(ord)g(from)630 1506 y(the)k(previous)f(command)h(\(the)g(w)
+m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f(w)m(ord)630
+1615 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f
Fj(n)p Ft(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630
-518 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fj(n)e
+1725 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fj(n)e
Ft(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630
-628 y(the)e(`)p Fs(!)p Fl(n)p Ft(')f(history)g(expansion)g(had)g(b)s
-(een)g(sp)s(eci\014ed.)150 775 y Fs(yank-last-arg)d(\(M-.)i(or)h(M-_\))
-630 885 y Ft(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous)f
-(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630
-994 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
+1834 y(the)e(`)p Fs(!)p Fl(n)p Ft(')f(history)g(expansion)g(had)g(b)s
+(een)g(sp)s(eci\014ed.)150 1999 y Fs(yank-last-arg)d(\(M-.)i(or)h
+(M-_\))630 2109 y Ft(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous)
+f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630
+2218 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
(t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Fs(yank-nth-arg)p
-Ft(.)630 1104 y(Successiv)m(e)26 b(calls)g(to)f Fs(yank-last-arg)c
+Ft(.)630 2328 y(Successiv)m(e)26 b(calls)g(to)f Fs(yank-last-arg)c
Ft(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i
-(inserting)630 1214 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
+(inserting)630 2438 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i
-(of)f(eac)m(h)h(line)630 1323 y(in)36 b(turn.)58 b(An)m(y)36
+(of)f(eac)m(h)h(line)630 2547 y(in)36 b(turn.)58 b(An)m(y)36
b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g
-(calls)h(determines)630 1433 y(the)d(direction)g(to)h(mo)m(v)m(e)g
+(calls)h(determines)630 2657 y(the)d(direction)g(to)h(mo)m(v)m(e)g
(through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e
-(switc)m(hes)h(the)630 1542 y(direction)23 b(through)g(the)g(history)f
+(switc)m(hes)h(the)630 2766 y(direction)23 b(through)g(the)g(history)f
(\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g
-(facilities)630 1652 y(are)28 b(used)f(to)h(extract)h(the)f(last)g
+(facilities)630 2876 y(are)28 b(used)f(to)h(extract)h(the)f(last)g
(argumen)m(t,)h(as)e(if)h(the)g(`)p Fs(!$)p Ft(')f(history)g(expansion)
-h(had)f(b)s(een)630 1762 y(sp)s(eci\014ed.)150 1949 y
+h(had)f(b)s(een)630 2986 y(sp)s(eci\014ed.)150 3190 y
Fi(1.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10
-b(ext)150 2115 y Fl(end-of-file)27 b Fs(\(usually)h(C-d\))630
-2225 y Ft(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
+b(ext)150 3365 y Fl(end-of-file)27 b Fs(\(usually)h(C-d\))630
+3475 y Ft(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
(for)f(example,)i(b)m(y)e Fs(stty)p Ft(.)39 b(If)25 b(this)h(c)m
-(harac-)630 2334 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
+(harac-)630 3584 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
(haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s
-(eginning)630 2444 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
+(eginning)630 3694 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
(it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fm(eof)p
-Ft(.)150 2591 y Fs(delete-char)e(\(C-d\))630 2701 y Ft(Delete)35
+Ft(.)150 3859 y Fs(delete-char)e(\(C-d\))630 3968 y Ft(Delete)35
b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g
-(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 2811
+(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 4078
y(as)e(the)f(tt)m(y)i Fm(eof)d Ft(c)m(haracter,)j(as)f
Fl(C-d)e Ft(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g
-(e\013ects.)150 2958 y Fs(backward-delete-char)25 b(\(Rubout\))630
-3068 y Ft(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40
+(e\013ects.)150 4243 y Fs(backward-delete-char)25 b(\(Rubout\))630
+4353 y Ft(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40
b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630
-3177 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
-3325 y Fs(forward-backward-delete-)o(char)24 b(\(\))630
-3434 y Ft(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
+4462 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
+4627 y Fs(forward-backward-delete-)o(char)24 b(\(\))630
+4737 y Ft(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
(unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630
-3544 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s
+4846 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s
(ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630
-3654 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
-3801 y Fs(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 3911
+4956 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
+5121 y Fs(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 5230
y Ft(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h
(v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630
-4020 y(sequences)d(lik)m(e)g Fl(C-q)p Ft(,)f(for)g(example.)150
-4168 y Fs(tab-insert)e(\(M-TAB\))630 4278 y Ft(Insert)i(a)h(tab)f(c)m
-(haracter.)150 4425 y Fs(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o
-(\))630 4535 y Ft(Insert)g(y)m(ourself.)150 4682 y Fs
-(bracketed-paste-begin)25 b(\(\))630 4792 y Ft(This)f(function)h(is)f
-(in)m(tended)h(to)h(b)s(e)e(b)s(ound)f(to)i(the)g Fs(")p
-Ft(brac)m(k)m(eted)h(paste)p Fs(")f Ft(escap)s(e)h(sequence)630
-4902 y(sen)m(t)38 b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h
-(binding)e(is)i(assigned)f(b)m(y)h(default.)62 b(It)38
-b(allo)m(ws)630 5011 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)
-g(as)g(a)g(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630
-5121 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k)
-m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630
-5230 y(as)i(if)g(eac)m(h)i(one)e(w)m(as)h(b)s(ound)d(to)i
-Fs(self-insert)p Ft(\))e(instead)i(of)h(executing)g(an)m(y)f(editing)
-630 5340 y(commands.)p eop end
+5340 y(sequences)d(lik)m(e)g Fl(C-q)p Ft(,)f(for)g(example.)p
+eop end
%%Page: 19 23
TeXDict begin 19 22 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(19)150 299 y Fs(transpose-chars)26
-b(\(C-t\))630 408 y Ft(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)g
-(cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g
-(cursor,)630 518 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m
-(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)
-g(of)h(the)630 628 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h
-(last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38
-b(Negativ)m(e)25 b(argumen)m(ts)630 737 y(ha)m(v)m(e)32
-b(no)e(e\013ect.)150 907 y Fs(transpose-words)c(\(M-t\))630
-1016 y Ft(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g
-(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)
-g(that)630 1126 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27
-b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f
-(line,)i(this)e(transp)s(oses)g(the)630 1236 y(last)j(t)m(w)m(o)h(w)m
-(ords)e(on)g(the)h(line.)150 1405 y Fs(upcase-word)c(\(M-u\))630
-1515 y Ft(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i
-(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630
-1624 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h
-(the)e(cursor.)150 1794 y Fs(downcase-word)d(\(M-l\))630
-1904 y Ft(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
+b(Command)29 b(Line)i(Editing)2107 b(19)150 299 y Fs(tab-insert)28
+b(\(M-TAB\))630 408 y Ft(Insert)i(a)h(tab)f(c)m(haracter.)150
+573 y Fs(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630
+683 y Ft(Insert)g(y)m(ourself.)150 848 y Fs(bracketed-paste-begin)25
+b(\(\))630 957 y Ft(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e
+(b)s(ound)f(to)i(the)g Fs(")p Ft(brac)m(k)m(eted)h(paste)p
+Fs(")f Ft(escap)s(e)h(sequence)630 1067 y(sen)m(t)38
+b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i
+(assigned)f(b)m(y)h(default.)62 b(It)38 b(allo)m(ws)630
+1177 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g
+(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630
+1286 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k)
+m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630
+1396 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j
+Fs(self-insert)c Ft(instead)j(of)h(executing)g(an)m(y)f(editing)630
+1505 y(commands.)150 1670 y Fs(transpose-chars)26 b(\(C-t\))630
+1780 y Ft(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)g(cursor)f
+(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g(cursor,)630
+1889 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m(ell.)57
+b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)g(of)h
+(the)630 1999 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h(last)h
+(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 b(Negativ)m(e)25
+b(argumen)m(ts)630 2109 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150
+2273 y Fs(transpose-words)c(\(M-t\))630 2383 y Ft(Drag)33
+b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f
+(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630
+2493 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m
+(t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g
+(the)630 2602 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150
+2767 y Fs(upcase-word)c(\(M-u\))630 2877 y Ft(Upp)s(ercase)32
+b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i(w)m(ord.)45
+b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630
+2986 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h
+(the)e(cursor.)150 3151 y Fs(downcase-word)d(\(M-l\))630
+3261 y Ft(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m
-(ercase)630 2013 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m
-(v)m(e)i(the)f(cursor.)150 2183 y Fs(capitalize-word)26
-b(\(M-c\))630 2292 y Ft(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
+(ercase)630 3370 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m
+(v)m(e)i(the)f(cursor.)150 3535 y Fs(capitalize-word)26
+b(\(M-c\))630 3645 y Ft(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
(wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h
-(capitalize)630 2402 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
-(mo)m(v)m(e)i(the)f(cursor.)150 2571 y Fs(overwrite-mode)26
-b(\(\))630 2681 y Ft(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
+(capitalize)630 3754 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
+(mo)m(v)m(e)i(the)f(cursor.)150 3919 y Fs(overwrite-mode)26
+b(\(\))630 4029 y Ft(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,)
-h(switc)m(hes)630 2791 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
+h(switc)m(hes)630 4138 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m
-(t,)i(switc)m(hes)e(to)630 2900 y(insert)30 b(mo)s(de.)41
+(t,)i(switc)m(hes)e(to)630 4248 y(insert)30 b(mo)s(de.)41
b(This)30 b(command)h(a\013ects)h(only)e Fs(emacs)f Ft(mo)s(de;)i
-Fs(vi)f Ft(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 3010
+Fs(vi)f Ft(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 4357
y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f
Fs(readline\(\))c Ft(starts)k(in)f(insert)g(mo)s(de.)630
-3149 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s
+4495 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s
(ound)c(to)j Fs(self-insert)c Ft(replace)k(the)g(text)g(at)630
-3259 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h
+4604 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h
(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630
-3369 y Fs(backward-delete-char)25 b Ft(replace)31 b(the)g(c)m(haracter)
-h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 3508
+4714 y Fs(backward-delete-char)25 b Ft(replace)31 b(the)g(c)m(haracter)
+h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 4851
y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150
-3718 y Fi(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
-3895 y Fs(kill-line)28 b(\(C-k\))630 4004 y Ft(Kill)j(the)f(text)i
-(from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f(line.)150
-4174 y Fs(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630
-4283 y Ft(Kill)h(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s
-(eginning)g(of)h(the)f(curren)m(t)g(line.)150 4453 y
-Fs(unix-line-discard)c(\(C-u\))630 4562 y Ft(Kill)31
-b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s(eginning)g(of)h
-(the)f(curren)m(t)g(line.)150 4732 y Fs(kill-whole-line)c(\(\))630
-4842 y Ft(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h
-(line,)h(no)f(matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36
-b(default,)630 4951 y(this)30 b(is)h(un)m(b)s(ound.)150
-5121 y Fs(kill-word)d(\(M-d\))630 5230 y Ft(Kill)i(from)f(p)s(oin)m(t)g
-(to)h(the)g(end)e(of)i(the)f(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m
-(w)m(een)g(w)m(ords,)f(to)h(the)g(end)630 5340 y(of)h(the)f(next)h(w)m
-(ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f
-Fs(forward-word)p Ft(.)p eop end
+5056 y Fi(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
+5230 y Fs(kill-line)28 b(\(C-k\))630 5340 y Ft(Kill)j(the)f(text)i
+(from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f(line.)p
+eop end
%%Page: 20 24
TeXDict begin 20 23 bop 150 -116 a Ft(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2107 b(20)150 299 y Fs
-(backward-kill-word)25 b(\(M-DEL\))630 408 y Ft(Kill)k(the)g(w)m(ord)g
-(b)s(ehind)e(p)s(oin)m(t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h
-(the)g(same)g(as)g Fs(backward-word)p Ft(.)150 577 y
-Fs(unix-word-rubout)d(\(C-w\))630 686 y Ft(Kill)32 b(the)g(w)m(ord)f(b)
-s(ehind)f(p)s(oin)m(t,)i(using)f(white)h(space)g(as)g(a)g(w)m(ord)f(b)s
-(oundary)-8 b(.)43 b(The)31 b(killed)630 796 y(text)g(is)g(sa)m(v)m(ed)
-g(on)g(the)f(kill-ring.)150 964 y Fs(unix-filename-rubout)25
-b(\(\))630 1073 y Ft(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m
-(t,)j(using)e(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f
-(the)630 1183 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30
-b(killed)h(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150
-1351 y Fs(delete-horizontal-space)24 b(\(\))630 1461
-y Ft(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41
-b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 1629
-y Fs(kill-region)d(\(\))630 1738 y Ft(Kill)k(the)f(text)i(in)e(the)g
+(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 408
+y Ft(Kill)h(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s
+(eginning)g(of)h(the)f(curren)m(t)g(line.)150 566 y Fs
+(unix-line-discard)c(\(C-u\))630 675 y Ft(Kill)31 b(bac)m(kw)m(ard)g
+(from)e(the)i(cursor)f(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)
+g(line.)150 832 y Fs(kill-whole-line)c(\(\))630 942 y
+Ft(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f
+(matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630
+1052 y(this)30 b(is)h(un)m(b)s(ound.)150 1209 y Fs(kill-word)d(\(M-d\))
+630 1318 y Ft(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
+(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h
+(the)g(end)630 1428 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
+b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Fs(forward-word)p
+Ft(.)150 1585 y Fs(backward-kill-word)25 b(\(M-DEL\))630
+1695 y Ft(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40
+b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g
+Fs(backward-word)p Ft(.)150 1852 y Fs(unix-word-rubout)d(\(C-w\))630
+1961 y Ft(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m(t,)i(using)f
+(white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8 b(.)43
+b(The)31 b(killed)630 2071 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f
+(kill-ring.)150 2228 y Fs(unix-filename-rubout)25 b(\(\))630
+2338 y Ft(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e
+(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630
+2447 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g
+(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 2605 y Fs
+(delete-horizontal-space)24 b(\(\))630 2714 y Ft(Delete)33
+b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41
+b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 2871
+y Fs(kill-region)d(\(\))630 2981 y Ft(Kill)k(the)f(text)i(in)e(the)g
(curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un)
-m(b)s(ound.)150 1906 y Fs(copy-region-as-kill)25 b(\(\))630
-2016 y Ft(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f
+m(b)s(ound.)150 3138 y Fs(copy-region-as-kill)25 b(\(\))630
+3248 y Ft(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f
(kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f
-(a)m(w)m(a)m(y)-8 b(.)630 2125 y(By)31 b(default,)f(this)h(command)f
-(is)g(un)m(b)s(ound.)150 2293 y Fs(copy-backward-word)25
-b(\(\))630 2403 y Ft(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m
+(a)m(w)m(a)m(y)-8 b(.)630 3357 y(By)31 b(default,)f(this)h(command)f
+(is)g(un)m(b)s(ound.)150 3514 y Fs(copy-backward-word)25
+b(\(\))630 3624 y Ft(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m
(t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries)
-f(are)i(the)630 2513 y(same)31 b(as)f Fs(backward-word)p
+f(are)i(the)630 3734 y(same)31 b(as)f Fs(backward-word)p
Ft(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150
-2681 y Fs(copy-forward-word)26 b(\(\))630 2790 y Ft(Cop)m(y)31
+3891 y Fs(copy-forward-word)26 b(\(\))630 4000 y Ft(Cop)m(y)31
b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h
(bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630
-2900 y(same)f(as)f Fs(forward-word)p Ft(.)38 b(By)30
+4110 y(same)f(as)f Fs(forward-word)p Ft(.)38 b(By)30
b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150
-3068 y Fs(yank)f(\(C-y\))630 3177 y Ft(Y)-8 b(ank)31
+4267 y Fs(yank)f(\(C-y\))630 4377 y Ft(Y)-8 b(ank)31
b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h
-(p)s(oin)m(t.)150 3346 y Fs(yank-pop)d(\(M-y\))630 3455
+(p)s(oin)m(t.)150 4534 y Fs(yank-pop)d(\(M-y\))630 4643
y Ft(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54
b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630
-3565 y(command)30 b(is)h Fs(yank)e Ft(or)h Fs(yank-pop)p
-Ft(.)150 3773 y Fi(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
-(ts)150 3949 y Fs(digit-argument)26 b(\()p Fl(M-0)p Fs(,)j
-Fl(M-1)p Fs(,)h(...)f Fl(M--)p Fs(\))630 4058 y Ft(Add)d(this)h(digit)g
+4753 y(command)30 b(is)h Fs(yank)e Ft(or)h Fs(yank-pop)p
+Ft(.)150 4950 y Fi(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
+(ts)150 5121 y Fs(digit-argument)26 b(\()p Fl(M-0)p Fs(,)j
+Fl(M-1)p Fs(,)h(...)f Fl(M--)p Fs(\))630 5230 y Ft(Add)d(this)h(digit)g
(to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f
-(new)f(argumen)m(t.)630 4168 y Fl(M--)j Ft(starts)i(a)g(negativ)m(e)i
-(argumen)m(t.)150 4336 y Fs(universal-argument)25 b(\(\))630
-4446 y Ft(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g
-(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m
-(y)f(one)630 4555 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h
-(leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630
-4665 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)
-m(y)f(digits,)i(executing)f Fs(universal-argument)630
-4774 y Ft(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
+(new)f(argumen)m(t.)630 5340 y Fl(M--)j Ft(starts)i(a)g(negativ)m(e)i
+(argumen)m(t.)p eop end
+%%Page: 21 25
+TeXDict begin 21 24 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fs
+(universal-argument)25 b(\(\))630 408 y Ft(This)g(is)g(another)h(w)m(a)
+m(y)g(to)h(sp)s(ecify)e(an)g(argumen)m(t.)40 b(If)25
+b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m(y)f(one)630
+518 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h(leading)h(min)m(us)
+e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 628
+y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)m(y)f
+(digits,)i(executing)f Fs(universal-argument)630 737
+y Ft(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
(otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630
-4884 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)
-d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630
-4994 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
+847 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)d
+(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630
+956 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
(the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630
-5103 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
+1066 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630
-5213 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
+1176 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
(second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630
-5322 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g
-(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)p eop end
-%%Page: 21 25
-TeXDict begin 21 24 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fi(1.4.6)63
+1285 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g
+(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 1498 y Fi(1.4.6)63
b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42
-b(Y)-10 b(ou)150 483 y Fs(complete)28 b(\(TAB\))630 593
-y Ft(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g(b)s
-(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630
-702 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42
+b(Y)-10 b(ou)150 1676 y Fs(complete)28 b(\(TAB\))630
+1785 y Ft(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g
+(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630
+1895 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42
b(The)30 b(default)h(is)f(\014lename)h(completion.)150
-886 y Fs(possible-completions)25 b(\(M-?\))630 996 y
-Ft(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s
+2068 y Fs(possible-completions)25 b(\(M-?\))630 2177
+y Ft(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s
(efore)e(p)s(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630
-1105 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i
+2287 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i
(columns)f(used)f(for)i(displa)m(y)f(to)h(the)g(v)-5
-b(alue)33 b(of)630 1215 y Fs(completion-display-width)o
+b(alue)33 b(of)630 2396 y Fs(completion-display-width)o
Ft(,)g(the)j(v)-5 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5
-b(ariable)38 b Fs(COLUMNS)p Ft(,)630 1325 y(or)30 b(the)h(screen)f
-(width,)g(in)g(that)h(order.)150 1509 y Fs(insert-completions)25
-b(\(M-*\))630 1618 y Ft(Insert)30 b(all)h(completions)h(of)f(the)g
+b(ariable)38 b Fs(COLUMNS)p Ft(,)630 2506 y(or)30 b(the)h(screen)f
+(width,)g(in)g(that)h(order.)150 2678 y Fs(insert-completions)25
+b(\(M-*\))630 2788 y Ft(Insert)30 b(all)h(completions)h(of)f(the)g
(text)g(b)s(efore)f(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s
-(een)e(generated)630 1728 y(b)m(y)g Fs(possible-completions)p
-Ft(.)150 1912 y Fs(menu-complete)d(\(\))630 2021 y Ft(Similar)d(to)g
+(een)e(generated)630 2898 y(b)m(y)g Fs(possible-completions)p
+Ft(.)150 3070 y Fs(menu-complete)d(\(\))630 3180 y Ft(Similar)d(to)g
Fs(complete)p Ft(,)f(but)h(replaces)g(the)g(w)m(ord)g(to)g(b)s(e)f
-(completed)i(with)e(a)i(single)f(matc)m(h)630 2131 y(from)37
+(completed)i(with)e(a)i(single)f(matc)m(h)630 3289 y(from)37
b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39
-b(execution)g(of)f Fs(menu-complete)630 2241 y Ft(steps)i(through)g
+b(execution)g(of)f Fs(menu-complete)630 3399 y Ft(steps)i(through)g
(the)g(list)h(of)f(p)s(ossible)g(completions,)k(inserting)c(eac)m(h)i
-(matc)m(h)f(in)f(turn.)630 2350 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g
+(matc)m(h)f(in)f(turn.)630 3508 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g
(of)g(completions,)i(the)e(b)s(ell)g(is)g(rung)f(\(sub)5
-b(ject)36 b(to)i(the)f(setting)630 2460 y(of)f Fs(bell-style)p
+b(ject)36 b(to)i(the)f(setting)630 3618 y(of)f Fs(bell-style)p
Ft(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57
b(An)36 b(argumen)m(t)h(of)f Fj(n)f Ft(mo)m(v)m(es)i
-Fj(n)630 2569 y Ft(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
+Fj(n)630 3728 y Ft(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
(matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f
-(used)g(to)630 2679 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
+(used)g(to)630 3837 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
(list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s
-(ound)e(to)630 2789 y Fs(TAB)p Ft(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
-(y)i(default.)150 2973 y Fs(menu-complete-backward)24
-b(\(\))630 3082 y Ft(Iden)m(tical)36 b(to)g Fs(menu-complete)p
+(ound)e(to)630 3947 y Fs(TAB)p Ft(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
+(y)i(default.)150 4119 y Fs(menu-complete-backward)24
+b(\(\))630 4229 y Ft(Iden)m(tical)36 b(to)g Fs(menu-complete)p
Ft(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g
-(p)s(ossible)630 3192 y(completions,)d(as)e(if)h Fs(menu-complete)26
+(p)s(ossible)630 4338 y(completions,)d(as)e(if)h Fs(menu-complete)26
b Ft(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150
-3376 y Fs(delete-char-or-list)25 b(\(\))630 3485 y Ft(Deletes)41
+4511 y Fs(delete-char-or-list)25 b(\(\))630 4620 y Ft(Deletes)41
b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s
-(eginning)e(or)h(end)f(of)h(the)630 3595 y(line)50 b(\(lik)m(e)h
+(eginning)e(or)h(end)f(of)h(the)630 4730 y(line)50 b(\(lik)m(e)h
Fs(delete-char)p Ft(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,)
-55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 3705
+55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 4840
y Fs(possible-completions)p Ft(.)35 b(This)30 b(command)g(is)g(un)m(b)s
-(ound)e(b)m(y)i(default.)150 3928 y Fi(1.4.7)63 b(Keyb)s(oard)41
-b(Macros)150 4113 y Fs(start-kbd-macro)26 b(\(C-x)j(\(\))630
-4222 y Ft(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m
-(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)150
-4406 y Fs(end-kbd-macro)d(\(C-x)i(\)\))630 4516 y Ft(Stop)e(sa)m(ving)h
-(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m
-(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 4625
-y(de\014nition.)150 4809 y Fs(call-last-kbd-macro)c(\(C-x)k(e\))630
-4919 y Ft(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h
-(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the)630
-5029 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s
-(oard.)150 5213 y Fs(print-last-kbd-macro)25 b(\(\))630
-5322 y Ft(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)
-e(in)i(a)f(format)h(suitable)g(for)f(the)h Fj(inputrc)k
-Ft(\014le.)p eop end
+(ound)e(b)m(y)i(default.)150 5052 y Fi(1.4.7)63 b(Keyb)s(oard)41
+b(Macros)150 5230 y Fs(start-kbd-macro)26 b(\(C-x)j(\(\))630
+5340 y Ft(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m
+(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)p eop
+end
%%Page: 22 26
TeXDict begin 22 25 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fi(1.4.8)63
-b(Some)41 b(Miscellaneous)i(Commands)150 466 y Fs(re-read-init-file)26
-b(\(C-x)j(C-r\))630 576 y Ft(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f
-(the)g Fj(inputrc)27 b Ft(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h
-(bindings)d(or)i(v)-5 b(ariable)630 685 y(assignmen)m(ts)31
-b(found)e(there.)150 836 y Fs(abort)g(\(C-g\))630 945
-y Ft(Ab)s(ort)d(the)h(curren)m(t)f(editing)h(command)f(and)g(ring)h
-(the)f(terminal's)h(b)s(ell)g(\(sub)5 b(ject)26 b(to)i(the)630
-1055 y(setting)j(of)g Fs(bell-style)p Ft(\).)150 1205
-y Fs(do-uppercase-version)25 b(\(M-a,)k(M-b,)g(M-)p Fl(x)p
-Fs(,)g(...)o(\))630 1315 y Ft(If)e(the)h(meta\014ed)g(c)m(haracter)h
-Fj(x)34 b Ft(is)28 b(lo)m(w)m(ercase,)i(run)d(the)g(command)h(that)g
-(is)g(b)s(ound)d(to)k(the)630 1425 y(corresp)s(onding)g(upp)s(ercase)h
-(c)m(haracter.)150 1575 y Fs(prefix-meta)d(\(ESC\))630
-1685 y Ft(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62
-b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g(k)m(ey)-8
-b(.)630 1794 y(T)m(yping)30 b(`)p Fs(ESC)g(f)p Ft(')g(is)h(equiv)-5
-b(alen)m(t)31 b(to)g(t)m(yping)g Fl(M-f)p Ft(.)150 1945
-y Fs(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 2054 y Ft(Incremen)m(tal)h
-(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150
-2205 y Fs(revert-line)27 b(\(M-r\))630 2314 y Ft(Undo)33
-b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32
-b(is)h(lik)m(e)i(executing)f(the)f Fs(undo)f Ft(command)630
-2424 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.)
-150 2574 y Fs(tilde-expand)d(\(M-~\))630 2684 y Ft(P)m(erform)j(tilde)h
-(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 2834
-y Fs(set-mark)d(\(C-@\))630 2944 y Ft(Set)33 b(the)g(mark)f(to)i(the)f
-(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g
-(supplied,)f(the)h(mark)g(is)f(set)630 3054 y(to)f(that)g(p)s(osition.)
-150 3204 y Fs(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
-3314 y Ft(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43
-b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h
-(sa)m(v)m(ed)630 3423 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s
-(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 3574
-y Fs(character-search)26 b(\(C-]\))630 3683 y Ft(A)f(c)m(haracter)h(is)
-f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s
-(ccurrence)g(of)g(that)g(c)m(haracter.)630 3793 y(A)30
+b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fs(end-kbd-macro)27
+b(\(C-x)i(\)\))630 408 y Ft(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)
+m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f
+(sa)m(v)m(e)i(the)630 518 y(de\014nition.)150 671 y Fs
+(call-last-kbd-macro)c(\(C-x)k(e\))630 780 y Ft(Re-execute)37
+b(the)e(last)h(k)m(eyb)s(oard)f(macro)h(de\014ned,)f(b)m(y)h(making)f
+(the)g(c)m(haracters)i(in)e(the)630 890 y(macro)c(app)s(ear)f(as)g(if)h
+(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s(oard.)150 1042 y
+Fs(print-last-kbd-macro)25 b(\(\))630 1152 y Ft(Prin)m(t)30
+b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)e(in)i(a)f(format)h
+(suitable)g(for)f(the)h Fj(inputrc)k Ft(\014le.)150 1344
+y Fi(1.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)150
+1513 y Fs(re-read-init-file)26 b(\(C-x)j(C-r\))630 1622
+y Ft(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g
+Fj(inputrc)27 b Ft(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d
+(or)i(v)-5 b(ariable)630 1732 y(assignmen)m(ts)31 b(found)e(there.)150
+1885 y Fs(abort)g(\(C-g\))630 1994 y Ft(Ab)s(ort)d(the)h(curren)m(t)f
+(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5
+b(ject)26 b(to)i(the)630 2104 y(setting)j(of)g Fs(bell-style)p
+Ft(\).)150 2256 y Fs(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p
+Fl(x)p Fs(,)g(...)o(\))630 2366 y Ft(If)35 b(the)g(meta\014ed)g(c)m
+(haracter)i Fj(x)k Ft(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g
+(that)g(is)g(b)s(ound)e(to)630 2476 y(the)g(corresp)s(onding)f
+(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32
+b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 2585 y Fj(x)37
+b Ft(is)30 b(already)h(lo)m(w)m(er)h(case.)150 2738 y
+Fs(prefix-meta)27 b(\(ESC\))630 2847 y Ft(Metafy)39 b(the)e(next)h(c)m
+(haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f
+(without)g(a)h(meta)g(k)m(ey)-8 b(.)630 2957 y(T)m(yping)30
+b(`)p Fs(ESC)g(f)p Ft(')g(is)h(equiv)-5 b(alen)m(t)31
+b(to)g(t)m(yping)g Fl(M-f)p Ft(.)150 3109 y Fs(undo)e(\(C-_)g(or)h(C-x)
+g(C-u\))630 3219 y Ft(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s
+(ered)f(for)g(eac)m(h)i(line.)150 3372 y Fs(revert-line)27
+b(\(M-r\))630 3481 y Ft(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f
+(line.)49 b(This)32 b(is)h(lik)m(e)i(executing)f(the)f
+Fs(undo)f Ft(command)630 3591 y(enough)e(times)h(to)g(get)h(bac)m(k)f
+(to)g(the)f(b)s(eginning.)150 3743 y Fs(tilde-expand)d(\(M-~\))630
+3853 y Ft(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m
+(ord.)150 4006 y Fs(set-mark)d(\(C-@\))630 4115 y Ft(Set)33
+b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g
+(argumen)m(t)g(is)g(supplied,)f(the)h(mark)g(is)f(set)630
+4225 y(to)f(that)g(p)s(osition.)150 4377 y Fs(exchange-point-and-mark)
+24 b(\(C-x)29 b(C-x\))630 4487 y Ft(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)
+g(the)g(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f
+(set)h(to)f(the)h(sa)m(v)m(ed)630 4596 y(p)s(osition,)f(and)e(the)i
+(old)g(cursor)e(p)s(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150
+4749 y Fs(character-search)26 b(\(C-]\))630 4859 y Ft(A)f(c)m(haracter)
+h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g
+(o)s(ccurrence)g(of)g(that)g(c)m(haracter.)630 4968 y(A)30
b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s
-(ccurrences.)150 3943 y Fs(character-search-backwar)o(d)24
-b(\(M-C-]\))630 4053 y Ft(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s
+(ccurrences.)150 5121 y Fs(character-search-backwar)o(d)24
+b(\(M-C-]\))630 5230 y Ft(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s
(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of)
-g(that)630 4162 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f
-(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150
-4313 y Fs(skip-csi-sequence)d(\(\))630 4422 y Ft(Read)i(enough)f(c)m
-(haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f
-(as)g(those)h(de\014ned)630 4532 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g
-(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m
-(trol)g(Sequence)630 4642 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59
+g(that)630 5340 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f
+(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)p
+eop end
+%%Page: 23 27
+TeXDict begin 23 26 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fs(skip-csi-sequence)
+26 b(\(\))630 408 y Ft(Read)i(enough)f(c)m(haracters)h(to)g(consume)f
+(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f(as)g(those)h(de\014ned)630
+518 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g(and)f(End.)60
+b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m(trol)g(Sequence)
+630 628 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59
b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Fs("\\)p
-Ft(e[)p Fs(")p Ft(,)g(k)m(eys)f(pro-)630 4751 y(ducing)31
+Ft(e[)p Fs(")p Ft(,)g(k)m(eys)f(pro-)630 737 y(ducing)31
b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e
-(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 4861 y(command,)f
+(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 847 y(command,)f
(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f
-(editing)h(bu\013er.)44 b(This)31 b(is)630 4970 y(un)m(b)s(ound)d(b)m
-(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150
-5121 y Fs(insert-comment)26 b(\(M-#\))630 5230 y Ft(Without)36
+(editing)h(bu\013er.)44 b(This)31 b(is)630 956 y(un)m(b)s(ound)d(b)m(y)
+i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150
+1116 y Fs(insert-comment)26 b(\(M-#\))630 1225 y Ft(Without)36
b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36
b(of)g(the)g Fs(comment-begin)c Ft(v)-5 b(ariable)36
-b(is)g(in-)630 5340 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f
+b(is)g(in-)630 1335 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f
(curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g
-(supplied,)p eop end
-%%Page: 23 27
-TeXDict begin 23 26 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(23)630 299 y(this)36
-b(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 b(the)f(c)m(haracters)i
-(at)g(the)e(b)s(eginning)g(of)h(the)g(line)630 408 y(do)30
-b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f Fs(comment-begin)p
-Ft(,)e(the)i(v)-5 b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630
-518 y(c)m(haracters)42 b(in)d Fs(comment-begin)e Ft(are)j(deleted)h
-(from)f(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630
-628 y(either)31 b(case,)h(the)e(line)h(is)f(accepted)i(as)f(if)f(a)h
-(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 787 y Fs(dump-functions)d
-(\(\))630 897 y Ft(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g(their)
-g(k)m(ey)h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630
-1006 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
+(supplied,)630 1444 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55
+b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g
+(line)630 1554 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5
+b(alue)31 b(of)f Fs(comment-begin)p Ft(,)e(the)i(v)-5
+b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 1664
+y(c)m(haracters)42 b(in)d Fs(comment-begin)e Ft(are)j(deleted)h(from)f
+(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 1773
+y(either)31 b(case,)h(the)e(line)h(is)f(accepted)i(as)f(if)f(a)h
+(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 1932 y Fs(dump-functions)d
+(\(\))630 2042 y Ft(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g
+(their)g(k)m(ey)h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630
+2151 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630
-1116 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fj(inputrc)k
+2261 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fj(inputrc)k
Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k
-(default.)150 1275 y Fs(dump-variables)26 b(\(\))630
-1385 y Ft(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5
+(default.)150 2420 y Fs(dump-variables)26 b(\(\))630
+2530 y Ft(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5
b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h
-(output)f(stream.)630 1494 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)
+(output)f(stream.)630 2639 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)
g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)
-m(y)g(that)630 1604 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h
+m(y)g(that)630 2749 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h
Fj(inputrc)k Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c
-(b)m(y)k(default.)150 1763 y Fs(dump-macros)c(\(\))630
-1873 y Ft(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)
+(b)m(y)k(default.)150 2908 y Fs(dump-macros)c(\(\))630
+3018 y Ft(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)
f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630
-1983 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e
+3127 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e
(supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630
-2092 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e
+3237 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e
Fj(inputrc)35 b Ft(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound)
-d(b)m(y)630 2202 y(default.)150 2361 y Fs(emacs-editing-mode)e(\(C-e\))
-630 2471 y Ft(When)30 b(in)g Fs(vi)g Ft(command)g(mo)s(de,)g(this)h
+d(b)m(y)630 3346 y(default.)150 3506 y Fs(emacs-editing-mode)e(\(C-e\))
+630 3615 y Ft(When)30 b(in)g Fs(vi)g Ft(command)g(mo)s(de,)g(this)h
(causes)f(a)h(switc)m(h)g(to)g Fs(emacs)e Ft(editing)i(mo)s(de.)150
-2630 y Fs(vi-editing-mode)26 b(\(M-C-j\))630 2740 y Ft(When)k(in)g
+3774 y Fs(vi-editing-mode)26 b(\(M-C-j\))630 3884 y Ft(When)k(in)g
Fs(emacs)f Ft(editing)i(mo)s(de,)f(this)h(causes)f(a)h(switc)m(h)g(to)g
-Fs(vi)f Ft(editing)h(mo)s(de.)150 2980 y Fr(1.5)68 b(Readline)47
-b(vi)e(Mo)t(de)150 3140 y Ft(While)32 b(the)g(Readline)g(library)f(do)s
+Fs(vi)f Ft(editing)h(mo)s(de.)150 4124 y Fr(1.5)68 b(Readline)47
+b(vi)e(Mo)t(de)150 4284 y Ft(While)32 b(the)g(Readline)g(library)f(do)s
(es)g(not)h(ha)m(v)m(e)h(a)f(full)f(set)h(of)g Fs(vi)f
Ft(editing)h(functions,)f(it)h(do)s(es)g(con)m(tain)150
-3249 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52
+4393 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52
b(The)34 b(Readline)g Fs(vi)g Ft(mo)s(de)f(b)s(eha)m(v)m(es)i(as)f(sp)s
-(eci\014ed)f(in)150 3359 y(the)e Fm(posix)e Ft(standard.)275
-3494 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m
+(eci\014ed)f(in)150 4503 y(the)e Fm(posix)e Ft(standard.)275
+4637 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m
(een)d Fs(emacs)f Ft(and)g Fs(vi)h Ft(editing)g(mo)s(des,)g(use)g(the)g
-(command)150 3603 y Fl(M-C-j)36 b Ft(\(b)s(ound)h(to)h
+(command)150 4747 y Fl(M-C-j)36 b Ft(\(b)s(ound)h(to)h
(emacs-editing-mo)s(de)i(when)d(in)g Fs(vi)h Ft(mo)s(de)f(and)g(to)i
-(vi-editing-mo)s(de)g(in)e Fs(emacs)150 3713 y Ft(mo)s(de\).)k(The)30
+(vi-editing-mo)s(de)g(in)e Fs(emacs)150 4857 y Ft(mo)s(de\).)k(The)30
b(Readline)h(default)f(is)g Fs(emacs)f Ft(mo)s(de.)275
-3847 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fs(vi)f
+4991 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fs(vi)f
Ft(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s
-(de,)g(as)h(if)f(y)m(ou)150 3957 y(had)f(t)m(yp)s(ed)g(an)g(`)p
+(de,)g(as)h(if)f(y)m(ou)150 5101 y(had)f(t)m(yp)s(ed)g(an)g(`)p
Fs(i)p Ft('.)41 b(Pressing)29 b Fs(ESC)f Ft(switc)m(hes)i(y)m(ou)g(in)m
(to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150
-4066 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f
+5210 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f
Fs(vi)g Ft(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g
-(history)f(lines)h(with)150 4176 y(`)p Fs(k)p Ft(')d(and)e(subsequen)m
+(history)f(lines)h(with)150 5320 y(`)p Fs(k)p Ft(')d(and)e(subsequen)m
(t)h(lines)h(with)f(`)p Fs(j)p Ft(',)g(and)g(so)h(forth.)p
eop end
%%Page: 24 28
TeXDict begin 24 27 bop 3659 -116 a Ft(24)150 299 y Fp(2)80
-b(Programming)54 b(with)f(GNU)h(Readline)150 524 y Ft(This)24
+b(Programming)54 b(with)f(GNU)h(Readline)150 543 y Ft(This)24
b(c)m(hapter)i(describ)s(es)e(the)h(in)m(terface)h(b)s(et)m(w)m(een)g
(the)f Fm(gnu)f Ft(Readline)i(Library)e(and)g(other)h(programs.)150
-634 y(If)k(y)m(ou)g(are)g(a)h(programmer,)f(and)f(y)m(ou)i(wish)e(to)i
+652 y(If)k(y)m(ou)g(are)g(a)h(programmer,)f(and)f(y)m(ou)i(wish)e(to)i
(include)f(the)g(features)g(found)f(in)h Fm(gnu)g Ft(Readline)g(suc)m
-(h)150 743 y(as)c(completion,)j(line)d(editing,)i(and)d(in)m(teractiv)m
+(h)150 762 y(as)c(completion,)j(line)d(editing,)i(and)d(in)m(teractiv)m
(e)k(history)d(manipulation)g(in)f(y)m(our)h(o)m(wn)g(programs,)h(this)
-150 853 y(section)32 b(is)e(for)g(y)m(ou.)150 1090 y
-Fr(2.1)68 b(Basic)45 b(Beha)l(vior)150 1250 y Ft(Man)m(y)39
+150 871 y(section)32 b(is)e(for)g(y)m(ou.)150 1117 y
+Fr(2.1)68 b(Basic)45 b(Beha)l(vior)150 1276 y Ft(Man)m(y)39
b(programs)e(pro)m(vide)h(a)h(command)f(line)g(in)m(terface,)k(suc)m(h)
37 b(as)i Fs(mail)p Ft(,)g Fs(ftp)p Ft(,)g(and)e Fs(sh)p
-Ft(.)63 b(F)-8 b(or)39 b(suc)m(h)150 1359 y(programs,)29
+Ft(.)63 b(F)-8 b(or)39 b(suc)m(h)150 1386 y(programs,)29
b(the)f(default)h(b)s(eha)m(viour)f(of)h(Readline)g(is)g(su\016cien)m
(t.)40 b(This)28 b(section)i(describ)s(es)d(ho)m(w)i(to)g(use)150
-1469 y(Readline)35 b(in)f(the)h(simplest)f(w)m(a)m(y)h(p)s(ossible,)h
+1496 y(Readline)35 b(in)f(the)h(simplest)f(w)m(a)m(y)h(p)s(ossible,)h
(p)s(erhaps)c(to)j(replace)h(calls)f(in)f(y)m(our)h(co)s(de)f(to)h
-Fs(gets\(\))e Ft(or)150 1578 y Fs(fgets\(\))p Ft(.)275
-1711 y(The)f(function)g Fs(readline\(\))e Ft(prin)m(ts)i(a)g(prompt)g
+Fs(gets\(\))e Ft(or)150 1605 y Fs(fgets\(\))p Ft(.)275
+1743 y(The)f(function)g Fs(readline\(\))e Ft(prin)m(ts)i(a)g(prompt)g
Fj(prompt)i Ft(and)e(then)g(reads)g(and)g(returns)f(a)i(single)150
-1821 y(line)g(of)g(text)h(from)e(the)h(user.)47 b(If)32
+1852 y(line)g(of)g(text)h(from)e(the)h(user.)47 b(If)32
b Fj(prompt)i Ft(is)e Fs(NULL)g Ft(or)h(the)f(empt)m(y)i(string,)f(no)g
-(prompt)e(is)i(displa)m(y)m(ed.)150 1930 y(The)k(line)g
+(prompt)e(is)i(displa)m(y)m(ed.)150 1962 y(The)k(line)g
Fs(readline)e Ft(returns)h(is)h(allo)s(cated)i(with)e
Fs(malloc\(\))p Ft(;)h(the)f(caller)i(should)d Fs(free\(\))f
-Ft(the)j(line)150 2040 y(when)29 b(it)i(has)f(\014nished)f(with)h(it.)
+Ft(the)j(line)150 2072 y(when)29 b(it)i(has)f(\014nished)f(with)h(it.)
42 b(The)29 b(declaration)j(for)f Fs(readline)d Ft(in)i(ANSI)g(C)g(is)
-390 2173 y Fs(char)47 b(*readline)e(\(const)h(char)h(*)p
-Fl(prompt)p Fs(\);)150 2305 y Ft(So,)31 b(one)f(migh)m(t)h(sa)m(y)390
-2438 y Fs(char)47 b(*line)f(=)h(readline)f(\("Enter)g(a)h(line:)g("\);)
-150 2571 y Ft(in)23 b(order)f(to)h(read)g(a)g(line)h(of)f(text)h(from)e
+390 2209 y Fs(char)47 b(*readline)e(\(const)h(char)h(*)p
+Fl(prompt)p Fs(\);)150 2347 y Ft(So,)31 b(one)f(migh)m(t)h(sa)m(y)390
+2485 y Fs(char)47 b(*line)f(=)h(readline)f(\("Enter)g(a)h(line:)g("\);)
+150 2623 y Ft(in)23 b(order)f(to)h(read)g(a)g(line)h(of)f(text)h(from)e
(the)h(user.)38 b(The)22 b(line)h(returned)f(has)g(the)h(\014nal)g
-(newline)g(remo)m(v)m(ed,)150 2681 y(so)31 b(only)f(the)h(text)g
-(remains.)275 2813 y(If)40 b Fs(readline)e Ft(encoun)m(ters)j(an)f
+(newline)g(remo)m(v)m(ed,)150 2732 y(so)31 b(only)f(the)h(text)g
+(remains.)275 2870 y(If)40 b Fs(readline)e Ft(encoun)m(ters)j(an)f
Fs(EOF)f Ft(while)i(reading)f(the)h(line,)j(and)39 b(the)i(line)g(is)f
-(empt)m(y)h(at)g(that)150 2923 y(p)s(oin)m(t,)30 b(then)f
+(empt)m(y)h(at)g(that)150 2979 y(p)s(oin)m(t,)30 b(then)f
Fs(\(char)g(*\)NULL)e Ft(is)j(returned.)39 b(Otherwise,)30
b(the)f(line)h(is)f(ended)g(just)g(as)g(if)h(a)f(newline)h(had)150
-3032 y(b)s(een)g(t)m(yp)s(ed.)275 3165 y(If)c(y)m(ou)h(w)m(an)m(t)h
-(the)f(user)g(to)g(b)s(e)g(able)g(to)h(get)g(at)g(the)f(line)g(later,)i
-(\(with)e Fs(C-p)f Ft(for)h(example\),)i(y)m(ou)e(m)m(ust)150
-3275 y(call)32 b Fs(add_history\(\))26 b Ft(to)32 b(sa)m(v)m(e)f(the)g
-(line)g(a)m(w)m(a)m(y)h(in)e(a)h Fj(history)38 b Ft(list)31
-b(of)g(suc)m(h)f(lines.)390 3407 y Fs(add_history)45
-b(\(line\);)150 3540 y Ft(F)-8 b(or)31 b(full)f(details)i(on)e(the)g
+3089 y(b)s(een)g(t)m(yp)s(ed.)275 3227 y(Readline)22
+b(p)s(erforms)e(some)j(expansion)e(on)h(the)g Fj(prompt)h
+Ft(b)s(efore)f(it)g(is)g(displa)m(y)m(ed)h(on)f(the)g(screen.)38
+b(See)150 3336 y(the)27 b(description)g(of)h Fs(rl_expand_prompt)22
+b Ft(\(see)28 b(Section)g(2.4.6)h([Redispla)m(y],)g(page)f(37\))g(for)f
+(additional)150 3446 y(details,)41 b(esp)s(ecially)f(if)e
+Fj(prompt)i Ft(will)e(con)m(tain)i(c)m(haracters)f(that)g(do)f(not)h
+(consume)f(ph)m(ysical)h(screen)150 3556 y(space)31 b(when)e(displa)m
+(y)m(ed.)275 3693 y(If)d(y)m(ou)h(w)m(an)m(t)h(the)f(user)g(to)g(b)s(e)
+g(able)g(to)h(get)g(at)g(the)f(line)g(later,)i(\(with)e
+Fs(C-p)f Ft(for)h(example\),)i(y)m(ou)e(m)m(ust)150 3803
+y(call)32 b Fs(add_history\(\))26 b Ft(to)32 b(sa)m(v)m(e)f(the)g(line)
+g(a)m(w)m(a)m(y)h(in)e(a)h Fj(history)38 b Ft(list)31
+b(of)g(suc)m(h)f(lines.)390 3941 y Fs(add_history)45
+b(\(line\);)150 4078 y Ft(F)-8 b(or)31 b(full)f(details)i(on)e(the)g
(GNU)h(History)g(Library)-8 b(,)31 b(see)g(the)f(asso)s(ciated)i(man)m
-(ual.)275 3673 y(It)f(is)g(preferable)g(to)i(a)m(v)m(oid)f(sa)m(ving)h
+(ual.)275 4216 y(It)f(is)g(preferable)g(to)i(a)m(v)m(oid)f(sa)m(ving)h
(empt)m(y)e(lines)h(on)f(the)h(history)f(list,)h(since)g(users)e
-(rarely)i(ha)m(v)m(e)h(a)150 3783 y(burning)28 b(need)h(to)i(reuse)e(a)
+(rarely)i(ha)m(v)m(e)h(a)150 4326 y(burning)28 b(need)h(to)i(reuse)e(a)
h(blank)g(line.)40 b(Here)31 b(is)e(a)h(function)g(whic)m(h)f(usefully)
-g(replaces)i(the)f(standard)150 3892 y Fs(gets\(\))f
+g(replaces)i(the)f(standard)150 4435 y Fs(gets\(\))f
Ft(library)h(function,)g(and)g(has)g(the)g(adv)-5 b(an)m(tage)33
b(of)d(no)g(static)i(bu\013er)e(to)h(o)m(v)m(er\015o)m(w:)390
-4025 y Fs(/*)47 b(A)h(static)e(variable)f(for)i(holding)f(the)h(line.)f
-(*/)390 4134 y(static)g(char)h(*line_read)e(=)i(\(char)g(*\)NULL;)390
-4354 y(/*)g(Read)g(a)g(string,)f(and)h(return)f(a)i(pointer)d(to)j(it.)
-533 4463 y(Returns)e(NULL)h(on)g(EOF.)f(*/)390 4573 y(char)h(*)390
-4682 y(rl_gets)f(\(\))390 4792 y({)485 4902 y(/*)i(If)f(the)g(buffer)f
-(has)h(already)f(been)g(allocated,)629 5011 y(return)g(the)h(memory)f
-(to)h(the)g(free)f(pool.)h(*/)485 5121 y(if)h(\(line_read\))581
-5230 y({)676 5340 y(free)f(\(line_read\);)p eop end
+4573 y Fs(/*)47 b(A)h(static)e(variable)f(for)i(holding)f(the)h(line.)f
+(*/)390 4682 y(static)g(char)h(*line_read)e(=)i(\(char)g(*\)NULL;)390
+4902 y(/*)g(Read)g(a)g(string,)f(and)h(return)f(a)i(pointer)d(to)j(it.)
+533 5011 y(Returns)e(NULL)h(on)g(EOF.)f(*/)390 5121 y(char)h(*)390
+5230 y(rl_gets)f(\(\))390 5340 y({)p eop end
%%Page: 25 29
TeXDict begin 25 28 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(25)676
-299 y Fs(line_read)46 b(=)h(\(char)f(*\)NULL;)581 408
-y(})485 628 y(/*)i(Get)f(a)g(line)g(from)f(the)h(user.)g(*/)485
-737 y(line_read)f(=)h(readline)f(\(""\);)485 956 y(/*)i(If)f(the)g
-(line)f(has)h(any)g(text)g(in)g(it,)629 1066 y(save)f(it)h(on)h(the)f
-(history.)e(*/)485 1176 y(if)j(\(line_read)d(&&)i(*line_read\))581
-1285 y(add_history)e(\(line_read\);)485 1504 y(return)i(\(line_read\);)
-390 1614 y(})275 1766 y Ft(This)27 b(function)h(giv)m(es)h(the)f(user)g
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(25)485
+299 y Fs(/*)48 b(If)f(the)g(buffer)f(has)h(already)f(been)g(allocated,)
+629 408 y(return)g(the)h(memory)f(to)h(the)g(free)f(pool.)h(*/)485
+518 y(if)h(\(line_read\))581 628 y({)676 737 y(free)f(\(line_read\);)
+676 847 y(line_read)f(=)h(\(char)f(*\)NULL;)581 956 y(})485
+1176 y(/*)i(Get)f(a)g(line)g(from)f(the)h(user.)g(*/)485
+1285 y(line_read)f(=)h(readline)f(\(""\);)485 1504 y(/*)i(If)f(the)g
+(line)f(has)h(any)g(text)g(in)g(it,)629 1614 y(save)f(it)h(on)h(the)f
+(history.)e(*/)485 1724 y(if)j(\(line_read)d(&&)i(*line_read\))581
+1833 y(add_history)e(\(line_read\);)485 2052 y(return)i(\(line_read\);)
+390 2162 y(})275 2303 y Ft(This)27 b(function)h(giv)m(es)h(the)f(user)g
(the)g(default)g(b)s(eha)m(viour)g(of)g Fs(TAB)g Ft(completion:)40
-b(completion)30 b(on)e(\014le)150 1876 y(names.)41 b(If)31
+b(completion)30 b(on)e(\014le)150 2412 y(names.)41 b(If)31
b(y)m(ou)g(do)f(not)h(w)m(an)m(t)g(Readline)h(to)f(complete)h(on)f
(\014lenames,)g(y)m(ou)g(can)f(c)m(hange)i(the)f(binding)150
-1985 y(of)g(the)f Fs(TAB)g Ft(k)m(ey)h(with)f Fs(rl_bind_key\(\))p
-Ft(.)390 2137 y Fs(int)47 b(rl_bind_key)e(\(int)h Fl(key)p
+2522 y(of)g(the)f Fs(TAB)g Ft(k)m(ey)h(with)f Fs(rl_bind_key\(\))p
+Ft(.)390 2662 y Fs(int)47 b(rl_bind_key)e(\(int)h Fl(key)p
Fs(,)h(rl_command_func_t)c(*)p Fl(function)p Fs(\);)275
-2290 y(rl_bind_key\(\))29 b Ft(tak)m(es)35 b(t)m(w)m(o)g(argumen)m(ts:)
+2803 y(rl_bind_key\(\))29 b Ft(tak)m(es)35 b(t)m(w)m(o)g(argumen)m(ts:)
47 b Fj(k)m(ey)c Ft(is)33 b(the)h(c)m(haracter)h(that)f(y)m(ou)g(w)m
-(an)m(t)g(to)g(bind,)g(and)150 2399 y Fj(function)39
+(an)m(t)g(to)g(bind,)g(and)150 2912 y Fj(function)39
b Ft(is)f(the)h(address)f(of)h(the)g(function)g(to)g(call)i(when)c
Fj(k)m(ey)48 b Ft(is)39 b(pressed.)65 b(Binding)38 b
-Fs(TAB)g Ft(to)i Fs(rl_)150 2509 y(insert\(\))c Ft(mak)m(es)k
+Fs(TAB)g Ft(to)i Fs(rl_)150 3022 y(insert\(\))c Ft(mak)m(es)k
Fs(TAB)e Ft(insert)g(itself.)67 b Fs(rl_bind_key\(\))35
b Ft(returns)j(non-zero)h(if)g Fj(k)m(ey)47 b Ft(is)39
-b(not)g(a)g(v)-5 b(alid)150 2618 y(ASCI)s(I)29 b(c)m(haracter)j(co)s
-(de)e(\(b)s(et)m(w)m(een)i(0)f(and)e(255\).)275 2770
+b(not)g(a)g(v)-5 b(alid)150 3132 y(ASCI)s(I)29 b(c)m(haracter)j(co)s
+(de)e(\(b)s(et)m(w)m(een)i(0)f(and)e(255\).)275 3272
y(Th)m(us,)g(to)i(disable)g(the)f(default)h Fs(TAB)e
Ft(b)s(eha)m(vior,)i(the)g(follo)m(wing)g(su\016ces:)390
-2923 y Fs(rl_bind_key)45 b(\('\\t',)h(rl_insert\);)275
-3075 y Ft(This)25 b(co)s(de)i(should)e(b)s(e)h(executed)h(once)g(at)g
+3413 y Fs(rl_bind_key)45 b(\('\\t',)h(rl_insert\);)275
+3554 y Ft(This)25 b(co)s(de)i(should)e(b)s(e)h(executed)h(once)g(at)g
(the)g(start)g(of)f(y)m(our)h(program;)g(y)m(ou)g(migh)m(t)g(write)g(a)
-g(func-)150 3184 y(tion)33 b(called)h Fs(initialize_readline\(\))27
+g(func-)150 3663 y(tion)33 b(called)h Fs(initialize_readline\(\))27
b Ft(whic)m(h)33 b(p)s(erforms)e(this)h(and)h(other)g(desired)f
-(initializations,)150 3294 y(suc)m(h)e(as)h(installing)g(custom)g
+(initializations,)150 3773 y(suc)m(h)e(as)h(installing)g(custom)g
(completers)g(\(see)g(Section)h(2.6)f([Custom)f(Completers],)h(page)g
-(49\).)150 3561 y Fr(2.2)68 b(Custom)45 b(F)-11 b(unctions)150
-3721 y Ft(Readline)28 b(pro)m(vides)f(man)m(y)g(functions)g(for)g
+(50\).)150 4023 y Fr(2.2)68 b(Custom)45 b(F)-11 b(unctions)150
+4182 y Ft(Readline)28 b(pro)m(vides)f(man)m(y)g(functions)g(for)g
(manipulating)h(the)f(text)h(of)g(the)f(line,)i(but)d(it)i(isn't)f(p)s
-(ossible)150 3830 y(to)37 b(an)m(ticipate)i(the)e(needs)f(of)h(all)g
+(ossible)150 4292 y(to)37 b(an)m(ticipate)i(the)e(needs)f(of)h(all)g
(programs.)59 b(This)36 b(section)h(describ)s(es)f(the)h(v)-5
-b(arious)36 b(functions)h(and)150 3940 y(v)-5 b(ariables)27
+b(arious)36 b(functions)h(and)150 4401 y(v)-5 b(ariables)27
b(de\014ned)e(within)g(the)h(Readline)h(library)f(whic)m(h)g(allo)m(w)h
-(a)g(user)e(program)h(to)h(add)e(customized)150 4049
-y(functionalit)m(y)32 b(to)f(Readline.)275 4202 y(Before)37
+(a)g(user)e(program)h(to)h(add)e(customized)150 4511
+y(functionalit)m(y)32 b(to)f(Readline.)275 4651 y(Before)37
b(declaring)g(an)m(y)g(functions)f(that)h(customize)h(Readline's)f(b)s
-(eha)m(vior,)h(or)f(using)f(an)m(y)h(func-)150 4311 y(tionalit)m(y)48
+(eha)m(vior,)h(or)f(using)f(an)m(y)h(func-)150 4761 y(tionalit)m(y)48
b(Readline)e(pro)m(vides)f(in)g(other)h(co)s(de,)k(an)45
b(application)i(writer)e(should)g(include)g(the)h(\014le)150
-4421 y Fs(<readline/readline.h>)28 b Ft(in)33 b(an)m(y)h(\014le)f(that)
+4871 y Fs(<readline/readline.h>)28 b Ft(in)33 b(an)m(y)h(\014le)f(that)
h(uses)f(Readline's)h(features.)51 b(Since)33 b(some)h(of)g(the)f
-(de\014-)150 4530 y(nitions)e(in)g Fs(readline.h)d Ft(use)j(the)h
+(de\014-)150 4980 y(nitions)e(in)g Fs(readline.h)d Ft(use)j(the)h
Fs(stdio)d Ft(library)-8 b(,)32 b(the)f(\014le)h Fs(<stdio.h>)c
-Ft(should)i(b)s(e)h(included)f(b)s(efore)150 4640 y Fs(readline.h)p
-Ft(.)275 4792 y Fs(readline.h)d Ft(de\014nes)j(a)h(C)f(prepro)s(cessor)
+Ft(should)i(b)s(e)h(included)f(b)s(efore)150 5090 y Fs(readline.h)p
+Ft(.)275 5230 y Fs(readline.h)d Ft(de\014nes)j(a)h(C)f(prepro)s(cessor)
g(v)-5 b(ariable)31 b(that)g(should)f(b)s(e)g(treated)h(as)g(an)g(in)m
-(teger,)h Fs(RL_)150 4902 y(READLINE_VERSION)p Ft(,)20
+(teger,)h Fs(RL_)150 5340 y(READLINE_VERSION)p Ft(,)20
b(whic)m(h)h(ma)m(y)i(b)s(e)f(used)f(to)i(conditionally)h(compile)f
-(application)g(co)s(de)f(dep)s(ending)150 5011 y(on)35
-b(the)g(installed)h(Readline)f(v)m(ersion.)56 b(The)34
-b(v)-5 b(alue)35 b(is)h(a)f(hexadecimal)h(enco)s(ding)f(of)g(the)h(ma)5
-b(jor)35 b(and)150 5121 y(minor)f(v)m(ersion)g(n)m(um)m(b)s(ers)f(of)h
-(the)h(library)-8 b(,)35 b(of)f(the)h(form)e(0x)p Fj(MMmm)p
-Ft(.)53 b Fj(MM)45 b Ft(is)34 b(the)g(t)m(w)m(o-digit)j(ma)5
-b(jor)150 5230 y(v)m(ersion)29 b(n)m(um)m(b)s(er;)g Fj(mm)f
-Ft(is)h(the)g(t)m(w)m(o-digit)j(minor)c(v)m(ersion)i(n)m(um)m(b)s(er.)
-38 b(F)-8 b(or)30 b(Readline)g(4.2,)g(for)f(example,)150
-5340 y(the)i(v)-5 b(alue)30 b(of)h Fs(RL_READLINE_VERSION)25
-b Ft(w)m(ould)30 b(b)s(e)g Fs(0x0402)p Ft(.)p eop end
+(application)g(co)s(de)f(dep)s(ending)p eop end
%%Page: 26 30
TeXDict begin 26 29 bop 150 -116 a Ft(Chapter)30 b(2:)41
b(Programming)30 b(with)g(GNU)h(Readline)1683 b(26)150
-299 y Fi(2.2.1)63 b(Readline)40 b(T)m(yp)s(edefs)150
-446 y Ft(F)-8 b(or)31 b(readabilit)m(y)-8 b(,)33 b(w)m(e)d(declare)i(a)
-f(n)m(um)m(b)s(er)e(of)h(new)g(ob)5 b(ject)31 b(t)m(yp)s(es,)g(all)g(p)
-s(oin)m(ters)f(to)i(functions.)275 585 y(The)j(reason)h(for)f
+299 y(on)35 b(the)g(installed)h(Readline)f(v)m(ersion.)56
+b(The)34 b(v)-5 b(alue)35 b(is)h(a)f(hexadecimal)h(enco)s(ding)f(of)g
+(the)h(ma)5 b(jor)35 b(and)150 408 y(minor)f(v)m(ersion)g(n)m(um)m(b)s
+(ers)f(of)h(the)h(library)-8 b(,)35 b(of)f(the)h(form)e(0x)p
+Fj(MMmm)p Ft(.)53 b Fj(MM)45 b Ft(is)34 b(the)g(t)m(w)m(o-digit)j(ma)5
+b(jor)150 518 y(v)m(ersion)29 b(n)m(um)m(b)s(er;)g Fj(mm)f
+Ft(is)h(the)g(t)m(w)m(o-digit)j(minor)c(v)m(ersion)i(n)m(um)m(b)s(er.)
+38 b(F)-8 b(or)30 b(Readline)g(4.2,)g(for)f(example,)150
+628 y(the)i(v)-5 b(alue)30 b(of)h Fs(RL_READLINE_VERSION)25
+b Ft(w)m(ould)30 b(b)s(e)g Fs(0x0402)p Ft(.)150 837 y
+Fi(2.2.1)63 b(Readline)40 b(T)m(yp)s(edefs)150 984 y
+Ft(F)-8 b(or)31 b(readabilit)m(y)-8 b(,)33 b(w)m(e)d(declare)i(a)f(n)m
+(um)m(b)s(er)e(of)h(new)g(ob)5 b(ject)31 b(t)m(yp)s(es,)g(all)g(p)s
+(oin)m(ters)f(to)i(functions.)275 1128 y(The)j(reason)h(for)f
(declaring)h(these)h(new)e(t)m(yp)s(es)g(is)h(to)h(mak)m(e)f(it)g
-(easier)h(to)f(write)g(co)s(de)g(describing)150 694 y(p)s(oin)m(ters)30
-b(to)h(C)f(functions)g(with)g(appropriately)h(protot)m(yp)s(ed)f
-(argumen)m(ts)h(and)f(return)f(v)-5 b(alues.)275 833
-y(F)d(or)37 b(instance,)j(sa)m(y)d(w)m(e)g(w)m(an)m(t)h(to)g(declare)f
-(a)h(v)-5 b(ariable)37 b Fj(func)42 b Ft(as)37 b(a)g(p)s(oin)m(ter)g
-(to)g(a)h(function)e(whic)m(h)150 943 y(tak)m(es)27 b(t)m(w)m(o)g
-Fs(int)e Ft(argumen)m(ts)h(and)f(returns)f(an)i Fs(int)f
-Ft(\(this)h(is)f(the)h(t)m(yp)s(e)g(of)g(all)h(of)e(the)h(Readline)h
-(bindable)150 1052 y(functions\).)41 b(Instead)30 b(of)g(the)h(classic)
-h(C)e(declaration)275 1191 y Fs(int)f(\(*func\)\(\);)150
-1330 y Ft(or)h(the)h(ANSI-C)f(st)m(yle)i(declaration)275
-1468 y Fs(int)d(\(*func\)\(int,)e(int\);)150 1607 y Ft(w)m(e)k(ma)m(y)g
-(write)275 1746 y Fs(rl_command_func_t)25 b(*func;)275
-1885 y Ft(The)k(full)h(list)i(of)e(function)g(p)s(oin)m(ter)g(t)m(yp)s
-(es)h(a)m(v)-5 b(ailable)33 b(is)150 2051 y Fs(typedef)28
-b(int)i(rl_command_func_t)c(\(int,)i(int\);)150 2160
-y(typedef)g(char)i(*rl_compentry_func_t)24 b(\(const)29
-b(char)g(*,)h(int\);)150 2270 y(typedef)e(char)i
+(easier)h(to)f(write)g(co)s(de)g(describing)150 1238
+y(p)s(oin)m(ters)30 b(to)h(C)f(functions)g(with)g(appropriately)h
+(protot)m(yp)s(ed)f(argumen)m(ts)h(and)f(return)f(v)-5
+b(alues.)275 1382 y(F)d(or)37 b(instance,)j(sa)m(y)d(w)m(e)g(w)m(an)m
+(t)h(to)g(declare)f(a)h(v)-5 b(ariable)37 b Fj(func)42
+b Ft(as)37 b(a)g(p)s(oin)m(ter)g(to)g(a)h(function)e(whic)m(h)150
+1492 y(tak)m(es)27 b(t)m(w)m(o)g Fs(int)e Ft(argumen)m(ts)h(and)f
+(returns)f(an)i Fs(int)f Ft(\(this)h(is)f(the)h(t)m(yp)s(e)g(of)g(all)h
+(of)e(the)h(Readline)h(bindable)150 1601 y(functions\).)41
+b(Instead)30 b(of)g(the)h(classic)h(C)e(declaration)275
+1746 y Fs(int)f(\(*func\)\(\);)150 1890 y Ft(or)h(the)h(ANSI-C)f(st)m
+(yle)i(declaration)275 2035 y Fs(int)d(\(*func\)\(int,)e(int\);)150
+2179 y Ft(w)m(e)k(ma)m(y)g(write)275 2324 y Fs(rl_command_func_t)25
+b(*func;)275 2468 y Ft(The)k(full)h(list)i(of)e(function)g(p)s(oin)m
+(ter)g(t)m(yp)s(es)h(a)m(v)-5 b(ailable)33 b(is)150 2643
+y Fs(typedef)28 b(int)i(rl_command_func_t)c(\(int,)i(int\);)150
+2752 y(typedef)g(char)i(*rl_compentry_func_t)24 b(\(const)29
+b(char)g(*,)h(int\);)150 2862 y(typedef)e(char)i
(**rl_completion_func_t)24 b(\(const)29 b(char)g(*,)h(int,)f(int\);)150
-2379 y(typedef)f(char)i(*rl_quote_func_t)c(\(char)i(*,)i(int,)f(char)h
-(*\);)150 2489 y(typedef)e(char)i(*rl_dequote_func_t)25
-b(\(char)k(*,)h(int\);)150 2598 y(typedef)e(int)i(rl_compignore_func_t)
-25 b(\(char)k(**\);)150 2708 y(typedef)f(void)i(rl_compdisp_func_t)25
-b(\(char)k(**,)g(int,)h(int\);)150 2818 y(typedef)e(int)i
-(rl_hook_func_t)c(\(void\);)150 2927 y(typedef)i(int)i(rl_getc_func_t)c
-(\(FILE)j(*\);)150 3037 y(typedef)f(int)i(rl_linebuf_func_t)c(\(char)i
-(*,)i(int\);)150 3146 y(typedef)e(int)i(rl_intfunc_t)d(\(int\);)150
-3256 y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)150
-3366 y(typedef)h(int)i(rl_icpfunc_t)d(\(char)i(*\);)150
-3475 y(typedef)f(int)i(rl_icppfunc_t)d(\(char)i(**\);)150
-3585 y(typedef)f(void)i(rl_voidfunc_t)c(\(void\);)150
-3694 y(typedef)i(void)i(rl_vintfunc_t)c(\(int\);)150
-3804 y(typedef)i(void)i(rl_vcpfunc_t)d(\(char)i(*\);)150
-3914 y(typedef)f(void)i(rl_vcppfunc_t)c(\(char)j(**\);)150
-4090 y Fi(2.2.2)63 b(W)-10 b(riting)41 b(a)f(New)h(F)-10
-b(unction)150 4237 y Ft(In)30 b(order)h(to)h(write)f(new)g(functions)f
+2971 y(typedef)f(char)i(*rl_quote_func_t)c(\(char)i(*,)i(int,)f(char)h
+(*\);)150 3081 y(typedef)e(char)i(*rl_dequote_func_t)25
+b(\(char)k(*,)h(int\);)150 3191 y(typedef)e(int)i(rl_compignore_func_t)
+25 b(\(char)k(**\);)150 3300 y(typedef)f(void)i(rl_compdisp_func_t)25
+b(\(char)k(**,)g(int,)h(int\);)150 3410 y(typedef)e(int)i
+(rl_hook_func_t)c(\(void\);)150 3519 y(typedef)i(int)i(rl_getc_func_t)c
+(\(FILE)j(*\);)150 3629 y(typedef)f(int)i(rl_linebuf_func_t)c(\(char)i
+(*,)i(int\);)150 3738 y(typedef)e(int)i(rl_intfunc_t)d(\(int\);)150
+3848 y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)150
+3958 y(typedef)h(int)i(rl_icpfunc_t)d(\(char)i(*\);)150
+4067 y(typedef)f(int)i(rl_icppfunc_t)d(\(char)i(**\);)150
+4177 y(typedef)f(void)i(rl_voidfunc_t)c(\(void\);)150
+4286 y(typedef)i(void)i(rl_vintfunc_t)c(\(int\);)150
+4396 y(typedef)i(void)i(rl_vcpfunc_t)d(\(char)i(*\);)150
+4506 y(typedef)f(void)i(rl_vcppfunc_t)c(\(char)j(**\);)150
+4685 y Fi(2.2.2)63 b(W)-10 b(riting)41 b(a)f(New)h(F)-10
+b(unction)150 4832 y Ft(In)30 b(order)h(to)h(write)f(new)g(functions)f
(for)h(Readline,)h(y)m(ou)g(need)e(to)i(kno)m(w)f(the)g(calling)i(con)m
-(v)m(en)m(tions)g(for)150 4347 y(k)m(eyb)s(oard-in)m(v)m(ok)m(ed)f
+(v)m(en)m(tions)g(for)150 4941 y(k)m(eyb)s(oard-in)m(v)m(ok)m(ed)f
(functions,)d(and)h(the)g(names)g(of)g(the)g(v)-5 b(ariables)31
-b(that)f(describ)s(e)g(the)g(curren)m(t)g(state)150 4456
-y(of)h(the)f(line)h(read)f(so)h(far.)275 4595 y(The)e(calling)j
+b(that)f(describ)s(e)g(the)g(curren)m(t)g(state)150 5051
+y(of)h(the)f(line)h(read)f(so)h(far.)275 5196 y(The)e(calling)j
(sequence)f(for)f(a)h(command)f Fs(foo)g Ft(lo)s(oks)g(lik)m(e)390
-4734 y Fs(int)47 b(foo)g(\(int)f(count,)h(int)f(key\))150
-4872 y Ft(where)35 b Fj(coun)m(t)k Ft(is)d(the)g(n)m(umeric)g(argumen)m
-(t)g(\(or)g(1)g(if)g(defaulted\))h(and)e Fj(k)m(ey)44
-b Ft(is)36 b(the)g(k)m(ey)h(that)f(in)m(v)m(ok)m(ed)150
-4982 y(this)30 b(function.)275 5121 y(It)23 b(is)g(completely)h(up)e
-(to)i(the)f(function)g(as)g(to)h(what)f(should)f(b)s(e)h(done)f(with)h
-(the)g(n)m(umeric)g(argumen)m(t.)150 5230 y(Some)40 b(functions)g(use)f
-(it)i(as)f(a)g(rep)s(eat)h(coun)m(t,)i(some)d(as)h(a)f(\015ag,)j(and)c
-(others)h(to)h(c)m(ho)s(ose)g(alternate)150 5340 y(b)s(eha)m(vior)i
-(\(refreshing)g(the)h(curren)m(t)f(line)h(as)f(opp)s(osed)g(to)h
-(refreshing)e(the)i(screen,)j(for)c(example\).)p eop
-end
+5340 y Fs(int)47 b(foo)g(\(int)f(count,)h(int)f(key\))p
+eop end
%%Page: 27 31
TeXDict begin 27 30 bop 150 -116 a Ft(Chapter)30 b(2:)41
b(Programming)30 b(with)g(GNU)h(Readline)1683 b(27)150
-299 y(Some)33 b(c)m(ho)s(ose)h(to)g(ignore)g(it.)50 b(In)32
-b(general,)j(if)f(a)f(function)g(uses)g(the)g(n)m(umeric)g(argumen)m(t)
-h(as)f(a)h(rep)s(eat)150 408 y(coun)m(t,)29 b(it)g(should)e(b)s(e)g
-(able)h(to)h(do)f(something)g(useful)f(with)h(b)s(oth)f(negativ)m(e)j
-(and)d(p)s(ositiv)m(e)i(argumen)m(ts.)150 518 y(A)m(t)i(the)g(v)m(ery)g
-(least,)h(it)e(should)g(b)s(e)g(a)m(w)m(are)h(that)g(it)g(can)g(b)s(e)f
-(passed)g(a)g(negativ)m(e)j(argumen)m(t.)275 658 y(A)38
-b(command)f(function)h(should)f(return)g(0)h(if)g(its)h(action)g
-(completes)g(successfully)-8 b(,)41 b(and)c(a)h(v)-5
-b(alue)150 767 y(greater)34 b(than)f(zero)g(if)g(some)h(error)e(o)s
-(ccurs.)48 b(This)32 b(is)h(the)g(con)m(v)m(en)m(tion)i(ob)s(ey)m(ed)f
-(b)m(y)e(all)i(of)f(the)g(builtin)150 877 y(Readline)e(bindable)f
-(command)g(functions.)150 1126 y Fr(2.3)68 b(Readline)47
-b(V)-11 b(ariables)150 1285 y Ft(These)30 b(v)-5 b(ariables)31
-b(are)g(a)m(v)-5 b(ailable)33 b(to)e(function)f(writers.)3371
-1480 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_line_buffer)390
-1589 y Ft(This)30 b(is)i(the)f(line)g(gathered)h(so)f(far.)43
+299 y(where)35 b Fj(coun)m(t)k Ft(is)d(the)g(n)m(umeric)g(argumen)m(t)g
+(\(or)g(1)g(if)g(defaulted\))h(and)e Fj(k)m(ey)44 b Ft(is)36
+b(the)g(k)m(ey)h(that)f(in)m(v)m(ok)m(ed)150 408 y(this)30
+b(function.)275 551 y(It)23 b(is)g(completely)h(up)e(to)i(the)f
+(function)g(as)g(to)h(what)f(should)f(b)s(e)h(done)f(with)h(the)g(n)m
+(umeric)g(argumen)m(t.)150 661 y(Some)40 b(functions)g(use)f(it)i(as)f
+(a)g(rep)s(eat)h(coun)m(t,)i(some)d(as)h(a)f(\015ag,)j(and)c(others)h
+(to)h(c)m(ho)s(ose)g(alternate)150 770 y(b)s(eha)m(vior)i(\(refreshing)
+g(the)h(curren)m(t)f(line)h(as)f(opp)s(osed)g(to)h(refreshing)e(the)i
+(screen,)j(for)c(example\).)150 880 y(Some)33 b(c)m(ho)s(ose)h(to)g
+(ignore)g(it.)50 b(In)32 b(general,)j(if)f(a)f(function)g(uses)g(the)g
+(n)m(umeric)g(argumen)m(t)h(as)f(a)h(rep)s(eat)150 989
+y(coun)m(t,)29 b(it)g(should)e(b)s(e)g(able)h(to)h(do)f(something)g
+(useful)f(with)h(b)s(oth)f(negativ)m(e)j(and)d(p)s(ositiv)m(e)i
+(argumen)m(ts.)150 1099 y(A)m(t)i(the)g(v)m(ery)g(least,)h(it)e(should)
+g(b)s(e)g(a)m(w)m(are)h(that)g(it)g(can)g(b)s(e)f(passed)g(a)g(negativ)
+m(e)j(argumen)m(t.)275 1242 y(A)38 b(command)f(function)h(should)f
+(return)g(0)h(if)g(its)h(action)g(completes)g(successfully)-8
+b(,)41 b(and)c(a)h(v)-5 b(alue)150 1351 y(greater)34
+b(than)f(zero)g(if)g(some)h(error)e(o)s(ccurs.)48 b(This)32
+b(is)h(the)g(con)m(v)m(en)m(tion)i(ob)s(ey)m(ed)f(b)m(y)e(all)i(of)f
+(the)g(builtin)150 1461 y(Readline)e(bindable)f(command)g(functions.)
+150 1714 y Fr(2.3)68 b(Readline)47 b(V)-11 b(ariables)150
+1873 y Ft(These)30 b(v)-5 b(ariables)31 b(are)g(a)m(v)-5
+b(ailable)33 b(to)e(function)f(writers.)3371 2074 y([V)-8
+b(ariable])-3598 b Fh(char)54 b(*)e(rl_line_buffer)390
+2183 y Ft(This)30 b(is)i(the)f(line)g(gathered)h(so)f(far.)43
b(Y)-8 b(ou)32 b(are)f(w)m(elcome)i(to)f(mo)s(dify)f(the)g(con)m(ten)m
-(ts)i(of)e(the)g(line,)390 1699 y(but)k(see)h(Section)g(2.4.5)h([Allo)m
+(ts)i(of)e(the)g(line,)390 2293 y(but)k(see)h(Section)g(2.4.5)h([Allo)m
(wing)h(Undoing],)f(page)f(36.)57 b(The)35 b(function)g
-Fs(rl_extend_line_)390 1809 y(buffer)29 b Ft(is)h(a)m(v)-5
+Fs(rl_extend_line_)390 2402 y(buffer)29 b Ft(is)h(a)m(v)-5
b(ailable)33 b(to)e(increase)g(the)g(memory)f(allo)s(cated)i(to)f
-Fs(rl_line_buffer)p Ft(.)3371 2004 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_point)390 2113 y Ft(The)30 b(o\013set)h(of)g(the)f
+Fs(rl_line_buffer)p Ft(.)3371 2603 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_point)390 2712 y Ft(The)30 b(o\013set)h(of)g(the)f
(curren)m(t)h(cursor)e(p)s(osition)i(in)f Fs(rl_line_buffer)c
-Ft(\(the)31 b Fk(p)-5 b(oint)9 b Ft(\).)3371 2308 y([V)-8
-b(ariable])-3598 b Fh(int)53 b(rl_end)390 2418 y Ft(The)27
+Ft(\(the)31 b Fk(p)-5 b(oint)9 b Ft(\).)3371 2913 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_end)390 3022 y Ft(The)27
b(n)m(um)m(b)s(er)g(of)h(c)m(haracters)h(presen)m(t)f(in)g
Fs(rl_line_buffer)p Ft(.)36 b(When)27 b Fs(rl_point)f
-Ft(is)i(at)h(the)f(end)390 2527 y(of)j(the)f(line,)h
+Ft(is)i(at)h(the)f(end)390 3132 y(of)j(the)f(line,)h
Fs(rl_point)d Ft(and)i Fs(rl_end)f Ft(are)h(equal.)3371
-2722 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_mark)390
-2832 y Ft(The)36 b Fj(mark)42 b Ft(\(sa)m(v)m(ed)d(p)s(osition\))e(in)g
+3333 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_mark)390
+3442 y Ft(The)36 b Fj(mark)42 b Ft(\(sa)m(v)m(ed)d(p)s(osition\))e(in)g
(the)g(curren)m(t)f(line.)61 b(If)36 b(set,)k(the)d(mark)f(and)h(p)s
-(oin)m(t)f(de\014ne)h(a)390 2941 y Fk(r)-5 b(e)g(gion)p
-Ft(.)3371 3136 y([V)d(ariable])-3598 b Fh(int)53 b(rl_done)390
-3246 y Ft(Setting)22 b(this)g(to)g(a)g(non-zero)g(v)-5
+(oin)m(t)f(de\014ne)h(a)390 3552 y Fk(r)-5 b(e)g(gion)p
+Ft(.)3371 3752 y([V)d(ariable])-3598 b Fh(int)53 b(rl_done)390
+3862 y Ft(Setting)22 b(this)g(to)g(a)g(non-zero)g(v)-5
b(alue)23 b(causes)f(Readline)g(to)g(return)f(the)h(curren)m(t)f(line)h
-(immediately)-8 b(.)3371 3440 y([V)g(ariable])-3598 b
-Fh(int)53 b(rl_num_chars_to_read)390 3550 y Ft(Setting)34
+(immediately)-8 b(.)3371 4062 y([V)g(ariable])-3598 b
+Fh(int)53 b(rl_num_chars_to_read)390 4172 y Ft(Setting)34
b(this)e(to)i(a)f(p)s(ositiv)m(e)h(v)-5 b(alue)34 b(b)s(efore)e
(calling)i Fs(readline\(\))d Ft(causes)i(Readline)g(to)h(return)390
-3660 y(after)i(accepting)h(that)g(man)m(y)e(c)m(haracters,)k(rather)d
+4281 y(after)i(accepting)h(that)g(man)m(y)e(c)m(haracters,)k(rather)d
(than)f(reading)h(up)e(to)j(a)f(c)m(haracter)h(b)s(ound)390
-3769 y(to)31 b Fs(accept-line)p Ft(.)3371 3964 y([V)-8
-b(ariable])-3598 b Fh(int)53 b(rl_pending_input)390 4074
+4391 y(to)31 b Fs(accept-line)p Ft(.)3371 4592 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_pending_input)390 4701
y Ft(Setting)26 b(this)f(to)h(a)f(v)-5 b(alue)26 b(mak)m(es)g(it)g(the)
f(next)g(k)m(eystrok)m(e)i(read.)39 b(This)24 b(is)i(a)f(w)m(a)m(y)h
-(to)g(stu\013)f(a)g(single)390 4183 y(c)m(haracter)32
-b(in)m(to)f(the)g(input)e(stream.)3371 4378 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_dispatching)390 4488 y Ft(Set)24 b(to)h(a)g(non-zero)g
+(to)g(stu\013)f(a)g(single)390 4811 y(c)m(haracter)32
+b(in)m(to)f(the)g(input)e(stream.)3371 5011 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_dispatching)390 5121 y Ft(Set)24 b(to)h(a)g(non-zero)g
(v)-5 b(alue)24 b(if)h(a)f(function)g(is)g(b)s(eing)g(called)i(from)d
-(a)i(k)m(ey)g(binding;)g(zero)g(otherwise.)390 4597 y(Application)37
+(a)i(k)m(ey)g(binding;)g(zero)g(otherwise.)390 5230 y(Application)37
b(functions)e(can)h(test)h(this)e(to)i(disco)m(v)m(er)g(whether)e(they)
-h(w)m(ere)g(called)h(directly)f(or)390 4707 y(b)m(y)30
-b(Readline's)h(dispatc)m(hing)g(mec)m(hanism.)3371 4902
-y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_erase_empty_line)390
-5011 y Ft(Setting)47 b(this)e(to)i(a)f(non-zero)h(v)-5
-b(alue)46 b(causes)h(Readline)f(to)h(completely)g(erase)g(the)f(curren)
-m(t)390 5121 y(line,)f(including)c(an)m(y)g(prompt,)j(an)m(y)d(time)h
-(a)g(newline)f(is)h(t)m(yp)s(ed)f(as)g(the)h(only)f(c)m(haracter)i(on)
-390 5230 y(an)36 b(otherwise-empt)m(y)i(line.)58 b(The)36
-b(cursor)g(is)g(mo)m(v)m(ed)h(to)g(the)g(b)s(eginning)e(of)i(the)f
-(newly-blank)390 5340 y(line.)p eop end
+h(w)m(ere)g(called)h(directly)f(or)390 5340 y(b)m(y)30
+b(Readline's)h(dispatc)m(hing)g(mec)m(hanism.)p eop end
%%Page: 28 32
TeXDict begin 28 31 bop 150 -116 a Ft(Chapter)30 b(2:)41
b(Programming)30 b(with)g(GNU)h(Readline)1683 b(28)3371
-299 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_prompt)390
-408 y Ft(The)26 b(prompt)f(Readline)i(uses.)38 b(This)26
-b(is)g(set)h(from)e(the)i(argumen)m(t)f(to)h Fs(readline\(\))p
-Ft(,)d(and)i(should)390 518 y(not)h(b)s(e)f(assigned)h(to)h(directly)-8
-b(.)41 b(The)26 b Fs(rl_set_prompt\(\))d Ft(function)j(\(see)i(Section)
-g(2.4.6)h([Redis-)390 628 y(pla)m(y],)i(page)h(37\))f(ma)m(y)g(b)s(e)f
-(used)f(to)j(mo)s(dify)d(the)i(prompt)e(string)h(after)h(calling)h
-Fs(readline\(\))p Ft(.)3371 814 y([V)-8 b(ariable])-3598
-b Fh(char)54 b(*)e(rl_display_prompt)390 924 y Ft(The)31
-b(string)h(displa)m(y)m(ed)g(as)g(the)g(prompt.)44 b(This)31
-b(is)h(usually)f(iden)m(tical)j(to)e Fj(rl)p 3031 924
-28 4 v 40 w(prompt)p Ft(,)f(but)g(ma)m(y)390 1033 y(b)s(e)j(c)m(hanged)
-g(temp)s(orarily)h(b)m(y)f(functions)g(that)g(use)g(the)h(prompt)e
-(string)h(as)h(a)f(message)i(area,)390 1143 y(suc)m(h)30
-b(as)h(incremen)m(tal)g(searc)m(h.)3371 1329 y([V)-8
-b(ariable])-3598 b Fh(int)53 b(rl_already_prompted)390
-1439 y Ft(If)36 b(an)g(application)i(wishes)d(to)i(displa)m(y)g(the)f
+299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_erase_empty_line)390
+408 y Ft(Setting)47 b(this)e(to)i(a)f(non-zero)h(v)-5
+b(alue)46 b(causes)h(Readline)f(to)h(completely)g(erase)g(the)f(curren)
+m(t)390 518 y(line,)f(including)c(an)m(y)g(prompt,)j(an)m(y)d(time)h(a)
+g(newline)f(is)h(t)m(yp)s(ed)f(as)g(the)h(only)f(c)m(haracter)i(on)390
+628 y(an)36 b(otherwise-empt)m(y)i(line.)58 b(The)36
+b(cursor)g(is)g(mo)m(v)m(ed)h(to)g(the)g(b)s(eginning)e(of)i(the)f
+(newly-blank)390 737 y(line.)3371 913 y([V)-8 b(ariable])-3598
+b Fh(char)54 b(*)e(rl_prompt)390 1022 y Ft(The)26 b(prompt)f(Readline)i
+(uses.)38 b(This)26 b(is)g(set)h(from)e(the)i(argumen)m(t)f(to)h
+Fs(readline\(\))p Ft(,)d(and)i(should)390 1132 y(not)h(b)s(e)f
+(assigned)h(to)h(directly)-8 b(.)41 b(The)26 b Fs(rl_set_prompt\(\))d
+Ft(function)j(\(see)i(Section)g(2.4.6)h([Redis-)390 1241
+y(pla)m(y],)i(page)h(37\))f(ma)m(y)g(b)s(e)f(used)f(to)j(mo)s(dify)d
+(the)i(prompt)e(string)h(after)h(calling)h Fs(readline\(\))p
+Ft(.)3371 1417 y([V)-8 b(ariable])-3598 b Fh(char)54
+b(*)e(rl_display_prompt)390 1526 y Ft(The)31 b(string)h(displa)m(y)m
+(ed)g(as)g(the)g(prompt.)44 b(This)31 b(is)h(usually)f(iden)m(tical)j
+(to)e Fj(rl)p 3031 1526 28 4 v 40 w(prompt)p Ft(,)f(but)g(ma)m(y)390
+1636 y(b)s(e)j(c)m(hanged)g(temp)s(orarily)h(b)m(y)f(functions)g(that)g
+(use)g(the)h(prompt)e(string)h(as)h(a)f(message)i(area,)390
+1745 y(suc)m(h)30 b(as)h(incremen)m(tal)g(searc)m(h.)3371
+1921 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_already_prompted)390
+2030 y Ft(If)36 b(an)g(application)i(wishes)d(to)i(displa)m(y)g(the)f
(prompt)g(itself,)i(rather)f(than)f(ha)m(v)m(e)h(Readline)g(do)390
-1548 y(it)c(the)g(\014rst)f(time)i Fs(readline\(\))c
+2140 y(it)c(the)g(\014rst)f(time)i Fs(readline\(\))c
Ft(is)i(called,)j(it)e(should)f(set)h(this)g(v)-5 b(ariable)34
-b(to)f(a)g(non-zero)g(v)-5 b(alue)390 1658 y(after)38
+b(to)f(a)g(non-zero)g(v)-5 b(alue)390 2250 y(after)38
b(displa)m(ying)h(the)f(prompt.)63 b(The)37 b(prompt)g(m)m(ust)h(also)h
-(b)s(e)e(passed)g(as)i(the)f(argumen)m(t)g(to)390 1767
+(b)s(e)e(passed)g(as)i(the)f(argumen)m(t)g(to)390 2359
y Fs(readline\(\))30 b Ft(so)j(the)h(redispla)m(y)f(functions)f(can)i
(up)s(date)e(the)h(displa)m(y)g(prop)s(erly)-8 b(.)48
-b(The)32 b(calling)390 1877 y(application)g(is)e(resp)s(onsible)g(for)g
+b(The)32 b(calling)390 2469 y(application)g(is)e(resp)s(onsible)g(for)g
(managing)h(the)f(v)-5 b(alue;)31 b(Readline)g(nev)m(er)g(sets)g(it.)
-3371 2063 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_library_version)390 2173 y Ft(The)30 b(v)m(ersion)h(n)m(um)m(b)s
+3371 2644 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_library_version)390 2754 y Ft(The)30 b(v)m(ersion)h(n)m(um)m(b)s
(er)e(of)h(this)h(revision)f(of)h(the)f(library)-8 b(.)3371
-2359 y([V)g(ariable])-3598 b Fh(int)53 b(rl_readline_version)390
-2469 y Ft(An)34 b(in)m(teger)h(enco)s(ding)f(the)g(curren)m(t)g(v)m
+2929 y([V)g(ariable])-3598 b Fh(int)53 b(rl_readline_version)390
+3039 y Ft(An)34 b(in)m(teger)h(enco)s(ding)f(the)g(curren)m(t)g(v)m
(ersion)h(of)f(the)g(library)-8 b(.)52 b(The)34 b(enco)s(ding)g(is)g
-(of)g(the)g(form)390 2578 y(0x)p Fj(MMmm)p Ft(,)39 b(where)d
+(of)g(the)g(form)390 3148 y(0x)p Fj(MMmm)p Ft(,)39 b(where)d
Fj(MM)47 b Ft(is)36 b(the)h(t)m(w)m(o-digit)i(ma)5 b(jor)36
b(v)m(ersion)h(n)m(um)m(b)s(er,)g(and)f Fj(mm)g Ft(is)h(the)f(t)m(w)m
-(o-)390 2688 y(digit)i(minor)f(v)m(ersion)h(n)m(um)m(b)s(er.)60
+(o-)390 3258 y(digit)i(minor)f(v)m(ersion)h(n)m(um)m(b)s(er.)60
b(F)-8 b(or)38 b(example,)i(for)d(Readline-4.2,)k Fs
-(rl_readline_version)390 2798 y Ft(w)m(ould)30 b(ha)m(v)m(e)i(the)e(v)
--5 b(alue)31 b(0x0402.)3371 2984 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_gnu_readline_p)390 3093 y Ft(Alw)m(a)m(ys)32
+(rl_readline_version)390 3367 y Ft(w)m(ould)30 b(ha)m(v)m(e)i(the)e(v)
+-5 b(alue)31 b(0x0402.)3371 3543 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_gnu_readline_p)390 3652 y Ft(Alw)m(a)m(ys)32
b(set)f(to)g(1,)g(denoting)f(that)h(this)g(is)f Fm(gnu)g
Ft(readline)h(rather)f(than)g(some)h(em)m(ulation.)3371
-3280 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_terminal_name)390 3389 y Ft(The)28 b(terminal)g(t)m(yp)s(e,)h(used)
+3828 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_terminal_name)390 3937 y Ft(The)28 b(terminal)g(t)m(yp)s(e,)h(used)
e(for)h(initialization.)43 b(If)28 b(not)g(set)h(b)m(y)e(the)i
-(application,)h(Readline)f(sets)390 3499 y(this)h(to)h(the)g(v)-5
+(application,)h(Readline)f(sets)390 4047 y(this)h(to)h(the)g(v)-5
b(alue)31 b(of)f(the)h Fs(TERM)e Ft(en)m(vironmen)m(t)i(v)-5
b(ariable)31 b(the)g(\014rst)e(time)j(it)e(is)h(called.)3371
-3685 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_readline_name)390 3795 y Ft(This)30 b(v)-5 b(ariable)32
+4222 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_readline_name)390 4332 y Ft(This)30 b(v)-5 b(ariable)32
b(is)g(set)f(to)h(a)g(unique)e(name)h(b)m(y)g(eac)m(h)i(application)f
-(using)f(Readline.)44 b(The)30 b(v)-5 b(alue)390 3904
+(using)f(Readline.)44 b(The)30 b(v)-5 b(alue)390 4441
y(allo)m(ws)29 b(conditional)h(parsing)d(of)h(the)h(inputrc)e(\014le)h
(\(see)h(Section)g(1.3.2)g([Conditional)g(Init)f(Con-)390
-4014 y(structs],)j(page)g(12\).)3371 4200 y([V)-8 b(ariable])-3598
-b Fh(FILE)54 b(*)e(rl_instream)390 4310 y Ft(The)40 b(stdio)i(stream)f
+4551 y(structs],)j(page)g(12\).)3371 4726 y([V)-8 b(ariable])-3598
+b Fh(FILE)54 b(*)e(rl_instream)390 4836 y Ft(The)40 b(stdio)i(stream)f
(from)g(whic)m(h)f(Readline)i(reads)f(input.)71 b(If)41
-b Fs(NULL)p Ft(,)i(Readline)e(defaults)g(to)390 4419
-y Fj(stdin)p Ft(.)3371 4606 y([V)-8 b(ariable])-3598
-b Fh(FILE)54 b(*)e(rl_outstream)390 4715 y Ft(The)34
+b Fs(NULL)p Ft(,)i(Readline)e(defaults)g(to)390 4945
+y Fj(stdin)p Ft(.)3371 5121 y([V)-8 b(ariable])-3598
+b Fh(FILE)54 b(*)e(rl_outstream)390 5230 y Ft(The)34
b(stdio)h(stream)f(to)i(whic)m(h)e(Readline)h(p)s(erforms)e(output.)52
b(If)34 b Fs(NULL)p Ft(,)h(Readline)g(defaults)f(to)390
-4825 y Fj(stdout)p Ft(.)3371 5011 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_prefer_env_winsize)390 5121 y Ft(If)28
-b(non-zero,)h(Readline)g(giv)m(es)h(v)-5 b(alues)29 b(found)e(in)h(the)
-g Fs(LINES)f Ft(and)h Fs(COLUMNS)e Ft(en)m(vironmen)m(t)j(v)-5
-b(ari-)390 5230 y(ables)41 b(greater)h(precedence)g(than)e(v)-5
-b(alues)41 b(fetc)m(hed)h(from)e(the)h(k)m(ernel)h(when)e(computing)h
-(the)390 5340 y(screen)30 b(dimensions.)p eop end
+5340 y Fj(stdout)p Ft(.)p eop end
%%Page: 29 33
TeXDict begin 29 32 bop 150 -116 a Ft(Chapter)30 b(2:)41
b(Programming)30 b(with)g(GNU)h(Readline)1683 b(29)3371
-299 y([V)-8 b(ariable])-3598 b Fh(rl_command_func_t)57
-b(*)c(rl_last_func)390 408 y Ft(The)34 b(address)g(of)h(the)g(last)h
+299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_prefer_env_winsize)390
+408 y Ft(If)28 b(non-zero,)h(Readline)g(giv)m(es)h(v)-5
+b(alues)29 b(found)e(in)h(the)g Fs(LINES)f Ft(and)h Fs(COLUMNS)e
+Ft(en)m(vironmen)m(t)j(v)-5 b(ari-)390 518 y(ables)41
+b(greater)h(precedence)g(than)e(v)-5 b(alues)41 b(fetc)m(hed)h(from)e
+(the)h(k)m(ernel)h(when)e(computing)h(the)390 628 y(screen)30
+b(dimensions.)3371 847 y([V)-8 b(ariable])-3598 b Fh(rl_command_func_t)
+57 b(*)c(rl_last_func)390 956 y Ft(The)34 b(address)g(of)h(the)g(last)h
(command)e(function)g(Readline)i(executed.)55 b(Ma)m(y)35
-b(b)s(e)g(used)f(to)h(test)390 518 y(whether)30 b(or)g(not)h(a)f
+b(b)s(e)g(used)f(to)h(test)390 1066 y(whether)30 b(or)g(not)h(a)f
(function)h(is)f(b)s(eing)g(executed)h(t)m(wice)h(in)e(succession,)h
-(for)f(example.)3371 737 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)
-57 b(*)52 b(rl_startup_hook)390 847 y Ft(If)34 b(non-zero,)i(this)e(is)
-h(the)f(address)f(of)i(a)g(function)f(to)h(call)g(just)f(b)s(efore)g
-Fs(readline)e Ft(prin)m(ts)i(the)390 956 y(\014rst)c(prompt.)3371
-1176 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57
-b(*)52 b(rl_pre_input_hook)390 1285 y Ft(If)35 b(non-zero,)j(this)d(is)
-g(the)h(address)f(of)g(a)h(function)f(to)i(call)f(after)g(the)g
-(\014rst)f(prompt)f(has)i(b)s(een)390 1395 y(prin)m(ted)30
-b(and)g(just)f(b)s(efore)h Fs(readline)f Ft(starts)h(reading)h(input)e
-(c)m(haracters.)3371 1614 y([V)-8 b(ariable])-3598 b
-Fh(rl_hook_func_t)57 b(*)52 b(rl_event_hook)390 1724
-y Ft(If)40 b(non-zero,)k(this)d(is)f(the)h(address)f(of)h(a)g(function)
-f(to)h(call)h(p)s(erio)s(dically)f(when)f(Readline)h(is)390
-1833 y(w)m(aiting)30 b(for)f(terminal)h(input.)39 b(By)30
-b(default,)g(this)f(will)g(b)s(e)g(called)h(at)g(most)f(ten)h(times)f
-(a)h(second)390 1943 y(if)g(there)h(is)f(no)h(k)m(eyb)s(oard)f(input.)
-3371 2162 y([V)-8 b(ariable])-3598 b Fh(rl_getc_func_t)57
-b(*)52 b(rl_getc_function)390 2271 y Ft(If)30 b(non-zero,)h(Readline)g
+(for)f(example.)3371 1285 y([V)-8 b(ariable])-3598 b
+Fh(rl_hook_func_t)57 b(*)52 b(rl_startup_hook)390 1395
+y Ft(If)34 b(non-zero,)i(this)e(is)h(the)f(address)f(of)i(a)g(function)
+f(to)h(call)g(just)f(b)s(efore)g Fs(readline)e Ft(prin)m(ts)i(the)390
+1504 y(\014rst)c(prompt.)3371 1724 y([V)-8 b(ariable])-3598
+b Fh(rl_hook_func_t)57 b(*)52 b(rl_pre_input_hook)390
+1833 y Ft(If)35 b(non-zero,)j(this)d(is)g(the)h(address)f(of)g(a)h
+(function)f(to)i(call)f(after)g(the)g(\014rst)f(prompt)f(has)i(b)s(een)
+390 1943 y(prin)m(ted)30 b(and)g(just)f(b)s(efore)h Fs(readline)f
+Ft(starts)h(reading)h(input)e(c)m(haracters.)3371 2162
+y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52
+b(rl_event_hook)390 2271 y Ft(If)40 b(non-zero,)k(this)d(is)f(the)h
+(address)f(of)h(a)g(function)f(to)h(call)h(p)s(erio)s(dically)f(when)f
+(Readline)h(is)390 2381 y(w)m(aiting)30 b(for)f(terminal)h(input.)39
+b(By)30 b(default,)g(this)f(will)g(b)s(e)g(called)h(at)g(most)f(ten)h
+(times)f(a)h(second)390 2491 y(if)g(there)h(is)f(no)h(k)m(eyb)s(oard)f
+(input.)3371 2710 y([V)-8 b(ariable])-3598 b Fh(rl_getc_func_t)57
+b(*)52 b(rl_getc_function)390 2819 y Ft(If)30 b(non-zero,)h(Readline)g
(will)g(call)h(indirectly)e(through)g(this)h(p)s(oin)m(ter)f(to)h(get)h
-(a)e(c)m(haracter)i(from)390 2381 y(the)21 b(input)g(stream.)38
+(a)e(c)m(haracter)i(from)390 2929 y(the)21 b(input)g(stream.)38
b(By)21 b(default,)j(it)e(is)f(set)h(to)g Fs(rl_getc)p
Ft(,)f(the)h(default)f(Readline)h(c)m(haracter)h(input)390
-2491 y(function)f(\(see)i(Section)g(2.4.8)g([Character)g(Input],)f
-(page)h(38\).)39 b(In)22 b(general,)k(an)c(application)i(that)390
-2600 y(sets)31 b Fj(rl)p 635 2600 28 4 v 40 w(getc)p
-835 2600 V 41 w(function)f Ft(should)g(consider)g(setting)h
-Fj(rl)p 2234 2600 V 40 w(input)p 2487 2600 V 39 w(a)m(v)-5
-b(ailable)p 2867 2600 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)3371
-2819 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57
-b(*)52 b(rl_signal_event_hook)390 2929 y Ft(If)27 b(non-zero,)h(this)f
+3039 y(function)f(\(see)i(Section)g(2.4.8)g([Character)g(Input],)f
+(page)h(39\).)39 b(In)22 b(general,)k(an)c(application)i(that)390
+3148 y(sets)31 b Fj(rl)p 635 3148 28 4 v 40 w(getc)p
+835 3148 V 41 w(function)f Ft(should)g(consider)g(setting)h
+Fj(rl)p 2234 3148 V 40 w(input)p 2487 3148 V 39 w(a)m(v)-5
+b(ailable)p 2867 3148 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)3371
+3367 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57
+b(*)52 b(rl_signal_event_hook)390 3477 y Ft(If)27 b(non-zero,)h(this)f
(is)g(the)g(address)f(of)i(a)f(function)g(to)g(call)i(if)e(a)g(read)g
-(system)g(call)h(is)g(in)m(terrupted)390 3039 y(when)h(Readline)i(is)g
-(reading)f(terminal)h(input.)3371 3258 y([V)-8 b(ariable])-3598
+(system)g(call)h(is)g(in)m(terrupted)390 3587 y(when)h(Readline)i(is)g
+(reading)f(terminal)h(input.)3371 3806 y([V)-8 b(ariable])-3598
b Fh(rl_hook_func_t)57 b(*)52 b(rl_input_available_ho)q(ok)390
-3367 y Ft(If)28 b(non-zero,)j(Readline)e(will)g(use)g(this)g
+3915 y Ft(If)28 b(non-zero,)j(Readline)e(will)g(use)g(this)g
(function's)g(return)f(v)-5 b(alue)29 b(when)f(it)i(needs)e(to)i
-(determine)390 3477 y(whether)42 b(or)g(not)h(there)f(is)h(a)m(v)-5
+(determine)390 4025 y(whether)42 b(or)g(not)h(there)f(is)h(a)m(v)-5
b(ailable)45 b(input)c(on)i(the)f(curren)m(t)g(input)g(source.)77
-b(The)42 b(default)390 3587 y(ho)s(ok)25 b(c)m(hec)m(ks)i
+b(The)42 b(default)390 4134 y(ho)s(ok)25 b(c)m(hec)m(ks)i
Fs(rl_instream)p Ft(;)d(if)i(an)f(application)i(is)e(using)g(a)h
-(di\013eren)m(t)g(input)e(source,)j(it)f(should)390 3696
+(di\013eren)m(t)g(input)e(source,)j(it)f(should)390 4244
y(set)34 b(the)f(ho)s(ok)h(appropriately)-8 b(.)50 b(Readline)34
b(queries)f(for)h(a)m(v)-5 b(ailable)35 b(input)e(when)f(implemen)m
-(ting)390 3806 y(in)m(tra-k)m(ey-sequence)f(timeouts)e(during)e(input)g
+(ting)390 4354 y(in)m(tra-k)m(ey-sequence)f(timeouts)e(during)e(input)g
(and)h(incremen)m(tal)h(searc)m(hes.)41 b(This)27 b(ma)m(y)i(use)f(an)
-390 3915 y(application-sp)s(eci\014c)22 b(timeout)g(b)s(efore)f
+390 4463 y(application-sp)s(eci\014c)22 b(timeout)g(b)s(efore)f
(returning)f(a)h(v)-5 b(alue;)25 b(Readline)c(uses)f(the)i(v)-5
-b(alue)21 b(passed)f(to)390 4025 y Fs(rl_set_keyboard_input_ti)o(meou)o
+b(alue)21 b(passed)f(to)390 4573 y Fs(rl_set_keyboard_input_ti)o(meou)o
(t\(\))e Ft(or)24 b(the)g(v)-5 b(alue)25 b(of)g(the)f(user-settable)i
-Fj(k)m(eyseq-timeout)390 4134 y Ft(v)-5 b(ariable.)48
+Fj(k)m(eyseq-timeout)390 4682 y Ft(v)-5 b(ariable.)48
b(This)31 b(is)i(designed)f(for)g(use)g(b)m(y)g(applications)i(using)e
-(Readline's)h(callbac)m(k)h(in)m(terface)390 4244 y(\(see)d(Section)f
-(2.4.12)i([Alternate)f(In)m(terface],)h(page)e(42\),)i(whic)m(h)d(ma)m
-(y)h(not)g(use)g(the)g(traditional)390 4354 y Fs(read\(2\))39
+(Readline's)h(callbac)m(k)h(in)m(terface)390 4792 y(\(see)d(Section)f
+(2.4.12)i([Alternate)f(In)m(terface],)h(page)e(43\),)i(whic)m(h)d(ma)m
+(y)h(not)g(use)g(the)g(traditional)390 4902 y Fs(read\(2\))39
b Ft(and)g(\014le)i(descriptor)f(in)m(terface,)45 b(or)c(other)f
(applications)i(using)e(a)h(di\013eren)m(t)g(input)390
-4463 y(mec)m(hanism.)k(If)31 b(an)g(application)i(uses)e(an)h(input)e
+5011 y(mec)m(hanism.)k(If)31 b(an)g(application)i(uses)e(an)h(input)e
(mec)m(hanism)i(or)g(ho)s(ok)f(that)h(can)g(p)s(oten)m(tially)390
-4573 y(exceed)38 b(the)e(v)-5 b(alue)37 b(of)g Fj(k)m(eyseq-timeout)p
+5121 y(exceed)38 b(the)e(v)-5 b(alue)37 b(of)g Fj(k)m(eyseq-timeout)p
Ft(,)k(it)c(should)e(increase)j(the)e(timeout)i(or)f(set)g(this)f(ho)s
-(ok)390 4682 y(appropriately)d(ev)m(en)g(when)e(not)h(using)g(the)h
+(ok)390 5230 y(appropriately)d(ev)m(en)g(when)e(not)h(using)g(the)h
(callbac)m(k)h(in)m(terface.)48 b(In)31 b(general,)j(an)f(application)
-390 4792 y(that)e(sets)g Fj(rl)p 832 4792 V 40 w(getc)p
-1032 4792 V 41 w(function)f Ft(should)g(consider)g(setting)h
-Fj(rl)p 2431 4792 V 40 w(input)p 2684 4792 V 39 w(a)m(v)-5
-b(ailable)p 3064 4792 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)3371
-5011 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d
-(rl_redisplay_function)390 5121 y Ft(If)36 b(non-zero,)i(Readline)e
-(will)h(call)g(indirectly)f(through)g(this)g(p)s(oin)m(ter)g(to)g(up)s
-(date)g(the)g(displa)m(y)390 5230 y(with)27 b(the)g(curren)m(t)g(con)m
-(ten)m(ts)h(of)f(the)h(editing)f(bu\013er.)39 b(By)27
-b(default,)h(it)g(is)f(set)g(to)h Fs(rl_redisplay)p Ft(,)390
-5340 y(the)j(default)f(Readline)h(redispla)m(y)g(function)f(\(see)h
-(Section)g(2.4.6)h([Redispla)m(y],)g(page)f(37\).)p eop
-end
+390 5340 y(that)e(sets)g Fj(rl)p 832 5340 V 40 w(getc)p
+1032 5340 V 41 w(function)f Ft(should)g(consider)g(setting)h
+Fj(rl)p 2431 5340 V 40 w(input)p 2684 5340 V 39 w(a)m(v)-5
+b(ailable)p 3064 5340 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)p
+eop end
%%Page: 30 34
TeXDict begin 30 33 bop 150 -116 a Ft(Chapter)30 b(2:)41
b(Programming)30 b(with)g(GNU)h(Readline)1683 b(30)3371
-299 y([V)-8 b(ariable])-3598 b Fh(rl_vintfunc_t)56 b(*)d
-(rl_prep_term_function)390 408 y Ft(If)24 b(non-zero,)i(Readline)e
+299 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d
+(rl_redisplay_function)390 408 y Ft(If)36 b(non-zero,)i(Readline)e
+(will)h(call)g(indirectly)f(through)g(this)g(p)s(oin)m(ter)g(to)g(up)s
+(date)g(the)g(displa)m(y)390 518 y(with)27 b(the)g(curren)m(t)g(con)m
+(ten)m(ts)h(of)f(the)h(editing)f(bu\013er.)39 b(By)27
+b(default,)h(it)g(is)f(set)g(to)h Fs(rl_redisplay)p Ft(,)390
+628 y(the)j(default)f(Readline)h(redispla)m(y)g(function)f(\(see)h
+(Section)g(2.4.6)h([Redispla)m(y],)g(page)f(37\).)3371
+817 y([V)-8 b(ariable])-3598 b Fh(rl_vintfunc_t)56 b(*)d
+(rl_prep_term_function)390 927 y Ft(If)24 b(non-zero,)i(Readline)e
(will)h(call)g(indirectly)g(through)e(this)h(p)s(oin)m(ter)g(to)h
-(initialize)h(the)e(terminal.)390 518 y(The)37 b(function)f(tak)m(es)j
+(initialize)h(the)e(terminal.)390 1036 y(The)37 b(function)f(tak)m(es)j
(a)e(single)h(argumen)m(t,)i(an)d Fs(int)f Ft(\015ag)h(that)h(sa)m(ys)g
-(whether)e(or)h(not)g(to)h(use)390 628 y(eigh)m(t-bit)e(c)m(haracters.)
-53 b(By)35 b(default,)g(this)f(is)g(set)h(to)g Fs(rl_prep_terminal)29
-b Ft(\(see)35 b(Section)g(2.4.9)390 737 y([T)-8 b(erminal)31
-b(Managemen)m(t],)i(page)e(39\).)3371 915 y([V)-8 b(ariable])-3598
-b Fh(rl_voidfunc_t)56 b(*)d(rl_deprep_term_functio)q(n)390
-1024 y Ft(If)36 b(non-zero,)j(Readline)e(will)g(call)h(indirectly)f
-(through)f(this)g(p)s(oin)m(ter)h(to)g(reset)g(the)g(terminal.)390
-1134 y(This)d(function)h(should)f(undo)g(the)h(e\013ects)h(of)f
-Fs(rl_prep_term_function)p Ft(.)49 b(By)35 b(default,)i(this)390
-1243 y(is)30 b(set)h(to)g Fs(rl_deprep_terminal)26 b
-Ft(\(see)31 b(Section)g(2.4.9)i([T)-8 b(erminal)30 b(Managemen)m(t],)j
-(page)e(39\).)3371 1421 y([V)-8 b(ariable])-3598 b Fh(Keymap)54
-b(rl_executing_keymap)390 1530 y Ft(This)35 b(v)-5 b(ariable)37
-b(is)f(set)g(to)h(the)f(k)m(eymap)h(\(see)g(Section)f(2.4.2)i
-([Keymaps],)g(page)e(32\))i(in)d(whic)m(h)390 1640 y(the)c(curren)m
-(tly)f(executing)i(readline)e(function)g(w)m(as)h(found.)3371
-1817 y([V)-8 b(ariable])-3598 b Fh(Keymap)54 b(rl_binding_keymap)390
-1927 y Ft(This)35 b(v)-5 b(ariable)37 b(is)f(set)g(to)h(the)f(k)m
-(eymap)h(\(see)g(Section)f(2.4.2)i([Keymaps],)g(page)e(32\))i(in)d
-(whic)m(h)390 2036 y(the)c(last)g(k)m(ey)g(binding)e(o)s(ccurred.)3371
-2213 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_macro)390
-2323 y Ft(This)30 b(v)-5 b(ariable)31 b(is)f(set)h(to)g(the)g(text)g
-(of)g(an)m(y)f(curren)m(tly-executing)i(macro.)3371 2500
+(whether)e(or)h(not)g(to)h(use)390 1146 y(eigh)m(t-bit)e(c)m
+(haracters.)53 b(By)35 b(default,)g(this)f(is)g(set)h(to)g
+Fs(rl_prep_terminal)29 b Ft(\(see)35 b(Section)g(2.4.9)390
+1255 y([T)-8 b(erminal)31 b(Managemen)m(t],)i(page)e(40\).)3371
+1445 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d
+(rl_deprep_term_functio)q(n)390 1554 y Ft(If)36 b(non-zero,)j(Readline)
+e(will)g(call)h(indirectly)f(through)f(this)g(p)s(oin)m(ter)h(to)g
+(reset)g(the)g(terminal.)390 1664 y(This)d(function)h(should)f(undo)g
+(the)h(e\013ects)h(of)f Fs(rl_prep_term_function)p Ft(.)49
+b(By)35 b(default,)i(this)390 1774 y(is)30 b(set)h(to)g
+Fs(rl_deprep_terminal)26 b Ft(\(see)31 b(Section)g(2.4.9)i([T)-8
+b(erminal)30 b(Managemen)m(t],)j(page)e(40\).)3371 1963
+y([V)-8 b(ariable])-3598 b Fh(Keymap)54 b(rl_executing_keymap)390
+2073 y Ft(This)35 b(v)-5 b(ariable)37 b(is)f(set)g(to)h(the)f(k)m
+(eymap)h(\(see)g(Section)f(2.4.2)i([Keymaps],)g(page)e(33\))i(in)d
+(whic)m(h)390 2182 y(the)c(curren)m(tly)f(executing)i(readline)e
+(function)g(w)m(as)h(found.)3371 2372 y([V)-8 b(ariable])-3598
+b Fh(Keymap)54 b(rl_binding_keymap)390 2481 y Ft(This)35
+b(v)-5 b(ariable)37 b(is)f(set)g(to)h(the)f(k)m(eymap)h(\(see)g
+(Section)f(2.4.2)i([Keymaps],)g(page)e(33\))i(in)d(whic)m(h)390
+2591 y(the)c(last)g(k)m(ey)g(binding)e(o)s(ccurred.)3371
+2780 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_macro)390
+2890 y Ft(This)30 b(v)-5 b(ariable)31 b(is)f(set)h(to)g(the)g(text)g
+(of)g(an)m(y)f(curren)m(tly-executing)i(macro.)3371 3079
y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_executing_key)390
-2610 y Ft(The)30 b(k)m(ey)h(that)g(caused)f(the)h(dispatc)m(h)g(to)g
+3189 y Ft(The)30 b(k)m(ey)h(that)g(caused)f(the)h(dispatc)m(h)g(to)g
(the)f(curren)m(tly-executing)i(Readline)f(function.)3371
-2787 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_keyseq)
-390 2897 y Ft(The)35 b(full)g(k)m(ey)h(sequence)g(that)g(caused)g(the)g
+3378 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_keyseq)
+390 3488 y Ft(The)35 b(full)g(k)m(ey)h(sequence)g(that)g(caused)g(the)g
(dispatc)m(h)f(to)i(the)e(curren)m(tly-executing)i(Readline)390
-3006 y(function.)3371 3184 y([V)-8 b(ariable])-3598 b
-Fh(int)53 b(rl_key_sequence_lengt)q(h)390 3293 y Ft(The)30
+3597 y(function.)3371 3787 y([V)-8 b(ariable])-3598 b
+Fh(int)53 b(rl_key_sequence_lengt)q(h)390 3896 y Ft(The)30
b(n)m(um)m(b)s(er)f(of)h(c)m(haracters)i(in)e Fj(rl)p
-1617 3293 28 4 v 40 w(executing)p 2032 3293 V 41 w(k)m(eyseq)p
-Ft(.)3371 3471 y([V)-8 b(ariable])-3598 b Fh(int)53 b
-(rl_readline_state)390 3580 y Ft(A)35 b(v)-5 b(ariable)35
+1617 3896 28 4 v 40 w(executing)p 2032 3896 V 41 w(k)m(eyseq)p
+Ft(.)3371 4086 y([V)-8 b(ariable])-3598 b Fh(int)53 b
+(rl_readline_state)390 4195 y Ft(A)35 b(v)-5 b(ariable)35
b(with)f(bit)g(v)-5 b(alues)35 b(that)g(encapsulate)h(the)e(curren)m(t)
-h(Readline)g(state.)54 b(A)34 b(bit)h(is)f(set)390 3690
+h(Readline)g(state.)54 b(A)34 b(bit)h(is)f(set)390 4305
y(with)k(the)g Fs(RL_SETSTATE)c Ft(macro,)41 b(and)c(unset)h(with)f
(the)h Fs(RL_UNSETSTATE)d Ft(macro.)63 b(Use)39 b(the)390
-3799 y Fs(RL_ISSTATE)34 b Ft(macro)k(to)g(test)g(whether)f(a)h
+4414 y Fs(RL_ISSTATE)34 b Ft(macro)k(to)g(test)g(whether)f(a)h
(particular)f(state)i(bit)e(is)g(set.)62 b(Curren)m(t)36
-b(state)j(bits)390 3909 y(include:)390 4064 y Fs(RL_STATE_NONE)870
-4173 y Ft(Readline)31 b(has)f(not)h(y)m(et)g(b)s(een)f(called,)i(nor)e
-(has)g(it)h(b)s(egun)e(to)i(initialize.)390 4328 y Fs
-(RL_STATE_INITIALIZING)870 4437 y Ft(Readline)g(is)f(initializing)j
-(its)e(in)m(ternal)g(data)g(structures.)390 4592 y Fs
-(RL_STATE_INITIALIZED)870 4702 y Ft(Readline)g(has)f(completed)h(its)g
-(initialization.)390 4856 y Fs(RL_STATE_TERMPREPPED)870
-4966 y Ft(Readline)e(has)g(mo)s(di\014ed)e(the)i(terminal)g(mo)s(des)f
-(to)i(do)e(its)i(o)m(wn)e(input)g(and)g(redis-)870 5076
-y(pla)m(y)-8 b(.)390 5230 y Fs(RL_STATE_READCMD)870 5340
-y Ft(Readline)31 b(is)f(reading)h(a)g(command)f(from)g(the)g(k)m(eyb)s
-(oard.)p eop end
+b(state)j(bits)390 4524 y(include:)390 4687 y Fs(RL_STATE_NONE)870
+4797 y Ft(Readline)31 b(has)f(not)h(y)m(et)g(b)s(een)f(called,)i(nor)e
+(has)g(it)h(b)s(egun)e(to)i(initialize.)390 4959 y Fs
+(RL_STATE_INITIALIZING)870 5068 y Ft(Readline)g(is)f(initializing)j
+(its)e(in)m(ternal)g(data)g(structures.)390 5230 y Fs
+(RL_STATE_INITIALIZED)870 5340 y Ft(Readline)g(has)f(completed)h(its)g
+(initialization.)p eop end
%%Page: 31 35
TeXDict begin 31 34 bop 150 -116 a Ft(Chapter)30 b(2:)41
b(Programming)30 b(with)g(GNU)h(Readline)1683 b(31)390
-299 y Fs(RL_STATE_METANEXT)870 408 y Ft(Readline)31 b(is)f(reading)h
-(more)f(input)g(after)h(reading)f(the)h(meta-pre\014x)f(c)m(haracter.)
-390 576 y Fs(RL_STATE_DISPATCHING)870 686 y Ft(Readline)h(is)f(dispatc)
-m(hing)h(to)g(a)g(command.)390 853 y Fs(RL_STATE_MOREINPUT)870
-963 y Ft(Readline)g(is)f(reading)h(more)f(input)g(while)g(executing)i
-(an)e(editing)h(command.)390 1130 y Fs(RL_STATE_ISEARCH)870
-1240 y Ft(Readline)g(is)f(p)s(erforming)g(an)g(incremen)m(tal)i
-(history)e(searc)m(h.)390 1408 y Fs(RL_STATE_NSEARCH)870
-1517 y Ft(Readline)h(is)f(p)s(erforming)g(a)g(non-incremen)m(tal)i
-(history)e(searc)m(h.)390 1685 y Fs(RL_STATE_SEARCH)870
-1794 y Ft(Readline)21 b(is)f(searc)m(hing)i(bac)m(kw)m(ard)e(or)h(forw)
+299 y Fs(RL_STATE_TERMPREPPED)870 408 y Ft(Readline)29
+b(has)g(mo)s(di\014ed)e(the)i(terminal)g(mo)s(des)f(to)i(do)e(its)i(o)m
+(wn)e(input)g(and)g(redis-)870 518 y(pla)m(y)-8 b(.)390
+679 y Fs(RL_STATE_READCMD)870 789 y Ft(Readline)31 b(is)f(reading)h(a)g
+(command)f(from)g(the)g(k)m(eyb)s(oard.)390 950 y Fs(RL_STATE_METANEXT)
+870 1060 y Ft(Readline)h(is)f(reading)h(more)f(input)g(after)h(reading)
+f(the)h(meta-pre\014x)f(c)m(haracter.)390 1221 y Fs
+(RL_STATE_DISPATCHING)870 1330 y Ft(Readline)h(is)f(dispatc)m(hing)h
+(to)g(a)g(command.)390 1491 y Fs(RL_STATE_MOREINPUT)870
+1601 y Ft(Readline)g(is)f(reading)h(more)f(input)g(while)g(executing)i
+(an)e(editing)h(command.)390 1762 y Fs(RL_STATE_ISEARCH)870
+1872 y Ft(Readline)g(is)f(p)s(erforming)g(an)g(incremen)m(tal)i
+(history)e(searc)m(h.)390 2033 y Fs(RL_STATE_NSEARCH)870
+2143 y Ft(Readline)h(is)f(p)s(erforming)g(a)g(non-incremen)m(tal)i
+(history)e(searc)m(h.)390 2304 y Fs(RL_STATE_SEARCH)870
+2413 y Ft(Readline)21 b(is)f(searc)m(hing)i(bac)m(kw)m(ard)e(or)h(forw)
m(ard)e(through)h(the)h(history)f(for)g(a)h(string.)390
-1962 y Fs(RL_STATE_NUMERICARG)870 2072 y Ft(Readline)31
-b(is)f(reading)h(a)g(n)m(umeric)f(argumen)m(t.)390 2239
-y Fs(RL_STATE_MACROINPUT)870 2349 y Ft(Readline)25 b(is)f(curren)m(tly)
+2574 y Fs(RL_STATE_NUMERICARG)870 2684 y Ft(Readline)31
+b(is)f(reading)h(a)g(n)m(umeric)f(argumen)m(t.)390 2845
+y Fs(RL_STATE_MACROINPUT)870 2955 y Ft(Readline)25 b(is)f(curren)m(tly)
g(getting)i(its)f(input)e(from)h(a)g(previously-de\014ned)f(k)m(eyb)s
-(oard)870 2458 y(macro.)390 2626 y Fs(RL_STATE_MACRODEF)870
-2736 y Ft(Readline)31 b(is)f(curren)m(tly)h(reading)f(c)m(haracters)i
-(de\014ning)e(a)g(k)m(eyb)s(oard)h(macro.)390 2903 y
-Fs(RL_STATE_OVERWRITE)870 3013 y Ft(Readline)g(is)f(in)g(o)m(v)m
-(erwrite)i(mo)s(de.)390 3180 y Fs(RL_STATE_COMPLETING)870
-3290 y Ft(Readline)f(is)f(p)s(erforming)g(w)m(ord)g(completion.)390
-3458 y Fs(RL_STATE_SIGHANDLER)870 3567 y Ft(Readline)h(is)f(curren)m
+(oard)870 3064 y(macro.)390 3226 y Fs(RL_STATE_MACRODEF)870
+3335 y Ft(Readline)31 b(is)f(curren)m(tly)h(reading)f(c)m(haracters)i
+(de\014ning)e(a)g(k)m(eyb)s(oard)h(macro.)390 3496 y
+Fs(RL_STATE_OVERWRITE)870 3606 y Ft(Readline)g(is)f(in)g(o)m(v)m
+(erwrite)i(mo)s(de.)390 3767 y Fs(RL_STATE_COMPLETING)870
+3877 y Ft(Readline)f(is)f(p)s(erforming)g(w)m(ord)g(completion.)390
+4038 y Fs(RL_STATE_SIGHANDLER)870 4147 y Ft(Readline)h(is)f(curren)m
(tly)h(executing)g(the)g(readline)g(signal)g(handler.)390
-3735 y Fs(RL_STATE_UNDOING)870 3844 y Ft(Readline)g(is)f(p)s(erforming)
-g(an)g(undo.)390 4012 y Fs(RL_STATE_INPUTPENDING)870
-4122 y Ft(Readline)h(has)f(input)g(p)s(ending)f(due)g(to)i(a)g(call)h
-(to)f Fs(rl_execute_next\(\))p Ft(.)390 4289 y Fs(RL_STATE_TTYCSAVED)
-870 4399 y Ft(Readline)g(has)f(sa)m(v)m(ed)i(the)e(v)-5
+4309 y Fs(RL_STATE_UNDOING)870 4418 y Ft(Readline)g(is)f(p)s(erforming)
+g(an)g(undo.)390 4579 y Fs(RL_STATE_INPUTPENDING)870
+4689 y Ft(Readline)h(has)f(input)g(p)s(ending)f(due)g(to)i(a)g(call)h
+(to)f Fs(rl_execute_next\(\))p Ft(.)390 4850 y Fs(RL_STATE_TTYCSAVED)
+870 4960 y Ft(Readline)g(has)f(sa)m(v)m(ed)i(the)e(v)-5
b(alues)31 b(of)f(the)h(terminal's)g(sp)s(ecial)g(c)m(haracters.)390
-4566 y Fs(RL_STATE_CALLBACK)870 4676 y Ft(Readline)44
+5121 y Fs(RL_STATE_CALLBACK)870 5230 y Ft(Readline)44
b(is)f(curren)m(tly)g(using)f(the)h(alternate)i(\(callbac)m(k\))h(in)m
-(terface)e(\(see)g(Sec-)870 4786 y(tion)31 b(2.4.12)h([Alternate)h(In)m
-(terface],)f(page)f(42\).)390 4953 y Fs(RL_STATE_VIMOTION)870
-5063 y Ft(Readline)g(is)f(reading)h(the)f(argumen)m(t)h(to)g(a)g(vi-mo)
-s(de)g Fs(")p Ft(motion)p Fs(")f Ft(command.)390 5230
-y Fs(RL_STATE_MULTIKEY)870 5340 y Ft(Readline)h(is)f(reading)h(a)g(m)m
-(ultiple-k)m(eystrok)m(e)i(command.)p eop end
+(terface)e(\(see)g(Sec-)870 5340 y(tion)31 b(2.4.12)h([Alternate)h(In)m
+(terface],)f(page)f(43\).)p eop end
%%Page: 32 36
TeXDict begin 32 35 bop 150 -116 a Ft(Chapter)30 b(2:)41
b(Programming)30 b(with)g(GNU)h(Readline)1683 b(32)390
-299 y Fs(RL_STATE_VICMDONCE)870 408 y Ft(Readline)40
+299 y Fs(RL_STATE_VIMOTION)870 408 y Ft(Readline)31 b(is)f(reading)h
+(the)f(argumen)m(t)h(to)g(a)g(vi-mo)s(de)g Fs(")p Ft(motion)p
+Fs(")f Ft(command.)390 589 y Fs(RL_STATE_MULTIKEY)870
+699 y Ft(Readline)h(is)f(reading)h(a)g(m)m(ultiple-k)m(eystrok)m(e)i
+(command.)390 879 y Fs(RL_STATE_VICMDONCE)870 989 y Ft(Readline)40
b(has)f(en)m(tered)g(vi)g(command)g(\(mo)m(v)m(emen)m(t\))j(mo)s(de)d
-(at)h(least)g(one)f(time)870 518 y(during)29 b(the)i(curren)m(t)f(call)
-i(to)f Fs(readline\(\))p Ft(.)390 671 y Fs(RL_STATE_DONE)870
-781 y Ft(Readline)d(has)g(read)f(a)i(k)m(ey)f(sequence)g(b)s(ound)e(to)
-i Fs(accept-line)d Ft(and)i(is)h(ab)s(out)f(to)870 891
-y(return)i(the)i(line)g(to)g(the)f(caller.)3371 1066
-y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_explicit_arg)390
-1175 y Ft(Set)39 b(to)g(a)h(non-zero)f(v)-5 b(alue)39
+(at)h(least)g(one)f(time)870 1098 y(during)29 b(the)i(curren)m(t)f
+(call)i(to)f Fs(readline\(\))p Ft(.)390 1279 y Fs(RL_STATE_DONE)870
+1389 y Ft(Readline)d(has)g(read)f(a)i(k)m(ey)f(sequence)g(b)s(ound)e
+(to)i Fs(accept-line)d Ft(and)i(is)h(ab)s(out)f(to)870
+1498 y(return)i(the)i(line)g(to)g(the)f(caller.)3371
+1725 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_explicit_arg)390
+1834 y Ft(Set)39 b(to)g(a)h(non-zero)f(v)-5 b(alue)39
b(if)g(an)g(explicit)h(n)m(umeric)e(argumen)m(t)i(w)m(as)f(sp)s
-(eci\014ed)f(b)m(y)g(the)h(user.)390 1285 y(Only)30 b(v)-5
+(eci\014ed)f(b)m(y)g(the)h(user.)390 1944 y(Only)30 b(v)-5
b(alid)30 b(in)h(a)f(bindable)g(command)g(function.)3371
-1460 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_numeric_arg)390
-1570 y Ft(Set)45 b(to)h(the)g(v)-5 b(alue)46 b(of)f(an)m(y)h(n)m
+2171 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_numeric_arg)390
+2280 y Ft(Set)45 b(to)h(the)g(v)-5 b(alue)46 b(of)f(an)m(y)h(n)m
(umeric)f(argumen)m(t)h(explicitly)h(sp)s(eci\014ed)d(b)m(y)h(the)h
-(user)e(b)s(efore)390 1680 y(executing)27 b(the)f(curren)m(t)g
+(user)e(b)s(efore)390 2390 y(executing)27 b(the)f(curren)m(t)g
(Readline)h(function.)38 b(Only)26 b(v)-5 b(alid)26 b(in)g(a)g
-(bindable)f(command)h(function.)3371 1855 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_editing_mode)390 1964 y Ft(Set)25 b(to)h(a)g(v)-5
+(bindable)f(command)h(function.)3371 2617 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_editing_mode)390 2726 y Ft(Set)25 b(to)h(a)g(v)-5
b(alue)25 b(denoting)h(Readline's)f(curren)m(t)g(editing)h(mo)s(de.)39
b(A)25 b(v)-5 b(alue)25 b(of)h Fj(1)32 b Ft(means)25
-b(Readline)390 2074 y(is)30 b(curren)m(tly)h(in)f(emacs)h(mo)s(de;)f
+b(Readline)390 2836 y(is)30 b(curren)m(tly)h(in)f(emacs)h(mo)s(de;)f
Fj(0)38 b Ft(means)31 b(that)f(vi)h(mo)s(de)f(is)g(activ)m(e.)150
-2309 y Fr(2.4)68 b(Readline)47 b(Con)l(v)l(enience)f(F)-11
-b(unctions)150 2530 y Fi(2.4.1)63 b(Naming)41 b(a)g(F)-10
-b(unction)150 2677 y Ft(The)24 b(user)h(can)g(dynamically)g(c)m(hange)h
+3108 y Fr(2.4)68 b(Readline)47 b(Con)l(v)l(enience)f(F)-11
+b(unctions)150 3332 y Fi(2.4.1)63 b(Naming)41 b(a)g(F)-10
+b(unction)150 3479 y Ft(The)24 b(user)h(can)g(dynamically)g(c)m(hange)h
(the)f(bindings)f(of)h(k)m(eys)h(while)e(using)h(Readline.)39
-b(This)24 b(is)h(done)g(b)m(y)150 2786 y(represen)m(ting)30
+b(This)24 b(is)h(done)g(b)m(y)150 3589 y(represen)m(ting)30
b(the)h(function)f(with)g(a)g(descriptiv)m(e)h(name.)41
b(The)30 b(user)f(is)i(able)f(to)h(t)m(yp)s(e)g(the)f(descriptiv)m(e)
-150 2896 y(name)g(when)g(referring)g(to)h(the)f(function.)41
+150 3699 y(name)g(when)g(referring)g(to)h(the)f(function.)41
b(Th)m(us,)29 b(in)h(an)h(init)f(\014le,)h(one)g(migh)m(t)g(\014nd)390
-3027 y Fs(Meta-Rubout:)92 b(backward-kill-word)275 3159
+3854 y Fs(Meta-Rubout:)92 b(backward-kill-word)275 4010
y Ft(This)84 b(binds)h(the)g(k)m(eystrok)m(e)j Fs(Meta-Rubout)82
b Ft(to)87 b(the)e(function)h Fk(descriptively)94 b Ft(named)150
-3269 y Fs(backward-kill-word)p Ft(.)63 b(Y)-8 b(ou,)43
+4120 y Fs(backward-kill-word)p Ft(.)63 b(Y)-8 b(ou,)43
b(as)d(the)g(programmer,)i(should)c(bind)g(the)i(functions)f(y)m(ou)h
-(write)g(to)150 3378 y(descriptiv)m(e)31 b(names)g(as)f(w)m(ell.)42
+(write)g(to)150 4229 y(descriptiv)m(e)31 b(names)g(as)f(w)m(ell.)42
b(Readline)31 b(pro)m(vides)f(a)h(function)f(for)g(doing)h(that:)3350
-3553 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_defun)c
-Fg(\()p Ff(const)34 b(c)m(har)g(*name,)f(rl)p 1964 3553
-30 5 v 43 w(command)p 2427 3553 V 45 w(func)p 2656 3553
-V 45 w(t)g(*function,)565 3663 y(in)m(t)g(k)m(ey)p Fg(\))390
-3773 y Ft(Add)h Fj(name)41 b Ft(to)36 b(the)f(list)h(of)g(named)e
+4456 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_defun)c
+Fg(\()p Ff(const)34 b(c)m(har)g(*name,)f(rl)p 1964 4456
+30 5 v 43 w(command)p 2427 4456 V 45 w(func)p 2656 4456
+V 45 w(t)g(*function,)565 4565 y(in)m(t)g(k)m(ey)p Fg(\))390
+4675 y Ft(Add)h Fj(name)41 b Ft(to)36 b(the)f(list)h(of)g(named)e
(functions.)55 b(Mak)m(e)37 b Fj(function)e Ft(b)s(e)g(the)g(function)g
-(that)h(gets)390 3882 y(called.)42 b(If)30 b Fj(k)m(ey)39
+(that)h(gets)390 4785 y(called.)42 b(If)30 b Fj(k)m(ey)39
b Ft(is)30 b(not)h(-1,)g(then)f(bind)f(it)i(to)g Fj(function)f
-Ft(using)g Fs(rl_bind_key\(\))p Ft(.)275 4057 y(Using)g(this)g
+Ft(using)g Fs(rl_bind_key\(\))p Ft(.)275 5011 y(Using)g(this)g
(function)g(alone)h(is)f(su\016cien)m(t)g(for)g(most)h(applications.)42
-b(It)30 b(is)g(the)g(recommended)g(w)m(a)m(y)150 4167
+b(It)30 b(is)g(the)g(recommended)g(w)m(a)m(y)150 5121
y(to)e(add)e(a)h(few)g(functions)g(to)g(the)g(default)h(functions)e
(that)i(Readline)f(has)g(built)g(in.)39 b(If)26 b(y)m(ou)i(need)e(to)i
-(do)150 4277 y(something)34 b(other)g(than)f(adding)h(a)g(function)f
+(do)150 5230 y(something)34 b(other)g(than)f(adding)h(a)g(function)f
(to)h(Readline,)i(y)m(ou)e(ma)m(y)g(need)f(to)i(use)e(the)h(underlying)
-150 4386 y(functions)c(describ)s(ed)f(b)s(elo)m(w.)150
-4579 y Fi(2.4.2)63 b(Selecting)41 b(a)f(Keymap)150 4726
+150 5340 y(functions)c(describ)s(ed)f(b)s(elo)m(w.)p
+eop end
+%%Page: 33 37
+TeXDict begin 33 36 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(33)150
+299 y Fi(2.4.2)63 b(Selecting)41 b(a)f(Keymap)150 446
y Ft(Key)f(bindings)e(tak)m(e)j(place)g(on)f(a)g Fj(k)m(eymap)p
Ft(.)66 b(The)38 b(k)m(eymap)h(is)g(the)g(asso)s(ciation)h(b)s(et)m(w)m
-(een)f(the)g(k)m(eys)150 4836 y(that)29 b(the)g(user)e(t)m(yp)s(es)i
+(een)f(the)g(k)m(eys)150 555 y(that)29 b(the)g(user)e(t)m(yp)s(es)i
(and)f(the)g(functions)g(that)h(get)h(run.)39 b(Y)-8
b(ou)29 b(can)f(mak)m(e)i(y)m(our)e(o)m(wn)h(k)m(eymaps,)g(cop)m(y)150
-4946 y(existing)i(k)m(eymaps,)g(and)f(tell)i(Readline)f(whic)m(h)f(k)m
-(eymap)h(to)g(use.)3350 5121 y([F)-8 b(unction])-3599
+665 y(existing)i(k)m(eymaps,)g(and)f(tell)i(Readline)f(whic)m(h)f(k)m
+(eymap)h(to)g(use.)3350 854 y([F)-8 b(unction])-3599
b Fh(Keymap)54 b(rl_make_bare_keymap)d Fg(\()p Ff(v)m(oid)p
-Fg(\))390 5230 y Ft(Returns)23 b(a)i(new,)g(empt)m(y)f(k)m(eymap.)40
+Fg(\))390 963 y Ft(Returns)23 b(a)i(new,)g(empt)m(y)f(k)m(eymap.)40
b(The)23 b(space)i(for)f(the)g(k)m(eymap)h(is)f(allo)s(cated)i(with)e
-Fs(malloc\(\))p Ft(;)390 5340 y(the)31 b(caller)g(should)f(free)g(it)h
-(b)m(y)f(calling)i Fs(rl_free_keymap\(\))26 b Ft(when)j(done.)p
-eop end
-%%Page: 33 37
-TeXDict begin 33 36 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(33)3350
-299 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_copy_keymap)c
-Fg(\()p Ff(Keymap)34 b(map)p Fg(\))390 408 y Ft(Return)c(a)g(new)g(k)m
+Fs(malloc\(\))p Ft(;)390 1073 y(the)31 b(caller)g(should)f(free)g(it)h
+(b)m(y)f(calling)i Fs(rl_free_keymap\(\))26 b Ft(when)j(done.)3350
+1262 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_copy_keymap)c
+Fg(\()p Ff(Keymap)34 b(map)p Fg(\))390 1371 y Ft(Return)c(a)g(new)g(k)m
(eymap)h(whic)m(h)f(is)h(a)f(cop)m(y)h(of)g Fj(map)p
-Ft(.)3350 579 y([F)-8 b(unction])-3599 b Fh(Keymap)54
-b(rl_make_keymap)c Fg(\()p Ff(v)m(oid)p Fg(\))390 689
+Ft(.)3350 1560 y([F)-8 b(unction])-3599 b Fh(Keymap)54
+b(rl_make_keymap)c Fg(\()p Ff(v)m(oid)p Fg(\))390 1669
y Ft(Return)31 b(a)g(new)g(k)m(eymap)h(with)f(the)h(prin)m(ting)f(c)m
-(haracters)i(b)s(ound)c(to)j(rl)p 2909 689 28 4 v 40
-w(insert,)g(the)g(lo)m(w)m(ercase)390 798 y(Meta)24 b(c)m(haracters)g
-(b)s(ound)d(to)i(run)e(their)i(equiv)-5 b(alen)m(ts,)25
-b(and)d(the)h(Meta)h(digits)f(b)s(ound)e(to)i(pro)s(duce)390
-908 y(n)m(umeric)30 b(argumen)m(ts.)3350 1078 y([F)-8
-b(unction])-3599 b Fh(void)54 b(rl_discard_keymap)c Fg(\()p
-Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 1188 y Ft(F)-8 b(ree)30
-b(the)g(storage)h(asso)s(ciated)g(with)e(the)g(data)h(in)f
+(haracters)i(b)s(ound)c(to)j(rl)p 2909 1669 28 4 v 40
+w(insert,)g(the)g(lo)m(w)m(ercase)390 1779 y(Meta)24
+b(c)m(haracters)g(b)s(ound)d(to)i(run)e(their)i(equiv)-5
+b(alen)m(ts,)25 b(and)d(the)h(Meta)h(digits)f(b)s(ound)e(to)i(pro)s
+(duce)390 1889 y(n)m(umeric)30 b(argumen)m(ts.)3350 2077
+y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_discard_keymap)c
+Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 2187 y Ft(F)-8
+b(ree)30 b(the)g(storage)h(asso)s(ciated)g(with)e(the)g(data)h(in)f
Fj(k)m(eymap)p Ft(.)41 b(The)29 b(caller)h(should)f(free)g
-Fj(k)m(eymap)p Ft(.)3350 1358 y([F)-8 b(unction])-3599
+Fj(k)m(eymap)p Ft(.)3350 2375 y([F)-8 b(unction])-3599
b Fh(void)54 b(rl_free_keymap)49 b Fg(\()p Ff(Keymap)34
-b(k)m(eymap)p Fg(\))390 1468 y Ft(F)-8 b(ree)32 b(all)g(storage)g(asso)
+b(k)m(eymap)p Fg(\))390 2485 y Ft(F)-8 b(ree)32 b(all)g(storage)g(asso)
s(ciated)g(with)f Fj(k)m(eymap)p Ft(.)42 b(This)30 b(calls)i
Fs(rl_discard_keymap)26 b Ft(to)32 b(free)f(sub-)390
-1577 y(ordindate)f(k)m(eymaps)h(and)f(macros.)275 1748
-y(Readline)45 b(has)g(sev)m(eral)i(in)m(ternal)f(k)m(eymaps.)86
-b(These)45 b(functions)g(allo)m(w)h(y)m(ou)g(to)g(c)m(hange)g(whic)m(h)
-150 1857 y(k)m(eymap)31 b(is)f(activ)m(e.)3350 2028 y([F)-8
+2595 y(ordindate)f(k)m(eymaps)h(and)f(macros.)3350 2783
+y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_empty_keymap)d
+Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 2893 y Ft(Return)c
+(non-zero)h(if)g(there)g(are)g(no)f(k)m(eys)i(b)s(ound)c(to)k
+(functions)e(in)g Fj(k)m(eymap)s Ft(;)i(zero)f(if)g(there)g(are)390
+3002 y(an)m(y)g(k)m(eys)g(b)s(ound.)275 3191 y(Readline)45
+b(has)g(sev)m(eral)i(in)m(ternal)f(k)m(eymaps.)86 b(These)45
+b(functions)g(allo)m(w)h(y)m(ou)g(to)g(c)m(hange)g(whic)m(h)150
+3301 y(k)m(eymap)31 b(is)f(activ)m(e.)3350 3489 y([F)-8
b(unction])-3599 b Fh(Keymap)54 b(rl_get_keymap)c Fg(\()p
-Ff(v)m(oid)p Fg(\))390 2137 y Ft(Returns)29 b(the)i(curren)m(tly)f
-(activ)m(e)j(k)m(eymap.)3350 2308 y([F)-8 b(unction])-3599
+Ff(v)m(oid)p Fg(\))390 3599 y Ft(Returns)29 b(the)i(curren)m(tly)f
+(activ)m(e)j(k)m(eymap.)3350 3788 y([F)-8 b(unction])-3599
b Fh(void)54 b(rl_set_keymap)49 b Fg(\()p Ff(Keymap)34
-b(k)m(eymap)p Fg(\))390 2418 y Ft(Mak)m(es)e Fj(k)m(eymap)h
-Ft(the)e(curren)m(tly)f(activ)m(e)j(k)m(eymap.)3350 2588
+b(k)m(eymap)p Fg(\))390 3897 y Ft(Mak)m(es)e Fj(k)m(eymap)h
+Ft(the)e(curren)m(tly)f(activ)m(e)j(k)m(eymap.)3350 4086
y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_get_keymap_by_name)e
-Fg(\()p Ff(const)34 b(c)m(har)g(*name)p Fg(\))390 2698
+Fg(\()p Ff(const)34 b(c)m(har)g(*name)p Fg(\))390 4196
y Ft(Return)e(the)i(k)m(eymap)f(matc)m(hing)i Fj(name)p
Ft(.)49 b Fj(name)38 b Ft(is)c(one)f(whic)m(h)g(w)m(ould)g(b)s(e)f
-(supplied)g(in)h(a)h Fs(set)390 2807 y(keymap)29 b Ft(inputrc)g(line)i
+(supplied)g(in)h(a)h Fs(set)390 4305 y(keymap)29 b Ft(inputrc)g(line)i
(\(see)g(Section)g(1.3)h([Readline)f(Init)f(File],)i(page)f(4\).)3350
-2978 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_keymap_name)f
-Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 3087 y Ft(Return)e(the)i
+4494 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_keymap_name)f
+Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 4603 y Ft(Return)e(the)i
(name)f(matc)m(hing)h Fj(k)m(eymap)p Ft(.)50 b Fj(name)38
b Ft(is)c(one)f(whic)m(h)g(w)m(ould)g(b)s(e)f(supplied)g(in)h(a)h
-Fs(set)390 3197 y(keymap)29 b Ft(inputrc)g(line)i(\(see)g(Section)g
-(1.3)h([Readline)f(Init)f(File],)i(page)f(4\).)150 3387
-y Fi(2.4.3)63 b(Binding)42 b(Keys)150 3534 y Ft(Key)34
-b(sequences)g(are)h(asso)s(ciate)h(with)e(functions)f(through)h(the)g
-(k)m(eymap.)52 b(Readline)35 b(has)f(sev)m(eral)h(in-)150
-3643 y(ternal)30 b(k)m(eymaps:)40 b Fs(emacs_standard_keymap)p
+Fs(set)390 4713 y(keymap)29 b Ft(inputrc)g(line)i(\(see)g(Section)g
+(1.3)h([Readline)f(Init)f(File],)i(page)f(4\).)3350 4902
+y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_keymap_name)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*name,)f(Keymap)h(k)m(eymap)p
+Fg(\))390 5011 y Ft(Set)g(the)f(name)h(of)g Fj(k)m(eymap)p
+Ft(.)50 b(This)33 b(name)h(will)f(then)h(b)s(e)e Fs(")p
+Ft(registered)p Fs(")i Ft(and)f(a)m(v)-5 b(ailable)36
+b(for)d(use)390 5121 y(in)i(a)g Fs(set)29 b(keymap)k
+Ft(inputrc)h(directiv)m(e)j(see)e(Section)h(1.3)g([Readline)g(Init)e
+(File],)k(page)e(4\).)54 b(The)390 5230 y Fj(name)27
+b Ft(ma)m(y)c(not)g(b)s(e)e(one)i(of)f(Readline's)h(builtin)f(k)m
+(eymap)g(names;)j(y)m(ou)e(ma)m(y)g(not)f(add)g(a)g(di\013eren)m(t)390
+5340 y(name)36 b(for)g(one)g(of)g(Readline's)h(builtin)e(k)m(eymaps.)58
+b(Y)-8 b(ou)37 b(ma)m(y)f(replace)h(the)f(name)g(asso)s(ciated)p
+eop end
+%%Page: 34 38
+TeXDict begin 34 37 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(34)390
+299 y(with)31 b(a)g(giv)m(en)h(k)m(eymap)g(b)m(y)f(calling)h(this)f
+(function)g(more)h(than)e(once)i(with)f(the)g(same)h
+Fj(k)m(eymap)390 408 y Ft(argumen)m(t.)50 b(Y)-8 b(ou)34
+b(ma)m(y)h(asso)s(ciate)g(a)f(registered)g Fj(name)39
+b Ft(with)33 b(a)h(new)f(k)m(eymap)h(b)m(y)f(calling)i(this)390
+518 y(function)c(more)h(than)f(once)i(with)e(the)h(same)g
+Fj(name)k Ft(argumen)m(t.)45 b(There)31 b(is)h(no)g(w)m(a)m(y)g(to)g
+(remo)m(v)m(e)390 628 y(a)k(named)e(k)m(eymap)i(once)g(the)f(name)g
+(has)g(b)s(een)g(registered.)56 b(Readline)36 b(will)f(mak)m(e)h(a)g
+(cop)m(y)g(of)390 737 y Fj(name)p Ft(.)41 b(The)30 b(return)f(v)-5
+b(alue)31 b(is)g(greater)g(than)g(zero)g(unless)f Fj(name)35
+b Ft(is)c(one)g(of)f(Readline's)h(builtin)390 847 y(k)m(eymap)g(names)f
+(or)h Fj(k)m(eymap)i Ft(is)e(one)f(of)h(Readline's)g(builtin)f(k)m
+(eymaps.)150 1056 y Fi(2.4.3)63 b(Binding)42 b(Keys)150
+1203 y Ft(Key)34 b(sequences)g(are)h(asso)s(ciate)h(with)e(functions)f
+(through)h(the)g(k)m(eymap.)52 b(Readline)35 b(has)f(sev)m(eral)h(in-)
+150 1313 y(ternal)30 b(k)m(eymaps:)40 b Fs(emacs_standard_keymap)p
Ft(,)24 b Fs(emacs_meta_keymap)p Ft(,)h Fs(emacs_ctlx_keymap)p
-Ft(,)g Fs(vi_)150 3753 y(movement_keymap)p Ft(,)41 b(and)h
+Ft(,)g Fs(vi_)150 1423 y(movement_keymap)p Ft(,)41 b(and)h
Fs(vi_insertion_keymap)p Ft(.)71 b Fs(emacs_standard_keymap)37
-b Ft(is)42 b(the)g(default,)150 3863 y(and)30 b(the)g(examples)h(in)f
-(this)h(man)m(ual)f(assume)g(that.)275 3992 y(Since)d
+b Ft(is)42 b(the)g(default,)150 1532 y(and)30 b(the)g(examples)h(in)f
+(this)h(man)m(ual)f(assume)g(that.)275 1677 y(Since)d
Fs(readline\(\))e Ft(installs)j(a)g(set)g(of)g(default)g(k)m(ey)g
(bindings)f(the)h(\014rst)e(time)j(it)f(is)f(called,)j(there)e(is)150
-4102 y(alw)m(a)m(ys)34 b(the)f(danger)f(that)i(a)f(custom)g(binding)e
+1787 y(alw)m(a)m(ys)34 b(the)f(danger)f(that)i(a)f(custom)g(binding)e
(installed)j(b)s(efore)e(the)h(\014rst)e(call)j(to)g
-Fs(readline\(\))c Ft(will)150 4212 y(b)s(e)25 b(o)m(v)m(erridden.)39
+Fs(readline\(\))c Ft(will)150 1896 y(b)s(e)25 b(o)m(v)m(erridden.)39
b(An)26 b(alternate)h(mec)m(hanism)f(is)g(to)g(install)h(custom)f(k)m
-(ey)g(bindings)f(in)g(an)h(initialization)150 4321 y(function)37
+(ey)g(bindings)f(in)g(an)h(initialization)150 2006 y(function)37
b(assigned)g(to)h(the)f Fs(rl_startup_hook)c Ft(v)-5
b(ariable)38 b(\(see)g(Section)g(2.3)g([Readline)g(V)-8
-b(ariables],)150 4431 y(page)31 b(27\).)275 4561 y(These)f(functions)g
-(manage)h(k)m(ey)g(bindings.)3350 4731 y([F)-8 b(unction])-3599
+b(ariables],)150 2115 y(page)31 b(27\).)275 2260 y(These)f(functions)g
+(manage)h(k)m(ey)g(bindings.)3350 2465 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_bind_key)c Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8
-b(,)32 b(rl)p 1441 4731 30 5 v 43 w(command)p 1904 4731
-V 45 w(func)p 2133 4731 V 45 w(t)h(*function)p Fg(\))390
-4841 y Ft(Binds)f Fj(k)m(ey)42 b Ft(to)34 b Fj(function)e
+b(,)32 b(rl)p 1441 2465 30 5 v 43 w(command)p 1904 2465
+V 45 w(func)p 2133 2465 V 45 w(t)h(*function)p Fg(\))390
+2575 y Ft(Binds)f Fj(k)m(ey)42 b Ft(to)34 b Fj(function)e
Ft(in)h(the)g(curren)m(tly)g(activ)m(e)i(k)m(eymap.)49
-b(Returns)32 b(non-zero)i(in)f(the)g(case)390 4950 y(of)e(an)f(in)m(v)
--5 b(alid)31 b Fj(k)m(ey)p Ft(.)3350 5121 y([F)-8 b(unction])-3599
+b(Returns)32 b(non-zero)i(in)f(the)g(case)390 2685 y(of)e(an)f(in)m(v)
+-5 b(alid)31 b Fj(k)m(ey)p Ft(.)3350 2890 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_bind_key_in_map)e Fg(\()p Ff(in)m(t)34
-b(k)m(ey)-8 b(,)32 b(rl)p 1807 5121 V 43 w(command)p
-2270 5121 V 45 w(func)p 2499 5121 V 45 w(t)h(*function,)565
-5230 y(Keymap)h(map)p Fg(\))390 5340 y Ft(Bind)c Fj(k)m(ey)39
+b(k)m(ey)-8 b(,)32 b(rl)p 1807 2890 V 43 w(command)p
+2270 2890 V 45 w(func)p 2499 2890 V 45 w(t)h(*function,)565
+2999 y(Keymap)h(map)p Fg(\))390 3109 y Ft(Bind)c Fj(k)m(ey)39
b Ft(to)31 b Fj(function)f Ft(in)g Fj(map)p Ft(.)40 b(Returns)30
b(non-zero)h(in)f(the)h(case)g(of)f(an)h(in)m(v)-5 b(alid)31
-b Fj(k)m(ey)p Ft(.)p eop end
-%%Page: 34 38
-TeXDict begin 34 37 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(34)3350
-299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_key_if_unboun)q(d)e
-Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 b(,)32 b(rl)p 2016 299
-30 5 v 44 w(command)p 2480 299 V 44 w(func)p 2708 299
-V 45 w(t)565 408 y(*function)p Fg(\))390 518 y Ft(Binds)43
-b Fj(k)m(ey)53 b Ft(to)45 b Fj(function)e Ft(if)h(it)h(is)f(not)g
-(already)g(b)s(ound)e(in)i(the)g(curren)m(tly)g(activ)m(e)i(k)m(eymap.)
-390 628 y(Returns)29 b(non-zero)i(in)f(the)h(case)g(of)g(an)f(in)m(v)-5
-b(alid)31 b Fj(k)m(ey)39 b Ft(or)30 b(if)h Fj(k)m(ey)39
-b Ft(is)30 b(already)h(b)s(ound.)3350 814 y([F)-8 b(unction])-3599
+b Fj(k)m(ey)p Ft(.)3350 3314 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_bind_key_if_unboun)q(d)e Fg(\()p Ff(in)m(t)34
+b(k)m(ey)-8 b(,)32 b(rl)p 2016 3314 V 44 w(command)p
+2480 3314 V 44 w(func)p 2708 3314 V 45 w(t)565 3424 y(*function)p
+Fg(\))390 3533 y Ft(Binds)43 b Fj(k)m(ey)53 b Ft(to)45
+b Fj(function)e Ft(if)h(it)h(is)f(not)g(already)g(b)s(ound)e(in)i(the)g
+(curren)m(tly)g(activ)m(e)i(k)m(eymap.)390 3643 y(Returns)29
+b(non-zero)i(in)f(the)h(case)g(of)g(an)f(in)m(v)-5 b(alid)31
+b Fj(k)m(ey)39 b Ft(or)30 b(if)h Fj(k)m(ey)39 b Ft(is)30
+b(already)h(b)s(ound.)3350 3848 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_bind_key_if_unboun)q(d_in)q(_ma)q(p)e
-Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 b(,)32 b(rl)p 2382 814
-V 44 w(command)p 2846 814 V 44 w(func)p 3074 814 V 46
-w(t)565 924 y(*function,)i(Keymap)g(map)p Fg(\))390 1033
-y Ft(Binds)27 b Fj(k)m(ey)36 b Ft(to)28 b Fj(function)f
+Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 b(,)32 b(rl)p 2382 3848
+V 44 w(command)p 2846 3848 V 44 w(func)p 3074 3848 V
+46 w(t)565 3958 y(*function,)i(Keymap)g(map)p Fg(\))390
+4067 y Ft(Binds)27 b Fj(k)m(ey)36 b Ft(to)28 b Fj(function)f
Ft(if)g(it)h(is)f(not)h(already)g(b)s(ound)d(in)i Fj(map)p
Ft(.)39 b(Returns)27 b(non-zero)g(in)g(the)h(case)390
-1143 y(of)j(an)f(in)m(v)-5 b(alid)31 b Fj(k)m(ey)39 b
+4177 y(of)j(an)f(in)m(v)-5 b(alid)31 b Fj(k)m(ey)39 b
Ft(or)30 b(if)g Fj(k)m(ey)39 b Ft(is)31 b(already)g(b)s(ound.)3350
-1329 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_key)d
-Fg(\()p Ff(in)m(t)33 b(k)m(ey)p Fg(\))390 1439 y Ft(Bind)j
+4382 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_key)d
+Fg(\()p Ff(in)m(t)33 b(k)m(ey)p Fg(\))390 4491 y Ft(Bind)j
Fj(k)m(ey)45 b Ft(to)37 b(the)f(n)m(ull)g(function)g(in)g(the)h(curren)
m(tly)f(activ)m(e)i(k)m(eymap.)59 b(Returns)35 b(non-zero)i(in)390
-1548 y(case)31 b(of)g(error.)3350 1734 y([F)-8 b(unction])-3599
+4601 y(case)31 b(of)g(error.)3350 4806 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_unbind_key_in_map)f Fg(\()p Ff(in)m(t)33
-b(k)m(ey)-8 b(,)33 b(Keymap)g(map)p Fg(\))390 1844 y
+b(k)m(ey)-8 b(,)33 b(Keymap)g(map)p Fg(\))390 4916 y
Ft(Bind)d Fj(k)m(ey)39 b Ft(to)31 b(the)g(n)m(ull)f(function)g(in)g
Fj(map)p Ft(.)40 b(Returns)30 b(non-zero)h(in)f(case)h(of)g(error.)3350
-2030 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_function_in)q
-(_map)f Fg(\()p Ff(rl)p 1821 2030 V 44 w(command)p 2285
-2030 V 45 w(func)p 2514 2030 V 45 w(t)33 b(*function,)565
-2140 y(Keymap)h(map)p Fg(\))390 2250 y Ft(Un)m(bind)29
+5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_function_in)q
+(_map)f Fg(\()p Ff(rl)p 1821 5121 V 44 w(command)p 2285
+5121 V 45 w(func)p 2514 5121 V 45 w(t)33 b(*function,)565
+5230 y(Keymap)h(map)p Fg(\))390 5340 y Ft(Un)m(bind)29
b(all)i(k)m(eys)g(that)g(execute)h Fj(function)e Ft(in)g
-Fj(map)p Ft(.)3350 2436 y([F)-8 b(unction])-3599 b Fh(int)53
-b(rl_unbind_command_in_)q(map)f Fg(\()p Ff(const)34 b(c)m(har)g
-(*command,)f(Keymap)565 2545 y(map)p Fg(\))390 2655 y
-Ft(Un)m(bind)c(all)i(k)m(eys)g(that)g(are)g(b)s(ound)e(to)i
-Fj(command)i Ft(in)d Fj(map)p Ft(.)3350 2841 y([F)-8
-b(unction])-3599 b Fh(int)53 b(rl_bind_keyseq)d Fg(\()p
-Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(rl)p 2119 2841
-V 44 w(command)p 2583 2841 V 44 w(func)p 2811 2841 V
-46 w(t)565 2951 y(*function)p Fg(\))390 3061 y Ft(Bind)43
+Fj(map)p Ft(.)p eop end
+%%Page: 35 39
+TeXDict begin 35 38 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(35)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_command_in_)q(map)
+f Fg(\()p Ff(const)34 b(c)m(har)g(*command,)f(Keymap)565
+408 y(map)p Fg(\))390 518 y Ft(Un)m(bind)c(all)i(k)m(eys)g(that)g(are)g
+(b)s(ound)e(to)i Fj(command)i Ft(in)d Fj(map)p Ft(.)3350
+707 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_bind_keyseq)d
+Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(rl)p 2119
+707 30 5 v 44 w(command)p 2583 707 V 44 w(func)p 2811
+707 V 46 w(t)565 817 y(*function)p Fg(\))390 927 y Ft(Bind)43
b(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g(the)g(string)g
Fj(k)m(eyseq)j Ft(to)e(the)f(function)g Fj(function)p
-Ft(,)390 3170 y(b)s(eginning)27 b(in)h(the)h(curren)m(t)f(k)m(eymap.)40
+Ft(,)390 1036 y(b)s(eginning)27 b(in)h(the)h(curren)m(t)f(k)m(eymap.)40
b(This)28 b(mak)m(es)h(new)e(k)m(eymaps)i(as)f(necessary)-8
-b(.)41 b(The)28 b(return)390 3280 y(v)-5 b(alue)31 b(is)f(non-zero)h
-(if)g Fj(k)m(eyseq)i Ft(is)d(in)m(v)-5 b(alid.)3350 3466
+b(.)41 b(The)28 b(return)390 1146 y(v)-5 b(alue)31 b(is)f(non-zero)h
+(if)g Fj(k)m(eyseq)i Ft(is)d(in)m(v)-5 b(alid.)3350 1335
y([F)d(unction])-3599 b Fh(int)53 b(rl_bind_keyseq_in_map)f
-Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 3576
-y(rl)p 639 3576 V 44 w(command)p 1103 3576 V 44 w(func)p
-1331 3576 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390
-3685 y Ft(Bind)25 b(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g
+Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 1445
+y(rl)p 639 1445 V 44 w(command)p 1103 1445 V 44 w(func)p
+1331 1445 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390
+1554 y Ft(Bind)25 b(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g
(the)g(string)g Fj(k)m(eyseq)j Ft(to)e(the)f(function)g
-Fj(function)p Ft(.)39 b(This)390 3795 y(mak)m(es)30 b(new)f(k)m(eymaps)
+Fj(function)p Ft(.)39 b(This)390 1664 y(mak)m(es)30 b(new)f(k)m(eymaps)
g(as)g(necessary)-8 b(.)42 b(Initial)30 b(bindings)d(are)j(p)s
(erformed)e(in)g Fj(map)p Ft(.)40 b(The)29 b(return)390
-3904 y(v)-5 b(alue)31 b(is)f(non-zero)h(if)g Fj(k)m(eyseq)i
-Ft(is)d(in)m(v)-5 b(alid.)3350 4091 y([F)d(unction])-3599
+1773 y(v)-5 b(alue)31 b(is)f(non-zero)h(if)g Fj(k)m(eyseq)i
+Ft(is)d(in)m(v)-5 b(alid.)3350 1963 y([F)d(unction])-3599
b Fh(int)53 b(rl_set_key)c Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)
-e(rl)p 1910 4091 V 44 w(command)p 2374 4091 V 44 w(func)p
-2602 4091 V 45 w(t)h(*function,)565 4200 y(Keymap)h(map)p
-Fg(\))390 4310 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g Fs
-(rl_bind_keyseq_in_map)p Ft(.)3350 4496 y([F)-8 b(unction])-3599
+e(rl)p 1910 1963 V 44 w(command)p 2374 1963 V 44 w(func)p
+2602 1963 V 45 w(t)h(*function,)565 2072 y(Keymap)h(map)p
+Fg(\))390 2182 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g Fs
+(rl_bind_keyseq_in_map)p Ft(.)3350 2371 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_bind_keyseq_if_unb)q(ound)f Fg(\()p
-Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 4606 y(rl)p 639
-4606 V 44 w(command)p 1103 4606 V 44 w(func)p 1331 4606
-V 45 w(t)f(*function)p Fg(\))390 4715 y Ft(Binds)i Fj(k)m(eyseq)k
+Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 2481 y(rl)p 639
+2481 V 44 w(command)p 1103 2481 V 44 w(func)p 1331 2481
+V 45 w(t)f(*function)p Fg(\))390 2590 y Ft(Binds)i Fj(k)m(eyseq)k
Ft(to)d Fj(function)f Ft(if)g(it)h(is)g(not)g(already)g(b)s(ound)d(in)i
-(the)h(curren)m(tly)f(activ)m(e)j(k)m(eymap.)390 4825
+(the)h(curren)m(tly)f(activ)m(e)j(k)m(eymap.)390 2700
y(Returns)29 b(non-zero)i(in)f(the)h(case)g(of)g(an)f(in)m(v)-5
b(alid)31 b Fj(k)m(eyseq)j Ft(or)c(if)g Fj(k)m(eyseq)k
-Ft(is)c(already)h(b)s(ound.)3350 5011 y([F)-8 b(unction])-3599
+Ft(is)c(already)h(b)s(ound.)3350 2889 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_bind_keyseq_if_unb)q(ound)q(_in)q(_ma)q(p)e
-Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 5121
-y(rl)p 639 5121 V 44 w(command)p 1103 5121 V 44 w(func)p
-1331 5121 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390
-5230 y Ft(Binds)d Fj(k)m(eyseq)k Ft(to)e Fj(function)f
+Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 2999
+y(rl)p 639 2999 V 44 w(command)p 1103 2999 V 44 w(func)p
+1331 2999 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390
+3108 y Ft(Binds)d Fj(k)m(eyseq)k Ft(to)e Fj(function)f
Ft(if)g(it)g(is)g(not)g(already)h(b)s(ound)d(in)h Fj(map)p
-Ft(.)46 b(Returns)31 b(non-zero)h(in)g(the)390 5340 y(case)f(of)g(an)f
+Ft(.)46 b(Returns)31 b(non-zero)h(in)g(the)390 3218 y(case)f(of)g(an)f
(in)m(v)-5 b(alid)31 b Fj(k)m(eyseq)j Ft(or)c(if)g Fj(k)m(eyseq)k
-Ft(is)c(already)h(b)s(ound.)p eop end
-%%Page: 35 39
-TeXDict begin 35 38 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(35)3350
-299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_generic_bind)d
-Fg(\()p Ff(in)m(t)34 b(t)m(yp)s(e,)f(const)g(c)m(har)h(*k)m(eyseq,)f(c)
-m(har)h(*data,)565 408 y(Keymap)g(map)p Fg(\))390 518
-y Ft(Bind)27 b(the)g(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g(the)g
-(string)g Fj(k)m(eyseq)j Ft(to)e(the)f(arbitrary)g(p)s(oin)m(ter)g
-Fj(data)p Ft(.)390 628 y Fj(t)m(yp)s(e)34 b Ft(sa)m(ys)29
-b(what)f(kind)g(of)g(data)h(is)g(p)s(oin)m(ted)f(to)h(b)m(y)g
-Fj(data)p Ft(;)h(this)e(can)h(b)s(e)f(a)g(function)g(\()p
-Fs(ISFUNC)p Ft(\),)h(a)390 737 y(macro)h(\()p Fs(ISMACR)p
-Ft(\),)f(or)g(a)h(k)m(eymap)g(\()p Fs(ISKMAP)p Ft(\).)40
-b(This)28 b(mak)m(es)j(new)e(k)m(eymaps)g(as)h(necessary)-8
-b(.)41 b(The)390 847 y(initial)32 b(k)m(eymap)e(in)h(whic)m(h)f(to)h
-(do)f(bindings)f(is)i Fj(map)p Ft(.)3350 1028 y([F)-8
+Ft(is)c(already)h(b)s(ound.)3350 3407 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_generic_bind)d Fg(\()p Ff(in)m(t)34
+b(t)m(yp)s(e,)f(const)g(c)m(har)h(*k)m(eyseq,)f(c)m(har)h(*data,)565
+3517 y(Keymap)g(map)p Fg(\))390 3626 y Ft(Bind)27 b(the)g(k)m(ey)h
+(sequence)f(represen)m(ted)g(b)m(y)g(the)g(string)g Fj(k)m(eyseq)j
+Ft(to)e(the)f(arbitrary)g(p)s(oin)m(ter)g Fj(data)p Ft(.)390
+3736 y Fj(t)m(yp)s(e)34 b Ft(sa)m(ys)29 b(what)f(kind)g(of)g(data)h(is)
+g(p)s(oin)m(ted)f(to)h(b)m(y)g Fj(data)p Ft(;)h(this)e(can)h(b)s(e)f(a)
+g(function)g(\()p Fs(ISFUNC)p Ft(\),)h(a)390 3846 y(macro)h(\()p
+Fs(ISMACR)p Ft(\),)f(or)g(a)h(k)m(eymap)g(\()p Fs(ISKMAP)p
+Ft(\).)40 b(This)28 b(mak)m(es)j(new)e(k)m(eymaps)g(as)h(necessary)-8
+b(.)41 b(The)390 3955 y(initial)32 b(k)m(eymap)e(in)h(whic)m(h)f(to)h
+(do)f(bindings)f(is)i Fj(map)p Ft(.)3350 4144 y([F)-8
b(unction])-3599 b Fh(int)53 b(rl_parse_and_bind)e Fg(\()p
-Ff(c)m(har)34 b(*line)p Fg(\))390 1137 y Ft(P)m(arse)c
+Ff(c)m(har)34 b(*line)p Fg(\))390 4254 y Ft(P)m(arse)c
Fj(line)35 b Ft(as)29 b(if)h(it)g(had)e(b)s(een)h(read)g(from)g(the)h
Fs(inputrc)d Ft(\014le)j(and)e(p)s(erform)g(an)m(y)i(k)m(ey)g(bindings)
-390 1247 y(and)g(v)-5 b(ariable)31 b(assignmen)m(ts)g(found)e(\(see)i
+390 4364 y(and)g(v)-5 b(ariable)31 b(assignmen)m(ts)g(found)e(\(see)i
(Section)h(1.3)f([Readline)g(Init)f(File],)j(page)e(4\).)3350
-1428 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_read_init_file)e
+4553 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_read_init_file)e
Fg(\()p Ff(const)34 b(c)m(har)g(*\014lename)p Fg(\))390
-1538 y Ft(Read)e(k)m(eybindings)f(and)g(v)-5 b(ariable)32
+4663 y Ft(Read)e(k)m(eybindings)f(and)g(v)-5 b(ariable)32
b(assignmen)m(ts)g(from)f Fj(\014lename)37 b Ft(\(see)32
-b(Section)g(1.3)h([Readline)390 1647 y(Init)d(File],)i(page)f(4\).)150
-1844 y Fi(2.4.4)63 b(Asso)s(ciating)41 b(F)-10 b(unction)42
-b(Names)f(and)g(Bindings)150 1991 y Ft(These)30 b(functions)g(allo)m(w)
+b(Section)g(1.3)h([Readline)390 4772 y(Init)d(File],)i(page)f(4\).)150
+4974 y Fi(2.4.4)63 b(Asso)s(ciating)41 b(F)-10 b(unction)42
+b(Names)f(and)g(Bindings)150 5121 y Ft(These)30 b(functions)g(allo)m(w)
h(y)m(ou)g(to)f(\014nd)f(out)h(what)g(k)m(eys)h(in)m(v)m(ok)m(e)h
-(named)e(functions)g(and)f(the)h(functions)150 2101 y(in)m(v)m(ok)m(ed)
+(named)e(functions)g(and)f(the)h(functions)150 5230 y(in)m(v)m(ok)m(ed)
f(b)m(y)e(a)h(particular)g(k)m(ey)g(sequence.)40 b(Y)-8
b(ou)28 b(ma)m(y)g(also)h(asso)s(ciate)g(a)f(new)f(function)g(name)h
-(with)f(an)150 2210 y(arbitrary)j(function.)3350 2391
-y([F)-8 b(unction])-3599 b Fh(rl_command_func_t)57 b(*)c
-(rl_named_function)e Fg(\()p Ff(const)34 b(c)m(har)g(*name)p
-Fg(\))390 2501 y Ft(Return)c(the)g(function)g(with)g(name)h
-Fj(name)p Ft(.)3350 2682 y([F)-8 b(unction])-3599 b Fh
+(with)f(an)150 5340 y(arbitrary)j(function.)p eop end
+%%Page: 36 40
+TeXDict begin 36 39 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(36)3350
+299 y([F)-8 b(unction])-3599 b Fh(rl_command_func_t)57
+b(*)c(rl_named_function)e Fg(\()p Ff(const)34 b(c)m(har)g(*name)p
+Fg(\))390 408 y Ft(Return)c(the)g(function)g(with)g(name)h
+Fj(name)p Ft(.)3350 607 y([F)-8 b(unction])-3599 b Fh
(rl_command_func_t)57 b(*)c(rl_function_of_keyseq)f Fg(\()p
-Ff(const)34 b(c)m(har)565 2791 y(*k)m(eyseq,)f(Keymap)g(map,)g(in)m(t)h
-(*t)m(yp)s(e)p Fg(\))390 2901 y Ft(Return)e(the)g(function)h(in)m(v)m
+Ff(const)34 b(c)m(har)565 716 y(*k)m(eyseq,)f(Keymap)g(map,)g(in)m(t)h
+(*t)m(yp)s(e)p Fg(\))390 826 y Ft(Return)e(the)g(function)h(in)m(v)m
(ok)m(ed)h(b)m(y)e Fj(k)m(eyseq)k Ft(in)c(k)m(eymap)h
Fj(map)p Ft(.)47 b(If)32 b Fj(map)j Ft(is)d Fs(NULL)p
-Ft(,)g(the)h(curren)m(t)390 3011 y(k)m(eymap)k(is)g(used.)60
+Ft(,)g(the)h(curren)m(t)390 936 y(k)m(eymap)k(is)g(used.)60
b(If)37 b Fj(t)m(yp)s(e)42 b Ft(is)37 b(not)g Fs(NULL)p
Ft(,)h(the)f(t)m(yp)s(e)g(of)g(the)g(ob)5 b(ject)38 b(is)f(returned)f
-(in)h(the)g Fs(int)390 3120 y Ft(v)-5 b(ariable)31 b(it)g(p)s(oin)m(ts)
-f(to)h(\(one)g(of)g Fs(ISFUNC)p Ft(,)e Fs(ISKMAP)p Ft(,)g(or)h
-Fs(ISMACR)p Ft(\).)3350 3301 y([F)-8 b(unction])-3599
-b Fh(char)54 b(**)e(rl_invoking_keyseqs)g Fg(\()p Ff(rl)p
-1717 3301 30 5 v 44 w(command)p 2181 3301 V 44 w(func)p
-2409 3301 V 45 w(t)33 b(*function)p Fg(\))390 3411 y
-Ft(Return)d(an)i(arra)m(y)f(of)h(strings)f(represen)m(ting)g(the)g(k)m
-(ey)h(sequences)g(used)e(to)i(in)m(v)m(ok)m(e)h Fj(function)e
-Ft(in)390 3520 y(the)g(curren)m(t)f(k)m(eymap.)3350 3701
-y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e(rl_invoking_keyseqs_i)q
-(n_m)q(ap)g Fg(\()p Ff(rl)p 2083 3701 V 44 w(command)p
-2547 3701 V 44 w(func)p 2775 3701 V 45 w(t)565 3811 y(*function,)34
-b(Keymap)g(map)p Fg(\))390 3920 y Ft(Return)c(an)i(arra)m(y)f(of)h
+(in)h(the)g Fs(int)390 1045 y Ft(v)-5 b(ariable)30 b(it)g(p)s(oin)m(ts)
+g(to)g(\(one)g(of)g Fs(ISFUNC)p Ft(,)e Fs(ISKMAP)p Ft(,)g(or)i
+Fs(ISMACR)p Ft(\).)39 b(It)30 b(tak)m(es)h(a)f Fs(")p
+Ft(translated)p Fs(")f Ft(k)m(ey)390 1155 y(sequence)i(and)f(should)f
+(not)i(b)s(e)e(used)h(if)g(the)h(k)m(ey)g(sequence)g(can)f(include)g
+(NUL.)3350 1353 y([F)-8 b(unction])-3599 b Fh(rl_command_func_t)57
+b(*)c(rl_function_of_keyseq_)q(len)f Fg(\()p Ff(const)34
+b(c)m(har)565 1463 y(*k)m(eyseq,)f(size)p 1121 1463 30
+5 v 44 w(t)g(len,)g(Keymap)h(map,)f(in)m(t)g(*t)m(yp)s(e)p
+Fg(\))390 1572 y Ft(Return)20 b(the)h(function)g(in)m(v)m(ok)m(ed)i(b)m
+(y)e Fj(k)m(eyseq)j Ft(of)d(length)g Fj(len)h Ft(in)e(k)m(eymap)i
+Fj(map)p Ft(.)37 b(Equiv)-5 b(alen)m(t)22 b(to)g Fs(rl_)390
+1682 y(function_of_keyseq)g Ft(with)28 b(the)f(addition)h(of)f(the)h
+Fj(len)f Ft(parameter.)41 b(It)27 b(tak)m(es)i(a)f Fs(")p
+Ft(translated)p Fs(")390 1792 y Ft(k)m(ey)j(sequence)g(and)f(should)f
+(b)s(e)h(used)f(if)i(the)f(k)m(ey)h(sequence)g(can)g(include)f(NUL.)
+3350 1990 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e
+(rl_invoking_keyseqs)g Fg(\()p Ff(rl)p 1717 1990 V 44
+w(command)p 2181 1990 V 44 w(func)p 2409 1990 V 45 w(t)33
+b(*function)p Fg(\))390 2100 y Ft(Return)d(an)i(arra)m(y)f(of)h
(strings)f(represen)m(ting)g(the)g(k)m(ey)h(sequences)g(used)e(to)i(in)
-m(v)m(ok)m(e)h Fj(function)e Ft(in)390 4030 y(the)g(k)m(eymap)f
-Fj(map)p Ft(.)3350 4211 y([F)-8 b(unction])-3599 b Fh(void)54
+m(v)m(ok)m(e)h Fj(function)e Ft(in)390 2209 y(the)g(curren)m(t)f(k)m
+(eymap.)3350 2408 y([F)-8 b(unction])-3599 b Fh(char)54
+b(**)e(rl_invoking_keyseqs_i)q(n_m)q(ap)g Fg(\()p Ff(rl)p
+2083 2408 V 44 w(command)p 2547 2408 V 44 w(func)p 2775
+2408 V 45 w(t)565 2517 y(*function,)34 b(Keymap)g(map)p
+Fg(\))390 2627 y Ft(Return)c(an)i(arra)m(y)f(of)h(strings)f(represen)m
+(ting)g(the)g(k)m(ey)h(sequences)g(used)e(to)i(in)m(v)m(ok)m(e)h
+Fj(function)e Ft(in)390 2736 y(the)g(k)m(eymap)f Fj(map)p
+Ft(.)3350 2935 y([F)-8 b(unction])-3599 b Fh(void)54
b(rl_function_dumper)c Fg(\()p Ff(in)m(t)34 b(readable)p
-Fg(\))390 4321 y Ft(Prin)m(t)29 b(the)h(readline)f(function)g(names)g
+Fg(\))390 3044 y Ft(Prin)m(t)29 b(the)h(readline)f(function)g(names)g
(and)g(the)g(k)m(ey)h(sequences)g(curren)m(tly)f(b)s(ound)e(to)j(them)f
-(to)390 4430 y Fs(rl_outstream)p Ft(.)36 b(If)27 b Fj(readable)33
+(to)390 3154 y Fs(rl_outstream)p Ft(.)36 b(If)27 b Fj(readable)33
b Ft(is)28 b(non-zero,)h(the)e(list)i(is)e(formatted)h(in)f(suc)m(h)g
-(a)h(w)m(a)m(y)h(that)f(it)g(can)390 4540 y(b)s(e)i(made)g(part)g(of)h
-(an)f Fs(inputrc)f Ft(\014le)h(and)g(re-read.)3350 4721
+(a)h(w)m(a)m(y)h(that)f(it)g(can)390 3264 y(b)s(e)i(made)g(part)g(of)h
+(an)f Fs(inputrc)f Ft(\014le)h(and)g(re-read.)3350 3462
y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_list_funmap_names)d
-Fg(\()p Ff(v)m(oid)p Fg(\))390 4830 y Ft(Prin)m(t)30
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3572 y Ft(Prin)m(t)30
b(the)h(names)f(of)h(all)g(bindable)f(Readline)h(functions)f(to)h
-Fs(rl_outstream)p Ft(.)3350 5011 y([F)-8 b(unction])-3599
+Fs(rl_outstream)p Ft(.)3350 3770 y([F)-8 b(unction])-3599
b Fh(const)54 b(char)f(**)g(rl_funmap_names)d Fg(\()p
-Ff(v)m(oid)p Fg(\))390 5121 y Ft(Return)25 b(a)i(NULL)f(terminated)g
+Ff(v)m(oid)p Fg(\))390 3880 y Ft(Return)25 b(a)i(NULL)f(terminated)g
(arra)m(y)h(of)f(kno)m(wn)f(function)h(names.)39 b(The)26
-b(arra)m(y)g(is)g(sorted.)39 b(The)390 5230 y(arra)m(y)28
+b(arra)m(y)g(is)g(sorted.)39 b(The)390 3989 y(arra)m(y)28
b(itself)h(is)f(allo)s(cated,)j(but)c(not)h(the)h(strings)e(inside.)40
b(Y)-8 b(ou)29 b(should)e(free)h(the)g(arra)m(y)-8 b(,)29
-b(but)f(not)390 5340 y(the)j(p)s(oin)m(ters,)f(using)g
-Fs(free)f Ft(or)i Fs(rl_free)d Ft(when)h(y)m(ou)i(are)g(done.)p
-eop end
-%%Page: 36 40
-TeXDict begin 36 39 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(36)3350
-299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_funmap_entry)e
-Fg(\()p Ff(const)34 b(c)m(har)g(*name,)g(rl)p 2331 299
-30 5 v 43 w(command)p 2794 299 V 45 w(func)p 3023 299
-V 45 w(t)565 408 y(*function)p Fg(\))390 518 y Ft(Add)e
+b(but)f(not)390 4099 y(the)j(p)s(oin)m(ters,)f(using)g
+Fs(free)f Ft(or)i Fs(rl_free)d Ft(when)h(y)m(ou)i(are)g(done.)3350
+4297 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_add_funmap_entry)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*name,)g(rl)p 2331 4297
+V 43 w(command)p 2794 4297 V 45 w(func)p 3023 4297 V
+45 w(t)565 4407 y(*function)p Fg(\))390 4516 y Ft(Add)e
Fj(name)38 b Ft(to)33 b(the)g(list)h(of)f(bindable)f(Readline)h
(command)g(names,)g(and)f(mak)m(e)i Fj(function)f Ft(the)390
-628 y(function)d(to)h(b)s(e)f(called)h(when)f Fj(name)35
-b Ft(is)c(in)m(v)m(ok)m(ed.)150 832 y Fi(2.4.5)63 b(Allo)m(wing)41
-b(Undoing)150 979 y Ft(Supp)s(orting)34 b(the)i(undo)e(command)i(is)g
+4626 y(function)d(to)h(b)s(e)f(called)h(when)f Fj(name)35
+b Ft(is)c(in)m(v)m(ok)m(ed.)150 4832 y Fi(2.4.5)63 b(Allo)m(wing)41
+b(Undoing)150 4979 y Ft(Supp)s(orting)34 b(the)i(undo)e(command)i(is)g
(a)g(painless)g(thing,)h(and)e(mak)m(es)i(y)m(our)f(functions)f(m)m(uc)
-m(h)h(more)150 1089 y(useful.)k(It)30 b(is)h(certainly)g(easy)g(to)g
+m(h)h(more)150 5089 y(useful.)k(It)30 b(is)h(certainly)g(easy)g(to)g
(try)g(something)g(if)f(y)m(ou)h(kno)m(w)f(y)m(ou)h(can)f(undo)g(it.)
-275 1229 y(If)40 b(y)m(our)h(function)f(simply)g(inserts)h(text)h
+275 5230 y(If)40 b(y)m(our)h(function)f(simply)g(inserts)h(text)h
(once,)i(or)d(deletes)h(text)g(once,)i(and)c(uses)h Fs(rl_insert_)150
-1338 y(text\(\))26 b Ft(or)i Fs(rl_delete_text\(\))23
+5340 y(text\(\))26 b Ft(or)i Fs(rl_delete_text\(\))23
b Ft(to)29 b(do)f(it,)h(then)f(undoing)f(is)g(already)i(done)f(for)f(y)
-m(ou)h(automatically)-8 b(.)275 1478 y(If)20 b(y)m(ou)g(do)h(m)m
-(ultiple)g(insertions)f(or)h(m)m(ultiple)g(deletions,)j(or)c(an)m(y)h
-(com)m(bination)h(of)e(these)h(op)s(erations,)150 1588
-y(y)m(ou)38 b(should)f(group)h(them)g(together)h(in)m(to)g(one)f(op)s
-(eration.)64 b(This)37 b(is)h(done)g(with)g Fs(rl_begin_undo_)150
-1697 y(group\(\))28 b Ft(and)i Fs(rl_end_undo_group\(\))p
-Ft(.)275 1837 y(The)f(t)m(yp)s(es)i(of)f(ev)m(en)m(ts)i(that)f(can)g(b)
-s(e)e(undone)h(are:)390 1954 y Fe(enum)40 b(undo_code)h({)f
-(UNDO_DELETE,)i(UNDO_INSERT,)g(UNDO_BEGIN,)g(UNDO_END)f(};)275
-2094 y Ft(Notice)32 b(that)f Fs(UNDO_DELETE)c Ft(means)j(to)h(insert)f
-(some)h(text,)h(and)d Fs(UNDO_INSERT)e Ft(means)k(to)g(delete)150
-2204 y(some)d(text.)41 b(That)27 b(is,)i(the)e(undo)g(co)s(de)h(tells)g
-(what)g(to)g(undo,)f(not)h(ho)m(w)g(to)g(undo)e(it.)41
-b Fs(UNDO_BEGIN)25 b Ft(and)150 2314 y Fs(UNDO_END)j
-Ft(are)j(tags)g(added)f(b)m(y)g Fs(rl_begin_undo_group\(\))25
-b Ft(and)30 b Fs(rl_end_undo_group\(\))p Ft(.)3350 2508
-y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_begin_undo_group)e
-Fg(\()p Ff(v)m(oid)p Fg(\))390 2618 y Ft(Begins)32 b(sa)m(ving)g(undo)d
-(information)j(in)e(a)i(group)e(construct.)43 b(The)30
-b(undo)g(information)h(usually)390 2728 y(comes)42 b(from)f(calls)i(to)
-f Fs(rl_insert_text\(\))37 b Ft(and)k Fs(rl_delete_text\(\))p
-Ft(,)f(but)h(could)h(b)s(e)f(the)390 2837 y(result)30
-b(of)h(calls)g(to)g Fs(rl_add_undo\(\))p Ft(.)3350 3032
-y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_end_undo_group)e
-Fg(\()p Ff(v)m(oid)p Fg(\))390 3142 y Ft(Closes)29 b(the)h(curren)m(t)e
-(undo)g(group)h(started)g(with)g Fs(rl_begin_undo_group)c(\(\))p
-Ft(.)39 b(There)29 b(should)390 3251 y(b)s(e)h(one)g(call)i(to)f
-Fs(rl_end_undo_group\(\))25 b Ft(for)30 b(eac)m(h)i(call)g(to)f
-Fs(rl_begin_undo_group\(\))p Ft(.)3350 3446 y([F)-8 b(unction])-3599
-b Fh(void)54 b(rl_add_undo)48 b Fg(\()p Ff(en)m(um)35
-b(undo)p 1558 3446 V 45 w(co)s(de)e(what,)g(in)m(t)g(start,)g(in)m(t)g
-(end,)h(c)m(har)565 3556 y(*text)p Fg(\))390 3666 y Ft(Remem)m(b)s(er)g
-(ho)m(w)g(to)h(undo)d(an)i(ev)m(en)m(t)i(\(according)f(to)g
-Fj(what)r Ft(\).)52 b(The)33 b(a\013ected)j(text)f(runs)d(from)390
-3775 y Fj(start)h Ft(to)e Fj(end)p Ft(,)f(and)g(encompasses)h
-Fj(text)p Ft(.)3350 3970 y([F)-8 b(unction])-3599 b Fh(void)54
+m(ou)h(automatically)-8 b(.)p eop end
+%%Page: 37 41
+TeXDict begin 37 40 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(37)275
+299 y(If)20 b(y)m(ou)g(do)h(m)m(ultiple)g(insertions)f(or)h(m)m
+(ultiple)g(deletions,)j(or)c(an)m(y)h(com)m(bination)h(of)e(these)h(op)
+s(erations,)150 408 y(y)m(ou)38 b(should)f(group)h(them)g(together)h
+(in)m(to)g(one)f(op)s(eration.)64 b(This)37 b(is)h(done)g(with)g
+Fs(rl_begin_undo_)150 518 y(group\(\))28 b Ft(and)i Fs
+(rl_end_undo_group\(\))p Ft(.)275 649 y(The)f(t)m(yp)s(es)i(of)f(ev)m
+(en)m(ts)i(that)f(can)g(b)s(e)e(undone)h(are:)390 757
+y Fe(enum)40 b(undo_code)h({)f(UNDO_DELETE,)i(UNDO_INSERT,)g
+(UNDO_BEGIN,)g(UNDO_END)f(};)275 887 y Ft(Notice)32 b(that)f
+Fs(UNDO_DELETE)c Ft(means)j(to)h(insert)f(some)h(text,)h(and)d
+Fs(UNDO_INSERT)e Ft(means)k(to)g(delete)150 997 y(some)d(text.)41
+b(That)27 b(is,)i(the)e(undo)g(co)s(de)h(tells)g(what)g(to)g(undo,)f
+(not)h(ho)m(w)g(to)g(undo)e(it.)41 b Fs(UNDO_BEGIN)25
+b Ft(and)150 1106 y Fs(UNDO_END)j Ft(are)j(tags)g(added)f(b)m(y)g
+Fs(rl_begin_undo_group\(\))25 b Ft(and)30 b Fs(rl_end_undo_group\(\))p
+Ft(.)3350 1279 y([F)-8 b(unction])-3599 b Fh(int)53 b
+(rl_begin_undo_group)e Fg(\()p Ff(v)m(oid)p Fg(\))390
+1388 y Ft(Begins)32 b(sa)m(ving)g(undo)d(information)j(in)e(a)i(group)e
+(construct.)43 b(The)30 b(undo)g(information)h(usually)390
+1498 y(comes)42 b(from)f(calls)i(to)f Fs(rl_insert_text\(\))37
+b Ft(and)k Fs(rl_delete_text\(\))p Ft(,)f(but)h(could)h(b)s(e)f(the)390
+1608 y(result)30 b(of)h(calls)g(to)g Fs(rl_add_undo\(\))p
+Ft(.)3350 1780 y([F)-8 b(unction])-3599 b Fh(int)53 b
+(rl_end_undo_group)e Fg(\()p Ff(v)m(oid)p Fg(\))390 1890
+y Ft(Closes)29 b(the)h(curren)m(t)e(undo)g(group)h(started)g(with)g
+Fs(rl_begin_undo_group)c(\(\))p Ft(.)39 b(There)29 b(should)390
+1999 y(b)s(e)h(one)g(call)i(to)f Fs(rl_end_undo_group\(\))25
+b Ft(for)30 b(eac)m(h)i(call)g(to)f Fs(rl_begin_undo_group\(\))p
+Ft(.)3350 2172 y([F)-8 b(unction])-3599 b Fh(void)54
+b(rl_add_undo)48 b Fg(\()p Ff(en)m(um)35 b(undo)p 1558
+2172 30 5 v 45 w(co)s(de)e(what,)g(in)m(t)g(start,)g(in)m(t)g(end,)h(c)
+m(har)565 2281 y(*text)p Fg(\))390 2391 y Ft(Remem)m(b)s(er)g(ho)m(w)g
+(to)h(undo)d(an)i(ev)m(en)m(t)i(\(according)f(to)g Fj(what)r
+Ft(\).)52 b(The)33 b(a\013ected)j(text)f(runs)d(from)390
+2500 y Fj(start)h Ft(to)e Fj(end)p Ft(,)f(and)g(encompasses)h
+Fj(text)p Ft(.)3350 2673 y([F)-8 b(unction])-3599 b Fh(void)54
b(rl_free_undo_list)c Fg(\()p Ff(v)m(oid)p Fg(\))390
-4080 y Ft(F)-8 b(ree)31 b(the)g(existing)g(undo)f(list.)3350
-4275 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_do_undo)c
-Fg(\()p Ff(v)m(oid)p Fg(\))390 4384 y Ft(Undo)22 b(the)h(\014rst)g
+2783 y Ft(F)-8 b(ree)31 b(the)g(existing)g(undo)f(list.)3350
+2955 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_do_undo)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3065 y Ft(Undo)22 b(the)h(\014rst)g
(thing)f(on)h(the)g(undo)f(list.)39 b(Returns)22 b Fs(0)g
Ft(if)h(there)g(w)m(as)g(nothing)g(to)h(undo,)f(non-zero)390
-4494 y(if)30 b(something)h(w)m(as)g(undone.)275 4689
+3174 y(if)30 b(something)h(w)m(as)g(undone.)275 3347
y(Finally)-8 b(,)32 b(if)f(y)m(ou)h(neither)f(insert)g(nor)f(delete)j
(text,)f(but)f(directly)g(mo)s(dify)g(the)g(existing)h(text)g(\(e.g.,)
-150 4799 y(c)m(hange)40 b(its)f(case\),)j(call)e Fs(rl_modifying\(\))35
+150 3456 y(c)m(hange)40 b(its)f(case\),)j(call)e Fs(rl_modifying\(\))35
b Ft(once,)42 b(just)c(b)s(efore)g(y)m(ou)h(mo)s(dify)f(the)h(text.)67
-b(Y)-8 b(ou)39 b(m)m(ust)150 4908 y(supply)29 b(the)h(indices)h(of)f
+b(Y)-8 b(ou)39 b(m)m(ust)150 3566 y(supply)29 b(the)h(indices)h(of)f
(the)h(text)g(range)g(that)g(y)m(ou)g(are)g(going)g(to)g(mo)s(dify)-8
-b(.)3350 5103 y([F)g(unction])-3599 b Fh(int)53 b(rl_modifying)c
+b(.)3350 3738 y([F)g(unction])-3599 b Fh(int)53 b(rl_modifying)c
Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)i(end)p Fg(\))390
-5213 y Ft(T)-8 b(ell)41 b(Readline)g(to)g(sa)m(v)m(e)g(the)g(text)g(b)s
+3848 y Ft(T)-8 b(ell)41 b(Readline)g(to)g(sa)m(v)m(e)g(the)g(text)g(b)s
(et)m(w)m(een)g Fj(start)i Ft(and)c Fj(end)k Ft(as)e(a)f(single)h(undo)
-e(unit.)70 b(It)40 b(is)390 5322 y(assumed)30 b(that)h(y)m(ou)f(will)h
-(subsequen)m(tly)f(mo)s(dify)f(that)i(text.)p eop end
-%%Page: 37 41
-TeXDict begin 37 40 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(37)150
-299 y Fi(2.4.6)63 b(Redispla)m(y)3350 491 y Ft([F)-8
-b(unction])-3599 b Fh(void)54 b(rl_redisplay)49 b Fg(\()p
-Ff(v)m(oid)p Fg(\))390 601 y Ft(Change)38 b(what's)f(displa)m(y)m(ed)i
-(on)e(the)h(screen)g(to)h(re\015ect)f(the)g(curren)m(t)g(con)m(ten)m
-(ts)h(of)f Fs(rl_line_)390 711 y(buffer)p Ft(.)3350 889
-y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_forced_update_disp)q(lay)f
-Fg(\()p Ff(v)m(oid)p Fg(\))390 998 y Ft(F)-8 b(orce)41
+e(unit.)70 b(It)40 b(is)390 3957 y(assumed)30 b(that)h(y)m(ou)f(will)h
+(subsequen)m(tly)f(mo)s(dify)f(that)i(text.)150 4149
+y Fi(2.4.6)63 b(Redispla)m(y)3350 4338 y Ft([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_redisplay)49 b Fg(\()p Ff(v)m(oid)p
+Fg(\))390 4447 y Ft(Change)38 b(what's)f(displa)m(y)m(ed)i(on)e(the)h
+(screen)g(to)h(re\015ect)f(the)g(curren)m(t)g(con)m(ten)m(ts)h(of)f
+Fs(rl_line_)390 4557 y(buffer)p Ft(.)3350 4729 y([F)-8
+b(unction])-3599 b Fh(int)53 b(rl_forced_update_disp)q(lay)f
+Fg(\()p Ff(v)m(oid)p Fg(\))390 4839 y Ft(F)-8 b(orce)41
b(the)f(line)g(to)h(b)s(e)e(up)s(dated)f(and)h(redispla)m(y)m(ed,)k
-(whether)c(or)g(not)h(Readline)h(thinks)e(the)390 1108
-y(screen)30 b(displa)m(y)h(is)f(correct.)3350 1286 y([F)-8
+(whether)c(or)g(not)h(Readline)h(thinks)e(the)390 4948
+y(screen)30 b(displa)m(y)h(is)f(correct.)3350 5121 y([F)-8
b(unction])-3599 b Fh(int)53 b(rl_on_new_line)d Fg(\()p
-Ff(v)m(oid)p Fg(\))390 1395 y Ft(T)-8 b(ell)31 b(the)f(up)s(date)f
+Ff(v)m(oid)p Fg(\))390 5230 y Ft(T)-8 b(ell)31 b(the)f(up)s(date)f
(functions)g(that)i(w)m(e)f(ha)m(v)m(e)h(mo)m(v)m(ed)g(on)m(to)g(a)f
-(new)f(\(empt)m(y\))i(line,)g(usually)e(after)390 1505
-y(outputting)i(a)f(newline.)3350 1683 y([F)-8 b(unction])-3599
-b Fh(int)53 b(rl_on_new_line_with_p)q(romp)q(t)f Fg(\()p
-Ff(v)m(oid)p Fg(\))390 1793 y Ft(T)-8 b(ell)25 b(the)f(up)s(date)f
-(functions)h(that)h(w)m(e)f(ha)m(v)m(e)h(mo)m(v)m(ed)g(on)m(to)h(a)e
-(new)g(line,)i(with)d Fj(rl)p 3106 1793 28 4 v 40 w(prompt)i
-Ft(already)390 1902 y(displa)m(y)m(ed.)41 b(This)28 b(could)g(b)s(e)g
-(used)g(b)m(y)g(applications)i(that)f(w)m(an)m(t)h(to)f(output)f(the)h
-(prompt)f(string)390 2012 y(themselv)m(es,)h(but)e(still)h(need)g
-(Readline)g(to)g(kno)m(w)f(the)h(prompt)e(string)h(length)h(for)f
-(redispla)m(y)-8 b(.)41 b(It)390 2121 y(should)29 b(b)s(e)h(used)g
-(after)h(setting)g Fj(rl)p 1590 2121 V 40 w(already)p
-1920 2121 V 41 w(prompted)p Ft(.)3350 2299 y([F)-8 b(unction])-3599
-b Fh(int)53 b(rl_clear_visible_line)f Fg(\()p Ff(v)m(oid)p
-Fg(\))390 2409 y Ft(Clear)31 b(the)f(screen)h(lines)f(corresp)s(onding)
-g(to)h(the)f(curren)m(t)g(line's)h(con)m(ten)m(ts.)3350
-2587 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_reset_line_state)e
-Fg(\()p Ff(v)m(oid)p Fg(\))390 2697 y Ft(Reset)36 b(the)e(displa)m(y)h
+(new)f(\(empt)m(y\))i(line,)g(usually)e(after)390 5340
+y(outputting)i(a)f(newline.)p eop end
+%%Page: 38 42
+TeXDict begin 38 41 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(38)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_on_new_line_with_p)q
+(romp)q(t)f Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(T)-8
+b(ell)25 b(the)f(up)s(date)f(functions)h(that)h(w)m(e)f(ha)m(v)m(e)h
+(mo)m(v)m(ed)g(on)m(to)h(a)e(new)g(line,)i(with)d Fj(rl)p
+3106 408 28 4 v 40 w(prompt)i Ft(already)390 518 y(displa)m(y)m(ed.)41
+b(This)28 b(could)g(b)s(e)g(used)g(b)m(y)g(applications)i(that)f(w)m
+(an)m(t)h(to)f(output)f(the)h(prompt)f(string)390 628
+y(themselv)m(es,)h(but)e(still)h(need)g(Readline)g(to)g(kno)m(w)f(the)h
+(prompt)e(string)h(length)h(for)f(redispla)m(y)-8 b(.)41
+b(It)390 737 y(should)29 b(b)s(e)h(used)g(after)h(setting)g
+Fj(rl)p 1590 737 V 40 w(already)p 1920 737 V 41 w(prompted)p
+Ft(.)3350 920 y([F)-8 b(unction])-3599 b Fh(int)53 b
+(rl_clear_visible_line)f Fg(\()p Ff(v)m(oid)p Fg(\))390
+1029 y Ft(Clear)31 b(the)f(screen)h(lines)f(corresp)s(onding)g(to)h
+(the)f(curren)m(t)g(line's)h(con)m(ten)m(ts.)3350 1212
+y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_reset_line_state)e
+Fg(\()p Ff(v)m(oid)p Fg(\))390 1322 y Ft(Reset)36 b(the)e(displa)m(y)h
(state)h(to)g(a)f(clean)g(state)h(and)e(redispla)m(y)h(the)g(curren)m
-(t)g(line)g(starting)g(on)g(a)390 2806 y(new)30 b(line.)3350
-2984 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_crlf)48
-b Fg(\()p Ff(v)m(oid)p Fg(\))390 3094 y Ft(Mo)m(v)m(e)32
+(t)g(line)g(starting)g(on)g(a)390 1431 y(new)30 b(line.)3350
+1614 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_crlf)48
+b Fg(\()p Ff(v)m(oid)p Fg(\))390 1724 y Ft(Mo)m(v)m(e)32
b(the)f(cursor)f(to)h(the)f(start)h(of)g(the)f(next)h(screen)f(line.)
-3350 3272 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_show_char)c
-Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 3381 y Ft(Displa)m(y)g(c)m
+3350 1906 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_show_char)c
+Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 2016 y Ft(Displa)m(y)g(c)m
(haracter)g Fj(c)k Ft(on)32 b Fs(rl_outstream)p Ft(.)44
b(If)32 b(Readline)h(has)g(not)f(b)s(een)g(set)h(to)g(displa)m(y)g
-(meta)390 3491 y(c)m(haracters)27 b(directly)-8 b(,)29
+(meta)390 2125 y(c)m(haracters)27 b(directly)-8 b(,)29
b(this)c(will)i(con)m(v)m(ert)g(meta)g(c)m(haracters)h(to)e(a)h
-(meta-pre\014xed)f(k)m(ey)g(sequence.)390 3600 y(This)k(is)g(in)m
+(meta-pre\014xed)f(k)m(ey)g(sequence.)390 2235 y(This)k(is)g(in)m
(tended)g(for)g(use)g(b)m(y)h(applications)g(whic)m(h)f(wish)g(to)h(do)
-f(their)h(o)m(wn)f(redispla)m(y)-8 b(.)3350 3778 y([F)g(unction])-3599
+f(their)h(o)m(wn)f(redispla)m(y)-8 b(.)3350 2418 y([F)g(unction])-3599
b Fh(int)53 b(rl_message)c Fg(\()p Ff(const)34 b(c)m(har)g(*,)k(.)24
-b(.)g(.)12 b Fg(\))390 3888 y Ft(The)20 b(argumen)m(ts)h(are)g(a)g
+b(.)g(.)12 b Fg(\))390 2527 y Ft(The)20 b(argumen)m(ts)h(are)g(a)g
(format)g(string)g(as)f(w)m(ould)h(b)s(e)f(supplied)f(to)j
-Fs(printf)p Ft(,)f(p)s(ossibly)e(con)m(taining)390 3998
+Fs(printf)p Ft(,)f(p)s(ossibly)e(con)m(taining)390 2637
y(con)m(v)m(ersion)45 b(sp)s(eci\014cations)g(suc)m(h)f(as)g(`)p
Fs(\045d)p Ft(',)k(and)c(an)m(y)g(additional)h(argumen)m(ts)g
-(necessary)f(to)390 4107 y(satisfy)e(the)f(con)m(v)m(ersion)i(sp)s
+(necessary)f(to)390 2746 y(satisfy)e(the)f(con)m(v)m(ersion)i(sp)s
(eci\014cations.)74 b(The)41 b(resulting)h(string)f(is)g(displa)m(y)m
-(ed)h(in)f(the)h Fj(ec)m(ho)390 4217 y(area)p Ft(.)63
+(ed)h(in)f(the)h Fj(ec)m(ho)390 2856 y(area)p Ft(.)63
b(The)37 b(ec)m(ho)i(area)f(is)g(also)g(used)f(to)h(displa)m(y)g(n)m
(umeric)f(argumen)m(ts)h(and)f(searc)m(h)h(strings.)390
-4326 y(Y)-8 b(ou)34 b(should)e(call)j Fs(rl_save_prompt)29
+2966 y(Y)-8 b(ou)34 b(should)e(call)j Fs(rl_save_prompt)29
b Ft(to)34 b(sa)m(v)m(e)h(the)f(prompt)e(information)i(b)s(efore)f
-(calling)i(this)390 4436 y(function.)3350 4614 y([F)-8
+(calling)i(this)390 3075 y(function.)3350 3258 y([F)-8
b(unction])-3599 b Fh(int)53 b(rl_clear_message)e Fg(\()p
-Ff(v)m(oid)p Fg(\))390 4724 y Ft(Clear)29 b(the)g(message)h(in)f(the)g
+Ff(v)m(oid)p Fg(\))390 3367 y Ft(Clear)29 b(the)g(message)h(in)f(the)g
(ec)m(ho)h(area.)41 b(If)29 b(the)g(prompt)f(w)m(as)h(sa)m(v)m(ed)h
-(with)f(a)g(call)i(to)e Fs(rl_save_)390 4833 y(prompt)38
+(with)f(a)g(call)i(to)e Fs(rl_save_)390 3477 y(prompt)38
b Ft(b)s(efore)h(the)g(last)h(call)h(to)f Fs(rl_message)p
Ft(,)f(call)i Fs(rl_restore_prompt)34 b Ft(b)s(efore)39
-b(calling)390 4943 y(this)30 b(function.)3350 5121 y([F)-8
+b(calling)390 3587 y(this)30 b(function.)3350 3769 y([F)-8
b(unction])-3599 b Fh(void)54 b(rl_save_prompt)49 b Fg(\()p
-Ff(v)m(oid)p Fg(\))390 5230 y Ft(Sa)m(v)m(e)44 b(the)f(lo)s(cal)i
+Ff(v)m(oid)p Fg(\))390 3879 y Ft(Sa)m(v)m(e)44 b(the)f(lo)s(cal)i
(Readline)e(prompt)f(displa)m(y)i(state)g(in)f(preparation)g(for)g
-(displa)m(ying)g(a)g(new)390 5340 y(message)31 b(in)g(the)f(message)i
-(area)f(with)f Fs(rl_message\(\))p Ft(.)p eop end
-%%Page: 38 42
-TeXDict begin 38 41 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(38)3350
-299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_restore_prompt)c
-Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(Restore)44 b(the)e(lo)s(cal)i
+(displa)m(ying)g(a)g(new)390 3988 y(message)31 b(in)g(the)f(message)i
+(area)f(with)f Fs(rl_message\(\))p Ft(.)3350 4171 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_restore_prompt)c Fg(\()p
+Ff(v)m(oid)p Fg(\))390 4281 y Ft(Restore)44 b(the)e(lo)s(cal)i
(Readline)g(prompt)d(displa)m(y)i(state)h(sa)m(v)m(ed)g(b)m(y)f(the)f
-(most)h(recen)m(t)h(call)g(to)390 518 y Fs(rl_save_prompt)p
+(most)h(recen)m(t)h(call)g(to)390 4390 y Fs(rl_save_prompt)p
Ft(.)69 b(if)41 b Fs(rl_save_prompt)d Ft(w)m(as)j(called)i(to)f(sa)m(v)
-m(e)h(the)e(prompt)f(b)s(efore)h(a)h(call)390 628 y(to)37
+m(e)h(the)e(prompt)f(b)s(efore)h(a)h(call)390 4500 y(to)37
b Fs(rl_message)p Ft(,)f(this)h(function)f(should)g(b)s(e)g(called)i(b)
s(efore)f(the)g(corresp)s(onding)e(call)j(to)g Fs(rl_)390
-737 y(clear_message)p Ft(.)3350 918 y([F)-8 b(unction])-3599
+4609 y(clear_message)p Ft(.)3350 4792 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_expand_prompt)e Fg(\()p Ff(c)m(har)34
-b(*prompt)p Fg(\))390 1027 y Ft(Expand)41 b(an)m(y)j(sp)s(ecial)f(c)m
+b(*prompt)p Fg(\))390 4902 y Ft(Expand)41 b(an)m(y)j(sp)s(ecial)f(c)m
(haracter)h(sequences)f(in)g Fj(prompt)g Ft(and)f(set)i(up)d(the)i(lo)s
-(cal)h(Readline)390 1137 y(prompt)35 b(redispla)m(y)h(v)-5
+(cal)h(Readline)390 5011 y(prompt)35 b(redispla)m(y)h(v)-5
b(ariables.)57 b(This)35 b(function)h(is)g(called)h(b)m(y)e
Fs(readline\(\))p Ft(.)55 b(It)35 b(ma)m(y)i(also)g(b)s(e)390
-1246 y(called)22 b(to)g(expand)f(the)g(primary)f(prompt)g(if)i(the)f
+5121 y(called)22 b(to)g(expand)f(the)g(primary)f(prompt)g(if)i(the)f
Fs(rl_on_new_line_with_prom)o(pt\()o(\))15 b Ft(function)390
-1356 y(or)25 b Fs(rl_already_prompted)c Ft(v)-5 b(ariable)26
+5230 y(or)25 b Fs(rl_already_prompted)c Ft(v)-5 b(ariable)26
b(is)f(used.)39 b(It)25 b(returns)f(the)i(n)m(um)m(b)s(er)e(of)i
-(visible)f(c)m(haracters)390 1465 y(on)34 b(the)g(last)g(line)g(of)g
+(visible)f(c)m(haracters)390 5340 y(on)34 b(the)g(last)g(line)g(of)g
(the)g(\(p)s(ossibly)f(m)m(ulti-line\))j(prompt.)50 b(Applications)34
-b(ma)m(y)h(indicate)f(that)390 1575 y(the)28 b(prompt)f(con)m(tains)i
-(c)m(haracters)g(that)g(tak)m(e)g(up)e(no)h(ph)m(ysical)g(screen)g
-(space)g(when)f(displa)m(y)m(ed)390 1685 y(b)m(y)41 b(brac)m(k)m(eting)
-i(a)e(sequence)g(of)g(suc)m(h)g(c)m(haracters)h(with)f(the)g(sp)s
-(ecial)h(mark)m(ers)f Fs(RL_PROMPT_)390 1794 y(START_IGNORE)29
-b Ft(and)j Fs(RL_PROMPT_END_IGNORE)26 b Ft(\(declared)33
-b(in)f Fs(readline.h)p Ft(\).)44 b(This)32 b(ma)m(y)h(b)s(e)390
-1904 y(used)d(to)h(em)m(b)s(ed)f(terminal-sp)s(eci\014c)h(escap)s(e)f
-(sequences)h(in)f(prompts.)3350 2084 y([F)-8 b(unction])-3599
-b Fh(int)53 b(rl_set_prompt)d Fg(\()p Ff(const)34 b(c)m(har)g(*prompt)p
-Fg(\))390 2194 y Ft(Mak)m(e)28 b(Readline)g(use)f Fj(prompt)h
-Ft(for)e(subsequen)m(t)h(redispla)m(y)-8 b(.)40 b(This)26
-b(calls)i Fs(rl_expand_prompt\(\))390 2303 y Ft(to)j(expand)f(the)g
-(prompt)g(and)g(sets)g Fs(rl_prompt)e Ft(to)j(the)g(result.)150
-2500 y Fi(2.4.7)63 b(Mo)s(difying)43 b(T)-10 b(ext)3350
-2694 y Ft([F)i(unction])-3599 b Fh(int)53 b(rl_insert_text)d
-Fg(\()p Ff(const)34 b(c)m(har)g(*text)p Fg(\))390 2804
-y Ft(Insert)d Fj(text)k Ft(in)m(to)d(the)g(line)g(at)g(the)g(curren)m
-(t)f(cursor)g(p)s(osition.)45 b(Returns)30 b(the)i(n)m(um)m(b)s(er)f
-(of)g(c)m(har-)390 2913 y(acters)g(inserted.)3350 3093
-y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_delete_text)d
+b(ma)m(y)h(indicate)f(that)p eop end
+%%Page: 39 43
+TeXDict begin 39 42 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(39)390
+299 y(the)28 b(prompt)f(con)m(tains)i(c)m(haracters)g(that)g(tak)m(e)g
+(up)e(no)h(ph)m(ysical)g(screen)g(space)g(when)f(displa)m(y)m(ed)390
+408 y(b)m(y)41 b(brac)m(k)m(eting)i(a)e(sequence)g(of)g(suc)m(h)g(c)m
+(haracters)h(with)f(the)g(sp)s(ecial)h(mark)m(ers)f Fs(RL_PROMPT_)390
+518 y(START_IGNORE)29 b Ft(and)j Fs(RL_PROMPT_END_IGNORE)26
+b Ft(\(declared)33 b(in)f Fs(readline.h)p Ft(\).)44 b(This)32
+b(ma)m(y)h(b)s(e)390 628 y(used)d(to)h(em)m(b)s(ed)f(terminal-sp)s
+(eci\014c)h(escap)s(e)f(sequences)h(in)f(prompts.)3350
+824 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_prompt)d
+Fg(\()p Ff(const)34 b(c)m(har)g(*prompt)p Fg(\))390 934
+y Ft(Mak)m(e)28 b(Readline)g(use)f Fj(prompt)h Ft(for)e(subsequen)m(t)h
+(redispla)m(y)-8 b(.)40 b(This)26 b(calls)i Fs(rl_expand_prompt\(\))390
+1043 y Ft(to)j(expand)f(the)g(prompt)g(and)g(sets)g Fs(rl_prompt)e
+Ft(to)j(the)g(result.)150 1249 y Fi(2.4.7)63 b(Mo)s(difying)43
+b(T)-10 b(ext)3350 1452 y Ft([F)i(unction])-3599 b Fh(int)53
+b(rl_insert_text)d Fg(\()p Ff(const)34 b(c)m(har)g(*text)p
+Fg(\))390 1561 y Ft(Insert)d Fj(text)k Ft(in)m(to)d(the)g(line)g(at)g
+(the)g(curren)m(t)f(cursor)g(p)s(osition.)45 b(Returns)30
+b(the)i(n)m(um)m(b)s(er)f(of)g(c)m(har-)390 1671 y(acters)g(inserted.)
+3350 1867 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_delete_text)d
Fg(\()p Ff(in)m(t)33 b(start,)g(in)m(t)g(end)p Fg(\))390
-3203 y Ft(Delete)40 b(the)e(text)h(b)s(et)m(w)m(een)f
+1977 y Ft(Delete)40 b(the)e(text)h(b)s(et)m(w)m(een)f
Fj(start)i Ft(and)d Fj(end)k Ft(in)c(the)h(curren)m(t)g(line.)63
-b(Returns)36 b(the)i(n)m(um)m(b)s(er)f(of)390 3313 y(c)m(haracters)32
-b(deleted.)3350 3493 y([F)-8 b(unction])-3599 b Fh(char)54
+b(Returns)36 b(the)i(n)m(um)m(b)s(er)f(of)390 2086 y(c)m(haracters)32
+b(deleted.)3350 2283 y([F)-8 b(unction])-3599 b Fh(char)54
b(*)e(rl_copy_text)d Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)h(end)p
-Fg(\))390 3602 y Ft(Return)d(a)g(cop)m(y)h(of)g(the)g(text)g(b)s(et)m
+Fg(\))390 2392 y Ft(Return)d(a)g(cop)m(y)h(of)g(the)g(text)g(b)s(et)m
(w)m(een)g Fj(start)i Ft(and)d Fj(end)j Ft(in)d(the)h(curren)m(t)f
-(line.)3350 3783 y([F)-8 b(unction])-3599 b Fh(int)53
+(line.)3350 2589 y([F)-8 b(unction])-3599 b Fh(int)53
b(rl_kill_text)c Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)i(end)p
-Fg(\))390 3892 y Ft(Cop)m(y)g(the)g(text)i(b)s(et)m(w)m(een)e
+Fg(\))390 2698 y Ft(Cop)m(y)g(the)g(text)i(b)s(et)m(w)m(een)e
Fj(start)j Ft(and)d Fj(end)j Ft(in)d(the)g(curren)m(t)g(line)g(to)h
-(the)f(kill)h(ring,)g(app)s(ending)390 4002 y(or)f(prep)s(ending)e(to)j
+(the)f(kill)h(ring,)g(app)s(ending)390 2808 y(or)f(prep)s(ending)e(to)j
(the)f(last)h(kill)f(if)g(the)g(last)h(command)f(w)m(as)g(a)h(kill)f
-(command.)51 b(The)34 b(text)h(is)390 4112 y(deleted.)51
+(command.)51 b(The)34 b(text)h(is)390 2918 y(deleted.)51
b(If)33 b Fj(start)j Ft(is)e(less)g(than)f Fj(end)p Ft(,)h(the)g(text)g
(is)g(app)s(ended,)f(otherwise)h(prep)s(ended.)48 b(If)33
-b(the)390 4221 y(last)e(command)f(w)m(as)h(not)g(a)f(kill,)i(a)f(new)e
-(kill)i(ring)g(slot)g(is)f(used.)3350 4401 y([F)-8 b(unction])-3599
+b(the)390 3027 y(last)e(command)f(w)m(as)h(not)g(a)f(kill,)i(a)f(new)e
+(kill)i(ring)g(slot)g(is)f(used.)3350 3224 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_push_macro_input)e Fg(\()p Ff(c)m(har)35
-b(*macro)p Fg(\))390 4511 y Ft(Cause)28 b Fj(macro)33
+b(*macro)p Fg(\))390 3333 y Ft(Cause)28 b Fj(macro)33
b Ft(to)c(b)s(e)f(inserted)g(in)m(to)h(the)g(line,)g(as)f(if)h(it)f
(had)g(b)s(een)g(in)m(v)m(ok)m(ed)h(b)m(y)f(a)h(k)m(ey)g(b)s(ound)d(to)
-390 4621 y(a)31 b(macro.)41 b(Not)31 b(esp)s(ecially)h(useful;)e(use)g
-Fs(rl_insert_text\(\))c Ft(instead.)150 4817 y Fi(2.4.8)63
-b(Character)39 b(Input)3350 5011 y Ft([F)-8 b(unction])-3599
+390 3443 y(a)31 b(macro.)41 b(Not)31 b(esp)s(ecially)h(useful;)e(use)g
+Fs(rl_insert_text\(\))c Ft(instead.)150 3648 y Fi(2.4.8)63
+b(Character)39 b(Input)3350 3851 y Ft([F)-8 b(unction])-3599
b Fh(int)53 b(rl_read_key)c Fg(\()p Ff(v)m(oid)p Fg(\))390
-5121 y Ft(Return)29 b(the)g(next)h(c)m(haracter)h(a)m(v)-5
+3961 y Ft(Return)29 b(the)g(next)h(c)m(haracter)h(a)m(v)-5
b(ailable)32 b(from)d(Readline's)h(curren)m(t)f(input)g(stream.)41
-b(This)28 b(han-)390 5230 y(dles)e(input)g(inserted)g(in)m(to)i(the)e
-(input)g(stream)h(via)g Fj(rl)p 2226 5230 28 4 v 40 w(p)s(ending)p
-2583 5230 V 38 w(input)h Ft(\(see)f(Section)h(2.3)f([Read-)390
-5340 y(line)40 b(V)-8 b(ariables],)43 b(page)d(27\))g(and)f
+b(This)28 b(han-)390 4070 y(dles)e(input)g(inserted)g(in)m(to)i(the)e
+(input)g(stream)h(via)g Fj(rl)p 2226 4070 28 4 v 40 w(p)s(ending)p
+2583 4070 V 38 w(input)h Ft(\(see)f(Section)h(2.3)f([Read-)390
+4180 y(line)40 b(V)-8 b(ariables],)43 b(page)d(27\))g(and)f
Fs(rl_stuff_char\(\))p Ft(,)f(macros,)k(and)d(c)m(haracters)h(read)f
-(from)p eop end
-%%Page: 39 43
-TeXDict begin 39 42 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(39)390
-299 y(the)34 b(k)m(eyb)s(oard.)52 b(While)35 b(w)m(aiting)g(for)f
-(input,)g(this)g(function)g(will)g(call)i(an)m(y)e(function)g(assigned)
-390 408 y(to)d(the)g Fs(rl_event_hook)26 b Ft(v)-5 b(ariable.)3350
-574 y([F)d(unction])-3599 b Fh(int)53 b(rl_getc)48 b
-Fg(\()p Ff(FILE)33 b(*stream)p Fg(\))390 684 y Ft(Return)20
-b(the)i(next)f(c)m(haracter)i(a)m(v)-5 b(ailable)24 b(from)c
-Fj(stream)p Ft(,)k(whic)m(h)d(is)g(assumed)g(to)h(b)s(e)e(the)i(k)m
-(eyb)s(oard.)3350 850 y([F)-8 b(unction])-3599 b Fh(int)53
-b(rl_stuff_char)d Fg(\()p Ff(in)m(t)33 b(c)p Fg(\))390
-959 y Ft(Insert)f Fj(c)39 b Ft(in)m(to)34 b(the)f(Readline)g(input)f
-(stream.)49 b(It)33 b(will)g(b)s(e)f Fs(")p Ft(read)p
-Fs(")g Ft(b)s(efore)h(Readline)g(attempts)390 1069 y(to)27
-b(read)g(c)m(haracters)h(from)f(the)g(terminal)g(with)f
+(from)390 4289 y(the)34 b(k)m(eyb)s(oard.)52 b(While)35
+b(w)m(aiting)g(for)f(input,)g(this)g(function)g(will)g(call)i(an)m(y)e
+(function)g(assigned)390 4399 y(to)d(the)g Fs(rl_event_hook)26
+b Ft(v)-5 b(ariable.)3350 4596 y([F)d(unction])-3599
+b Fh(int)53 b(rl_getc)48 b Fg(\()p Ff(FILE)33 b(*stream)p
+Fg(\))390 4705 y Ft(Return)20 b(the)i(next)f(c)m(haracter)i(a)m(v)-5
+b(ailable)24 b(from)c Fj(stream)p Ft(,)k(whic)m(h)d(is)g(assumed)g(to)h
+(b)s(e)e(the)i(k)m(eyb)s(oard.)3350 4902 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_stuff_char)d Fg(\()p Ff(in)m(t)33 b(c)p
+Fg(\))390 5011 y Ft(Insert)f Fj(c)39 b Ft(in)m(to)34
+b(the)f(Readline)g(input)f(stream.)49 b(It)33 b(will)g(b)s(e)f
+Fs(")p Ft(read)p Fs(")g Ft(b)s(efore)h(Readline)g(attempts)390
+5121 y(to)27 b(read)g(c)m(haracters)h(from)f(the)g(terminal)g(with)f
Fs(rl_read_key\(\))p Ft(.)36 b(Up)27 b(to)g(512)h(c)m(haracters)g(ma)m
-(y)390 1178 y(b)s(e)i(pushed)f(bac)m(k.)42 b Fs(rl_stuff_char)27
+(y)390 5230 y(b)s(e)i(pushed)f(bac)m(k.)42 b Fs(rl_stuff_char)27
b Ft(returns)i(1)i(if)f(the)h(c)m(haracter)h(w)m(as)f(successfully)g
-(inserted;)390 1288 y(0)g(otherwise.)3350 1454 y([F)-8
-b(unction])-3599 b Fh(int)53 b(rl_execute_next)d Fg(\()p
-Ff(in)m(t)34 b(c)p Fg(\))390 1563 y Ft(Mak)m(e)j Fj(c)42
-b Ft(b)s(e)35 b(the)h(next)f(command)h(to)g(b)s(e)f(executed)i(when)d
-Fs(rl_read_key\(\))e Ft(is)k(called.)58 b(This)390 1673
-y(sets)31 b Fj(rl)p 635 1673 28 4 v 40 w(p)s(ending)p
-992 1673 V 38 w(input)p Ft(.)3350 1839 y([F)-8 b(unction])-3599
+(inserted;)390 5340 y(0)g(otherwise.)p eop end
+%%Page: 40 44
+TeXDict begin 40 43 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(40)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_execute_next)d
+Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 408 y Ft(Mak)m(e)j
+Fj(c)42 b Ft(b)s(e)35 b(the)h(next)f(command)h(to)g(b)s(e)f(executed)i
+(when)d Fs(rl_read_key\(\))e Ft(is)k(called.)58 b(This)390
+518 y(sets)31 b Fj(rl)p 635 518 28 4 v 40 w(p)s(ending)p
+992 518 V 38 w(input)p Ft(.)3350 680 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_clear_pending_inpu)q(t)e Fg(\()p Ff(v)m(oid)p
-Fg(\))390 1948 y Ft(Unset)42 b Fj(rl)p 729 1948 V 40
-w(p)s(ending)p 1086 1948 V 38 w(input)p Ft(,)i(e\013ectiv)m(ely)h
-(negating)e(the)f(e\013ect)h(of)f(an)m(y)g(previous)f(call)i(to)g
-Fs(rl_)390 2058 y(execute_next\(\))p Ft(.)59 b(This)36
-b(w)m(orks)i(only)g(if)f(the)h(p)s(ending)e(input)h(has)g(not)h
-(already)g(b)s(een)f(read)390 2167 y(with)30 b Fs(rl_read_key\(\))p
-Ft(.)3350 2333 y([F)-8 b(unction])-3599 b Fh(int)53 b
-(rl_set_keyboard_input)q(_tim)q(eou)q(t)e Fg(\()p Ff(in)m(t)34
-b(u)p Fg(\))390 2443 y Ft(While)41 b(w)m(aiting)g(for)f(k)m(eyb)s(oard)
-g(input)f(in)h Fs(rl_read_key\(\))p Ft(,)f(Readline)i(will)f(w)m(ait)h
-(for)f Fj(u)g Ft(mi-)390 2552 y(croseconds)31 b(for)g(input)f(b)s
-(efore)g(calling)j(an)m(y)e(function)f(assigned)i(to)f
-Fs(rl_event_hook)p Ft(.)39 b Fj(u)30 b Ft(m)m(ust)390
-2662 y(b)s(e)h(greater)i(than)f(or)g(equal)g(to)h(zero)f(\(a)h
-(zero-length)g(timeout)g(is)f(equiv)-5 b(alen)m(t)33
-b(to)g(a)f(p)s(oll\).)45 b(The)390 2771 y(default)31
-b(w)m(aiting)g(p)s(erio)s(d)e(is)i(one-ten)m(th)g(of)g(a)g(second.)40
-b(Returns)30 b(the)g(old)h(timeout)g(v)-5 b(alue.)150
-2958 y Fi(2.4.9)63 b(T)-10 b(erminal)41 b(Managemen)m(t)3350
-3143 y Ft([F)-8 b(unction])-3599 b Fh(void)54 b(rl_prep_terminal)c
-Fg(\()p Ff(in)m(t)33 b(meta)p 1704 3143 30 5 v 44 w(\015ag)p
-Fg(\))390 3252 y Ft(Mo)s(dify)42 b(the)h(terminal)g(settings)g(for)f
+Fg(\))390 789 y Ft(Unset)42 b Fj(rl)p 729 789 V 40 w(p)s(ending)p
+1086 789 V 38 w(input)p Ft(,)i(e\013ectiv)m(ely)h(negating)e(the)f
+(e\013ect)h(of)f(an)m(y)g(previous)f(call)i(to)g Fs(rl_)390
+899 y(execute_next\(\))p Ft(.)59 b(This)36 b(w)m(orks)i(only)g(if)f
+(the)h(p)s(ending)e(input)h(has)g(not)h(already)g(b)s(een)f(read)390
+1008 y(with)30 b Fs(rl_read_key\(\))p Ft(.)3350 1170
+y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_set_keyboard_input)q(_tim)q
+(eou)q(t)e Fg(\()p Ff(in)m(t)34 b(u)p Fg(\))390 1280
+y Ft(While)41 b(w)m(aiting)g(for)f(k)m(eyb)s(oard)g(input)f(in)h
+Fs(rl_read_key\(\))p Ft(,)f(Readline)i(will)f(w)m(ait)h(for)f
+Fj(u)g Ft(mi-)390 1389 y(croseconds)31 b(for)g(input)f(b)s(efore)g
+(calling)j(an)m(y)e(function)f(assigned)i(to)f Fs(rl_event_hook)p
+Ft(.)39 b Fj(u)30 b Ft(m)m(ust)390 1499 y(b)s(e)h(greater)i(than)f(or)g
+(equal)g(to)h(zero)f(\(a)h(zero-length)g(timeout)g(is)f(equiv)-5
+b(alen)m(t)33 b(to)g(a)f(p)s(oll\).)45 b(The)390 1608
+y(default)31 b(w)m(aiting)g(p)s(erio)s(d)e(is)i(one-ten)m(th)g(of)g(a)g
+(second.)40 b(Returns)30 b(the)g(old)h(timeout)g(v)-5
+b(alue.)150 1793 y Fi(2.4.9)63 b(T)-10 b(erminal)41 b(Managemen)m(t)
+3350 1974 y Ft([F)-8 b(unction])-3599 b Fh(void)54 b(rl_prep_terminal)c
+Fg(\()p Ff(in)m(t)33 b(meta)p 1704 1974 30 5 v 44 w(\015ag)p
+Fg(\))390 2084 y Ft(Mo)s(dify)42 b(the)h(terminal)g(settings)g(for)f
(Readline's)i(use,)h(so)e Fs(readline\(\))c Ft(can)k(read)f(a)h(single)
-390 3362 y(c)m(haracter)32 b(at)g(a)f(time)h(from)e(the)h(k)m(eyb)s
-(oard.)43 b(The)30 b Fj(meta)p 2376 3362 28 4 v 41 w(\015ag)39
-b Ft(argumen)m(t)31 b(should)f(b)s(e)g(non-zero)390 3471
+390 2193 y(c)m(haracter)32 b(at)g(a)f(time)h(from)e(the)h(k)m(eyb)s
+(oard.)43 b(The)30 b Fj(meta)p 2376 2193 28 4 v 41 w(\015ag)39
+b Ft(argumen)m(t)31 b(should)f(b)s(e)g(non-zero)390 2303
y(if)g(Readline)h(should)f(read)g(eigh)m(t-bit)i(input.)3350
-3637 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_deprep_terminal)c
-Fg(\()p Ff(v)m(oid)p Fg(\))390 3747 y Ft(Undo)31 b(the)h(e\013ects)h
+2465 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_deprep_terminal)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2574 y Ft(Undo)31 b(the)h(e\013ects)h
(of)f Fs(rl_prep_terminal\(\))p Ft(,)27 b(lea)m(ving)33
b(the)f(terminal)g(in)f(the)h(state)h(in)e(whic)m(h)390
-3856 y(it)g(w)m(as)g(b)s(efore)f(the)g(most)h(recen)m(t)g(call)h(to)f
-Fs(rl_prep_terminal\(\))p Ft(.)3350 4022 y([F)-8 b(unction])-3599
+2684 y(it)g(w)m(as)g(b)s(efore)f(the)g(most)h(recen)m(t)g(call)h(to)f
+Fs(rl_prep_terminal\(\))p Ft(.)3350 2845 y([F)-8 b(unction])-3599
b Fh(void)54 b(rl_tty_set_default_bindi)q(ngs)e Fg(\()p
-Ff(Keymap)34 b(kmap)p Fg(\))390 4132 y Ft(Read)j(the)g(op)s(erating)h
+Ff(Keymap)34 b(kmap)p Fg(\))390 2955 y Ft(Read)j(the)g(op)s(erating)h
(system's)f(terminal)g(editing)h(c)m(haracters)g(\(as)g(w)m(ould)e(b)s
-(e)h(displa)m(y)m(ed)g(b)m(y)390 4241 y Fs(stty)p Ft(\))30
+(e)h(displa)m(y)m(ed)g(b)m(y)390 3065 y Fs(stty)p Ft(\))30
b(to)h(their)f(Readline)h(equiv)-5 b(alen)m(ts.)42 b(The)30
b(bindings)f(are)i(p)s(erformed)e(in)h Fj(kmap)p Ft(.)3350
-4407 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_tty_unset_default_bin)q
-(din)q(gs)e Fg(\()p Ff(Keymap)34 b(kmap)p Fg(\))390 4517
+3226 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_tty_unset_default_bin)q
+(din)q(gs)e Fg(\()p Ff(Keymap)34 b(kmap)p Fg(\))390 3336
y Ft(Reset)f(the)f(bindings)e(manipulated)i(b)m(y)g Fs
(rl_tty_set_default_bind)o(ing)o(s)26 b Ft(so)32 b(that)g(the)g(ter-)
-390 4626 y(minal)40 b(editing)g(c)m(haracters)h(are)f(b)s(ound)e(to)i
+390 3445 y(minal)40 b(editing)g(c)m(haracters)h(are)f(b)s(ound)e(to)i
Fs(rl_insert)p Ft(.)66 b(The)39 b(bindings)f(are)i(p)s(erformed)e(in)
-390 4736 y Fj(kmap)p Ft(.)3350 4902 y([F)-8 b(unction])-3599
+390 3555 y Fj(kmap)p Ft(.)3350 3717 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_tty_set_echoing)e Fg(\()p Ff(in)m(t)34
-b(v)-6 b(alue)p Fg(\))390 5011 y Ft(Set)48 b(Readline's)g(idea)g(of)g
+b(v)-6 b(alue)p Fg(\))390 3826 y Ft(Set)48 b(Readline's)g(idea)g(of)g
(whether)f(or)g(not)h(it)g(is)f(ec)m(hoing)i(output)e(to)i(its)e
-(output)h(stream)390 5121 y(\()p Fj(rl)p 492 5121 V 40
+(output)h(stream)390 3936 y(\()p Fj(rl)p 492 3936 V 40
w(outstream)p Ft(\).)j(If)32 b Fj(v)-5 b(alue)39 b Ft(is)34
b(0,)g(Readline)g(do)s(es)f(not)h(displa)m(y)f(output)g(to)h
-Fj(rl)p 3115 5121 V 40 w(outstream)p Ft(;)i(an)m(y)390
-5230 y(other)43 b(v)-5 b(alue)43 b(enables)h(output.)77
+Fj(rl)p 3115 3936 V 40 w(outstream)p Ft(;)i(an)m(y)390
+4045 y(other)43 b(v)-5 b(alue)43 b(enables)h(output.)77
b(The)43 b(initial)h(v)-5 b(alue)43 b(is)g(set)g(when)f(Readline)i
-(initializes)h(the)390 5340 y(terminal)31 b(settings.)42
+(initializes)h(the)390 4155 y(terminal)31 b(settings.)42
b(This)29 b(function)h(returns)f(the)i(previous)f(v)-5
-b(alue.)p eop end
-%%Page: 40 44
-TeXDict begin 40 43 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(40)3350
-299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_reset_terminal)e
-Fg(\()p Ff(const)34 b(c)m(har)g(*terminal)p 2232 299
-30 5 v 43 w(name)p Fg(\))390 408 y Ft(Reinitialize)26
+b(alue.)3350 4317 y([F)d(unction])-3599 b Fh(int)53 b
+(rl_reset_terminal)e Fg(\()p Ff(const)34 b(c)m(har)g(*terminal)p
+2232 4317 30 5 v 43 w(name)p Fg(\))390 4426 y Ft(Reinitialize)26
b(Readline's)f(idea)f(of)g(the)g(terminal)h(settings)f(using)g
-Fj(terminal)p 2977 408 28 4 v 40 w(name)29 b Ft(as)24
-b(the)g(termi-)390 518 y(nal)32 b(t)m(yp)s(e)g(\(e.g.,)i
-Fs(vt100)p Ft(\).)44 b(If)31 b Fj(terminal)p 1753 518
+Fj(terminal)p 2977 4426 28 4 v 40 w(name)29 b Ft(as)24
+b(the)g(termi-)390 4536 y(nal)32 b(t)m(yp)s(e)g(\(e.g.,)i
+Fs(vt100)p Ft(\).)44 b(If)31 b Fj(terminal)p 1753 4536
V 41 w(name)37 b Ft(is)31 b Fs(NULL)p Ft(,)h(the)g(v)-5
b(alue)32 b(of)g(the)g Fs(TERM)e Ft(en)m(vironmen)m(t)390
-628 y(v)-5 b(ariable)31 b(is)g(used.)150 822 y Fi(2.4.10)63
-b(Utilit)m(y)40 b(F)-10 b(unctions)3350 1013 y Ft([F)i(unction])-3599
+4645 y(v)-5 b(ariable)31 b(is)g(used.)150 4830 y Fi(2.4.10)63
+b(Utilit)m(y)40 b(F)-10 b(unctions)3350 5011 y Ft([F)i(unction])-3599
b Fh(int)53 b(rl_save_state)d Fg(\()p Ff(struct)34 b(readline)p
-1759 1013 30 5 v 44 w(state)f(*sp)p Fg(\))390 1123 y
+1759 5011 30 5 v 44 w(state)f(*sp)p Fg(\))390 5121 y
Ft(Sa)m(v)m(e)d(a)f(snapshot)e(of)i(Readline's)g(in)m(ternal)g(state)h
(to)f Fj(sp)p Ft(.)40 b(The)28 b(con)m(ten)m(ts)i(of)e(the)h
-Fj(readline)p 3518 1123 28 4 v 40 w(state)390 1232 y
+Fj(readline)p 3518 5121 28 4 v 40 w(state)390 5230 y
Ft(structure)g(are)g(do)s(cumen)m(ted)g(in)g Fs(readline.h)p
Ft(.)38 b(The)28 b(caller)j(is)e(resp)s(onsible)f(for)h(allo)s(cating)j
-(the)390 1342 y(structure.)3350 1518 y([F)-8 b(unction])-3599
-b Fh(int)53 b(rl_restore_state)e Fg(\()p Ff(struct)34
-b(readline)p 1916 1518 30 5 v 44 w(state)f(*sp)p Fg(\))390
-1628 y Ft(Restore)23 b(Readline's)g(in)m(ternal)g(state)g(to)g(that)g
-(stored)f(in)g Fj(sp)p Ft(,)i(whic)m(h)d(m)m(ust)h(ha)m(v)m(e)i(b)s
-(een)d(sa)m(v)m(ed)i(b)m(y)g(a)390 1737 y(call)30 b(to)g
-Fs(rl_save_state)p Ft(.)37 b(The)28 b(con)m(ten)m(ts)j(of)e(the)g
-Fj(readline)p 2470 1737 28 4 v 41 w(state)35 b Ft(structure)29
-b(are)g(do)s(cumen)m(ted)390 1847 y(in)h Fs(readline.h)p
-Ft(.)38 b(The)30 b(caller)i(is)e(resp)s(onsible)f(for)i(freeing)f(the)h
-(structure.)3350 2023 y([F)-8 b(unction])-3599 b Fh(void)54
-b(rl_free)47 b Fg(\()p Ff(v)m(oid)33 b(*mem)p Fg(\))390
-2133 y Ft(Deallo)s(cate)25 b(the)c(memory)g(p)s(oin)m(ted)g(to)h(b)m(y)
-f Fj(mem)p Ft(.)38 b Fj(mem)21 b Ft(m)m(ust)g(ha)m(v)m(e)i(b)s(een)d
-(allo)s(cated)j(b)m(y)e Fs(malloc)p Ft(.)3350 2309 y([F)-8
-b(unction])-3599 b Fh(void)54 b(rl_replace_line)c Fg(\()p
-Ff(const)34 b(c)m(har)f(*text,)g(in)m(t)g(clear)p 2406
-2309 30 5 v 44 w(undo)p Fg(\))390 2419 y Ft(Replace)41
-b(the)e(con)m(ten)m(ts)i(of)f Fs(rl_line_buffer)35 b
-Ft(with)k Fj(text)p Ft(.)69 b(The)39 b(p)s(oin)m(t)h(and)e(mark)h(are)h
-(pre-)390 2528 y(serv)m(ed,)27 b(if)e(p)s(ossible.)39
-b(If)25 b Fj(clear)p 1422 2528 28 4 v 41 w(undo)k Ft(is)d(non-zero,)h
-(the)f(undo)e(list)i(asso)s(ciated)h(with)e(the)h(curren)m(t)390
-2638 y(line)31 b(is)f(cleared.)3350 2814 y([F)-8 b(unction])-3599
+(the)390 5340 y(structure.)p eop end
+%%Page: 41 45
+TeXDict begin 41 44 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(41)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_restore_state)e
+Fg(\()p Ff(struct)34 b(readline)p 1916 299 30 5 v 44
+w(state)f(*sp)p Fg(\))390 408 y Ft(Restore)23 b(Readline's)g(in)m
+(ternal)g(state)g(to)g(that)g(stored)f(in)g Fj(sp)p Ft(,)i(whic)m(h)d
+(m)m(ust)h(ha)m(v)m(e)i(b)s(een)d(sa)m(v)m(ed)i(b)m(y)g(a)390
+518 y(call)30 b(to)g Fs(rl_save_state)p Ft(.)37 b(The)28
+b(con)m(ten)m(ts)j(of)e(the)g Fj(readline)p 2470 518
+28 4 v 41 w(state)35 b Ft(structure)29 b(are)g(do)s(cumen)m(ted)390
+628 y(in)h Fs(readline.h)p Ft(.)38 b(The)30 b(caller)i(is)e(resp)s
+(onsible)f(for)i(freeing)f(the)h(structure.)3350 810
+y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_free)47 b
+Fg(\()p Ff(v)m(oid)33 b(*mem)p Fg(\))390 920 y Ft(Deallo)s(cate)25
+b(the)c(memory)g(p)s(oin)m(ted)g(to)h(b)m(y)f Fj(mem)p
+Ft(.)38 b Fj(mem)21 b Ft(m)m(ust)g(ha)m(v)m(e)i(b)s(een)d(allo)s(cated)
+j(b)m(y)e Fs(malloc)p Ft(.)3350 1103 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_replace_line)c Fg(\()p Ff(const)34
+b(c)m(har)f(*text,)g(in)m(t)g(clear)p 2406 1103 30 5
+v 44 w(undo)p Fg(\))390 1212 y Ft(Replace)41 b(the)e(con)m(ten)m(ts)i
+(of)f Fs(rl_line_buffer)35 b Ft(with)k Fj(text)p Ft(.)69
+b(The)39 b(p)s(oin)m(t)h(and)e(mark)h(are)h(pre-)390
+1322 y(serv)m(ed,)27 b(if)e(p)s(ossible.)39 b(If)25 b
+Fj(clear)p 1422 1322 28 4 v 41 w(undo)k Ft(is)d(non-zero,)h(the)f(undo)
+e(list)i(asso)s(ciated)h(with)e(the)h(curren)m(t)390
+1431 y(line)31 b(is)f(cleared.)3350 1614 y([F)-8 b(unction])-3599
b Fh(void)54 b(rl_extend_line_buffer)d Fg(\()p Ff(in)m(t)34
-b(len)p Fg(\))390 2924 y Ft(Ensure)29 b(that)h Fs(rl_line_buffer)d
+b(len)p Fg(\))390 1724 y Ft(Ensure)29 b(that)h Fs(rl_line_buffer)d
Ft(has)j(enough)f(space)i(to)g(hold)f Fj(len)g Ft(c)m(haracters,)i(p)s
-(ossibly)d(real-)390 3034 y(lo)s(cating)j(it)f(if)f(necessary)-8
-b(.)3350 3210 y([F)g(unction])-3599 b Fh(int)53 b(rl_initialize)d
-Fg(\()p Ff(v)m(oid)p Fg(\))390 3319 y Ft(Initialize)39
+(ossibly)d(real-)390 1833 y(lo)s(cating)j(it)f(if)f(necessary)-8
+b(.)3350 2016 y([F)g(unction])-3599 b Fh(int)53 b(rl_initialize)d
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2125 y Ft(Initialize)39
b(or)e(re-initialize)i(Readline's)f(in)m(ternal)f(state.)62
b(It's)37 b(not)g(strictly)h(necessary)f(to)h(call)390
-3429 y(this;)31 b Fs(readline\(\))c Ft(calls)32 b(it)f(b)s(efore)f
-(reading)g(an)m(y)h(input.)3350 3605 y([F)-8 b(unction])-3599
+2235 y(this;)31 b Fs(readline\(\))c Ft(calls)32 b(it)f(b)s(efore)f
+(reading)g(an)m(y)h(input.)3350 2418 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_ding)48 b Fg(\()p Ff(v)m(oid)p Fg(\))390
-3715 y Ft(Ring)30 b(the)h(terminal)g(b)s(ell,)f(ob)s(eying)h(the)f
-(setting)i(of)e Fs(bell-style)p Ft(.)3350 3891 y([F)-8
+2527 y Ft(Ring)30 b(the)h(terminal)g(b)s(ell,)f(ob)s(eying)h(the)f
+(setting)i(of)e Fs(bell-style)p Ft(.)3350 2710 y([F)-8
b(unction])-3599 b Fh(int)53 b(rl_alphabetic)d Fg(\()p
-Ff(in)m(t)33 b(c)p Fg(\))390 4001 y Ft(Return)d(1)g(if)h
+Ff(in)m(t)33 b(c)p Fg(\))390 2819 y Ft(Return)d(1)g(if)h
Fj(c)36 b Ft(is)30 b(an)h(alphab)s(etic)g(c)m(haracter.)3350
-4177 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_display_match_list)d
+3002 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_display_match_list)d
Fg(\()p Ff(c)m(har)35 b(**matc)m(hes,)e(in)m(t)g(len,)h(in)m(t)f(max)p
-Fg(\))390 4287 y Ft(A)i(con)m(v)m(enience)h(function)e(for)g(displa)m
+Fg(\))390 3112 y Ft(A)i(con)m(v)m(enience)h(function)e(for)g(displa)m
(ying)h(a)g(list)g(of)g(strings)f(in)g(columnar)g(format)h(on)f(Read-)
-390 4396 y(line's)g(output)f(stream.)51 b Fs(matches)31
+390 3221 y(line's)g(output)f(stream.)51 b Fs(matches)31
b Ft(is)j(the)f(list)i(of)e(strings,)i(in)e(argv)h(format,)h(suc)m(h)e
-(as)h(a)g(list)g(of)390 4506 y(completion)26 b(matc)m(hes.)39
+(as)h(a)g(list)g(of)390 3331 y(completion)26 b(matc)m(hes.)39
b Fs(len)24 b Ft(is)g(the)g(n)m(um)m(b)s(er)f(of)i(strings)f(in)g
Fs(matches)p Ft(,)f(and)h Fs(max)f Ft(is)i(the)f(length)h(of)390
-4616 y(the)h(longest)i(string)e(in)g Fs(matches)p Ft(.)37
+3440 y(the)h(longest)i(string)e(in)g Fs(matches)p Ft(.)37
b(This)25 b(function)h(uses)g(the)g(setting)i(of)e Fs
-(print-completions-)390 4725 y(horizontally)33 b Ft(to)k(select)h(ho)m
+(print-completions-)390 3550 y(horizontally)33 b Ft(to)k(select)h(ho)m
(w)e(the)g(matc)m(hes)i(are)e(displa)m(y)m(ed)h(\(see)g(Section)g
-(1.3.1)h([Readline)390 4835 y(Init)30 b(File)h(Syn)m(tax],)g(page)g
+(1.3.1)h([Readline)390 3660 y(Init)30 b(File)h(Syn)m(tax],)g(page)g
(4\).)42 b(When)29 b(displa)m(ying)i(completions,)h(this)e(function)g
-(sets)g(the)g(n)m(um-)390 4944 y(b)s(er)23 b(of)g(columns)g(used)g(for)
+(sets)g(the)g(n)m(um-)390 3769 y(b)s(er)23 b(of)g(columns)g(used)g(for)
h(displa)m(y)f(to)i(the)e(v)-5 b(alue)24 b(of)g Fs
(completion-display-width)p Ft(,)19 b(the)k(v)-5 b(alue)390
-5054 y(of)31 b(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)31
+3879 y(of)31 b(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)31
b Fs(COLUMNS)p Ft(,)e(or)h(the)h(screen)f(width,)g(in)g(that)h(order.)
-275 5230 y(The)g(follo)m(wing)j(are)e(implemen)m(ted)h(as)f(macros,)h
+275 4061 y(The)g(follo)m(wing)j(are)e(implemen)m(ted)h(as)f(macros,)h
(de\014ned)e(in)h Fs(chardefs.h)p Ft(.)43 b(Applications)33
-b(should)150 5340 y(refrain)d(from)g(using)g(them.)p
-eop end
-%%Page: 41 45
-TeXDict begin 41 44 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(41)3350
-299 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_uppercase_p)d
-Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 408 y Ft(Return)c(1)g(if)h
+b(should)150 4171 y(refrain)d(from)g(using)g(them.)3350
+4354 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_uppercase_p)d
+Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 4463 y Ft(Return)c(1)g(if)h
Fj(c)36 b Ft(is)30 b(an)h(upp)s(ercase)e(alphab)s(etic)i(c)m(haracter.)
-3350 608 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_lowercase_p)d
-Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 718 y Ft(Return)c(1)g(if)h
+3350 4646 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_lowercase_p)d
+Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 4756 y Ft(Return)c(1)g(if)h
Fj(c)36 b Ft(is)30 b(a)h(lo)m(w)m(ercase)i(alphab)s(etic)e(c)m
-(haracter.)3350 918 y([F)-8 b(unction])-3599 b Fh(int)53
+(haracter.)3350 4938 y([F)-8 b(unction])-3599 b Fh(int)53
b(_rl_digit_p)c Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390
-1028 y Ft(Return)c(1)g(if)h Fj(c)36 b Ft(is)30 b(a)h(n)m(umeric)f(c)m
-(haracter.)3350 1227 y([F)-8 b(unction])-3599 b Fh(int)53
+5048 y Ft(Return)c(1)g(if)h Fj(c)36 b Ft(is)30 b(a)h(n)m(umeric)f(c)m
+(haracter.)3350 5230 y([F)-8 b(unction])-3599 b Fh(int)53
b(_rl_to_upper)c Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390
-1337 y Ft(If)23 b Fj(c)30 b Ft(is)24 b(a)g(lo)m(w)m(ercase)i(alphab)s
+5340 y Ft(If)23 b Fj(c)30 b Ft(is)24 b(a)g(lo)m(w)m(ercase)i(alphab)s
(etic)e(c)m(haracter,)j(return)c(the)h(corresp)s(onding)e(upp)s(ercase)
-h(c)m(haracter.)3350 1537 y([F)-8 b(unction])-3599 b
-Fh(int)53 b(_rl_to_lower)c Fg(\()p Ff(in)m(t)34 b(c)p
-Fg(\))390 1647 y Ft(If)28 b Fj(c)35 b Ft(is)29 b(an)g(upp)s(ercase)f
-(alphab)s(etic)h(c)m(haracter,)i(return)d(the)h(corresp)s(onding)f(lo)m
-(w)m(ercase)j(c)m(harac-)390 1756 y(ter.)3350 1956 y([F)-8
-b(unction])-3599 b Fh(int)53 b(_rl_digit_value)d Fg(\()p
-Ff(in)m(t)34 b(c)p Fg(\))390 2066 y Ft(If)c Fj(c)36 b
-Ft(is)31 b(a)f(n)m(um)m(b)s(er,)g(return)f(the)h(v)-5
-b(alue)31 b(it)g(represen)m(ts.)150 2273 y Fi(2.4.11)63
-b(Miscellaneous)42 b(F)-10 b(unctions)3350 2477 y Ft([F)i(unction])
+h(c)m(haracter.)p eop end
+%%Page: 42 46
+TeXDict begin 42 45 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(42)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(_rl_to_lower)c
+Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 408 y Ft(If)28 b
+Fj(c)35 b Ft(is)29 b(an)g(upp)s(ercase)f(alphab)s(etic)h(c)m(haracter,)
+i(return)d(the)h(corresp)s(onding)f(lo)m(w)m(ercase)j(c)m(harac-)390
+518 y(ter.)3350 712 y([F)-8 b(unction])-3599 b Fh(int)53
+b(_rl_digit_value)d Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390
+821 y Ft(If)c Fj(c)36 b Ft(is)31 b(a)f(n)m(um)m(b)s(er,)g(return)f(the)
+h(v)-5 b(alue)31 b(it)g(represen)m(ts.)150 1025 y Fi(2.4.11)63
+b(Miscellaneous)42 b(F)-10 b(unctions)3350 1227 y Ft([F)i(unction])
-3599 b Fh(int)53 b(rl_macro_bind)d Fg(\()p Ff(const)34
b(c)m(har)g(*k)m(eyseq,)e(const)i(c)m(har)g(*macro,)565
-2587 y(Keymap)g(map)p Fg(\))390 2696 y Ft(Bind)23 b(the)g(k)m(ey)h
+1336 y(Keymap)g(map)p Fg(\))390 1446 y Ft(Bind)23 b(the)g(k)m(ey)h
(sequence)g Fj(k)m(eyseq)i Ft(to)e(in)m(v)m(ok)m(e)h(the)f(macro)f
Fj(macro)p Ft(.)39 b(The)23 b(binding)f(is)i(p)s(erformed)d(in)390
-2806 y Fj(map)p Ft(.)39 b(When)28 b Fj(k)m(eyseq)i Ft(is)e(in)m(v)m(ok)
+1556 y Fj(map)p Ft(.)39 b(When)28 b Fj(k)m(eyseq)i Ft(is)e(in)m(v)m(ok)
m(ed,)i(the)d Fj(macro)33 b Ft(will)28 b(b)s(e)f(inserted)g(in)m(to)i
-(the)e(line.)41 b(This)26 b(function)390 2916 y(is)k(deprecated;)i(use)
-e Fs(rl_generic_bind\(\))25 b Ft(instead.)3350 3116 y([F)-8
+(the)e(line.)41 b(This)26 b(function)390 1665 y(is)k(deprecated;)i(use)
+e Fs(rl_generic_bind\(\))25 b Ft(instead.)3350 1859 y([F)-8
b(unction])-3599 b Fh(void)54 b(rl_macro_dumper)c Fg(\()p
-Ff(in)m(t)33 b(readable)p Fg(\))390 3225 y Ft(Prin)m(t)27
+Ff(in)m(t)33 b(readable)p Fg(\))390 1968 y Ft(Prin)m(t)27
b(the)g(k)m(ey)h(sequences)g(b)s(ound)d(to)j(macros)f(and)g(their)g(v)
-5 b(alues,)28 b(using)f(the)g(curren)m(t)g(k)m(eymap,)390
-3335 y(to)32 b Fs(rl_outstream)p Ft(.)40 b(If)31 b Fj(readable)36
+2078 y(to)32 b Fs(rl_outstream)p Ft(.)40 b(If)31 b Fj(readable)36
b Ft(is)c(non-zero,)g(the)f(list)h(is)f(formatted)h(in)f(suc)m(h)g(a)g
-(w)m(a)m(y)i(that)e(it)390 3444 y(can)g(b)s(e)e(made)i(part)f(of)h(an)f
-Fs(inputrc)e Ft(\014le)j(and)e(re-read.)3350 3644 y([F)-8
+(w)m(a)m(y)i(that)e(it)390 2188 y(can)g(b)s(e)e(made)i(part)f(of)h(an)f
+Fs(inputrc)e Ft(\014le)j(and)e(re-read.)3350 2381 y([F)-8
b(unction])-3599 b Fh(int)53 b(rl_variable_bind)e Fg(\()p
Ff(const)34 b(c)m(har)f(*v)-6 b(ariable,)33 b(const)h(c)m(har)f(*v)-6
-b(alue)p Fg(\))390 3754 y Ft(Mak)m(e)31 b(the)e(Readline)g(v)-5
+b(alue)p Fg(\))390 2491 y Ft(Mak)m(e)31 b(the)e(Readline)g(v)-5
b(ariable)30 b Fj(v)-5 b(ariable)35 b Ft(ha)m(v)m(e)30
b Fj(v)-5 b(alue)p Ft(.)41 b(This)28 b(b)s(eha)m(v)m(es)h(as)h(if)f
-(the)g(readline)g(com-)390 3863 y(mand)h(`)p Fs(set)g
+(the)g(readline)g(com-)390 2600 y(mand)h(`)p Fs(set)g
Fl(variable)e(value)p Ft(')h(had)h(b)s(een)h(executed)g(in)g(an)f
Fs(inputrc)f Ft(\014le)i(\(see)h(Section)f(1.3.1)390
-3973 y([Readline)g(Init)f(File)i(Syn)m(tax],)f(page)g(4\).)3350
-4173 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_variable_value)f
+2710 y([Readline)g(Init)f(File)i(Syn)m(tax],)f(page)g(4\).)3350
+2904 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_variable_value)f
Fg(\()p Ff(const)34 b(c)m(har)g(*v)-6 b(ariable)p Fg(\))390
-4283 y Ft(Return)28 b(a)i(string)f(represen)m(ting)h(the)f(v)-5
+3013 y Ft(Return)28 b(a)i(string)f(represen)m(ting)h(the)f(v)-5
b(alue)30 b(of)f(the)h(Readline)g(v)-5 b(ariable)30 b
Fj(v)-5 b(ariable)p Ft(.)41 b(F)-8 b(or)30 b(b)s(o)s(olean)390
-4392 y(v)-5 b(ariables,)31 b(this)g(string)f(is)g(either)h(`)p
-Fs(on)p Ft(')f(or)h(`)p Fs(off)p Ft('.)3350 4592 y([F)-8
+3123 y(v)-5 b(ariables,)31 b(this)g(string)f(is)g(either)h(`)p
+Fs(on)p Ft(')f(or)h(`)p Fs(off)p Ft('.)3350 3317 y([F)-8
b(unction])-3599 b Fh(void)54 b(rl_variable_dumper)c
-Fg(\()p Ff(in)m(t)34 b(readable)p Fg(\))390 4702 y Ft(Prin)m(t)29
+Fg(\()p Ff(in)m(t)34 b(readable)p Fg(\))390 3426 y Ft(Prin)m(t)29
b(the)f(readline)h(v)-5 b(ariable)30 b(names)e(and)g(their)h(curren)m
(t)f(v)-5 b(alues)29 b(to)h Fs(rl_outstream)p Ft(.)37
-b(If)28 b Fj(read-)390 4811 y(able)40 b Ft(is)34 b(non-zero,)i(the)e
+b(If)28 b Fj(read-)390 3536 y(able)40 b Ft(is)34 b(non-zero,)i(the)e
(list)g(is)g(formatted)h(in)f(suc)m(h)g(a)g(w)m(a)m(y)h(that)g(it)f
-(can)g(b)s(e)g(made)g(part)g(of)g(an)390 4921 y Fs(inputrc)28
-b Ft(\014le)j(and)f(re-read.)3350 5121 y([F)-8 b(unction])-3599
+(can)g(b)s(e)g(made)g(part)g(of)g(an)390 3645 y Fs(inputrc)28
+b Ft(\014le)j(and)f(re-read.)3350 3839 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_set_paren_blink_ti)q(meou)q(t)f Fg(\()p
-Ff(in)m(t)33 b(u)p Fg(\))390 5230 y Ft(Set)25 b(the)h(time)f(in)m(terv)
+Ff(in)m(t)33 b(u)p Fg(\))390 3949 y Ft(Set)25 b(the)h(time)f(in)m(terv)
-5 b(al)27 b(\(in)e(microseconds\))h(that)g(Readline)f(w)m(aits)h(when)
-e(sho)m(wing)i(a)f(balancing)390 5340 y(c)m(haracter)32
-b(when)d Fs(blink-matching-paren)c Ft(has)30 b(b)s(een)g(enabled.)p
-eop end
-%%Page: 42 46
-TeXDict begin 42 45 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(42)3350
-299 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_termcap)e
-Fg(\()p Ff(const)34 b(c)m(har)g(*cap)p Fg(\))390 408
+e(sho)m(wing)i(a)f(balancing)390 4058 y(c)m(haracter)32
+b(when)d Fs(blink-matching-paren)c Ft(has)30 b(b)s(een)g(enabled.)3350
+4252 y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_get_termcap)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*cap)p Fg(\))390 4361
y Ft(Retriev)m(e)29 b(the)e(string)g(v)-5 b(alue)27 b(of)g(the)h
(termcap)f(capabilit)m(y)i Fj(cap)p Ft(.)40 b(Readline)27
-b(fetc)m(hes)h(the)g(termcap)390 518 y(en)m(try)34 b(for)f(the)h
+b(fetc)m(hes)h(the)g(termcap)390 4471 y(en)m(try)34 b(for)f(the)h
(curren)m(t)f(terminal)h(name)g(and)f(uses)g(those)h(capabilities)h(to)
-f(mo)m(v)m(e)h(around)e(the)390 628 y(screen)21 b(line)h(and)e(p)s
+f(mo)m(v)m(e)h(around)e(the)390 4581 y(screen)21 b(line)h(and)e(p)s
(erform)g(other)h(terminal-sp)s(eci\014c)h(op)s(erations,)h(lik)m(e)f
-(erasing)g(a)f(line.)38 b(Readline)390 737 y(do)s(es)d(not)g(use)g(all)
-g(of)h(a)f(terminal's)g(capabilities,)k(and)34 b(this)h(function)g
-(will)g(return)f(v)-5 b(alues)35 b(for)390 847 y(only)30
-b(those)h(capabilities)i(Readline)e(uses.)3350 1017 y([F)-8
+(erasing)g(a)f(line.)38 b(Readline)390 4690 y(do)s(es)d(not)g(use)g
+(all)g(of)h(a)f(terminal's)g(capabilities,)k(and)34 b(this)h(function)g
+(will)g(return)f(v)-5 b(alues)35 b(for)390 4800 y(only)30
+b(those)h(capabilities)i(Readline)e(uses.)3350 4994 y([F)-8
b(unction])-3599 b Fh(void)54 b(rl_clear_history)c Fg(\()p
-Ff(v)m(oid)p Fg(\))390 1127 y Ft(Clear)27 b(the)h(history)f(list)h(b)m
+Ff(v)m(oid)p Fg(\))390 5103 y Ft(Clear)27 b(the)h(history)f(list)h(b)m
(y)f(deleting)h(all)g(of)f(the)h(en)m(tries,)h(in)d(the)i(same)f
-(manner)g(as)g(the)g(History)390 1236 y(library's)42
+(manner)g(as)g(the)g(History)390 5213 y(library's)42
b Fs(clear_history\(\))d Ft(function.)78 b(This)42 b(di\013ers)g(from)g
-Fs(clear_history)e Ft(b)s(ecause)i(it)390 1346 y(frees)30
+Fs(clear_history)e Ft(b)s(ecause)i(it)390 5322 y(frees)30
b(priv)-5 b(ate)31 b(data)g(Readline)g(sa)m(v)m(es)h(in)e(the)h
-(history)f(list.)150 1536 y Fi(2.4.12)63 b(Alternate)40
-b(In)m(terface)150 1683 y Ft(An)21 b(alternate)j(in)m(terface)f(is)f(a)
-m(v)-5 b(ailable)24 b(to)e(plain)g Fs(readline\(\))p
-Ft(.)35 b(Some)21 b(applications)i(need)f(to)g(in)m(terlea)m(v)m(e)150
-1792 y(k)m(eyb)s(oard)35 b(I/O)h(with)f(\014le,)i(device,)h(or)e(windo)
-m(w)f(system)g(I/O,)h(t)m(ypically)i(b)m(y)d(using)g(a)h(main)g(lo)s
-(op)f(to)150 1902 y Fs(select\(\))42 b Ft(on)i(v)-5 b(arious)45
+(history)f(list.)p eop end
+%%Page: 43 47
+TeXDict begin 43 46 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(43)150
+299 y Fi(2.4.12)63 b(Alternate)40 b(In)m(terface)150
+446 y Ft(An)21 b(alternate)j(in)m(terface)f(is)f(a)m(v)-5
+b(ailable)24 b(to)e(plain)g Fs(readline\(\))p Ft(.)35
+b(Some)21 b(applications)i(need)f(to)g(in)m(terlea)m(v)m(e)150
+555 y(k)m(eyb)s(oard)35 b(I/O)h(with)f(\014le,)i(device,)h(or)e(windo)m
+(w)f(system)g(I/O,)h(t)m(ypically)i(b)m(y)d(using)g(a)h(main)g(lo)s(op)
+f(to)150 665 y Fs(select\(\))42 b Ft(on)i(v)-5 b(arious)45
b(\014le)f(descriptors.)83 b(T)-8 b(o)45 b(accommo)s(date)h(this)e
-(need,)k(readline)d(can)f(also)i(b)s(e)150 2011 y(in)m(v)m(ok)m(ed)33
+(need,)k(readline)d(can)f(also)i(b)s(e)150 775 y(in)m(v)m(ok)m(ed)33
b(as)e(a)h(`callbac)m(k')h(function)e(from)g(an)g(ev)m(en)m(t)h(lo)s
(op.)44 b(There)30 b(are)i(functions)f(a)m(v)-5 b(ailable)33
-b(to)f(mak)m(e)150 2121 y(this)e(easy)-8 b(.)3350 2291
+b(to)f(mak)m(e)150 884 y(this)e(easy)-8 b(.)3350 1080
y([F)g(unction])-3599 b Fh(void)54 b(rl_callback_handler_inst)q(all)e
-Fg(\()p Ff(const)34 b(c)m(har)g(*prompt,)565 2401 y(rl)p
-639 2401 30 5 v 44 w(v)m(cpfunc)p 1016 2401 V 45 w(t)f(*lhandler)p
-Fg(\))390 2510 y Ft(Set)25 b(up)f(the)h(terminal)g(for)f(readline)i
+Fg(\()p Ff(const)34 b(c)m(har)g(*prompt,)565 1190 y(rl)p
+639 1190 30 5 v 44 w(v)m(cpfunc)p 1016 1190 V 45 w(t)f(*lhandler)p
+Fg(\))390 1300 y Ft(Set)25 b(up)f(the)h(terminal)g(for)f(readline)i
(I/O)e(and)g(displa)m(y)h(the)g(initial)h(expanded)e(v)-5
-b(alue)26 b(of)f Fj(prompt)p Ft(.)390 2620 y(Sa)m(v)m(e)34
+b(alue)26 b(of)f Fj(prompt)p Ft(.)390 1409 y(Sa)m(v)m(e)34
b(the)f(v)-5 b(alue)33 b(of)g Fj(lhandler)39 b Ft(to)34
b(use)e(as)h(a)g(handler)f(function)h(to)g(call)h(when)e(a)h(complete)i
-(line)390 2730 y(of)h(input)f(has)g(b)s(een)g(en)m(tered.)57
+(line)390 1519 y(of)h(input)f(has)g(b)s(een)g(en)m(tered.)57
b(The)35 b(handler)g(function)g(receiv)m(es)j(the)e(text)g(of)g(the)g
-(line)g(as)g(an)390 2839 y(argumen)m(t.)k(As)29 b(with)f
+(line)g(as)g(an)390 1628 y(argumen)m(t.)k(As)29 b(with)f
Fs(readline\(\))p Ft(,)e(the)j(handler)e(function)h(should)g
-Fs(free)f Ft(the)h(line)h(when)e(it)i(it)390 2949 y(\014nished)g(with)h
-(it.)3350 3119 y([F)-8 b(unction])-3599 b Fh(void)54
+Fs(free)f Ft(the)h(line)h(when)e(it)i(it)390 1738 y(\014nished)g(with)h
+(it.)3350 1934 y([F)-8 b(unction])-3599 b Fh(void)54
b(rl_callback_read_char)d Fg(\()p Ff(v)m(oid)p Fg(\))390
-3228 y Ft(Whenev)m(er)34 b(an)g(application)h(determines)e(that)i(k)m
+2044 y Ft(Whenev)m(er)34 b(an)g(application)h(determines)e(that)i(k)m
(eyb)s(oard)e(input)g(is)h(a)m(v)-5 b(ailable,)37 b(it)d(should)f(call)
-390 3338 y Fs(rl_callback_read_char\(\))p Ft(,)17 b(whic)m(h)22
+390 2153 y Fs(rl_callback_read_char\(\))p Ft(,)17 b(whic)m(h)22
b(will)g(read)f(the)h(next)g(c)m(haracter)h(from)f(the)f(curren)m(t)h
-(input)390 3448 y(source.)40 b(If)27 b(that)i(c)m(haracter)g(completes)
+(input)390 2263 y(source.)40 b(If)27 b(that)i(c)m(haracter)g(completes)
h(the)e(line,)h Fs(rl_callback_read_char)22 b Ft(will)28
-b(in)m(v)m(ok)m(e)i(the)390 3557 y Fj(lhandler)47 b Ft(function)40
+b(in)m(v)m(ok)m(e)i(the)390 2373 y Fj(lhandler)47 b Ft(function)40
b(installed)i(b)m(y)e Fs(rl_callback_handler_insta)o(ll)35
-b Ft(to)41 b(pro)s(cess)f(the)h(line.)390 3667 y(Before)j(calling)h
+b Ft(to)41 b(pro)s(cess)f(the)h(line.)390 2482 y(Before)j(calling)h
(the)e Fj(lhandler)49 b Ft(function,)e(the)c(terminal)h(settings)g(are)
-g(reset)f(to)h(the)g(v)-5 b(alues)390 3776 y(they)44
+g(reset)f(to)h(the)g(v)-5 b(alues)390 2592 y(they)44
b(had)e(b)s(efore)h(calling)i Fs(rl_callback_handler_insta)o(ll)p
Ft(.)73 b(If)43 b(the)h Fj(lhandler)49 b Ft(function)390
-3886 y(returns,)27 b(and)h(the)g(line)g(handler)f(remains)h(installed,)
+2701 y(returns,)27 b(and)h(the)g(line)g(handler)f(remains)h(installed,)
i(the)e(terminal)g(settings)h(are)f(mo)s(di\014ed)f(for)390
-3996 y(Readline's)k(use)f(again.)42 b Fs(EOF)29 b Ft(is)i(indicated)g
+2811 y(Readline's)k(use)f(again.)42 b Fs(EOF)29 b Ft(is)i(indicated)g
(b)m(y)f(calling)i Fj(lhandler)k Ft(with)30 b(a)h Fs(NULL)e
-Ft(line.)3350 4166 y([F)-8 b(unction])-3599 b Fh(void)54
+Ft(line.)3350 3007 y([F)-8 b(unction])-3599 b Fh(void)54
b(rl_callback_sigcleanup)e Fg(\()p Ff(v)m(oid)p Fg(\))390
-4275 y Ft(Clean)26 b(up)e(an)m(y)i(in)m(ternal)g(state)h(the)e(callbac)
+3117 y Ft(Clean)26 b(up)e(an)m(y)i(in)m(ternal)g(state)h(the)e(callbac)
m(k)j(in)m(terface)f(uses)e(to)h(main)m(tain)g(state)h(b)s(et)m(w)m
-(een)f(calls)390 4385 y(to)35 b(rl)p 572 4385 28 4 v
-40 w(callbac)m(k)p 928 4385 V 42 w(read)p 1142 4385 V
+(een)f(calls)390 3226 y(to)35 b(rl)p 572 3226 28 4 v
+40 w(callbac)m(k)p 928 3226 V 42 w(read)p 1142 3226 V
40 w(c)m(har)f(\(e.g.,)j(the)e(state)g(of)f(an)m(y)h(activ)m(e)h
(incremen)m(tal)f(searc)m(hes\).)54 b(This)33 b(is)390
-4495 y(in)m(tended)f(to)h(b)s(e)e(used)g(b)m(y)h(applications)h(that)g
+3336 y(in)m(tended)f(to)h(b)s(e)e(used)g(b)m(y)h(applications)h(that)g
(wish)e(to)i(p)s(erform)d(their)j(o)m(wn)f(signal)g(handling;)390
-4604 y(Readline's)f(in)m(ternal)g(signal)g(handler)f(calls)h(this)g
-(when)e(appropriate.)3350 4774 y([F)-8 b(unction])-3599
+3446 y(Readline's)f(in)m(ternal)g(signal)g(handler)f(calls)h(this)g
+(when)e(appropriate.)3350 3642 y([F)-8 b(unction])-3599
b Fh(void)54 b(rl_callback_handler_remo)q(ve)e Fg(\()p
-Ff(v)m(oid)p Fg(\))390 4884 y Ft(Restore)37 b(the)f(terminal)g(to)g
+Ff(v)m(oid)p Fg(\))390 3751 y Ft(Restore)37 b(the)f(terminal)g(to)g
(its)h(initial)g(state)g(and)e(remo)m(v)m(e)i(the)f(line)g(handler.)56
-b(Y)-8 b(ou)36 b(ma)m(y)h(call)390 4994 y(this)25 b(function)g(from)g
+b(Y)-8 b(ou)36 b(ma)m(y)h(call)390 3861 y(this)25 b(function)g(from)g
(within)g(a)h(callbac)m(k)i(as)d(w)m(ell)i(as)f(indep)s(enden)m(tly)-8
b(.)38 b(If)25 b(the)h Fj(lhandler)31 b Ft(installed)390
-5103 y(b)m(y)25 b Fs(rl_callback_handler_insta)o(ll)19
+3971 y(b)m(y)25 b Fs(rl_callback_handler_insta)o(ll)19
b Ft(do)s(es)25 b(not)h(exit)g(the)g(program,)g(either)g(this)f
-(function)g(or)390 5213 y(the)32 b(function)f(referred)f(to)i(b)m(y)g
+(function)g(or)390 4080 y(the)32 b(function)f(referred)f(to)i(b)m(y)g
(the)f(v)-5 b(alue)32 b(of)g Fs(rl_deprep_term_function)25
-b Ft(should)30 b(b)s(e)h(called)390 5322 y(b)s(efore)f(the)h(program)f
-(exits)h(to)g(reset)g(the)f(terminal)h(settings.)p eop
-end
-%%Page: 43 47
-TeXDict begin 43 46 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(43)150
-299 y Fi(2.4.13)63 b(A)41 b(Readline)f(Example)150 446
+b Ft(should)30 b(b)s(e)h(called)390 4190 y(b)s(efore)f(the)h(program)f
+(exits)h(to)g(reset)g(the)f(terminal)h(settings.)150
+4395 y Fi(2.4.13)63 b(A)41 b(Readline)f(Example)150 4542
y Ft(Here)34 b(is)g(a)g(function)g(whic)m(h)g(c)m(hanges)g(lo)m(w)m
(ercase)j(c)m(haracters)e(to)f(their)g(upp)s(ercase)f(equiv)-5
-b(alen)m(ts,)37 b(and)150 555 y(upp)s(ercase)d(c)m(haracters)j(to)f(lo)
-m(w)m(ercase.)58 b(If)35 b(this)g(function)g(w)m(as)h(b)s(ound)d(to)j
-(`)p Fs(M-c)p Ft(',)h(then)e(t)m(yping)g(`)p Fs(M-c)p
-Ft(')150 665 y(w)m(ould)c(c)m(hange)i(the)f(case)g(of)g(the)g(c)m
+b(alen)m(ts,)37 b(and)150 4652 y(upp)s(ercase)d(c)m(haracters)j(to)f
+(lo)m(w)m(ercase.)58 b(If)35 b(this)g(function)g(w)m(as)h(b)s(ound)d
+(to)j(`)p Fs(M-c)p Ft(',)h(then)e(t)m(yping)g(`)p Fs(M-c)p
+Ft(')150 4761 y(w)m(ould)c(c)m(hange)i(the)f(case)g(of)g(the)g(c)m
(haracter)h(under)d(p)s(oin)m(t.)44 b(T)m(yping)31 b(`)p
Fs(M-1)f(0)g(M-c)p Ft(')h(w)m(ould)g(c)m(hange)i(the)150
-775 y(case)e(of)g(the)g(follo)m(wing)g(10)h(c)m(haracters,)g(lea)m
+4871 y(case)e(of)g(the)g(follo)m(wing)g(10)h(c)m(haracters,)g(lea)m
(ving)g(the)e(cursor)g(on)g(the)h(last)g(c)m(haracter)h(c)m(hanged.)390
-956 y Fs(/*)47 b(Invert)f(the)h(case)g(of)g(the)g(COUNT)f(following)g
-(characters.)e(*/)390 1066 y(int)390 1176 y(invert_case_line)f
-(\(count,)j(key\))629 1285 y(int)h(count,)f(key;)390
-1395 y({)485 1504 y(register)g(int)h(start,)f(end,)h(i;)485
-1724 y(start)g(=)g(rl_point;)485 1943 y(if)h(\(rl_point)d(>=)i
-(rl_end\))581 2052 y(return)f(\(0\);)485 2271 y(if)i(\(count)e(<)h(0\))
-581 2381 y({)676 2491 y(direction)f(=)h(-1;)676 2600
-y(count)g(=)g(-count;)581 2710 y(})485 2819 y(else)581
-2929 y(direction)e(=)j(1;)485 3148 y(/*)g(Find)e(the)h(end)g(of)g(the)g
-(range)g(to)g(modify.)f(*/)485 3258 y(end)h(=)h(start)e(+)i(\(count)e
-(*)h(direction\);)485 3477 y(/*)h(Force)e(it)h(to)g(be)h(within)e
-(range.)g(*/)485 3587 y(if)i(\(end)e(>)i(rl_end\))581
-3696 y(end)f(=)g(rl_end;)485 3806 y(else)g(if)g(\(end)g(<)g(0\))581
-3915 y(end)g(=)g(0;)485 4134 y(if)h(\(start)e(==)h(end\))581
-4244 y(return)f(\(0\);)485 4463 y(if)i(\(start)e(>)h(end\))581
-4573 y({)676 4682 y(int)g(temp)g(=)g(start;)676 4792
-y(start)g(=)g(end;)676 4902 y(end)g(=)h(temp;)581 5011
-y(})485 5230 y(/*)g(Tell)e(readline)g(that)g(we)i(are)f(modifying)e
-(the)i(line,)629 5340 y(so)g(it)g(will)g(save)f(the)h(undo)g
-(information.)d(*/)p eop end
+5011 y Fs(/*)47 b(Invert)f(the)h(case)g(of)g(the)g(COUNT)f(following)g
+(characters.)e(*/)390 5121 y(int)390 5230 y(invert_case_line)f
+(\(count,)j(key\))629 5340 y(int)h(count,)f(key;)p eop
+end
%%Page: 44 48
TeXDict begin 44 47 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(44)485
-299 y Fs(rl_modifying)45 b(\(start,)h(end\);)485 518
-y(for)h(\(i)h(=)f(start;)f(i)i(!=)f(end;)f(i++\))581
-628 y({)676 737 y(if)i(\(_rl_uppercase_p)43 b(\(rl_line_buffer[i]\)\))
-772 847 y(rl_line_buffer[i])g(=)k(_rl_to_lower)e
-(\(rl_line_buffer[i]\);)676 956 y(else)i(if)g(\(_rl_lowercase_p)d
-(\(rl_line_buffer[i]\)\))772 1066 y(rl_line_buffer[i])f(=)k
-(_rl_to_upper)e(\(rl_line_buffer[i]\);)581 1176 y(})485
-1285 y(/*)j(Move)e(point)h(to)g(on)g(top)g(of)g(the)g(last)g(character)
-e(changed.)g(*/)485 1395 y(rl_point)h(=)h(\(direction)e(==)j(1\))f(?)g
-(end)g(-)h(1)f(:)h(start;)485 1504 y(return)f(\(0\);)390
-1614 y(})150 1847 y Fi(2.4.14)63 b(Alternate)40 b(In)m(terface)g
-(Example)150 1994 y Ft(Here)f(is)g(a)g(complete)h(program)e(that)h
-(illustrates)h(Readline's)f(alternate)h(in)m(terface.)67
-b(It)38 b(reads)h(lines)150 2103 y(from)30 b(the)i(terminal)f(and)f
-(displa)m(ys)h(them,)h(pro)m(viding)f(the)g(standard)f(history)h(and)f
-(T)-8 b(AB)32 b(completion)150 2213 y(functions.)40 b(It)31
-b(understands)d(the)j(EOF)f(c)m(haracter)i(or)e Fs(")p
-Ft(exit)p Fs(")h Ft(to)g(exit)g(the)g(program.)390 2381
-y Fs(/*)47 b(Standard)f(include)g(files.)g(stdio.h)f(is)j(required.)d
-(*/)390 2491 y(#include)h(<stdlib.h>)390 2600 y(#include)g(<string.h>)
-390 2710 y(#include)g(<unistd.h>)390 2819 y(#include)g(<locale.h>)390
-3039 y(/*)h(Used)g(for)g(select\(2\))e(*/)390 3148 y(#include)h
-(<sys/types.h>)390 3258 y(#include)g(<sys/select.h>)390
-3477 y(#include)g(<signal.h>)390 3696 y(#include)g(<stdio.h>)390
-3915 y(/*)h(Standard)f(readline)f(include)h(files.)g(*/)390
-4025 y(#include)g(<readline/readline.h>)390 4134 y(#include)g
-(<readline/history.h>)390 4354 y(static)g(void)h(cb_linehandler)d
-(\(char)i(*\);)390 4463 y(static)g(void)h(sighandler)e(\(int\);)390
-4682 y(int)i(running;)390 4792 y(int)g(sigwinch_received;)390
-4902 y(const)f(char)h(*prompt)f(=)h("rltest$)f(";)390
-5121 y(/*)h(Handle)f(SIGWINCH)g(and)h(window)f(size)g(changes)g(when)h
-(readline)e(is)j(not)f(active)f(and)p 3922 5141 42 84
-v 533 5230 a(reading)g(a)h(character.)e(*/)390 5340 y(static)h(void)p
-eop end
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(44)390
+299 y Fs({)485 408 y(register)46 b(int)h(start,)f(end,)h(i;)485
+628 y(start)g(=)g(rl_point;)485 847 y(if)h(\(rl_point)d(>=)i(rl_end\))
+581 956 y(return)f(\(0\);)485 1176 y(if)i(\(count)e(<)h(0\))581
+1285 y({)676 1395 y(direction)f(=)h(-1;)676 1504 y(count)g(=)g(-count;)
+581 1614 y(})485 1724 y(else)581 1833 y(direction)e(=)j(1;)485
+2052 y(/*)g(Find)e(the)h(end)g(of)g(the)g(range)g(to)g(modify.)f(*/)485
+2162 y(end)h(=)h(start)e(+)i(\(count)e(*)h(direction\);)485
+2381 y(/*)h(Force)e(it)h(to)g(be)h(within)e(range.)g(*/)485
+2491 y(if)i(\(end)e(>)i(rl_end\))581 2600 y(end)f(=)g(rl_end;)485
+2710 y(else)g(if)g(\(end)g(<)g(0\))581 2819 y(end)g(=)g(0;)485
+3039 y(if)h(\(start)e(==)h(end\))581 3148 y(return)f(\(0\);)485
+3367 y(if)i(\(start)e(>)h(end\))581 3477 y({)676 3587
+y(int)g(temp)g(=)g(start;)676 3696 y(start)g(=)g(end;)676
+3806 y(end)g(=)h(temp;)581 3915 y(})485 4134 y(/*)g(Tell)e(readline)g
+(that)g(we)i(are)f(modifying)e(the)i(line,)629 4244 y(so)g(it)g(will)g
+(save)f(the)h(undo)g(information.)d(*/)485 4354 y(rl_modifying)h
+(\(start,)h(end\);)485 4573 y(for)h(\(i)h(=)f(start;)f(i)i(!=)f(end;)f
+(i++\))581 4682 y({)676 4792 y(if)i(\(_rl_uppercase_p)43
+b(\(rl_line_buffer[i]\)\))772 4902 y(rl_line_buffer[i])g(=)k
+(_rl_to_lower)e(\(rl_line_buffer[i]\);)676 5011 y(else)i(if)g
+(\(_rl_lowercase_p)d(\(rl_line_buffer[i]\)\))772 5121
+y(rl_line_buffer[i])f(=)k(_rl_to_upper)e(\(rl_line_buffer[i]\);)581
+5230 y(})485 5340 y(/*)j(Move)e(point)h(to)g(on)g(top)g(of)g(the)g
+(last)g(character)e(changed.)g(*/)p eop end
%%Page: 45 49
TeXDict begin 45 48 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(45)390
-299 y Fs(sighandler)45 b(\(int)i(sig\))390 408 y({)485
-518 y(sigwinch_received)d(=)j(1;)390 628 y(})390 847
-y(/*)g(Callback)f(function)f(called)h(for)h(each)g(line)g(when)f
-(accept-line)f(executed,)g(EOF)533 956 y(seen,)i(or)g(EOF)g(character)e
-(read.)94 b(This)47 b(sets)f(a)i(flag)e(and)h(returns;)f(it)h(could)533
-1066 y(also)g(call)f(exit\(3\).)g(*/)390 1176 y(static)g(void)390
-1285 y(cb_linehandler)e(\(char)i(*line\))390 1395 y({)485
-1504 y(/*)i(Can)f(use)f(^D)i(\(stty)e(eof\))h(or)g(`exit')f(to)h(exit.)
-f(*/)485 1614 y(if)i(\(line)e(==)h(NULL)g(||)g(strcmp)f(\(line,)g
-("exit"\))g(==)h(0\))581 1724 y({)676 1833 y(if)h(\(line)e(==)h(0\))772
-1943 y(printf)f(\("\\n"\);)676 2052 y(printf)g(\("exit\\n"\);)676
-2162 y(/*)i(This)e(function)g(needs)g(to)h(be)g(called)g(to)g(reset)f
-(the)h(terminal)f(settings,)p 3874 2182 42 84 v 820 2271
-a(and)g(calling)g(it)h(from)g(the)g(line)g(handler)e(keeps)i(one)g
-(extra)f(prompt)g(from)p 3874 2292 42 76 v 820 2381 a(being)g
-(displayed.)f(*/)676 2491 y(rl_callback_handler_remove)c(\(\);)676
-2710 y(running)46 b(=)i(0;)581 2819 y(})485 2929 y(else)581
-3039 y({)676 3148 y(if)g(\(*line\))772 3258 y(add_history)d(\(line\);)
-676 3367 y(printf)h(\("input)g(line:)h(\045s\\n",)f(line\);)676
-3477 y(free)h(\(line\);)581 3587 y(})390 3696 y(})390
-3915 y(int)390 4025 y(main)g(\(int)f(c,)h(char)g(**v\))390
-4134 y({)485 4244 y(fd_set)g(fds;)485 4354 y(int)g(r;)485
-4573 y(/*)h(Set)f(the)f(default)g(locale)g(values)g(according)g(to)h
-(environment)e(variables.)g(*/)p 3874 4593 42 84 v 485
-4682 a(setlocale)h(\(LC_ALL,)f(""\);)485 4902 y(/*)j(Handle)e(window)g
-(size)g(changes)g(when)h(readline)e(is)j(not)f(active)f(and)h(reading)
-629 5011 y(characters.)d(*/)485 5121 y(signal)j(\(SIGWINCH,)e
-(sighandler\);)485 5340 y(/*)j(Install)d(the)i(line)g(handler.)f(*/)p
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(45)485
+299 y Fs(rl_point)46 b(=)h(\(direction)e(==)j(1\))f(?)g(end)g(-)h(1)f
+(:)h(start;)485 408 y(return)f(\(0\);)390 518 y(})150
+751 y Fi(2.4.14)63 b(Alternate)40 b(In)m(terface)g(Example)150
+898 y Ft(Here)f(is)g(a)g(complete)h(program)e(that)h(illustrates)h
+(Readline's)f(alternate)h(in)m(terface.)67 b(It)38 b(reads)h(lines)150
+1007 y(from)30 b(the)i(terminal)f(and)f(displa)m(ys)h(them,)h(pro)m
+(viding)f(the)g(standard)f(history)h(and)f(T)-8 b(AB)32
+b(completion)150 1117 y(functions.)40 b(It)31 b(understands)d(the)j
+(EOF)f(c)m(haracter)i(or)e Fs(")p Ft(exit)p Fs(")h Ft(to)g(exit)g(the)g
+(program.)390 1285 y Fs(/*)47 b(Standard)f(include)g(files.)g(stdio.h)f
+(is)j(required.)d(*/)390 1395 y(#include)h(<stdlib.h>)390
+1504 y(#include)g(<string.h>)390 1614 y(#include)g(<unistd.h>)390
+1724 y(#include)g(<locale.h>)390 1943 y(/*)h(Used)g(for)g(select\(2\))e
+(*/)390 2052 y(#include)h(<sys/types.h>)390 2162 y(#include)g
+(<sys/select.h>)390 2381 y(#include)g(<signal.h>)390
+2600 y(#include)g(<stdio.h>)390 2819 y(/*)h(Standard)f(readline)f
+(include)h(files.)g(*/)390 2929 y(#include)g(<readline/readline.h>)390
+3039 y(#include)g(<readline/history.h>)390 3258 y(static)g(void)h
+(cb_linehandler)d(\(char)i(*\);)390 3367 y(static)g(void)h(sighandler)e
+(\(int\);)390 3587 y(int)i(running;)390 3696 y(int)g
+(sigwinch_received;)390 3806 y(const)f(char)h(*prompt)f(=)h("rltest$)f
+(";)390 4025 y(/*)h(Handle)f(SIGWINCH)g(and)h(window)f(size)g(changes)g
+(when)h(readline)e(is)j(not)f(active)f(and)p 3922 4045
+42 84 v 533 4134 a(reading)g(a)h(character.)e(*/)390
+4244 y(static)h(void)390 4354 y(sighandler)f(\(int)i(sig\))390
+4463 y({)485 4573 y(sigwinch_received)d(=)j(1;)390 4682
+y(})390 4902 y(/*)g(Callback)f(function)f(called)h(for)h(each)g(line)g
+(when)f(accept-line)f(executed,)g(EOF)533 5011 y(seen,)i(or)g(EOF)g
+(character)e(read.)94 b(This)47 b(sets)f(a)i(flag)e(and)h(returns;)f
+(it)h(could)533 5121 y(also)g(call)f(exit\(3\).)g(*/)390
+5230 y(static)g(void)390 5340 y(cb_linehandler)e(\(char)i(*line\))p
eop end
%%Page: 46 50
TeXDict begin 46 49 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(46)485
-299 y Fs(rl_callback_handler_instal)o(l)42 b(\(prompt,)j
-(cb_linehandler\);)485 518 y(/*)j(Enter)e(a)h(simple)g(event)f(loop.)94
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(46)390
+299 y Fs({)485 408 y(/*)48 b(Can)f(use)f(^D)i(\(stty)e(eof\))h(or)g
+(`exit')f(to)h(exit.)f(*/)485 518 y(if)i(\(line)e(==)h(NULL)g(||)g
+(strcmp)f(\(line,)g("exit"\))g(==)h(0\))581 628 y({)676
+737 y(if)h(\(line)e(==)h(0\))772 847 y(printf)f(\("\\n"\);)676
+956 y(printf)g(\("exit\\n"\);)676 1066 y(/*)i(This)e(function)g(needs)g
+(to)h(be)g(called)g(to)g(reset)f(the)h(terminal)f(settings,)p
+3874 1086 42 84 v 820 1176 a(and)g(calling)g(it)h(from)g(the)g(line)g
+(handler)e(keeps)i(one)g(extra)f(prompt)g(from)p 3874
+1196 42 76 v 820 1285 a(being)g(displayed.)f(*/)676 1395
+y(rl_callback_handler_remove)c(\(\);)676 1614 y(running)46
+b(=)i(0;)581 1724 y(})485 1833 y(else)581 1943 y({)676
+2052 y(if)g(\(*line\))772 2162 y(add_history)d(\(line\);)676
+2271 y(printf)h(\("input)g(line:)h(\045s\\n",)f(line\);)676
+2381 y(free)h(\(line\);)581 2491 y(})390 2600 y(})390
+2819 y(int)390 2929 y(main)g(\(int)f(c,)h(char)g(**v\))390
+3039 y({)485 3148 y(fd_set)g(fds;)485 3258 y(int)g(r;)485
+3477 y(/*)h(Set)f(the)f(default)g(locale)g(values)g(according)g(to)h
+(environment)e(variables.)g(*/)p 3874 3497 42 84 v 485
+3587 a(setlocale)h(\(LC_ALL,)f(""\);)485 3806 y(/*)j(Handle)e(window)g
+(size)g(changes)g(when)h(readline)e(is)j(not)f(active)f(and)h(reading)
+629 3915 y(characters.)d(*/)485 4025 y(signal)j(\(SIGWINCH,)e
+(sighandler\);)485 4244 y(/*)j(Install)d(the)i(line)g(handler.)f(*/)485
+4354 y(rl_callback_handler_instal)o(l)c(\(prompt,)j(cb_linehandler\);)
+485 4573 y(/*)j(Enter)e(a)h(simple)g(event)f(loop.)94
b(This)47 b(waits)f(until)g(something)g(is)h(available)629
-628 y(to)g(read)f(on)i(readline's)d(input)h(stream)g(\(defaults)f(to)j
-(standard)d(input\))h(and)629 737 y(calls)g(the)h(builtin)f(character)f
-(read)i(callback)e(to)i(read)g(it.)95 b(It)47 b(does)f(not)629
-847 y(have)g(to)h(modify)g(the)f(user's)h(terminal)e(settings.)g(*/)485
-956 y(running)h(=)i(1;)485 1066 y(while)f(\(running\))581
-1176 y({)676 1285 y(FD_ZERO)f(\(&fds\);)676 1395 y(FD_SET)g(\(fileno)g
-(\(rl_instream\),)e(&fds\);)676 1614 y(r)k(=)f(select)f(\(FD_SETSIZE,)f
-(&fds,)h(NULL,)h(NULL,)f(NULL\);)676 1724 y(if)i(\(r)f(<)g(0)h(&&)f
-(errno)f(!=)h(EINTR\))772 1833 y({)867 1943 y(perror)f(\("rltest:)g
-(select"\);)867 2052 y(rl_callback_handler_remov)o(e)c(\(\);)867
-2162 y(break;)772 2271 y(})676 2381 y(if)48 b(\(sigwinch_received\))390
-2491 y({)485 2600 y(rl_resize_terminal)43 b(\(\);)485
-2710 y(sigwinch_received)h(=)j(0;)390 2819 y(})676 2929
-y(if)h(\(r)f(<)g(0\))390 3039 y(continue;)676 3258 y(if)h(\(FD_ISSET)d
-(\(fileno)h(\(rl_instream\),)e(&fds\)\))772 3367 y
-(rl_callback_read_char)e(\(\);)581 3477 y(})485 3696
+4682 y(to)g(read)f(on)i(readline's)d(input)h(stream)g(\(defaults)f(to)j
+(standard)d(input\))h(and)629 4792 y(calls)g(the)h(builtin)f(character)
+f(read)i(callback)e(to)i(read)g(it.)95 b(It)47 b(does)f(not)629
+4902 y(have)g(to)h(modify)g(the)f(user's)h(terminal)e(settings.)g(*/)
+485 5011 y(running)h(=)i(1;)485 5121 y(while)f(\(running\))581
+5230 y({)676 5340 y(FD_ZERO)f(\(&fds\);)p eop end
+%%Page: 47 51
+TeXDict begin 47 50 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(47)676
+299 y Fs(FD_SET)46 b(\(fileno)g(\(rl_instream\),)e(&fds\);)676
+518 y(r)k(=)f(select)f(\(FD_SETSIZE,)f(&fds,)h(NULL,)h(NULL,)f(NULL\);)
+676 628 y(if)i(\(r)f(<)g(0)h(&&)f(errno)f(!=)h(EINTR\))772
+737 y({)867 847 y(perror)f(\("rltest:)g(select"\);)867
+956 y(rl_callback_handler_remov)o(e)c(\(\);)867 1066
+y(break;)772 1176 y(})676 1285 y(if)48 b(\(sigwinch_received\))390
+1395 y({)485 1504 y(rl_resize_terminal)43 b(\(\);)485
+1614 y(sigwinch_received)h(=)j(0;)390 1724 y(})676 1833
+y(if)h(\(r)f(<)g(0\))390 1943 y(continue;)676 2162 y(if)h(\(FD_ISSET)d
+(\(fileno)h(\(rl_instream\),)e(&fds\)\))772 2271 y
+(rl_callback_read_char)e(\(\);)581 2381 y(})485 2600
y(printf)47 b(\("rltest:)e(Event)h(loop)h(has)g(exited\\n"\);)485
-3806 y(return)g(0;)390 3915 y(})150 4164 y Fr(2.5)68
-b(Readline)47 b(Signal)e(Handling)150 4323 y Ft(Signals)31
+2710 y(return)g(0;)390 2819 y(})150 3054 y Fr(2.5)68
+b(Readline)47 b(Signal)e(Handling)150 3214 y Ft(Signals)31
b(are)f(async)m(hronous)g(ev)m(en)m(ts)i(sen)m(t)f(to)g(a)g(pro)s(cess)
f(b)m(y)h(the)f(Unix)g(k)m(ernel,)i(sometimes)f(on)g(b)s(ehalf)150
-4433 y(of)k(another)g(pro)s(cess.)53 b(They)34 b(are)h(in)m(tended)g
+3323 y(of)k(another)g(pro)s(cess.)53 b(They)34 b(are)h(in)m(tended)g
(to)g(indicate)h(exceptional)g(ev)m(en)m(ts,)i(lik)m(e)e(a)f(user)f
-(pressing)150 4543 y(the)g(in)m(terrupt)f(k)m(ey)h(on)g(his)f
+(pressing)150 3433 y(the)g(in)m(terrupt)f(k)m(ey)h(on)g(his)f
(terminal,)i(or)f(a)g(net)m(w)m(ork)g(connection)h(b)s(eing)e(brok)m
-(en.)50 b(There)34 b(is)f(a)h(class)150 4652 y(of)29
+(en.)50 b(There)34 b(is)f(a)h(class)150 3543 y(of)29
b(signals)g(that)h(can)f(b)s(e)f(sen)m(t)h(to)h(the)f(pro)s(cess)f
(curren)m(tly)h(reading)g(input)f(from)g(the)h(k)m(eyb)s(oard.)40
-b(Since)150 4762 y(Readline)45 b(c)m(hanges)g(the)g(terminal)g
+b(Since)150 3652 y(Readline)45 b(c)m(hanges)g(the)g(terminal)g
(attributes)g(when)e(it)i(is)g(called,)k(it)c(needs)f(to)h(p)s(erform)e
-(sp)s(ecial)150 4871 y(pro)s(cessing)27 b(when)g(suc)m(h)g(a)h(signal)g
+(sp)s(ecial)150 3762 y(pro)s(cessing)27 b(when)g(suc)m(h)g(a)h(signal)g
(is)g(receiv)m(ed)h(in)e(order)g(to)h(restore)h(the)e(terminal)h(to)h
-(a)f(sane)f(state,)j(or)150 4981 y(pro)m(vide)g(application)i(writers)e
+(a)f(sane)f(state,)j(or)150 3871 y(pro)m(vide)g(application)i(writers)e
(with)g(functions)g(to)h(do)g(so)f(man)m(ually)-8 b(.)275
-5121 y(Readline)40 b(con)m(tains)i(an)e(in)m(ternal)h(signal)g(handler)
+4003 y(Readline)40 b(con)m(tains)i(an)e(in)m(ternal)h(signal)g(handler)
f(that)h(is)f(installed)h(for)f(a)h(n)m(um)m(b)s(er)e(of)h(signals)150
-5230 y(\()p Fs(SIGINT)p Ft(,)e Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p
+4112 y(\()p Fs(SIGINT)p Ft(,)e Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p
Ft(,)g Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)g Fs(SIGTSTP)p
Ft(,)g Fs(SIGTTIN)p Ft(,)g(and)g Fs(SIGTTOU)p Ft(\).)59
-b(When)150 5340 y(one)27 b(of)g(these)g(signals)g(is)g(receiv)m(ed,)i
+b(When)150 4222 y(one)27 b(of)g(these)g(signals)g(is)g(receiv)m(ed,)i
(the)e(signal)g(handler)f(will)h(reset)h(the)e(terminal)i(attributes)f
-(to)g(those)p eop end
-%%Page: 47 51
-TeXDict begin 47 50 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(47)150
-299 y(that)33 b(w)m(ere)g(in)f(e\013ect)h(b)s(efore)f
+(to)g(those)150 4332 y(that)33 b(w)m(ere)g(in)f(e\013ect)h(b)s(efore)f
Fs(readline\(\))e Ft(w)m(as)i(called,)j(reset)d(the)h(signal)g
-(handling)f(to)h(what)f(it)h(w)m(as)150 408 y(b)s(efore)26
+(handling)f(to)h(what)f(it)h(w)m(as)150 4441 y(b)s(efore)26
b Fs(readline\(\))e Ft(w)m(as)j(called,)i(and)d(resend)g(the)h(signal)g
(to)h(the)f(calling)h(application.)41 b(If)26 b(and)g(when)150
-518 y(the)34 b(calling)i(application's)f(signal)g(handler)e(returns,)h
+4551 y(the)34 b(calling)i(application's)f(signal)g(handler)e(returns,)h
(Readline)g(will)h(reinitialize)h(the)e(terminal)h(and)150
-628 y(con)m(tin)m(ue)29 b(to)g(accept)h(input.)39 b(When)28
+4660 y(con)m(tin)m(ue)29 b(to)g(accept)h(input.)39 b(When)28
b(a)h Fs(SIGINT)d Ft(is)j(receiv)m(ed,)h(the)e(Readline)h(signal)g
-(handler)f(p)s(erforms)150 737 y(some)39 b(additional)h(w)m(ork,)h
+(handler)f(p)s(erforms)150 4770 y(some)39 b(additional)h(w)m(ork,)h
(whic)m(h)d(will)h(cause)g(an)m(y)h(partially-en)m(tered)g(line)f(to)h
-(b)s(e)e(ab)s(orted)g(\(see)i(the)150 847 y(description)30
+(b)s(e)e(ab)s(orted)g(\(see)i(the)150 4880 y(description)30
b(of)h Fs(rl_free_line_state\(\))25 b Ft(b)s(elo)m(w\).)275
-1017 y(There)e(is)i(an)f(additional)h(Readline)g(signal)g(handler,)g
+5011 y(There)e(is)i(an)f(additional)h(Readline)g(signal)g(handler,)g
(for)f Fs(SIGWINCH)p Ft(,)g(whic)m(h)g(the)g(k)m(ernel)h(sends)e(to)j
-(a)150 1127 y(pro)s(cess)i(whenev)m(er)h(the)g(terminal's)g(size)h(c)m
+(a)150 5121 y(pro)s(cess)i(whenev)m(er)h(the)g(terminal's)g(size)h(c)m
(hanges)g(\(for)f(example,)h(if)f(a)g(user)f(resizes)i(an)e
-Fs(xterm)p Ft(\).)39 b(The)150 1236 y(Readline)d Fs(SIGWINCH)e
+Fs(xterm)p Ft(\).)39 b(The)150 5230 y(Readline)d Fs(SIGWINCH)e
Ft(handler)g(up)s(dates)h(Readline's)h(in)m(ternal)h(screen)e(size)i
-(information,)g(and)e(then)150 1346 y(calls)g(an)m(y)f
+(information,)g(and)e(then)150 5340 y(calls)g(an)m(y)f
Fs(SIGWINCH)e Ft(signal)i(handler)f(the)h(calling)h(application)g(has)f
-(installed.)51 b(Readline)35 b(calls)g(the)150 1456 y(application's)i
-Fs(SIGWINCH)c Ft(signal)i(handler)g(without)g(resetting)h(the)g
-(terminal)f(to)h(its)g(original)g(state.)150 1565 y(If)31
-b(the)i(application's)g(signal)g(handler)e(do)s(es)g(more)h(than)g(up)s
-(date)f(its)i(idea)f(of)g(the)g(terminal)h(size)g(and)150
-1675 y(return)28 b(\(for)i(example,)h(a)f Fs(longjmp)d
+(installed.)51 b(Readline)35 b(calls)g(the)p eop end
+%%Page: 48 52
+TeXDict begin 48 51 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(48)150
+299 y(application's)37 b Fs(SIGWINCH)c Ft(signal)i(handler)g(without)g
+(resetting)h(the)g(terminal)f(to)h(its)g(original)g(state.)150
+408 y(If)31 b(the)i(application's)g(signal)g(handler)e(do)s(es)g(more)h
+(than)g(up)s(date)f(its)i(idea)f(of)g(the)g(terminal)h(size)g(and)150
+518 y(return)28 b(\(for)i(example,)h(a)f Fs(longjmp)d
Ft(bac)m(k)k(to)f(a)g(main)g(pro)s(cessing)f(lo)s(op\),)h(it)g
-Fk(must)39 b Ft(call)31 b Fs(rl_cleanup_)150 1784 y(after_signal\(\))26
+Fk(must)39 b Ft(call)31 b Fs(rl_cleanup_)150 628 y(after_signal\(\))26
b Ft(\(describ)s(ed)k(b)s(elo)m(w\),)h(to)g(restore)g(the)g(terminal)g
-(state.)275 1955 y(When)38 b(an)h(application)h(is)f(using)g(the)g
+(state.)275 774 y(When)38 b(an)h(application)h(is)f(using)g(the)g
(callbac)m(k)i(in)m(terface)f(\(see)g(Section)g(2.4.12)h([Alternate)f
-(In-)150 2064 y(terface],)48 b(page)c(42\),)j(Readline)c(installs)h
+(In-)150 884 y(terface],)48 b(page)c(43\),)j(Readline)c(installs)h
(signal)g(handlers)e(only)h(for)f(the)h(duration)g(of)g(the)g(call)h
-(to)150 2174 y Fs(rl_callback_read_char)p Ft(.)c(Applications)33
+(to)150 994 y Fs(rl_callback_read_char)p Ft(.)c(Applications)33
b(using)f(the)g(callbac)m(k)j(in)m(terface)e(should)f(b)s(e)f(prepared)
-g(to)150 2283 y(clean)d(up)d(Readline's)j(state)g(if)e(they)h(wish)f
+g(to)150 1103 y(clean)d(up)d(Readline's)j(state)g(if)e(they)h(wish)f
(to)h(handle)f(the)h(signal)h(b)s(efore)e(the)h(line)g(handler)f
-(completes)150 2393 y(and)k(restores)h(the)f(terminal)h(state.)275
-2563 y(If)k(an)g(application)i(using)f(the)g(callbac)m(k)h(in)m
+(completes)150 1213 y(and)k(restores)h(the)f(terminal)h(state.)275
+1360 y(If)k(an)g(application)i(using)f(the)g(callbac)m(k)h(in)m
(terface)h(wishes)d(to)h(ha)m(v)m(e)h(Readline)g(install)f(its)g
-(signal)150 2673 y(handlers)22 b(at)h(the)g(time)h(the)e(application)j
+(signal)150 1469 y(handlers)22 b(at)h(the)g(time)h(the)e(application)j
(calls)e Fs(rl_callback_handler_instal)o(l)17 b Ft(and)22
-b(remo)m(v)m(e)i(them)150 2783 y(only)f(when)g(a)g(complete)i(line)f
+b(remo)m(v)m(e)i(them)150 1579 y(only)f(when)g(a)g(complete)i(line)f
(of)f(input)f(has)h(b)s(een)g(read,)i(it)e(should)g(set)g(the)h
-Fs(rl_persistent_signal_)150 2892 y(handlers)c Ft(v)-5
+Fs(rl_persistent_signal_)150 1688 y(handlers)c Ft(v)-5
b(ariable)23 b(to)f(a)h(non-zero)f(v)-5 b(alue.)39 b(This)21
b(allo)m(ws)i(an)f(application)i(to)f(defer)e(all)i(of)f(the)h
-(handling)150 3002 y(of)j(the)h(signals)f(Readline)h(catc)m(hes)h(to)f
+(handling)150 1798 y(of)j(the)h(signals)f(Readline)h(catc)m(hes)h(to)f
(Readline.)39 b(Applications)27 b(should)f(use)f(this)h(v)-5
-b(ariable)27 b(with)f(care;)150 3111 y(it)d(can)g(result)g(in)f
+b(ariable)27 b(with)f(care;)150 1908 y(it)d(can)g(result)g(in)f
(Readline)h(catc)m(hing)i(signals)e(and)f(not)h(acting)h(on)f(them)f
-(\(or)h(allo)m(wing)i(the)e(application)150 3221 y(to)36
+(\(or)h(allo)m(wing)i(the)e(application)150 2017 y(to)36
b(react)g(to)g(them\))g(un)m(til)f(the)h(application)g(calls)h
Fs(rl_callback_read_char)p Ft(.)49 b(This)35 b(can)g(result)g(in)150
-3331 y(an)30 b(application)h(b)s(ecoming)f(less)g(resp)s(onsiv)m(e)f
+2127 y(an)30 b(application)h(b)s(ecoming)f(less)g(resp)s(onsiv)m(e)f
(to)i(k)m(eyb)s(oard)e(signals)h(lik)m(e)h(SIGINT.)f(If)f(an)h
-(application)150 3440 y(do)s(es)24 b(not)g(w)m(an)m(t)h(or)g(need)f(to)
+(application)150 2236 y(do)s(es)24 b(not)g(w)m(an)m(t)h(or)g(need)f(to)
h(p)s(erform)d(an)m(y)j(signal)g(handling,)g(or)f(do)s(es)g(not)h(need)
-f(to)g(do)h(an)m(y)f(pro)s(cessing)150 3550 y(b)s(et)m(w)m(een)31
+f(to)g(do)h(an)m(y)f(pro)s(cessing)150 2346 y(b)s(et)m(w)m(een)31
b(calls)h(to)f Fs(rl_callback_read_char)p Ft(,)24 b(setting)32
b(this)e(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(desirable.)275
-3720 y(Readline)f(pro)m(vides)f(t)m(w)m(o)i(v)-5 b(ariables)29
+2493 y(Readline)f(pro)m(vides)f(t)m(w)m(o)i(v)-5 b(ariables)29
b(that)h(allo)m(w)g(application)g(writers)e(to)h(con)m(trol)h(whether)e
-(or)h(not)150 3830 y(it)34 b(will)f(catc)m(h)i(certain)f(signals)f(and)
+(or)h(not)150 2602 y(it)34 b(will)f(catc)m(h)i(certain)f(signals)f(and)
g(act)h(on)f(them)g(when)f(they)i(are)f(receiv)m(ed.)51
-b(It)33 b(is)g(imp)s(ortan)m(t)g(that)150 3939 y(applications)38
+b(It)33 b(is)g(imp)s(ortan)m(t)g(that)150 2712 y(applications)38
b(c)m(hange)g(the)e(v)-5 b(alues)37 b(of)g(these)g(v)-5
b(ariables)37 b(only)g(when)f(calling)i Fs(readline\(\))p
-Ft(,)d(not)i(in)g(a)150 4049 y(signal)31 b(handler,)f(so)g(Readline's)i
+Ft(,)d(not)i(in)g(a)150 2821 y(signal)31 b(handler,)f(so)g(Readline's)i
(in)m(ternal)f(signal)g(state)h(is)e(not)h(corrupted.)3371
-4305 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_signals)390
-4414 y Ft(If)28 b(this)h(v)-5 b(ariable)30 b(is)f(non-zero,)h(Readline)
+3030 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_signals)390
+3140 y Ft(If)28 b(this)h(v)-5 b(ariable)30 b(is)f(non-zero,)h(Readline)
f(will)g(install)h(signal)f(handlers)f(for)h Fs(SIGINT)p
-Ft(,)f Fs(SIGQUIT)p Ft(,)390 4524 y Fs(SIGTERM)p Ft(,)h
+Ft(,)f Fs(SIGQUIT)p Ft(,)390 3249 y Fs(SIGTERM)p Ft(,)h
Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)f Fs(SIGTSTP)p Ft(,)h
-Fs(SIGTTIN)p Ft(,)f(and)i Fs(SIGTTOU)p Ft(.)390 4694
+Fs(SIGTTIN)p Ft(,)f(and)i Fs(SIGTTOU)p Ft(.)390 3396
y(The)g(default)g(v)-5 b(alue)31 b(of)g Fs(rl_catch_signals)26
-b Ft(is)k(1.)3371 4950 y([V)-8 b(ariable])-3598 b Fh(int)53
-b(rl_catch_sigwinch)390 5060 y Ft(If)37 b(this)h(v)-5
+b Ft(is)k(1.)3371 3605 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_catch_sigwinch)390 3715 y Ft(If)37 b(this)h(v)-5
b(ariable)38 b(is)g(set)g(to)g(a)g(non-zero)g(v)-5 b(alue,)40
b(Readline)f(will)f(install)g(a)g(signal)g(handler)f(for)390
-5170 y Fs(SIGWINCH)p Ft(.)390 5340 y(The)30 b(default)g(v)-5
-b(alue)31 b(of)g Fs(rl_catch_sigwinch)25 b Ft(is)31 b(1.)p
-eop end
-%%Page: 48 52
-TeXDict begin 48 51 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(48)3371
-299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_persistent_signal_)q
-(hand)q(ler)q(s)390 408 y Ft(If)31 b(an)h(application)g(using)g(the)f
+3824 y Fs(SIGWINCH)p Ft(.)390 3971 y(The)30 b(default)g(v)-5
+b(alue)31 b(of)g Fs(rl_catch_sigwinch)25 b Ft(is)31 b(1.)3371
+4180 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_persistent_signal_)q
+(hand)q(ler)q(s)390 4290 y Ft(If)31 b(an)h(application)g(using)g(the)f
(callbac)m(k)j(in)m(terface)f(wishes)e(Readline's)h(signal)h(handlers)d
-(to)j(b)s(e)390 518 y(installed)21 b(and)f(activ)m(e)j(during)d(the)h
+(to)j(b)s(e)390 4399 y(installed)21 b(and)f(activ)m(e)j(during)d(the)h
(set)g(of)f(calls)i(to)g Fs(rl_callback_read_char)14
-b Ft(that)22 b(constitutes)390 628 y(an)30 b(en)m(tire)i(single)f
+b Ft(that)22 b(constitutes)390 4509 y(an)30 b(en)m(tire)i(single)f
(line,)g(it)f(should)g(set)h(this)f(v)-5 b(ariable)31
-b(to)g(a)g(non-zero)g(v)-5 b(alue.)390 775 y(The)30 b(default)g(v)-5
-b(alue)31 b(of)g Fs(rl_persistent_signal_han)o(dle)o(rs)24
-b Ft(is)31 b(0.)3371 986 y([V)-8 b(ariable])-3598 b Fh(int)53
-b(rl_change_environment)390 1096 y Ft(If)31 b(this)g(v)-5
-b(ariable)32 b(is)f(set)h(to)g(a)g(non-zero)g(v)-5 b(alue,)32
-b(and)f(Readline)h(is)f(handling)g Fs(SIGWINCH)p Ft(,)e(Read-)390
-1205 y(line)h(will)h(mo)s(dify)e(the)h Fj(LINES)35 b
-Ft(and)29 b Fj(COLUMNS)35 b Ft(en)m(vironmen)m(t)30 b(v)-5
-b(ariables)31 b(up)s(on)d(receipt)j(of)g(a)390 1315 y
-Fs(SIGWINCH)390 1463 y Ft(The)f(default)g(v)-5 b(alue)31
-b(of)g Fs(rl_change_environment)24 b Ft(is)31 b(1.)275
-1673 y(If)f(an)h(application)h(do)s(es)f(not)g(wish)f(to)i(ha)m(v)m(e)g
-(Readline)g(catc)m(h)g(an)m(y)f(signals,)h(or)f(to)h(handle)e(signals)
-150 1783 y(other)39 b(than)f(those)h(Readline)h(catc)m(hes)g(\()p
-Fs(SIGHUP)p Ft(,)g(for)e(example\),)k(Readline)d(pro)m(vides)g(con)m(v)
-m(enience)150 1892 y(functions)30 b(to)h(do)f(the)h(necessary)g
+b(to)g(a)g(non-zero)g(v)-5 b(alue.)390 4656 y(The)30
+b(default)g(v)-5 b(alue)31 b(of)g Fs(rl_persistent_signal_han)o(dle)o
+(rs)24 b Ft(is)31 b(0.)3371 4864 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_change_environment)390 4974 y Ft(If)31
+b(this)g(v)-5 b(ariable)32 b(is)f(set)h(to)g(a)g(non-zero)g(v)-5
+b(alue,)32 b(and)f(Readline)h(is)f(handling)g Fs(SIGWINCH)p
+Ft(,)e(Read-)390 5084 y(line)h(will)h(mo)s(dify)e(the)h
+Fj(LINES)35 b Ft(and)29 b Fj(COLUMNS)35 b Ft(en)m(vironmen)m(t)30
+b(v)-5 b(ariables)31 b(up)s(on)d(receipt)j(of)g(a)390
+5193 y Fs(SIGWINCH)390 5340 y Ft(The)f(default)g(v)-5
+b(alue)31 b(of)g Fs(rl_change_environment)24 b Ft(is)31
+b(1.)p eop end
+%%Page: 49 53
+TeXDict begin 49 52 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(49)275
+299 y(If)30 b(an)h(application)h(do)s(es)f(not)g(wish)f(to)i(ha)m(v)m
+(e)g(Readline)g(catc)m(h)g(an)m(y)f(signals,)h(or)f(to)h(handle)e
+(signals)150 408 y(other)39 b(than)f(those)h(Readline)h(catc)m(hes)g
+(\()p Fs(SIGHUP)p Ft(,)g(for)e(example\),)k(Readline)d(pro)m(vides)g
+(con)m(v)m(enience)150 518 y(functions)30 b(to)h(do)f(the)h(necessary)g
(terminal)g(and)e(in)m(ternal)i(state)h(clean)m(up)f(up)s(on)e(receipt)
-i(of)g(a)f(signal.)3350 2103 y([F)-8 b(unction])-3599
+i(of)g(a)f(signal.)3350 693 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_pending_signal)e Fg(\()p Ff(v)m(oid)p
-Fg(\))390 2213 y Ft(Return)27 b(the)g(signal)h(n)m(um)m(b)s(er)e(of)i
+Fg(\))390 803 y Ft(Return)27 b(the)g(signal)h(n)m(um)m(b)s(er)e(of)i
(the)f(most)h(recen)m(t)h(signal)f(Readline)g(receiv)m(ed)g(but)f(has)g
-(not)h(y)m(et)390 2322 y(handled,)i(or)g(0)h(if)f(there)h(is)f(no)g(p)s
-(ending)f(signal.)3350 2533 y([F)-8 b(unction])-3599
+(not)h(y)m(et)390 913 y(handled,)i(or)g(0)h(if)f(there)h(is)f(no)g(p)s
+(ending)f(signal.)3350 1088 y([F)-8 b(unction])-3599
b Fh(void)54 b(rl_cleanup_after_signal)e Fg(\()p Ff(v)m(oid)p
-Fg(\))390 2643 y Ft(This)33 b(function)h(will)g(reset)g(the)g(state)i
+Fg(\))390 1198 y Ft(This)33 b(function)h(will)g(reset)g(the)g(state)i
(of)e(the)g(terminal)g(to)h(what)f(it)g(w)m(as)g(b)s(efore)g
-Fs(readline\(\))390 2752 y Ft(w)m(as)c(called,)h(and)d(remo)m(v)m(e)j
+Fs(readline\(\))390 1307 y Ft(w)m(as)c(called,)h(and)d(remo)m(v)m(e)j
(the)f(Readline)g(signal)g(handlers)e(for)h(all)h(signals,)h(dep)s
-(ending)d(on)h(the)390 2862 y(v)-5 b(alues)31 b(of)f
+(ending)d(on)h(the)390 1417 y(v)-5 b(alues)31 b(of)f
Fs(rl_catch_signals)c Ft(and)k Fs(rl_catch_sigwinch)p
-Ft(.)3350 3072 y([F)-8 b(unction])-3599 b Fh(void)54
+Ft(.)3350 1592 y([F)-8 b(unction])-3599 b Fh(void)54
b(rl_free_line_state)c Fg(\()p Ff(v)m(oid)p Fg(\))390
-3182 y Ft(This)38 b(will)i(free)f(an)m(y)h(partial)g(state)g(asso)s
+1702 y Ft(This)38 b(will)i(free)f(an)m(y)h(partial)g(state)g(asso)s
(ciated)h(with)e(the)g(curren)m(t)g(input)f(line)i(\(undo)e(infor-)390
-3292 y(mation,)46 b(an)m(y)d(partial)h(history)e(en)m(try)-8
+1811 y(mation,)46 b(an)m(y)d(partial)h(history)e(en)m(try)-8
b(,)47 b(an)m(y)42 b(partially-en)m(tered)j(k)m(eyb)s(oard)d(macro,)47
-b(and)42 b(an)m(y)390 3401 y(partially-en)m(tered)50
+b(and)42 b(an)m(y)390 1921 y(partially-en)m(tered)50
b(n)m(umeric)d(argumen)m(t\).)94 b(This)47 b(should)g(b)s(e)g(called)i
-(b)s(efore)e Fs(rl_cleanup_)390 3511 y(after_signal\(\))p
+(b)s(efore)e Fs(rl_cleanup_)390 2030 y(after_signal\(\))p
Ft(.)74 b(The)42 b(Readline)h(signal)g(handler)f(for)h
Fs(SIGINT)e Ft(calls)i(this)g(to)g(ab)s(ort)g(the)390
-3620 y(curren)m(t)30 b(input)g(line.)3350 3831 y([F)-8
+2140 y(curren)m(t)30 b(input)g(line.)3350 2315 y([F)-8
b(unction])-3599 b Fh(void)54 b(rl_reset_after_signal)d
-Fg(\()p Ff(v)m(oid)p Fg(\))390 3941 y Ft(This)28 b(will)g(reinitialize)
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2425 y Ft(This)28 b(will)g(reinitialize)
j(the)e(terminal)g(and)f(reinstall)h(an)m(y)g(Readline)g(signal)g
-(handlers,)f(dep)s(end-)390 4050 y(ing)j(on)f(the)g(v)-5
+(handlers,)f(dep)s(end-)390 2534 y(ing)j(on)f(the)g(v)-5
b(alues)31 b(of)g Fs(rl_catch_signals)26 b Ft(and)j Fs
-(rl_catch_sigwinch)p Ft(.)275 4261 y(If)38 b(an)i(application)g(do)s
-(es)f(not)h(wish)f(Readline)h(to)g(catc)m(h)h Fs(SIGWINCH)p
-Ft(,)e(it)h(ma)m(y)g(call)h Fs(rl_resize_)150 4371 y(terminal\(\))24
-b Ft(or)j Fs(rl_set_screen_size\(\))22 b Ft(to)28 b(force)g(Readline)f
-(to)h(up)s(date)f(its)g(idea)h(of)f(the)g(terminal)150
-4480 y(size)k(when)f(a)g Fs(SIGWINCH)e Ft(is)j(receiv)m(ed.)3350
-4691 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_echo_signal_char)d
-Fg(\()p Ff(in)m(t)33 b(sig)p Fg(\))390 4800 y Ft(If)43
-b(an)g(application)i(wishes)e(to)i(install)f(its)g(o)m(wn)f(signal)i
-(handlers,)h(but)c(still)j(ha)m(v)m(e)g(readline)390
-4910 y(displa)m(y)31 b(c)m(haracters)h(that)f(generate)h(signals,)f
-(calling)h(this)e(function)g(with)g Fj(sig)39 b Ft(set)31
-b(to)g Fs(SIGINT)p Ft(,)390 5020 y Fs(SIGQUIT)p Ft(,)e(or)h
-Fs(SIGTSTP)e Ft(will)j(displa)m(y)g(the)f(c)m(haracter)i(generating)g
-(that)f(signal.)3350 5230 y([F)-8 b(unction])-3599 b
-Fh(void)54 b(rl_resize_terminal)c Fg(\()p Ff(v)m(oid)p
-Fg(\))390 5340 y Ft(Up)s(date)30 b(Readline's)h(in)m(ternal)g(screen)g
-(size)g(b)m(y)f(reading)h(v)-5 b(alues)31 b(from)f(the)g(k)m(ernel.)p
-eop end
-%%Page: 49 53
-TeXDict begin 49 52 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(49)3350
-299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_set_screen_size)c
+(rl_catch_sigwinch)p Ft(.)275 2710 y(If)j(an)g(application)i(w)m(an)m
+(ts)g(to)f(force)g(Readline)h(to)f(handle)g(an)m(y)g(signals)g(that)g
+(ha)m(v)m(e)h(arriv)m(ed)f(while)150 2819 y(it)j(has)g(b)s(een)f
+(executing,)j Fs(rl_check_signals\(\))31 b Ft(will)36
+b(call)h(Readline's)g(in)m(ternal)g(signal)f(handler)f(if)150
+2929 y(there)i(are)g(an)m(y)g(p)s(ending)e(signals.)61
+b(This)36 b(is)g(primarily)h(in)m(tended)f(for)h(those)g(applications)h
+(that)f(use)150 3039 y(a)h(custom)g Fs(rl_getc_function)33
+b Ft(\(see)39 b(Section)g(2.3)g([Readline)f(V)-8 b(ariables],)42
+b(page)c(27\))h(and)e(wish)g(to)150 3148 y(handle)30
+b(signals)h(receiv)m(ed)h(while)e(w)m(aiting)i(for)e(input.)3350
+3324 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_check_signals)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3433 y Ft(If)40 b(there)h(are)g(an)m(y)g
+(p)s(ending)e(signals,)44 b(call)e(Readline's)g(in)m(ternal)f(signal)g
+(handling)f(functions)390 3543 y(to)j(pro)s(cess)g(them.)77
+b Fs(rl_pending_signal\(\))38 b Ft(can)43 b(b)s(e)f(used)g(indep)s
+(enden)m(tly)f(to)j(determine)390 3652 y(whether)30 b(or)g(not)h(there)
+f(are)h(an)m(y)g(p)s(ending)e(signals.)275 3828 y(If)38
+b(an)i(application)g(do)s(es)f(not)h(wish)f(Readline)h(to)g(catc)m(h)h
+Fs(SIGWINCH)p Ft(,)e(it)h(ma)m(y)g(call)h Fs(rl_resize_)150
+3937 y(terminal\(\))24 b Ft(or)j Fs(rl_set_screen_size\(\))22
+b Ft(to)28 b(force)g(Readline)f(to)h(up)s(date)f(its)g(idea)h(of)f(the)
+g(terminal)150 4047 y(size)k(when)f(a)g Fs(SIGWINCH)e
+Ft(is)j(receiv)m(ed.)3350 4222 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_echo_signal_char)d Fg(\()p Ff(in)m(t)33
+b(sig)p Fg(\))390 4332 y Ft(If)43 b(an)g(application)i(wishes)e(to)i
+(install)f(its)g(o)m(wn)f(signal)i(handlers,)h(but)c(still)j(ha)m(v)m
+(e)g(readline)390 4441 y(displa)m(y)31 b(c)m(haracters)h(that)f
+(generate)h(signals,)f(calling)h(this)e(function)g(with)g
+Fj(sig)39 b Ft(set)31 b(to)g Fs(SIGINT)p Ft(,)390 4551
+y Fs(SIGQUIT)p Ft(,)e(or)h Fs(SIGTSTP)e Ft(will)j(displa)m(y)g(the)f(c)
+m(haracter)i(generating)g(that)f(signal.)3350 4726 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_resize_terminal)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 4836 y Ft(Up)s(date)30
+b(Readline's)h(in)m(ternal)g(screen)g(size)g(b)m(y)f(reading)h(v)-5
+b(alues)31 b(from)f(the)g(k)m(ernel.)3350 5011 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_set_screen_size)c
Fg(\()p Ff(in)m(t)34 b(ro)m(ws,)f(in)m(t)g(cols)p Fg(\))390
-408 y Ft(Set)28 b(Readline's)h(idea)f(of)g(the)g(terminal)g(size)h(to)g
-Fj(ro)m(ws)i Ft(ro)m(ws)d(and)f Fj(cols)33 b Ft(columns.)40
-b(If)27 b(either)h Fj(ro)m(ws)390 518 y Ft(or)35 b Fj(columns)k
+5121 y Ft(Set)28 b(Readline's)h(idea)f(of)g(the)g(terminal)g(size)h(to)
+g Fj(ro)m(ws)i Ft(ro)m(ws)d(and)f Fj(cols)33 b Ft(columns.)40
+b(If)27 b(either)h Fj(ro)m(ws)390 5230 y Ft(or)35 b Fj(columns)k
Ft(is)c(less)g(than)g(or)g(equal)h(to)g(0,)h(Readline's)f(idea)g(of)f
-(that)h(terminal)f(dimension)g(is)390 628 y(unc)m(hanged.)275
-817 y(If)d(an)i(application)g(do)s(es)f(not)h(w)m(an)m(t)g(to)g
+(that)h(terminal)f(dimension)g(is)390 5340 y(unc)m(hanged.)p
+eop end
+%%Page: 50 54
+TeXDict begin 50 53 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(50)275
+299 y(If)32 b(an)i(application)g(do)s(es)f(not)h(w)m(an)m(t)g(to)g
(install)g(a)g Fs(SIGWINCH)d Ft(handler,)j(but)e(is)i(still)g(in)m
-(terested)g(in)150 927 y(the)d(screen)f(dimensions,)g(Readline's)h
+(terested)g(in)150 408 y(the)d(screen)f(dimensions,)g(Readline's)h
(idea)g(of)g(the)f(screen)h(size)g(ma)m(y)g(b)s(e)f(queried.)3350
-1117 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_get_screen_size)c
+591 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_get_screen_size)c
Fg(\()p Ff(in)m(t)34 b(*ro)m(ws,)f(in)m(t)g(*cols)p Fg(\))390
-1226 y Ft(Return)c(Readline's)i(idea)g(of)f(the)g(terminal's)h(size)g
+701 y Ft(Return)c(Readline's)i(idea)g(of)f(the)g(terminal's)h(size)g
(in)f(the)g(v)-5 b(ariables)31 b(p)s(oin)m(ted)f(to)g(b)m(y)g(the)h
-(argu-)390 1336 y(men)m(ts.)3350 1525 y([F)-8 b(unction])-3599
+(argu-)390 810 y(men)m(ts.)3350 993 y([F)-8 b(unction])-3599
b Fh(void)54 b(rl_reset_screen_size)d Fg(\()p Ff(v)m(oid)p
-Fg(\))390 1635 y Ft(Cause)30 b(Readline)h(to)g(reobtain)g(the)g(screen)
-f(size)h(and)f(recalculate)j(its)e(dimensions.)275 1825
+Fg(\))390 1102 y Ft(Cause)30 b(Readline)h(to)g(reobtain)g(the)g(screen)
+f(size)h(and)f(recalculate)j(its)e(dimensions.)275 1285
y(The)e(follo)m(wing)j(functions)e(install)h(and)f(remo)m(v)m(e)i
-(Readline's)f(signal)g(handlers.)3350 2014 y([F)-8 b(unction])-3599
+(Readline's)f(signal)g(handlers.)3350 1467 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_set_signals)d Fg(\()p Ff(v)m(oid)p Fg(\))390
-2124 y Ft(Install)40 b(Readline's)h(signal)f(handler)f(for)h
+1577 y Ft(Install)40 b(Readline's)h(signal)f(handler)f(for)h
Fs(SIGINT)p Ft(,)h Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p Ft(,)h
-Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)390 2234 y Fs(SIGTSTP)p
+Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)390 1686 y Fs(SIGTSTP)p
Ft(,)35 b Fs(SIGTTIN)p Ft(,)f Fs(SIGTTOU)p Ft(,)h(and)g
Fs(SIGWINCH)p Ft(,)f(dep)s(ending)g(on)h(the)g(v)-5 b(alues)36
-b(of)f Fs(rl_catch_)390 2343 y(signals)28 b Ft(and)i
-Fs(rl_catch_sigwinch)p Ft(.)3350 2533 y([F)-8 b(unction])-3599
+b(of)f Fs(rl_catch_)390 1796 y(signals)28 b Ft(and)i
+Fs(rl_catch_sigwinch)p Ft(.)3350 1978 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_clear_signals)e Fg(\()p Ff(v)m(oid)p
-Fg(\))390 2642 y Ft(Remo)m(v)m(e)32 b(all)f(of)g(the)g(Readline)g
+Fg(\))390 2088 y Ft(Remo)m(v)m(e)32 b(all)f(of)g(the)g(Readline)g
(signal)g(handlers)e(installed)i(b)m(y)f Fs(rl_set_signals\(\))p
-Ft(.)150 2887 y Fr(2.6)68 b(Custom)45 b(Completers)150
-3047 y Ft(T)m(ypically)-8 b(,)47 b(a)c(program)g(that)g(reads)f
+Ft(.)150 2327 y Fr(2.6)68 b(Custom)45 b(Completers)150
+2487 y Ft(T)m(ypically)-8 b(,)47 b(a)c(program)g(that)g(reads)f
(commands)h(from)f(the)g(user)g(has)h(a)g(w)m(a)m(y)g(of)g(disam)m
-(biguating)150 3156 y(commands)35 b(and)g(data.)56 b(If)35
+(biguating)150 2596 y(commands)35 b(and)g(data.)56 b(If)35
b(y)m(our)h(program)f(is)g(one)h(of)g(these,)h(then)e(it)h(can)g(pro)m
-(vide)f(completion)i(for)150 3266 y(commands,)29 b(data,)i(or)e(b)s
+(vide)f(completion)i(for)150 2706 y(commands,)29 b(data,)i(or)e(b)s
(oth.)39 b(The)29 b(follo)m(wing)i(sections)f(describ)s(e)e(ho)m(w)i(y)
-m(our)f(program)g(and)f(Readline)150 3375 y(co)s(op)s(erate)j(to)h(pro)
-m(vide)e(this)g(service.)150 3577 y Fi(2.6.1)63 b(Ho)m(w)40
-b(Completing)i(W)-10 b(orks)150 3724 y Ft(In)26 b(order)f(to)i
+m(our)f(program)g(and)f(Readline)150 2816 y(co)s(op)s(erate)j(to)h(pro)
+m(vide)e(this)g(service.)150 3014 y Fi(2.6.1)63 b(Ho)m(w)40
+b(Completing)i(W)-10 b(orks)150 3161 y Ft(In)26 b(order)f(to)i
(complete)h(some)f(text,)h(the)f(full)f(list)h(of)f(p)s(ossible)g
(completions)h(m)m(ust)g(b)s(e)e(a)m(v)-5 b(ailable.)42
-b(That)150 3834 y(is,)28 b(it)f(is)g(not)g(p)s(ossible)g(to)g
+b(That)150 3270 y(is,)28 b(it)f(is)g(not)g(p)s(ossible)g(to)g
(accurately)i(expand)d(a)h(partial)h(w)m(ord)f(without)f(kno)m(wing)i
-(all)f(of)g(the)g(p)s(ossible)150 3943 y(w)m(ords)33
+(all)f(of)g(the)g(p)s(ossible)150 3380 y(w)m(ords)33
b(whic)m(h)g(mak)m(e)h(sense)f(in)g(that)g(con)m(text.)51
b(The)33 b(Readline)h(library)e(pro)m(vides)i(the)f(user)f(in)m
-(terface)150 4053 y(to)d(completion,)h(and)e(t)m(w)m(o)i(of)e(the)h
+(terface)150 3489 y(to)d(completion,)h(and)e(t)m(w)m(o)i(of)e(the)h
(most)f(common)h(completion)h(functions:)39 b(\014lename)29
-b(and)e(username.)150 4163 y(F)-8 b(or)39 b(completing)g(other)f(t)m
+b(and)e(username.)150 3599 y(F)-8 b(or)39 b(completing)g(other)f(t)m
(yp)s(es)g(of)h(text,)i(y)m(ou)d(m)m(ust)g(write)g(y)m(our)g(o)m(wn)g
-(completion)h(function.)64 b(This)150 4272 y(section)32
+(completion)h(function.)64 b(This)150 3709 y(section)32
b(describ)s(es)d(exactly)j(what)f(suc)m(h)f(functions)g(m)m(ust)g(do,)g
-(and)g(pro)m(vides)g(an)h(example.)275 4409 y(There)e(are)i(three)g(ma)
+(and)g(pro)m(vides)g(an)h(example.)275 3842 y(There)e(are)i(three)g(ma)
5 b(jor)30 b(functions)g(used)g(to)h(p)s(erform)e(completion:)199
-4547 y(1.)61 b(The)43 b(user-in)m(terface)h(function)f
+3976 y(1.)61 b(The)43 b(user-in)m(terface)h(function)f
Fs(rl_complete\(\))p Ft(.)76 b(This)43 b(function)g(is)g(called)i(with)
-e(the)h(same)330 4656 y(argumen)m(ts)36 b(as)g(other)g(bindable)f
+e(the)h(same)330 4086 y(argumen)m(ts)36 b(as)g(other)g(bindable)f
(Readline)h(functions:)51 b Fj(coun)m(t)38 b Ft(and)d
-Fj(in)m(v)m(oking)p 3107 4656 28 4 v 41 w(k)m(ey)p Ft(.)57
-b(It)36 b(isolates)330 4766 y(the)i(w)m(ord)f(to)h(b)s(e)f(completed)i
+Fj(in)m(v)m(oking)p 3107 4086 28 4 v 41 w(k)m(ey)p Ft(.)57
+b(It)36 b(isolates)330 4195 y(the)i(w)m(ord)f(to)h(b)s(e)f(completed)i
(and)d(calls)j Fs(rl_completion_matches\(\))31 b Ft(to)39
-b(generate)g(a)f(list)g(of)330 4875 y(p)s(ossible)31
+b(generate)g(a)f(list)g(of)330 4305 y(p)s(ossible)31
b(completions.)44 b(It)31 b(then)g(either)g(lists)h(the)f(p)s(ossible)g
-(completions,)h(inserts)f(the)g(p)s(ossible)330 4985
+(completions,)h(inserts)f(the)g(p)s(ossible)330 4415
y(completions,)50 b(or)45 b(actually)i(p)s(erforms)d(the)h(completion,)
50 b(dep)s(ending)44 b(on)h(whic)m(h)g(b)s(eha)m(vior)g(is)330
-5095 y(desired.)199 5230 y(2.)61 b(The)33 b(in)m(ternal)h(function)g
+4524 y(desired.)199 4658 y(2.)61 b(The)33 b(in)m(ternal)h(function)g
Fs(rl_completion_matches\(\))27 b Ft(uses)33 b(an)g
-(application-supplied)h Fj(gener-)330 5340 y(ator)44
+(application-supplied)h Fj(gener-)330 4768 y(ator)44
b Ft(function)37 b(to)h(generate)g(the)f(list)h(of)f(p)s(ossible)f
-(matc)m(hes,)k(and)d(then)f(returns)g(the)h(arra)m(y)h(of)p
-eop end
-%%Page: 50 54
-TeXDict begin 50 53 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(50)330
-299 y(these)39 b(matc)m(hes.)68 b(The)39 b(caller)h(should)e(place)i
-(the)f(address)f(of)h(its)g(generator)i(function)d(in)h
-Fs(rl_)330 408 y(completion_entry_functio)o(n)p Ft(.)199
-553 y(3.)61 b(The)22 b(generator)i(function)f(is)g(called)h(rep)s
-(eatedly)f(from)g Fs(rl_completion_matches\(\))o Ft(,)c(returning)330
-663 y(a)33 b(string)g(eac)m(h)h(time.)48 b(The)32 b(argumen)m(ts)h(to)h
+(matc)m(hes,)k(and)d(then)f(returns)g(the)h(arra)m(y)h(of)330
+4877 y(these)h(matc)m(hes.)68 b(The)39 b(caller)h(should)e(place)i(the)
+f(address)f(of)h(its)g(generator)i(function)d(in)h Fs(rl_)330
+4987 y(completion_entry_functio)o(n)p Ft(.)199 5121 y(3.)61
+b(The)22 b(generator)i(function)f(is)g(called)h(rep)s(eatedly)f(from)g
+Fs(rl_completion_matches\(\))o Ft(,)c(returning)330 5230
+y(a)33 b(string)g(eac)m(h)h(time.)48 b(The)32 b(argumen)m(ts)h(to)h
(the)f(generator)h(function)e(are)h Fj(text)j Ft(and)c
-Fj(state)p Ft(.)49 b Fj(text)330 773 y Ft(is)32 b(the)g(partial)h(w)m
+Fj(state)p Ft(.)49 b Fj(text)330 5340 y Ft(is)32 b(the)g(partial)h(w)m
(ord)f(to)h(b)s(e)e(completed.)47 b Fj(state)38 b Ft(is)32
-b(zero)h(the)f(\014rst)g(time)g(the)h(function)e(is)h(called,)330
-882 y(allo)m(wing)46 b(the)e(generator)h(to)f(p)s(erform)f(an)m(y)h
+b(zero)h(the)f(\014rst)g(time)g(the)h(function)e(is)h(called,)p
+eop end
+%%Page: 51 55
+TeXDict begin 51 54 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(51)330
+299 y(allo)m(wing)46 b(the)e(generator)h(to)f(p)s(erform)f(an)m(y)h
(necessary)g(initialization,)51 b(and)43 b(a)h(p)s(ositiv)m(e)h(non-)
-330 992 y(zero)30 b(in)m(teger)h(for)d(eac)m(h)j(subsequen)m(t)d(call.)
+330 408 y(zero)30 b(in)m(teger)h(for)d(eac)m(h)j(subsequen)m(t)d(call.)
42 b(The)29 b(generator)h(function)f(returns)f Fs(\(char)h(*\)NULL)e
-Ft(to)330 1101 y(inform)37 b Fs(rl_completion_matches\(\))32
+Ft(to)330 518 y(inform)37 b Fs(rl_completion_matches\(\))32
b Ft(that)39 b(there)f(are)g(no)g(more)g(p)s(ossibilities)h(left.)65
-b(Usually)330 1211 y(the)39 b(generator)h(function)e(computes)h(the)g
+b(Usually)330 628 y(the)39 b(generator)h(function)e(computes)h(the)g
(list)g(of)g(p)s(ossible)f(completions)i(when)e Fj(state)45
-b Ft(is)39 b(zero,)330 1321 y(and)25 b(returns)f(them)i(one)f(at)i(a)f
+b Ft(is)39 b(zero,)330 737 y(and)25 b(returns)f(them)i(one)f(at)i(a)f
(time)g(on)f(subsequen)m(t)g(calls.)40 b(Eac)m(h)26 b(string)g(the)g
-(generator)g(function)330 1430 y(returns)31 b(as)h(a)g(matc)m(h)h(m)m
+(generator)g(function)330 847 y(returns)31 b(as)h(a)g(matc)m(h)h(m)m
(ust)f(b)s(e)f(allo)s(cated)j(with)d Fs(malloc\(\))p
-Ft(;)g(Readline)h(frees)g(the)g(strings)g(when)330 1540
+Ft(;)g(Readline)h(frees)g(the)g(strings)g(when)330 956
y(it)i(has)g(\014nished)e(with)i(them.)51 b(Suc)m(h)33
b(a)h(generator)h(function)f(is)g(referred)f(to)h(as)h(an)e
-Fj(application-)330 1649 y(sp)s(eci\014c)d(completion)i(function)p
-Ft(.)3350 1876 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete)c
+Fj(application-)330 1066 y(sp)s(eci\014c)d(completion)i(function)p
+Ft(.)3350 1237 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete)c
Fg(\()p Ff(in)m(t)34 b(ignore,)e(in)m(t)i(in)m(v)m(oking)p
-2020 1876 30 5 v 43 w(k)m(ey)p Fg(\))390 1985 y Ft(Complete)d(the)g(w)m
+2020 1237 30 5 v 43 w(k)m(ey)p Fg(\))390 1347 y Ft(Complete)d(the)g(w)m
(ord)g(at)g(or)g(b)s(efore)f(p)s(oin)m(t.)41 b(Y)-8 b(ou)32
b(ha)m(v)m(e)g(supplied)d(the)i(function)f(that)h(do)s(es)g(the)390
-2095 y(initial)42 b(simple)f(matc)m(hing)i(selection)f(algorithm)h
+1456 y(initial)42 b(simple)f(matc)m(hing)i(selection)f(algorithm)h
(\(see)f Fs(rl_completion_matches\(\))o Ft(\).)67 b(The)390
-2204 y(default)31 b(is)f(to)h(do)f(\014lename)h(completion.)3371
-2431 y([V)-8 b(ariable])-3598 b Fh(rl_compentry_func_t)58
-b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 2540
+1566 y(default)31 b(is)f(to)h(do)f(\014lename)h(completion.)3371
+1737 y([V)-8 b(ariable])-3598 b Fh(rl_compentry_func_t)58
+b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 1846
y Ft(This)39 b(is)h(a)g(p)s(oin)m(ter)g(to)h(the)f(generator)h
(function)f(for)f Fs(rl_completion_matches\(\))p Ft(.)63
-b(If)40 b(the)390 2650 y(v)-5 b(alue)24 b(of)g Fs
+b(If)40 b(the)390 1956 y(v)-5 b(alue)24 b(of)g Fs
(rl_completion_entry_funct)o(ion)17 b Ft(is)24 b Fs(NULL)f
Ft(then)g(the)h(default)g(\014lename)g(generator)390
-2760 y(function,)49 b Fs(rl_filename_completion_)o(fun)o(ctio)o(n\(\))p
+2066 y(function,)49 b Fs(rl_filename_completion_)o(fun)o(ctio)o(n\(\))p
Ft(,)42 b(is)j(used.)84 b(An)44 b Fj(application-sp)s(eci\014c)390
-2869 y(completion)22 b(function)f Ft(is)g(a)h(function)e(whose)h
+2175 y(completion)22 b(function)f Ft(is)g(a)h(function)e(whose)h
(address)f(is)h(assigned)h(to)f Fs(rl_completion_entry_)390
-2979 y(function)28 b Ft(and)i(whose)g(return)f(v)-5 b(alues)31
+2285 y(function)28 b Ft(and)i(whose)g(return)f(v)-5 b(alues)31
b(are)g(used)e(to)j(generate)f(p)s(ossible)f(completions.)150
-3199 y Fi(2.6.2)63 b(Completion)41 b(F)-10 b(unctions)150
-3346 y Ft(Here)31 b(is)f(the)h(complete)h(list)f(of)f(callable)j
+2475 y Fi(2.6.2)63 b(Completion)41 b(F)-10 b(unctions)150
+2622 y Ft(Here)31 b(is)f(the)h(complete)h(list)f(of)f(callable)j
(completion)e(functions)f(presen)m(t)h(in)f(Readline.)3350
-3572 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete_internal)f
-Fg(\()p Ff(in)m(t)33 b(what)p 1861 3572 V 44 w(to)p 1994
-3572 V 43 w(do)p Fg(\))390 3682 y Ft(Complete)k(the)g(w)m(ord)f(at)i
-(or)e(b)s(efore)g(p)s(oin)m(t.)60 b Fj(what)p 2208 3682
-28 4 v 40 w(to)p 2328 3682 V 41 w(do)41 b Ft(sa)m(ys)c(what)f(to)i(do)e
-(with)g(the)h(com-)390 3791 y(pletion.)44 b(A)31 b(v)-5
+2793 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_complete_internal)f
+Fg(\()p Ff(in)m(t)33 b(what)p 1861 2793 V 44 w(to)p 1994
+2793 V 43 w(do)p Fg(\))390 2903 y Ft(Complete)k(the)g(w)m(ord)f(at)i
+(or)e(b)s(efore)g(p)s(oin)m(t.)60 b Fj(what)p 2208 2903
+28 4 v 40 w(to)p 2328 2903 V 41 w(do)41 b Ft(sa)m(ys)c(what)f(to)i(do)e
+(with)g(the)h(com-)390 3012 y(pletion.)44 b(A)31 b(v)-5
b(alue)32 b(of)f(`)p Fs(?)p Ft(')g(means)h(list)f(the)h(p)s(ossible)e
(completions.)45 b(`)p Fs(TAB)p Ft(')31 b(means)g(do)g(standard)390
-3901 y(completion.)44 b(`)p Fs(*)p Ft(')32 b(means)f(insert)g(all)h(of)
+3122 y(completion.)44 b(`)p Fs(*)p Ft(')32 b(means)f(insert)g(all)h(of)
f(the)g(p)s(ossible)g(completions.)44 b(`)p Fs(!)p Ft(')32
-b(means)f(to)h(displa)m(y)f(all)390 4011 y(of)k(the)f(p)s(ossible)g
+b(means)f(to)h(displa)m(y)f(all)390 3231 y(of)k(the)f(p)s(ossible)g
(completions,)j(if)d(there)h(is)f(more)g(than)h(one,)g(as)g(w)m(ell)g
-(as)g(p)s(erforming)e(partial)390 4120 y(completion.)41
+(as)g(p)s(erforming)e(partial)390 3341 y(completion.)41
b(`)p Fs(@)p Ft(')27 b(is)h(similar)f(to)h(`)p Fs(!)p
Ft(',)h(but)d(p)s(ossible)h(completions)i(are)e(not)h(listed)g(if)f
-(the)g(p)s(ossible)390 4230 y(completions)32 b(share)e(a)g(common)h
-(pre\014x.)3350 4456 y([F)-8 b(unction])-3599 b Fh(int)53
+(the)g(p)s(ossible)390 3451 y(completions)32 b(share)e(a)g(common)h
+(pre\014x.)3350 3622 y([F)-8 b(unction])-3599 b Fh(int)53
b(rl_complete)c Fg(\()p Ff(in)m(t)34 b(ignore,)e(in)m(t)i(in)m(v)m
-(oking)p 2020 4456 30 5 v 43 w(k)m(ey)p Fg(\))390 4566
+(oking)p 2020 3622 30 5 v 43 w(k)m(ey)p Fg(\))390 3731
y Ft(Complete)42 b(the)f(w)m(ord)g(at)h(or)f(b)s(efore)g(p)s(oin)m(t.)
73 b(Y)-8 b(ou)41 b(ha)m(v)m(e)i(supplied)c(the)j(function)f(that)g(do)
-s(es)390 4675 y(the)33 b(initial)h(simple)f(matc)m(hing)h(selection)h
+s(es)390 3841 y(the)33 b(initial)h(simple)f(matc)m(hing)h(selection)h
(algorithm)f(\(see)g Fs(rl_completion_matches\(\))27
-b Ft(and)390 4785 y Fs(rl_completion_entry_func)o(tion)o
+b Ft(and)390 3950 y Fs(rl_completion_entry_func)o(tion)o
Ft(\).)52 b(The)35 b(default)h(is)g(to)h(do)e(\014lename)h(completion.)
-59 b(This)390 4894 y(calls)32 b Fs(rl_complete_internal\(\))24
+59 b(This)390 4060 y(calls)32 b Fs(rl_complete_internal\(\))24
b Ft(with)30 b(an)g(argumen)m(t)h(dep)s(ending)e(on)h
-Fj(in)m(v)m(oking)p 3314 4894 28 4 v 41 w(k)m(ey)p Ft(.)3350
-5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_possible_completio)q(ns)
+Fj(in)m(v)m(oking)p 3314 4060 28 4 v 41 w(k)m(ey)p Ft(.)3350
+4231 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_possible_completio)q(ns)
f Fg(\()p Ff(in)m(t)33 b(coun)m(t,)h(in)m(t)f(in)m(v)m(oking)p
-2622 5121 30 5 v 43 w(k)m(ey)p Fg(\))390 5230 y Ft(List)41
+2622 4231 30 5 v 43 w(k)m(ey)p Fg(\))390 4340 y Ft(List)41
b(the)f(p)s(ossible)g(completions.)73 b(See)40 b(description)h(of)g
Fs(rl_complete)27 b(\(\))p Ft(.)70 b(This)40 b(calls)i
-Fs(rl_)390 5340 y(complete_internal\(\))25 b Ft(with)30
-b(an)g(argumen)m(t)h(of)g(`)p Fs(?)p Ft('.)p eop end
-%%Page: 51 55
-TeXDict begin 51 54 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(51)3350
-299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_insert_completions)f
+Fs(rl_)390 4450 y(complete_internal\(\))25 b Ft(with)30
+b(an)g(argumen)m(t)h(of)g(`)p Fs(?)p Ft('.)3350 4621
+y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_insert_completions)f
Fg(\()p Ff(in)m(t)34 b(coun)m(t,)f(in)m(t)g(in)m(v)m(oking)p
-2517 299 30 5 v 44 w(k)m(ey)p Fg(\))390 408 y Ft(Insert)g(the)h(list)g
-(of)g(p)s(ossible)f(completions)i(in)m(to)f(the)g(line,)h(deleting)g
-(the)f(partially-completed)390 518 y(w)m(ord.)44 b(See)32
+2517 4621 V 44 w(k)m(ey)p Fg(\))390 4731 y Ft(Insert)g(the)h(list)g(of)
+g(p)s(ossible)f(completions)i(in)m(to)f(the)g(line,)h(deleting)g(the)f
+(partially-completed)390 4840 y(w)m(ord.)44 b(See)32
b(description)g(of)g Fs(rl_complete\(\))p Ft(.)41 b(This)31
b(calls)i Fs(rl_complete_internal\(\))25 b Ft(with)390
-628 y(an)30 b(argumen)m(t)h(of)g(`)p Fs(*)p Ft('.)3350
-808 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_completion_mode)e
-Fg(\()p Ff(rl)p 1455 808 V 44 w(command)p 1919 808 V
-44 w(func)p 2147 808 V 46 w(t)33 b(*cfunc)p Fg(\))390
-917 y Ft(Returns)40 b(the)i(appropriate)g(v)-5 b(alue)41
+4950 y(an)30 b(argumen)m(t)h(of)g(`)p Fs(*)p Ft('.)3350
+5121 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_completion_mode)e
+Fg(\()p Ff(rl)p 1455 5121 V 44 w(command)p 1919 5121
+V 44 w(func)p 2147 5121 V 46 w(t)33 b(*cfunc)p Fg(\))390
+5230 y Ft(Returns)40 b(the)i(appropriate)g(v)-5 b(alue)41
b(to)i(pass)e(to)h Fs(rl_complete_internal\(\))35 b Ft(dep)s(ending)40
-b(on)390 1027 y(whether)g Fj(cfunc)46 b Ft(w)m(as)41
+b(on)390 5340 y(whether)g Fj(cfunc)46 b Ft(w)m(as)41
b(called)h(t)m(wice)g(in)f(succession)g(and)f(the)h(v)-5
-b(alues)41 b(of)g(the)g Fs(show-all-if-)390 1137 y(ambiguous)25
-b Ft(and)i Fs(show-all-if-unmodified)21 b Ft(v)-5 b(ariables.)41
-b(Application-sp)s(eci\014c)29 b(completion)390 1246
-y(functions)h(ma)m(y)h(use)f(this)g(function)g(to)h(presen)m(t)g(the)f
-(same)h(in)m(terface)h(as)f Fs(rl_complete\(\))p Ft(.)3350
-1426 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e
+b(alues)41 b(of)g(the)g Fs(show-all-if-)p eop end
+%%Page: 52 56
+TeXDict begin 52 55 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(52)390
+299 y Fs(ambiguous)25 b Ft(and)i Fs(show-all-if-unmodified)21
+b Ft(v)-5 b(ariables.)41 b(Application-sp)s(eci\014c)29
+b(completion)390 408 y(functions)h(ma)m(y)h(use)f(this)g(function)g(to)
+h(presen)m(t)g(the)f(same)h(in)m(terface)h(as)f Fs(rl_complete\(\))p
+Ft(.)3350 589 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e
(rl_completion_matches)g Fg(\()p Ff(const)34 b(c)m(har)g(*text,)565
-1536 y(rl)p 639 1536 V 44 w(comp)s(en)m(try)p 1145 1536
-V 44 w(func)p 1373 1536 V 45 w(t)f(*en)m(try)p 1767 1536
-V 44 w(func)p Fg(\))390 1646 y Ft(Returns)k(an)h(arra)m(y)g(of)g
+698 y(rl)p 639 698 30 5 v 44 w(comp)s(en)m(try)p 1145
+698 V 44 w(func)p 1373 698 V 45 w(t)f(*en)m(try)p 1767
+698 V 44 w(func)p Fg(\))390 808 y Ft(Returns)k(an)h(arra)m(y)g(of)g
(strings)g(whic)m(h)f(is)h(a)g(list)h(of)f(completions)h(for)e
-Fj(text)p Ft(.)64 b(If)38 b(there)g(are)g(no)390 1755
+Fj(text)p Ft(.)64 b(If)38 b(there)g(are)g(no)390 917
y(completions,)f(returns)c Fs(NULL)p Ft(.)52 b(The)34
b(\014rst)f(en)m(try)i(in)f(the)h(returned)e(arra)m(y)i(is)g(the)f
-(substitution)390 1865 y(for)26 b Fj(text)p Ft(.)40 b(The)26
+(substitution)390 1027 y(for)26 b Fj(text)p Ft(.)40 b(The)26
b(remaining)h(en)m(tries)g(are)g(the)f(p)s(ossible)g(completions.)40
-b(The)26 b(arra)m(y)h(is)f(terminated)390 1974 y(with)k(a)h
-Fs(NULL)e Ft(p)s(oin)m(ter.)390 2107 y Fj(en)m(try)p
-603 2107 28 4 v 40 w(func)44 b Ft(is)c(a)g(function)f(of)h(t)m(w)m(o)g
+b(The)26 b(arra)m(y)h(is)f(terminated)390 1137 y(with)k(a)h
+Fs(NULL)e Ft(p)s(oin)m(ter.)390 1270 y Fj(en)m(try)p
+603 1270 28 4 v 40 w(func)44 b Ft(is)c(a)g(function)f(of)h(t)m(w)m(o)g
(args,)j(and)38 b(returns)h(a)g Fs(char)30 b(*)p Ft(.)67
-b(The)39 b(\014rst)g(argumen)m(t)h(is)390 2217 y Fj(text)p
+b(The)39 b(\014rst)g(argumen)m(t)h(is)390 1379 y Fj(text)p
Ft(.)66 b(The)39 b(second)f(is)h(a)g(state)h(argumen)m(t;)j(it)c(is)g
(zero)g(on)g(the)g(\014rst)f(call,)k(and)c(non-zero)h(on)390
-2327 y(subsequen)m(t)33 b(calls.)52 b Fj(en)m(try)p 1320
-2327 V 41 w(func)38 b Ft(returns)33 b(a)h Fs(NULL)f Ft(p)s(oin)m(ter)g
-(to)i(the)f(caller)h(when)e(there)h(are)g(no)390 2436
-y(more)d(matc)m(hes.)3350 2616 y([F)-8 b(unction])-3599
+1489 y(subsequen)m(t)33 b(calls.)52 b Fj(en)m(try)p 1320
+1489 V 41 w(func)38 b Ft(returns)33 b(a)h Fs(NULL)f Ft(p)s(oin)m(ter)g
+(to)i(the)f(caller)h(when)e(there)h(are)g(no)390 1599
+y(more)d(matc)m(hes.)3350 1779 y([F)-8 b(unction])-3599
b Fh(char)54 b(*)e(rl_filename_completion)q(_fu)q(nct)q(ion)g
-Fg(\()p Ff(const)34 b(c)m(har)g(*text,)e(in)m(t)565 2726
-y(state)p Fg(\))390 2836 y Ft(A)26 b(generator)h(function)e(for)g
+Fg(\()p Ff(const)34 b(c)m(har)g(*text,)e(in)m(t)565 1888
+y(state)p Fg(\))390 1998 y Ft(A)26 b(generator)h(function)e(for)g
(\014lename)h(completion)h(in)e(the)h(general)h(case.)40
-b Fj(text)28 b Ft(is)e(a)g(partial)h(\014le-)390 2945
+b Fj(text)28 b Ft(is)e(a)g(partial)h(\014le-)390 2107
y(name.)38 b(The)21 b(Bash)g(source)h(is)g(a)f(useful)g(reference)h
(for)f(writing)h(application-sp)s(eci\014c)h(completion)390
-3055 y(functions)30 b(\(the)h(Bash)f(completion)i(functions)e(call)i
-(this)e(and)g(other)g(Readline)h(functions\).)3350 3235
+2217 y(functions)30 b(\(the)h(Bash)f(completion)i(functions)e(call)i
+(this)e(and)g(other)g(Readline)h(functions\).)3350 2397
y([F)-8 b(unction])-3599 b Fh(char)54 b(*)e(rl_username_completion)q
(_fu)q(nct)q(ion)g Fg(\()p Ff(const)34 b(c)m(har)g(*text,)e(in)m(t)565
-3345 y(state)p Fg(\))390 3454 y Ft(A)d(completion)g(generator)h(for)e
+2507 y(state)p Fg(\))390 2616 y Ft(A)d(completion)g(generator)h(for)e
(usernames.)40 b Fj(text)31 b Ft(con)m(tains)f(a)f(partial)g(username)f
-(preceded)g(b)m(y)390 3564 y(a)j(random)f(c)m(haracter)i(\(usually)e(`)
+(preceded)g(b)m(y)390 2726 y(a)j(random)f(c)m(haracter)i(\(usually)e(`)
p Fs(~)p Ft('\).)42 b(As)31 b(with)f(all)h(completion)h(generators,)g
-Fj(state)37 b Ft(is)31 b(zero)g(on)390 3673 y(the)g(\014rst)e(call)j
-(and)e(non-zero)h(for)f(subsequen)m(t)f(calls.)150 3870
+Fj(state)37 b Ft(is)31 b(zero)g(on)390 2836 y(the)g(\014rst)e(call)j
+(and)e(non-zero)h(for)f(subsequen)m(t)f(calls.)150 3032
y Fi(2.6.3)63 b(Completion)41 b(V)-10 b(ariables)3371
-4064 y Ft([V)i(ariable])-3598 b Fh(rl_compentry_func_t)58
-b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 4173
+3226 y Ft([V)i(ariable])-3598 b Fh(rl_compentry_func_t)58
+b(*)53 b(rl_completion_entry_fun)q(cti)q(on)390 3336
y Ft(A)34 b(p)s(oin)m(ter)f(to)h(the)g(generator)h(function)e(for)g
Fs(rl_completion_matches\(\))p Ft(.)44 b Fs(NULL)32 b
-Ft(means)h(to)390 4283 y(use)d Fs(rl_filename_completion_fu)o(nct)o
+Ft(means)h(to)390 3445 y(use)d Fs(rl_filename_completion_fu)o(nct)o
(ion\()o(\))p Ft(,)25 b(the)30 b(default)h(\014lename)f(completer.)3371
-4463 y([V)-8 b(ariable])-3598 b Fh(rl_completion_func_t)58
+3626 y([V)-8 b(ariable])-3598 b Fh(rl_completion_func_t)58
b(*)53 b(rl_attempted_completio)q(n_f)q(unct)q(ion)390
-4573 y Ft(A)35 b(p)s(oin)m(ter)g(to)g(an)g(alternativ)m(e)i(function)d
+3735 y Ft(A)35 b(p)s(oin)m(ter)g(to)g(an)g(alternativ)m(e)i(function)d
(to)i(create)g(matc)m(hes.)55 b(The)34 b(function)h(is)f(called)i(with)
-390 4682 y Fj(text)p Ft(,)26 b Fj(start)p Ft(,)f(and)d
+390 3845 y Fj(text)p Ft(,)26 b Fj(start)p Ft(,)f(and)d
Fj(end)p Ft(.)38 b Fj(start)25 b Ft(and)e Fj(end)j Ft(are)d(indices)g
(in)g Fs(rl_line_buffer)c Ft(de\014ning)j(the)h(b)s(ound-)390
-4792 y(aries)j(of)h Fj(text)p Ft(,)h(whic)m(h)d(is)h(a)h(c)m(haracter)g
+3954 y(aries)j(of)h Fj(text)p Ft(,)h(whic)m(h)d(is)h(a)h(c)m(haracter)g
(string.)39 b(If)26 b(this)g(function)f(exists)i(and)e(returns)g
-Fs(NULL)p Ft(,)h(or)g(if)390 4902 y(this)c(v)-5 b(ariable)22
+Fs(NULL)p Ft(,)h(or)g(if)390 4064 y(this)c(v)-5 b(ariable)22
b(is)g(set)h(to)f Fs(NULL)p Ft(,)h(then)f Fs(rl_complete\(\))c
Ft(will)k(call)h(the)f(v)-5 b(alue)23 b(of)f Fs(rl_completion_)390
-5011 y(entry_function)i Ft(to)30 b(generate)f(matc)m(hes,)i(otherwise)d
+4173 y(entry_function)i Ft(to)30 b(generate)f(matc)m(hes,)i(otherwise)d
(the)h(arra)m(y)g(of)f(strings)h(returned)e(will)i(b)s(e)390
-5121 y(used.)37 b(If)22 b(this)g(function)g(sets)h(the)g
+4283 y(used.)37 b(If)22 b(this)g(function)g(sets)h(the)g
Fs(rl_attempted_completion)o(_ove)o(r)16 b Ft(v)-5 b(ariable)24
-b(to)f(a)f(non-zero)390 5230 y(v)-5 b(alue,)35 b(Readline)g(will)f(not)
+b(to)f(a)f(non-zero)390 4393 y(v)-5 b(alue,)35 b(Readline)g(will)f(not)
g(p)s(erform)f(its)h(default)g(completion)h(ev)m(en)g(if)f(this)g
-(function)f(returns)390 5340 y(no)d(matc)m(hes.)p eop
-end
-%%Page: 52 56
-TeXDict begin 52 55 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(52)3371
-299 y([V)-8 b(ariable])-3598 b Fh(rl_quote_func_t)57
-b(*)52 b(rl_filename_quoting_)q(func)q(tio)q(n)390 408
+(function)f(returns)390 4502 y(no)d(matc)m(hes.)3371
+4682 y([V)-8 b(ariable])-3598 b Fh(rl_quote_func_t)57
+b(*)52 b(rl_filename_quoting_)q(func)q(tio)q(n)390 4792
y Ft(A)33 b(p)s(oin)m(ter)f(to)h(a)g(function)g(that)g(will)g(quote)g
(a)g(\014lename)f(in)h(an)f(application-sp)s(eci\014c)i(fashion.)390
-518 y(This)k(is)i(called)g(if)f(\014lename)h(completion)g(is)f(b)s
+4902 y(This)k(is)i(called)g(if)f(\014lename)h(completion)g(is)f(b)s
(eing)g(attempted)i(and)d(one)i(of)f(the)g(c)m(haracters)390
-628 y(in)33 b Fs(rl_filename_quote_charac)o(ter)o(s)27
+5011 y(in)33 b Fs(rl_filename_quote_charac)o(ter)o(s)27
b Ft(app)s(ears)33 b(in)g(a)g(completed)h(\014lename.)50
-b(The)32 b(function)390 737 y(is)37 b(called)h(with)e
-Fj(text)p Ft(,)k Fj(matc)m(h)p 1438 737 28 4 v 41 w(t)m(yp)s(e)p
-Ft(,)f(and)d Fj(quote)p 2119 737 V 41 w(p)s(oin)m(ter)p
+b(The)32 b(function)390 5121 y(is)37 b(called)h(with)e
+Fj(text)p Ft(,)k Fj(matc)m(h)p 1438 5121 V 41 w(t)m(yp)s(e)p
+Ft(,)f(and)d Fj(quote)p 2119 5121 V 41 w(p)s(oin)m(ter)p
Ft(.)60 b(The)36 b Fj(text)k Ft(is)d(the)g(\014lename)g(to)h(b)s(e)390
-847 y(quoted.)76 b(The)42 b Fj(matc)m(h)p 1210 847 V
-41 w(t)m(yp)s(e)48 b Ft(is)42 b(either)h Fs(SINGLE_MATCH)p
+5230 y(quoted.)76 b(The)42 b Fj(matc)m(h)p 1210 5230
+V 41 w(t)m(yp)s(e)48 b Ft(is)42 b(either)h Fs(SINGLE_MATCH)p
Ft(,)f(if)g(there)g(is)h(only)f(one)h(completion)390
-956 y(matc)m(h,)33 b(or)e Fs(MULT_MATCH)p Ft(.)41 b(Some)31
+5340 y(matc)m(h,)33 b(or)e Fs(MULT_MATCH)p Ft(.)41 b(Some)31
b(functions)g(use)g(this)h(to)g(decide)f(whether)g(or)h(not)f(to)h
-(insert)g(a)390 1066 y(closing)22 b(quote)f(c)m(haracter.)40
-b(The)20 b Fj(quote)p 1751 1066 V 41 w(p)s(oin)m(ter)27
-b Ft(is)21 b(a)g(p)s(oin)m(ter)g(to)g(an)m(y)h(op)s(ening)e(quote)h(c)m
-(haracter)390 1176 y(the)31 b(user)e(t)m(yp)s(ed.)41
-b(Some)30 b(functions)g(c)m(ho)s(ose)h(to)g(reset)g(this)g(c)m
-(haracter.)3371 1410 y([V)-8 b(ariable])-3598 b Fh(rl_dequote_func_t)57
-b(*)c(rl_filename_dequoting_)q(fun)q(cti)q(on)390 1519
+(insert)g(a)p eop end
+%%Page: 53 57
+TeXDict begin 53 56 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(53)390
+299 y(closing)22 b(quote)f(c)m(haracter.)40 b(The)20
+b Fj(quote)p 1751 299 28 4 v 41 w(p)s(oin)m(ter)27 b
+Ft(is)21 b(a)g(p)s(oin)m(ter)g(to)g(an)m(y)h(op)s(ening)e(quote)h(c)m
+(haracter)390 408 y(the)31 b(user)e(t)m(yp)s(ed.)41 b(Some)30
+b(functions)g(c)m(ho)s(ose)h(to)g(reset)g(this)g(c)m(haracter.)3371
+600 y([V)-8 b(ariable])-3598 b Fh(rl_dequote_func_t)57
+b(*)c(rl_filename_dequoting_)q(fun)q(cti)q(on)390 710
y Ft(A)30 b(p)s(oin)m(ter)f(to)i(a)f(function)f(that)h(will)g(remo)m(v)
m(e)h(application-sp)s(eci\014c)g(quoting)f(c)m(haracters)h(from)390
-1629 y(a)i(\014lename)g(b)s(efore)f(completion)h(is)g(attempted,)h(so)f
+819 y(a)i(\014lename)g(b)s(efore)f(completion)h(is)g(attempted,)h(so)f
(those)g(c)m(haracters)h(do)e(not)h(in)m(terfere)g(with)390
-1738 y(matc)m(hing)39 b(the)f(text)i(against)f(names)f(in)g(the)g
+929 y(matc)m(hing)39 b(the)f(text)i(against)f(names)f(in)g(the)g
(\014lesystem.)64 b(It)38 b(is)g(called)i(with)d Fj(text)p
-Ft(,)42 b(the)c(text)390 1848 y(of)k(the)h(w)m(ord)f(to)g(b)s(e)g
-(dequoted,)j(and)d Fj(quote)p 2014 1848 V 41 w(c)m(har)p
+Ft(,)42 b(the)c(text)390 1038 y(of)k(the)h(w)m(ord)f(to)g(b)s(e)g
+(dequoted,)j(and)d Fj(quote)p 2014 1038 V 41 w(c)m(har)p
Ft(,)j(whic)m(h)d(is)h(the)f(quoting)h(c)m(haracter)g(that)390
-1958 y(delimits)33 b(the)f(\014lename)g(\(usually)h(`)p
+1148 y(delimits)33 b(the)f(\014lename)g(\(usually)h(`)p
Fs(')p Ft(')f(or)g(`)p Fs(")p Ft('\).)46 b(If)32 b Fj(quote)p
-2368 1958 V 41 w(c)m(har)39 b Ft(is)32 b(zero,)i(the)e(\014lename)g(w)m
-(as)h(not)390 2067 y(in)d(an)g(em)m(b)s(edded)g(string.)3371
-2301 y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57
-b(*)c(rl_char_is_quoted_p)390 2411 y Ft(A)37 b(p)s(oin)m(ter)g(to)g(a)g
+2368 1148 V 41 w(c)m(har)39 b Ft(is)32 b(zero,)i(the)e(\014lename)g(w)m
+(as)h(not)390 1258 y(in)d(an)g(em)m(b)s(edded)g(string.)3371
+1449 y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57
+b(*)c(rl_char_is_quoted_p)390 1559 y Ft(A)37 b(p)s(oin)m(ter)g(to)g(a)g
(function)g(to)g(call)h(that)g(determines)f(whether)f(or)h(not)g(a)g
-(sp)s(eci\014c)f(c)m(haracter)390 2521 y(in)e(the)h(line)f(bu\013er)g
+(sp)s(eci\014c)f(c)m(haracter)390 1668 y(in)e(the)h(line)f(bu\013er)g
(is)g(quoted,)i(according)g(to)f(whatev)m(er)g(quoting)g(mec)m(hanism)g
-(the)f(program)390 2630 y(calling)26 b(Readline)g(uses.)38
+(the)f(program)390 1778 y(calling)26 b(Readline)g(uses.)38
b(The)24 b(function)h(is)g(called)h(with)e(t)m(w)m(o)i(argumen)m(ts:)39
-b Fj(text)p Ft(,)27 b(the)e(text)h(of)f(the)390 2740
+b Fj(text)p Ft(,)27 b(the)e(text)h(of)f(the)390 1887
y(line,)31 b(and)g Fj(index)p Ft(,)f(the)h(index)f(of)h(the)g(c)m
(haracter)i(in)d(the)h(line.)42 b(It)31 b(is)g(used)f(to)h(decide)g
-(whether)g(a)390 2849 y(c)m(haracter)h(found)d(in)g Fs
+(whether)g(a)390 1997 y(c)m(haracter)h(found)d(in)g Fs
(rl_completer_word_break_ch)o(ara)o(cter)o(s)24 b Ft(should)29
-b(b)s(e)h(used)f(to)i(break)390 2959 y(w)m(ords)f(for)g(the)h
-(completer.)3371 3193 y([V)-8 b(ariable])-3598 b Fh
+b(b)s(e)h(used)f(to)i(break)390 2107 y(w)m(ords)f(for)g(the)h
+(completer.)3371 2298 y([V)-8 b(ariable])-3598 b Fh
(rl_compignore_func_t)58 b(*)53 b(rl_ignore_some_complet)q(ion)q(s_fu)q
-(nct)q(ion)390 3303 y Ft(This)37 b(function,)i(if)f(de\014ned,)g(is)g
+(nct)q(ion)390 2408 y Ft(This)37 b(function,)i(if)f(de\014ned,)g(is)g
(called)h(b)m(y)e(the)h(completer)h(when)e(real)h(\014lename)g
-(completion)390 3412 y(is)c(done,)h(after)f(all)h(the)g(matc)m(hing)g
+(completion)390 2517 y(is)c(done,)h(after)f(all)h(the)g(matc)m(hing)g
(names)e(ha)m(v)m(e)j(b)s(een)d(generated.)53 b(It)34
-b(is)g(passed)f(a)i Fs(NULL)d Ft(ter-)390 3522 y(minated)f(arra)m(y)g
+b(is)g(passed)f(a)i Fs(NULL)d Ft(ter-)390 2627 y(minated)f(arra)m(y)g
(of)g(matc)m(hes.)43 b(The)31 b(\014rst)f(elemen)m(t)i(\()p
Fs(matches[0])p Ft(\))d(is)h(the)h(maximal)h(substring)390
-3631 y(common)d(to)g(all)h(matc)m(hes.)41 b(This)28 b(function)h(can)g
+2737 y(common)d(to)g(all)h(matc)m(hes.)41 b(This)28 b(function)h(can)g
(re-arrange)g(the)g(list)h(of)f(matc)m(hes)g(as)g(required,)390
-3741 y(but)h(eac)m(h)h(elemen)m(t)h(deleted)f(from)f(the)h(arra)m(y)g
-(m)m(ust)f(b)s(e)g(freed.)3371 3975 y([V)-8 b(ariable])-3598
+2846 y(but)h(eac)m(h)h(elemen)m(t)h(deleted)f(from)f(the)h(arra)m(y)g
+(m)m(ust)f(b)s(e)g(freed.)3371 3038 y([V)-8 b(ariable])-3598
b Fh(rl_icppfunc_t)56 b(*)d(rl_directory_completio)q(n_ho)q(ok)390
-4085 y Ft(This)44 b(function,)49 b(if)d(de\014ned,)i(is)d(allo)m(w)m
+3147 y Ft(This)44 b(function,)49 b(if)d(de\014ned,)i(is)d(allo)m(w)m
(ed)i(to)f(mo)s(dify)e(the)i(directory)g(p)s(ortion)e(of)i(\014lenames)
-390 4194 y(Readline)35 b(completes.)56 b(It)35 b(could)g(b)s(e)f(used)g
+390 3257 y(Readline)35 b(completes.)56 b(It)35 b(could)g(b)s(e)f(used)g
(to)i(expand)e(sym)m(b)s(olic)h(links)g(or)g(shell)g(v)-5
-b(ariables)35 b(in)390 4304 y(pathnames.)70 b(It)41 b(is)f(called)h
+b(ariables)35 b(in)390 3366 y(pathnames.)70 b(It)41 b(is)f(called)h
(with)f(the)h(address)e(of)i(a)g(string)f(\(the)h(curren)m(t)f
-(directory)h(name\))390 4413 y(as)d(an)f(argumen)m(t,)j(and)d(ma)m(y)i
+(directory)h(name\))390 3476 y(as)d(an)f(argumen)m(t,)j(and)d(ma)m(y)i
(mo)s(dify)d(that)j(string.)62 b(If)37 b(the)h(string)f(is)h(replaced)g
-(with)f(a)h(new)390 4523 y(string,)j(the)d(old)h(v)-5
+(with)f(a)h(new)390 3586 y(string,)j(the)d(old)h(v)-5
b(alue)39 b(should)e(b)s(e)h(freed.)64 b(An)m(y)39 b(mo)s(di\014ed)e
-(directory)i(name)f(should)g(ha)m(v)m(e)i(a)390 4633
+(directory)i(name)f(should)g(ha)m(v)m(e)i(a)390 3695
y(trailing)c(slash.)54 b(The)35 b(mo)s(di\014ed)e(v)-5
b(alue)36 b(will)f(b)s(e)f(used)g(as)i(part)e(of)h(the)h(completion,)h
-(replacing)390 4742 y(the)32 b(directory)g(p)s(ortion)f(of)h(the)g
+(replacing)390 3805 y(the)32 b(directory)g(p)s(ortion)f(of)h(the)g
(pathname)f(the)h(user)f(t)m(yp)s(ed.)44 b(A)m(t)33 b(the)f(least,)h
-(ev)m(en)g(if)e(no)h(other)390 4852 y(expansion)j(is)h(p)s(erformed,)f
+(ev)m(en)g(if)e(no)h(other)390 3914 y(expansion)j(is)h(p)s(erformed,)f
(this)h(function)f(should)g(remo)m(v)m(e)i(an)m(y)f(quote)g(c)m
-(haracters)h(from)e(the)390 4961 y(directory)c(name,)g(b)s(ecause)f
+(haracters)h(from)e(the)390 4024 y(directory)c(name,)g(b)s(ecause)f
(its)h(result)f(will)h(b)s(e)e(passed)h(directly)h(to)g
-Fs(opendir\(\))p Ft(.)390 5121 y(The)25 b(directory)i(completion)g(ho)s
+Fs(opendir\(\))p Ft(.)390 4162 y(The)25 b(directory)i(completion)g(ho)s
(ok)e(returns)g(an)h(in)m(teger)h(that)f(should)f(b)s(e)g(non-zero)i
-(if)e(the)i(func-)390 5230 y(tion)35 b(mo)s(di\014es)e(its)i(directory)
+(if)e(the)i(func-)390 4272 y(tion)35 b(mo)s(di\014es)e(its)i(directory)
f(argumen)m(t.)53 b(The)33 b(function)h(should)f(not)i(mo)s(dify)e(the)
-h(directory)390 5340 y(argumen)m(t)d(if)f(it)h(returns)e(0.)p
-eop end
-%%Page: 53 57
-TeXDict begin 53 56 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(53)3371
-299 y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d
-(rl_directory_rewrite_h)q(ook;)390 408 y Ft(If)24 b(non-zero,)i(this)e
+h(directory)390 4381 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371
+4573 y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d
+(rl_directory_rewrite_h)q(ook;)390 4682 y Ft(If)24 b(non-zero,)i(this)e
(is)h(the)f(address)g(of)g(a)h(function)f(to)h(call)g(when)f
-(completing)h(a)g(directory)g(name.)390 518 y(This)h(function)g(tak)m
+(completing)h(a)g(directory)g(name.)390 4792 y(This)h(function)g(tak)m
(es)i(the)f(address)f(of)h(the)f(directory)h(name)g(to)g(b)s(e)f(mo)s
-(di\014ed)g(as)h(an)f(argumen)m(t.)390 628 y(Unlik)m(e)40
+(di\014ed)g(as)h(an)f(argumen)m(t.)390 4902 y(Unlik)m(e)40
b Fs(rl_directory_completion_h)o(ook)p Ft(,)35 b(it)40
b(only)f(mo)s(di\014es)f(the)i(directory)f(name)h(used)390
-737 y(in)35 b Fs(opendir)p Ft(,)g(not)g(what)h(is)f(displa)m(y)m(ed)h
+5011 y(in)35 b Fs(opendir)p Ft(,)g(not)g(what)h(is)f(displa)m(y)m(ed)h
(when)e(the)i(p)s(ossible)f(completions)h(are)g(prin)m(ted)f(or)g(in-)
-390 847 y(serted.)k(It)27 b(is)f(called)h(b)s(efore)f(rl)p
-1463 847 28 4 v 40 w(directory)p 1859 847 V 41 w(completion)p
-2333 847 V 41 w(ho)s(ok.)39 b(A)m(t)27 b(the)g(least,)h(ev)m(en)f(if)g
-(no)f(other)390 956 y(expansion)35 b(is)h(p)s(erformed,)f(this)h
+390 5121 y(serted.)k(It)27 b(is)f(called)h(b)s(efore)f(rl)p
+1463 5121 V 40 w(directory)p 1859 5121 V 41 w(completion)p
+2333 5121 V 41 w(ho)s(ok.)39 b(A)m(t)27 b(the)g(least,)h(ev)m(en)f(if)g
+(no)f(other)390 5230 y(expansion)35 b(is)h(p)s(erformed,)f(this)h
(function)f(should)g(remo)m(v)m(e)i(an)m(y)f(quote)g(c)m(haracters)h
-(from)e(the)390 1066 y(directory)c(name,)g(b)s(ecause)f(its)h(result)f
+(from)e(the)390 5340 y(directory)c(name,)g(b)s(ecause)f(its)h(result)f
(will)h(b)s(e)e(passed)h(directly)h(to)g Fs(opendir\(\))p
-Ft(.)390 1199 y(The)37 b(directory)i(rewrite)f(ho)s(ok)f(returns)g(an)h
-(in)m(teger)h(that)f(should)f(b)s(e)g(non-zero)i(if)e(the)i(func-)390
-1309 y(tion)e(mo)s(d\014es)e(its)h(directory)h(argumen)m(t.)58
+Ft(.)p eop end
+%%Page: 54 58
+TeXDict begin 54 57 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(54)390
+299 y(The)37 b(directory)i(rewrite)f(ho)s(ok)f(returns)g(an)h(in)m
+(teger)h(that)f(should)f(b)s(e)g(non-zero)i(if)e(the)i(func-)390
+408 y(tion)e(mo)s(d\014es)e(its)h(directory)h(argumen)m(t.)58
b(The)36 b(function)f(should)h(not)g(mo)s(dify)f(the)h(directory)390
-1418 y(argumen)m(t)31 b(if)f(it)h(returns)e(0.)3371 1598
+518 y(argumen)m(t)31 b(if)f(it)h(returns)e(0.)3371 731
y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d
-(rl_filename_stat_hook)390 1708 y Ft(If)30 b(non-zero,)h(this)f(is)g
+(rl_filename_stat_hook)390 840 y Ft(If)30 b(non-zero,)h(this)f(is)g
(the)g(address)f(of)h(a)h(function)f(for)f(the)i(completer)g(to)g(call)
-g(b)s(efore)f(deciding)390 1817 y(whic)m(h)g(c)m(haracter)i(to)e(app)s
+g(b)s(efore)f(deciding)390 950 y(whic)m(h)g(c)m(haracter)i(to)e(app)s
(end)f(to)i(a)f(completed)h(name.)41 b(This)29 b(function)h(mo)s
-(di\014es)f(its)i(\014lename)390 1927 y(name)36 b(argumen)m(t,)h(and)e
+(di\014es)f(its)i(\014lename)390 1059 y(name)36 b(argumen)m(t,)h(and)e
(the)h(mo)s(di\014ed)e(v)-5 b(alue)36 b(is)g(passed)f(to)h
Fs(stat\(\))e Ft(to)i(determine)g(the)g(\014le's)390
-2037 y(t)m(yp)s(e)41 b(and)f(c)m(haracteristics.)73 b(This)40
+1169 y(t)m(yp)s(e)41 b(and)f(c)m(haracteristics.)73 b(This)40
b(function)g(do)s(es)g(not)h(need)f(to)h(remo)m(v)m(e)h(quote)f(c)m
-(haracters)390 2146 y(from)30 b(the)g(\014lename.)390
-2279 y(The)i(stat)h(ho)s(ok)f(returns)f(an)h(in)m(teger)i(that)e
+(haracters)390 1279 y(from)30 b(the)g(\014lename.)390
+1427 y(The)i(stat)h(ho)s(ok)f(returns)f(an)h(in)m(teger)i(that)e
(should)g(b)s(e)f(non-zero)i(if)f(the)g(function)g(mo)s(d\014es)g(its)
-390 2389 y(directory)42 b(argumen)m(t.)73 b(The)40 b(function)h(should)
+390 1537 y(directory)42 b(argumen)m(t.)73 b(The)40 b(function)h(should)
f(not)h(mo)s(dify)f(the)h(directory)h(argumen)m(t)f(if)g(it)390
-2498 y(returns)29 b(0.)3371 2679 y([V)-8 b(ariable])-3598
+1647 y(returns)29 b(0.)3371 1859 y([V)-8 b(ariable])-3598
b Fh(rl_dequote_func_t)57 b(*)c(rl_filename_rewrite_ho)q(ok)390
-2788 y Ft(If)39 b(non-zero,)k(this)d(is)f(the)h(address)f(of)h(a)g
+1969 y Ft(If)39 b(non-zero,)k(this)d(is)f(the)h(address)f(of)h(a)g
(function)g(called)g(when)f(reading)h(directory)g(en)m(tries)390
-2898 y(from)f(the)h(\014lesystem)g(for)g(completion)h(and)e(comparing)i
+2078 y(from)f(the)h(\014lesystem)g(for)g(completion)h(and)e(comparing)i
(them)e(to)i(the)f(partial)h(w)m(ord)e(to)i(b)s(e)390
-3007 y(completed.)g(The)26 b(function)h(should)f(p)s(erform)f(an)m(y)j
+2188 y(completed.)g(The)26 b(function)h(should)f(p)s(erform)f(an)m(y)j
(necessary)f(application)i(or)e(system-sp)s(eci\014c)390
-3117 y(con)m(v)m(ersion)35 b(on)g(the)f(\014lename,)i(suc)m(h)d(as)i
+2298 y(con)m(v)m(ersion)35 b(on)g(the)f(\014lename,)i(suc)m(h)d(as)i
(con)m(v)m(erting)h(b)s(et)m(w)m(een)f(c)m(haracter)g(sets)g(or)f(con)m
-(v)m(erting)390 3226 y(from)f(a)g(\014lesystem)h(format)g(to)g(a)f(c)m
+(v)m(erting)390 2407 y(from)f(a)g(\014lesystem)h(format)g(to)g(a)f(c)m
(haracter)i(input)e(format.)50 b(The)32 b(function)h(tak)m(es)i(t)m(w)m
-(o)g(argu-)390 3336 y(men)m(ts:)49 b Fj(fname)p Ft(,)36
+(o)g(argu-)390 2517 y(men)m(ts:)49 b Fj(fname)p Ft(,)36
b(the)e(\014lename)h(to)g(b)s(e)f(con)m(v)m(erted,)j(and)d
Fj(fnlen)p Ft(,)h(its)g(length)g(in)f(b)m(ytes.)53 b(It)35
-b(m)m(ust)390 3446 y(either)24 b(return)e(its)h(\014rst)g(argumen)m(t)g
+b(m)m(ust)390 2626 y(either)24 b(return)e(its)h(\014rst)g(argumen)m(t)g
(\(if)h(no)f(con)m(v)m(ersion)h(tak)m(es)h(place\))g(or)e(the)g(con)m
-(v)m(erted)i(\014lename)390 3555 y(in)j(newly-allo)s(cated)i(memory)-8
+(v)m(erted)i(\014lename)390 2736 y(in)j(newly-allo)s(cated)i(memory)-8
b(.)41 b(The)27 b(con)m(v)m(erted)j(form)e(is)g(used)g(to)h(compare)f
-(against)i(the)e(w)m(ord)390 3665 y(to)g(b)s(e)e(completed,)j(and,)f
+(against)i(the)e(w)m(ord)390 2845 y(to)g(b)s(e)e(completed,)j(and,)f
(if)f(it)h(matc)m(hes,)h(is)e(added)f(to)i(the)g(list)f(of)h(matc)m
-(hes.)41 b(Readline)27 b(will)h(free)390 3774 y(the)j(allo)s(cated)h
-(string.)3371 3954 y([V)-8 b(ariable])-3598 b Fh(rl_compdisp_func_t)58
+(hes.)41 b(Readline)27 b(will)h(free)390 2955 y(the)j(allo)s(cated)h
+(string.)3371 3168 y([V)-8 b(ariable])-3598 b Fh(rl_compdisp_func_t)58
b(*)52 b(rl_completion_display)q(_ma)q(tch)q(es_h)q(ook)390
-4064 y Ft(If)22 b(non-zero,)i(then)e(this)g(is)g(the)g(address)f(of)h
+3277 y Ft(If)22 b(non-zero,)i(then)e(this)g(is)g(the)g(address)f(of)h
(a)g(function)g(to)h(call)g(when)e(completing)i(a)g(w)m(ord)e(w)m(ould)
-390 4174 y(normally)h(displa)m(y)h(the)f(list)h(of)f(p)s(ossible)g
+390 3387 y(normally)h(displa)m(y)h(the)f(list)h(of)f(p)s(ossible)g
(matc)m(hes.)39 b(This)21 b(function)h(is)g(called)i(in)e(lieu)g(of)g
-(Readline)390 4283 y(displa)m(ying)37 b(the)h(list.)61
+(Readline)390 3497 y(displa)m(ying)37 b(the)h(list.)61
b(It)37 b(tak)m(es)i(three)e(argumen)m(ts:)54 b(\()p
Fs(char)30 b(**)p Fj(matc)m(hes)p Ft(,)39 b Fs(int)d
-Fj(n)m(um)p 3370 4283 V 40 w(matc)m(hes)p Ft(,)390 4393
-y Fs(int)26 b Fj(max)p 735 4393 V 40 w(length)p Ft(\))h(where)f
-Fj(matc)m(hes)31 b Ft(is)c(the)f(arra)m(y)h(of)g(matc)m(hing)g
-(strings,)h Fj(n)m(um)p 3152 4393 V 39 w(matc)m(hes)j
-Ft(is)c(the)390 4502 y(n)m(um)m(b)s(er)35 b(of)i(strings)f(in)g(that)h
-(arra)m(y)-8 b(,)39 b(and)d Fj(max)p 2073 4502 V 40 w(length)h
+Fj(n)m(um)p 3370 3497 28 4 v 40 w(matc)m(hes)p Ft(,)390
+3606 y Fs(int)26 b Fj(max)p 735 3606 V 40 w(length)p
+Ft(\))h(where)f Fj(matc)m(hes)31 b Ft(is)c(the)f(arra)m(y)h(of)g(matc)m
+(hing)g(strings,)h Fj(n)m(um)p 3152 3606 V 39 w(matc)m(hes)j
+Ft(is)c(the)390 3716 y(n)m(um)m(b)s(er)35 b(of)i(strings)f(in)g(that)h
+(arra)m(y)-8 b(,)39 b(and)d Fj(max)p 2073 3716 V 40 w(length)h
Ft(is)g(the)f(length)h(of)g(the)f(longest)i(string)390
-4612 y(in)f(that)i(arra)m(y)-8 b(.)63 b(Readline)39 b(pro)m(vides)e(a)h
+3825 y(in)f(that)i(arra)m(y)-8 b(.)63 b(Readline)39 b(pro)m(vides)e(a)h
(con)m(v)m(enience)i(function,)f Fs(rl_display_match_list)p
-Ft(,)390 4722 y(that)33 b(tak)m(es)g(care)g(of)f(doing)g(the)g(displa)m
+Ft(,)390 3935 y(that)33 b(tak)m(es)g(care)g(of)f(doing)g(the)g(displa)m
(y)g(to)h(Readline's)g(output)e(stream.)46 b(Y)-8 b(ou)33
-b(ma)m(y)f(call)h(that)390 4831 y(function)d(from)g(this)g(ho)s(ok.)
-3371 5011 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_basic_word_break_ch)q(ara)q(cter)q(s)390 5121 y Ft(The)44
+b(ma)m(y)f(call)h(that)390 4044 y(function)d(from)g(this)g(ho)s(ok.)
+3371 4257 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_basic_word_break_ch)q(ara)q(cter)q(s)390 4367 y Ft(The)44
b(basic)g(list)h(of)f(c)m(haracters)i(that)f(signal)g(a)f(break)g(b)s
(et)m(w)m(een)h(w)m(ords)f(for)g(the)g(completer)390
-5230 y(routine.)61 b(The)37 b(default)g(v)-5 b(alue)37
+4476 y(routine.)61 b(The)37 b(default)g(v)-5 b(alue)37
b(of)h(this)f(v)-5 b(ariable)38 b(is)f(the)g(c)m(haracters)i(whic)m(h)e
-(break)g(w)m(ords)f(for)390 5340 y(completion)c(in)e(Bash:)41
-b Fs(")30 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)p eop
-end
-%%Page: 54 58
-TeXDict begin 54 57 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(54)3371
-299 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_basic_quote_charact)q(ers)390 408 y Ft(A)30 b(list)i(of)e(quote)h
+(break)g(w)m(ords)f(for)390 4586 y(completion)c(in)e(Bash:)41
+b Fs(")30 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)3371 4799
+y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_basic_quote_charact)q(ers)390 4908 y Ft(A)30 b(list)i(of)e(quote)h
(c)m(haracters)h(whic)m(h)e(can)h(cause)g(a)f(w)m(ord)g(break.)3371
-628 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_completer_word_brea)q(k_c)q(hara)q(cte)q(rs)390 737
+5121 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_completer_word_brea)q(k_c)q(hara)q(cte)q(rs)390 5230
y Ft(The)64 b(list)i(of)f(c)m(haracters)h(that)g(signal)g(a)f(break)g
(b)s(et)m(w)m(een)g(w)m(ords)g(for)f Fs(rl_complete_)390
-847 y(internal\(\))p Ft(.)38 b(The)30 b(default)g(list)h(is)g(the)f(v)
+5340 y(internal\(\))p Ft(.)38 b(The)30 b(default)g(list)h(is)g(the)f(v)
-5 b(alue)31 b(of)g Fs(rl_basic_word_break_cha)o(ract)o(ers)p
-Ft(.)3371 1066 y([V)-8 b(ariable])-3598 b Fh(rl_cpvfunc_t)56
-b(*)d(rl_completion_word_brea)q(k_ho)q(ok)390 1176 y
-Ft(If)31 b(non-zero,)i(this)e(is)h(the)f(address)g(of)g(a)h(function)g
-(to)g(call)h(when)d(Readline)i(is)g(deciding)f(where)390
-1285 y(to)k(separate)g(w)m(ords)f(for)g(w)m(ord)g(completion.)54
+Ft(.)p eop end
+%%Page: 55 59
+TeXDict begin 55 58 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(55)3371
+299 y([V)-8 b(ariable])-3598 b Fh(rl_cpvfunc_t)56 b(*)d
+(rl_completion_word_brea)q(k_ho)q(ok)390 408 y Ft(If)31
+b(non-zero,)i(this)e(is)h(the)f(address)g(of)g(a)h(function)g(to)g
+(call)h(when)d(Readline)i(is)g(deciding)f(where)390 518
+y(to)k(separate)g(w)m(ords)f(for)g(w)m(ord)g(completion.)54
b(It)34 b(should)f(return)g(a)i(c)m(haracter)h(string)e(lik)m(e)i
-Fs(rl_)390 1395 y(completer_word_break_cha)o(ract)o(ers)26
+Fs(rl_)390 628 y(completer_word_break_cha)o(ract)o(ers)26
b Ft(to)34 b(b)s(e)e(used)g(to)i(p)s(erform)e(the)h(curren)m(t)f
-(completion.)390 1504 y(The)24 b(function)h(ma)m(y)g(c)m(ho)s(ose)h(to)
-f(set)g Fs(rl_completer_word_break_ch)o(arac)o(ter)o(s)19
-b Ft(itself.)39 b(If)25 b(the)390 1614 y(function)30
-b(returns)f Fs(NULL)p Ft(,)h Fs(rl_completer_word_break)o(_cha)o(rac)o
-(ters)24 b Ft(is)30 b(used.)3371 1833 y([V)-8 b(ariable])-3598
+(completion.)390 737 y(The)24 b(function)h(ma)m(y)g(c)m(ho)s(ose)h(to)f
+(set)g Fs(rl_completer_word_break_ch)o(arac)o(ter)o(s)19
+b Ft(itself.)39 b(If)25 b(the)390 847 y(function)30 b(returns)f
+Fs(NULL)p Ft(,)h Fs(rl_completer_word_break)o(_cha)o(rac)o(ters)24
+b Ft(is)30 b(used.)3371 1011 y([V)-8 b(ariable])-3598
b Fh(const)54 b(char)f(*)g(rl_completer_quote_cha)q(rac)q(ters)390
-1943 y Ft(A)34 b(list)g(of)g(c)m(haracters)h(whic)m(h)e(can)h(b)s(e)g
+1121 y Ft(A)34 b(list)g(of)g(c)m(haracters)h(whic)m(h)e(can)h(b)s(e)g
(used)e(to)j(quote)f(a)g(substring)f(of)h(the)f(line.)51
-b(Completion)390 2052 y(o)s(ccurs)26 b(on)g(the)g(en)m(tire)i
+b(Completion)390 1230 y(o)s(ccurs)26 b(on)g(the)g(en)m(tire)i
(substring,)e(and)f(within)h(the)g(substring)g Fs
-(rl_completer_word_break)o(_)390 2162 y(characters)32
+(rl_completer_word_break)o(_)390 1340 y(characters)32
b Ft(are)k(treated)g(as)f(an)m(y)h(other)f(c)m(haracter,)j(unless)d
-(they)g(also)h(app)s(ear)e(within)h(this)390 2271 y(list.)3371
-2491 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_filename_quote_char)q(act)q(ers)390 2600 y Ft(A)34
+(they)g(also)h(app)s(ear)e(within)h(this)390 1450 y(list.)3371
+1614 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_filename_quote_char)q(act)q(ers)390 1724 y Ft(A)34
b(list)g(of)g(c)m(haracters)h(that)f(cause)h(a)f(\014lename)g(to)g(b)s
(e)f(quoted)h(b)m(y)f(the)h(completer)h(when)e(they)390
-2710 y(app)s(ear)d(in)g(a)h(completed)g(\014lename.)41
+1833 y(app)s(ear)d(in)g(a)h(completed)g(\014lename.)41
b(The)30 b(default)g(is)h(the)f(n)m(ull)h(string.)3371
-2929 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_special_prefixes)390 3039 y Ft(The)27 b(list)i(of)e(c)m(haracters)j
+1998 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_special_prefixes)390 2107 y Ft(The)27 b(list)i(of)e(c)m(haracters)j
(that)e(are)g(w)m(ord)f(break)h(c)m(haracters,)i(but)d(should)f(b)s(e)h
-(left)i(in)e Fj(text)k Ft(when)390 3148 y(it)25 b(is)g(passed)f(to)h
+(left)i(in)e Fj(text)k Ft(when)390 2217 y(it)25 b(is)g(passed)f(to)h
(the)g(completion)h(function.)38 b(Programs)25 b(can)g(use)f(this)h(to)
-g(help)f(determine)h(what)390 3258 y(kind)i(of)h(completing)h(to)f(do.)
+g(help)f(determine)h(what)390 2326 y(kind)i(of)h(completing)h(to)f(do.)
40 b(F)-8 b(or)29 b(instance,)g(Bash)f(sets)g(this)g(v)-5
b(ariable)28 b(to)h Fs(")p Ft($@)p Fs(")e Ft(so)h(that)g(it)h(can)390
-3367 y(complete)j(shell)e(v)-5 b(ariables)31 b(and)f(hostnames.)3371
-3587 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_query_i)q
-(tems)390 3696 y Ft(Up)36 b(to)h(this)f(man)m(y)g(items)h(will)f(b)s(e)
+2436 y(complete)j(shell)e(v)-5 b(ariables)31 b(and)f(hostnames.)3371
+2600 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_query_i)q
+(tems)390 2710 y Ft(Up)36 b(to)h(this)f(man)m(y)g(items)h(will)f(b)s(e)
g(displa)m(y)m(ed)h(in)e(resp)s(onse)h(to)h(a)f(p)s
-(ossible-completions)h(call.)390 3806 y(After)28 b(that,)h(readline)f
+(ossible-completions)h(call.)390 2819 y(After)28 b(that,)h(readline)f
(asks)g(the)g(user)f(if)h(she)f(is)h(sure)f(she)h(w)m(an)m(ts)g(to)h
-(see)f(them)g(all.)40 b(The)28 b(default)390 3915 y(v)-5
+(see)f(them)g(all.)40 b(The)28 b(default)390 2929 y(v)-5
b(alue)31 b(is)f(100.)42 b(A)31 b(negativ)m(e)h(v)-5
b(alue)31 b(indicates)g(that)g(Readline)g(should)f(nev)m(er)h(ask)f
-(the)h(user.)3371 4134 y([V)-8 b(ariable])-3598 b Fh(int)53
-b(rl_completion_append_)q(char)q(act)q(er)390 4244 y
+(the)h(user.)3371 3093 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_completion_append_)q(char)q(act)q(er)390 3203 y
Ft(When)33 b(a)h(single)f(completion)i(alternativ)m(e)h(matc)m(hes)e
(at)g(the)f(end)g(of)g(the)h(command)f(line,)h(this)390
-4354 y(c)m(haracter)23 b(is)e(app)s(ended)f(to)i(the)g(inserted)f
+3313 y(c)m(haracter)23 b(is)e(app)s(ended)f(to)i(the)g(inserted)f
(completion)i(text.)39 b(The)20 b(default)i(is)g(a)f(space)h(c)m
-(haracter)390 4463 y(\(`)31 b('\).)86 b(Setting)46 b(this)f(to)h(the)g
-(n)m(ull)f(c)m(haracter)i(\(`)p Fs(\\0)p Ft('\))f(prev)m(en)m(ts)g(an)m
-(ything)g(b)s(eing)f(app)s(ended)390 4573 y(automatically)-8
-b(.)66 b(This)37 b(can)h(b)s(e)f(c)m(hanged)h(in)g(application-sp)s
-(eci\014c)h(completion)g(functions)e(to)390 4682 y(pro)m(vide)j(the)g
-(\\most)g(sensible)g(w)m(ord)f(separator)i(c)m(haracter")h(according)e
-(to)h(an)e(application-)390 4792 y(sp)s(eci\014c)30 b(command)g(line)h
-(syn)m(tax)g(sp)s(eci\014cation.)3371 5011 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_completion_suppres)q(s_ap)q(pen)q(d)390
-5121 y Ft(If)33 b(non-zero,)i Fj(rl)p 949 5121 28 4 v
-39 w(completion)p 1421 5121 V 42 w(app)s(end)p 1755 5121
+(haracter)390 3422 y(\(`)31 b('\).)40 b(Setting)27 b(this)g(to)g(the)g
+(n)m(ull)f(c)m(haracter)j(\(`)p Fs(\\0)p Ft('\))e(prev)m(en)m(ts)g(an)m
+(ything)g(b)s(eing)f(app)s(ended)f(auto-)390 3532 y(matically)-8
+b(.)41 b(This)22 b(can)i(b)s(e)f(c)m(hanged)h(in)f(application-sp)s
+(eci\014c)h(completion)h(functions)e(to)h(pro)m(vide)390
+3641 y(the)d(\\most)i(sensible)e(w)m(ord)g(separator)h(c)m(haracter")h
+(according)f(to)g(an)f(application-sp)s(eci\014c)i(com-)390
+3751 y(mand)28 b(line)i(syn)m(tax)f(sp)s(eci\014cation.)42
+b(It)29 b(is)g(set)h(to)g(the)f(default)g(b)s(efore)g(an)m(y)g
+(application-sp)s(eci\014c)390 3861 y(completion)j(function)e(is)g
+(called,)i(and)e(ma)m(y)h(only)f(b)s(e)g(c)m(hanged)h(within)f(suc)m(h)
+g(a)h(function.)3371 4025 y([V)-8 b(ariable])-3598 b
+Fh(int)53 b(rl_completion_suppres)q(s_ap)q(pen)q(d)390
+4134 y Ft(If)33 b(non-zero,)i Fj(rl)p 949 4134 28 4 v
+39 w(completion)p 1421 4134 V 42 w(app)s(end)p 1755 4134
V 38 w(c)m(haracter)42 b Ft(is)33 b(not)g(app)s(ended)f(to)i(matc)m
-(hes)g(at)g(the)g(end)390 5230 y(of)28 b(the)f(command)h(line,)h(as)e
+(hes)g(at)g(the)g(end)390 4244 y(of)28 b(the)f(command)h(line,)h(as)e
(describ)s(ed)g(ab)s(o)m(v)m(e.)41 b(It)27 b(is)h(set)g(to)g(0)g(b)s
-(efore)g(an)m(y)f(application-sp)s(eci\014c)390 5340
+(efore)g(an)m(y)f(application-sp)s(eci\014c)390 4354
y(completion)32 b(function)e(is)g(called,)i(and)e(ma)m(y)h(only)f(b)s
-(e)g(c)m(hanged)h(within)f(suc)m(h)g(a)h(function.)p
-eop end
-%%Page: 55 59
-TeXDict begin 55 58 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(55)3371
-299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_quote_c)q
-(hara)q(cte)q(r)390 408 y Ft(When)36 b(Readline)h(is)f(completing)h
+(e)g(c)m(hanged)h(within)f(suc)m(h)g(a)h(function.)3371
+4518 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_quote_c)q
+(hara)q(cte)q(r)390 4628 y Ft(When)36 b(Readline)h(is)f(completing)h
(quoted)g(text,)h(as)f(delimited)g(b)m(y)f(one)g(of)g(the)h(c)m
-(haracters)g(in)390 518 y Fj(rl)p 457 518 28 4 v 40 w(completer)p
-885 518 V 41 w(quote)p 1145 518 V 41 w(c)m(haracters)p
+(haracters)g(in)390 4737 y Fj(rl)p 457 4737 V 40 w(completer)p
+885 4737 V 41 w(quote)p 1145 4737 V 41 w(c)m(haracters)p
Ft(,)43 b(it)c(sets)g(this)g(v)-5 b(ariable)40 b(to)g(the)f(quoting)g
-(c)m(haracter)i(found.)390 628 y(This)30 b(is)g(set)h(b)s(efore)f(an)m
+(c)m(haracter)i(found.)390 4847 y(This)30 b(is)g(set)h(b)s(efore)f(an)m
(y)h(application-sp)s(eci\014c)g(completion)h(function)e(is)h(called.)
-3371 831 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres)q
-(s_qu)q(ote)390 941 y Ft(If)32 b(non-zero,)h(Readline)g(do)s(es)f(not)h
-(app)s(end)d(a)j(matc)m(hing)g(quote)g(c)m(haracter)h(when)d(p)s
-(erforming)390 1050 y(completion)25 b(on)e(a)h(quoted)g(string.)38
+3371 5011 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres)
+q(s_qu)q(ote)390 5121 y Ft(If)32 b(non-zero,)h(Readline)g(do)s(es)f
+(not)h(app)s(end)d(a)j(matc)m(hing)g(quote)g(c)m(haracter)h(when)d(p)s
+(erforming)390 5230 y(completion)25 b(on)e(a)h(quoted)g(string.)38
b(It)24 b(is)f(set)h(to)h(0)f(b)s(efore)f(an)m(y)h(application-sp)s
-(eci\014c)h(completion)390 1160 y(function)30 b(is)g(called,)i(and)e
+(eci\014c)h(completion)390 5340 y(function)30 b(is)g(called,)i(and)e
(ma)m(y)h(only)g(b)s(e)e(c)m(hanged)i(within)f(suc)m(h)g(a)h(function.)
-3371 1363 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_found_q)
-q(uote)390 1473 y Ft(When)31 b(Readline)i(is)e(completing)i(quoted)f
+p eop end
+%%Page: 56 60
+TeXDict begin 56 59 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(56)3371
+299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_found_q)q
+(uote)390 408 y Ft(When)31 b(Readline)i(is)e(completing)i(quoted)f
(text,)h(it)f(sets)g(this)g(v)-5 b(ariable)32 b(to)h(a)f(non-zero)g(v)
--5 b(alue)32 b(if)390 1583 y(the)21 b(w)m(ord)g(b)s(eing)g(completed)h
+-5 b(alue)32 b(if)390 518 y(the)21 b(w)m(ord)g(b)s(eing)g(completed)h
(con)m(tains)g(or)f(is)g(delimited)h(b)m(y)f(an)m(y)g(quoting)h(c)m
-(haracters,)i(including)390 1692 y(bac)m(kslashes.)42
+(haracters,)i(including)390 628 y(bac)m(kslashes.)42
b(This)29 b(is)i(set)g(b)s(efore)f(an)m(y)g(application-sp)s(eci\014c)i
-(completion)g(function)e(is)g(called.)3371 1896 y([V)-8
+(completion)g(function)e(is)g(called.)3371 816 y([V)-8
b(ariable])-3598 b Fh(int)53 b(rl_completion_mark_sy)q(mlin)q(k_d)q
-(irs)390 2005 y Ft(If)31 b(non-zero,)i(a)f(slash)g(will)g(b)s(e)f(app)s
+(irs)390 925 y Ft(If)31 b(non-zero,)i(a)f(slash)g(will)g(b)s(e)f(app)s
(ended)f(to)j(completed)g(\014lenames)e(that)i(are)f(sym)m(b)s(olic)g
-(links)390 2115 y(to)25 b(directory)g(names,)g(sub)5
+(links)390 1035 y(to)25 b(directory)g(names,)g(sub)5
b(ject)24 b(to)h(the)f(v)-5 b(alue)25 b(of)f(the)h(user-settable)g
-Fj(mark-directories)k Ft(v)-5 b(ariable.)390 2225 y(This)27
+Fj(mark-directories)k Ft(v)-5 b(ariable.)390 1144 y(This)27
b(v)-5 b(ariable)28 b(exists)g(so)f(that)h(application-sp)s(eci\014c)h
(completion)g(functions)e(can)g(o)m(v)m(erride)i(the)390
-2334 y(user's)42 b(global)h(preference)g(\(set)g(via)g(the)f
+1254 y(user's)42 b(global)h(preference)g(\(set)g(via)g(the)f
Fj(mark-symlink)m(ed-directories)48 b Ft(Readline)43
-b(v)-5 b(ariable\))390 2444 y(if)38 b(appropriate.)62
+b(v)-5 b(ariable\))390 1363 y(if)38 b(appropriate.)62
b(This)37 b(v)-5 b(ariable)38 b(is)g(set)g(to)g(the)g(user's)f
-(preference)g(b)s(efore)g(an)m(y)h(application-)390 2553
+(preference)g(b)s(efore)g(an)m(y)h(application-)390 1473
y(sp)s(eci\014c)31 b(completion)i(function)f(is)f(called,)j(so)e
(unless)f(that)h(function)f(mo)s(di\014es)g(the)h(v)-5
-b(alue,)33 b(the)390 2663 y(user's)d(preferences)g(are)h(honored.)3371
-2866 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_ignore_completion_)q
-(dupl)q(ica)q(tes)390 2976 y Ft(If)30 b(non-zero,)h(then)f(duplicates)h
+b(alue,)33 b(the)390 1583 y(user's)d(preferences)g(are)h(honored.)3371
+1771 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_ignore_completion_)q
+(dupl)q(ica)q(tes)390 1880 y Ft(If)30 b(non-zero,)h(then)f(duplicates)h
(in)f(the)h(matc)m(hes)g(are)g(remo)m(v)m(ed.)42 b(The)29
-b(default)i(is)f(1.)3371 3180 y([V)-8 b(ariable])-3598
+b(default)i(is)f(1.)3371 2068 y([V)-8 b(ariable])-3598
b Fh(int)53 b(rl_filename_completio)q(n_de)q(sir)q(ed)390
-3289 y Ft(Non-zero)33 b(means)f(that)g(the)g(results)f(of)h(the)g(matc)
+2178 y Ft(Non-zero)33 b(means)f(that)g(the)g(results)f(of)h(the)g(matc)
m(hes)h(are)f(to)h(b)s(e)e(treated)i(as)f(\014lenames.)45
-b(This)390 3399 y(is)40 b Fk(always)49 b Ft(zero)41 b(when)e
+b(This)390 2287 y(is)40 b Fk(always)49 b Ft(zero)41 b(when)e
(completion)i(is)f(attempted,)j(and)d(can)g(only)g(b)s(e)f(c)m(hanged)i
-(within)e(an)390 3508 y(application-sp)s(eci\014c)i(completion)g
+(within)e(an)390 2397 y(application-sp)s(eci\014c)i(completion)g
(function.)67 b(If)39 b(it)h(is)f(set)h(to)h(a)e(non-zero)h(v)-5
-b(alue)40 b(b)m(y)f(suc)m(h)h(a)390 3618 y(function,)24
+b(alue)40 b(b)m(y)f(suc)m(h)h(a)390 2506 y(function,)24
b(directory)f(names)f(ha)m(v)m(e)h(a)g(slash)f(app)s(ended)e(and)i
-(Readline)h(attempts)g(to)g(quote)g(com-)390 3727 y(pleted)35
+(Readline)h(attempts)g(to)g(quote)g(com-)390 2616 y(pleted)35
b(\014lenames)g(if)g(they)h(con)m(tain)g(an)m(y)f(c)m(haracters)i(in)e
-Fs(rl_filename_quote_chara)o(cter)o(s)390 3837 y Ft(and)30
+Fs(rl_filename_quote_chara)o(cter)o(s)390 2725 y Ft(and)30
b Fs(rl_filename_quoting_des)o(ired)24 b Ft(is)30 b(set)h(to)g(a)g
-(non-zero)g(v)-5 b(alue.)3371 4041 y([V)d(ariable])-3598
-b Fh(int)53 b(rl_filename_quoting_d)q(esir)q(ed)390 4150
+(non-zero)g(v)-5 b(alue.)3371 2913 y([V)d(ariable])-3598
+b Fh(int)53 b(rl_filename_quoting_d)q(esir)q(ed)390 3023
y Ft(Non-zero)29 b(means)f(that)h(the)f(results)g(of)g(the)g(matc)m
(hes)i(are)e(to)h(b)s(e)e(quoted)h(using)g(double)f(quotes)390
-4260 y(\(or)43 b(an)f(application-sp)s(eci\014c)i(quoting)f(mec)m
+3133 y(\(or)43 b(an)f(application-sp)s(eci\014c)i(quoting)f(mec)m
(hanism\))g(if)f(the)h(completed)g(\014lename)g(con)m(tains)390
-4369 y(an)m(y)28 b(c)m(haracters)h(in)e Fs(rl_filename_quote_chars)p
+3242 y(an)m(y)28 b(c)m(haracters)h(in)e Fs(rl_filename_quote_chars)p
Ft(.)34 b(This)27 b(is)g Fk(always)37 b Ft(non-zero)28
-b(when)f(comple-)390 4479 y(tion)h(is)g(attempted,)h(and)e(can)h(only)g
+b(when)f(comple-)390 3352 y(tion)h(is)g(attempted,)h(and)e(can)h(only)g
(b)s(e)f(c)m(hanged)h(within)f(an)h(application-sp)s(eci\014c)h
-(completion)390 4589 y(function.)37 b(The)21 b(quoting)g(is)g
+(completion)390 3461 y(function.)37 b(The)21 b(quoting)g(is)g
(e\013ected)i(via)e(a)h(call)g(to)g(the)f(function)g(p)s(oin)m(ted)g
-(to)g(b)m(y)g Fs(rl_filename_)390 4698 y(quoting_function)p
-Ft(.)3371 4902 y([V)-8 b(ariable])-3598 b Fh(int)53 b
-(rl_attempted_completi)q(on_o)q(ver)390 5011 y Ft(If)93
+(to)g(b)m(y)g Fs(rl_filename_)390 3571 y(quoting_function)p
+Ft(.)3371 3759 y([V)-8 b(ariable])-3598 b Fh(int)53 b
+(rl_attempted_completi)q(on_o)q(ver)390 3868 y Ft(If)93
b(an)h(application-sp)s(eci\014c)i(completion)f(function)f(assigned)g
-(to)h Fs(rl_attempted_)390 5121 y(completion_function)48
+(to)h Fs(rl_attempted_)390 3978 y(completion_function)48
b Ft(sets)53 b(this)g(v)-5 b(ariable)54 b(to)g(a)f(non-zero)h(v)-5
-b(alue,)60 b(Readline)53 b(will)h(not)390 5230 y(p)s(erform)28
+b(alue,)60 b(Readline)53 b(will)h(not)390 4088 y(p)s(erform)28
b(its)i(default)g(\014lename)g(completion)h(ev)m(en)f(if)g(the)f
-(application's)i(completion)g(function)390 5340 y(returns)e(no)h(matc)m
+(application's)i(completion)g(function)390 4197 y(returns)e(no)h(matc)m
(hes.)42 b(It)31 b(should)e(b)s(e)h(set)h(only)f(b)m(y)h(an)f
-(application's)i(completion)f(function.)p eop end
-%%Page: 56 60
-TeXDict begin 56 59 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(56)3371
-299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_sort_completion_ma)q
-(tche)q(s)390 408 y Ft(If)29 b(an)h(application)h(sets)f(this)g(v)-5
+(application's)i(completion)f(function.)3371 4385 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_sort_completion_ma)q(tche)q(s)390
+4495 y Ft(If)29 b(an)h(application)h(sets)f(this)g(v)-5
b(ariable)31 b(to)f(0,)h(Readline)f(will)g(not)g(sort)g(the)g(list)h
-(of)f(completions)390 518 y(\(whic)m(h)25 b(implies)f(that)i(it)f
+(of)f(completions)390 4604 y(\(whic)m(h)25 b(implies)f(that)i(it)f
(cannot)g(remo)m(v)m(e)h(an)m(y)f(duplicate)g(completions\).)40
-b(The)24 b(default)h(v)-5 b(alue)25 b(is)390 628 y(1,)32
+b(The)24 b(default)h(v)-5 b(alue)25 b(is)390 4714 y(1,)32
b(whic)m(h)f(means)g(that)h(Readline)g(will)f(sort)h(the)f(completions)
-h(and,)f(dep)s(ending)f(on)h(the)g(v)-5 b(alue)390 737
+h(and,)f(dep)s(ending)f(on)h(the)g(v)-5 b(alue)390 4823
y(of)31 b Fs(rl_ignore_completion_du)o(pli)o(cate)o(s)p
Ft(,)25 b(will)30 b(attempt)i(to)f(remo)m(v)m(e)h(duplicate)f(matc)m
-(hes.)3371 922 y([V)-8 b(ariable])-3598 b Fh(int)53 b
-(rl_completion_type)390 1031 y Ft(Set)35 b(to)h(a)f(c)m(haracter)i
+(hes.)3371 5011 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_completion_type)390 5121 y Ft(Set)35 b(to)h(a)f(c)m(haracter)i
(describing)e(the)g(t)m(yp)s(e)g(of)g(completion)i(Readline)e(is)g
-(curren)m(tly)h(attempt-)390 1141 y(ing;)f(see)f(the)g(description)f
+(curren)m(tly)h(attempt-)390 5230 y(ing;)f(see)f(the)g(description)f
(of)g Fs(rl_complete_internal\(\))28 b Ft(\(see)34 b(Section)g(2.6.2)h
-([Completion)390 1250 y(F)-8 b(unctions],)39 b(page)f(50\))f(for)g(the)
+([Completion)390 5340 y(F)-8 b(unctions],)39 b(page)f(51\))f(for)g(the)
g(list)g(of)g(c)m(haracters.)61 b(This)36 b(is)g(set)i(to)f(the)g
-(appropriate)f(v)-5 b(alue)390 1360 y(b)s(efore)31 b(an)m(y)h
-(application-sp)s(eci\014c)h(completion)g(function)f(is)f(called,)j
-(allo)m(wing)f(suc)m(h)e(functions)390 1469 y(to)g(presen)m(t)g(the)f
-(same)h(in)m(terface)h(as)e Fs(rl_complete\(\))p Ft(.)3371
-1654 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_invokin)q
-(g_ke)q(y)390 1763 y Ft(Set)41 b(to)g(the)g(\014nal)g(c)m(haracter)h
-(in)e(the)h(k)m(ey)g(sequence)h(that)f(in)m(v)m(ok)m(ed)h(one)f(of)g
-(the)g(completion)390 1873 y(functions)c(that)h(call)h
-Fs(rl_complete_internal\(\))p Ft(.)56 b(This)37 b(is)g(set)h(to)g(the)g
-(appropriate)f(v)-5 b(alue)390 1983 y(b)s(efore)30 b(an)m(y)h
-(application-sp)s(eci\014c)h(completion)f(function)f(is)h(called.)3371
-2167 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_inhibit_completion)390
-2276 y Ft(If)28 b(this)g(v)-5 b(ariable)29 b(is)f(non-zero,)i
+(appropriate)f(v)-5 b(alue)p eop end
+%%Page: 57 61
+TeXDict begin 57 60 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(57)390
+299 y(b)s(efore)31 b(an)m(y)h(application-sp)s(eci\014c)h(completion)g
+(function)f(is)f(called,)j(allo)m(wing)f(suc)m(h)e(functions)390
+408 y(to)g(presen)m(t)g(the)f(same)h(in)m(terface)h(as)e
+Fs(rl_complete\(\))p Ft(.)3371 593 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_completion_invokin)q(g_ke)q(y)390 702
+y Ft(Set)41 b(to)g(the)g(\014nal)g(c)m(haracter)h(in)e(the)h(k)m(ey)g
+(sequence)h(that)f(in)m(v)m(ok)m(ed)h(one)f(of)g(the)g(completion)390
+812 y(functions)c(that)h(call)h Fs(rl_complete_internal\(\))p
+Ft(.)56 b(This)37 b(is)g(set)h(to)g(the)g(appropriate)f(v)-5
+b(alue)390 922 y(b)s(efore)30 b(an)m(y)h(application-sp)s(eci\014c)h
+(completion)f(function)f(is)h(called.)3371 1106 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_inhibit_completion)390
+1215 y Ft(If)28 b(this)g(v)-5 b(ariable)29 b(is)f(non-zero,)i
(completion)f(is)f(inhibited.)40 b(The)28 b(completion)h(c)m(haracter)h
-(will)f(b)s(e)390 2386 y(inserted)h(as)h(an)m(y)g(other)f(b)s(ound)e
-(to)k Fs(self-insert)p Ft(.)150 2585 y Fi(2.6.4)63 b(A)40
-b(Short)i(Completion)g(Example)150 2732 y Ft(Here)30
+(will)f(b)s(e)390 1325 y(inserted)h(as)h(an)m(y)g(other)f(b)s(ound)e
+(to)k Fs(self-insert)p Ft(.)150 1524 y Fi(2.6.4)63 b(A)40
+b(Short)i(Completion)g(Example)150 1671 y Ft(Here)30
b(is)f(a)g(small)h(application)g(demonstrating)f(the)h(use)e(of)i(the)f
(GNU)h(Readline)f(library)-8 b(.)40 b(It)30 b(is)f(called)150
-2842 y Fs(fileman)p Ft(,)40 b(and)f(the)h(source)g(co)s(de)g(resides)f
+1781 y Fs(fileman)p Ft(,)40 b(and)f(the)h(source)g(co)s(de)g(resides)f
(in)g Fs(examples/fileman.c)p Ft(.)64 b(This)39 b(sample)h(application)
-150 2951 y(pro)m(vides)26 b(completion)i(of)e(command)g(names,)h(line)f
+150 1890 y(pro)m(vides)26 b(completion)i(of)e(command)g(names,)h(line)f
(editing)h(features,)h(and)d(access)j(to)f(the)f(history)g(list.)p
eop end
-%%Page: 57 61
-TeXDict begin 57 60 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(57)390
+%%Page: 58 62
+TeXDict begin 58 61 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(58)390
299 y Fe(/*)40 b(fileman.c)h(--)f(A)f(tiny)h(application)i(which)e
(demonstrates)i(how)e(to)g(use)g(the)508 386 y(GNU)g(Readline)h
(library.)80 b(This)40 b(application)i(interactively)g(allows)f(users)
@@ -10678,9 +10841,9 @@ y(int)e(com_cd)g(PARAMS\(\(char)i(*\)\);)390 4483 y(int)e(com_quit)h
(call)i(to)e(do)h(the)g(job.)g(*/)468 5181 y(char)h(*doc;)f(/*)g
(Documentation)i(for)e(this)g(function.)80 b(*/)390 5268
y(})39 b(COMMAND;)p eop end
-%%Page: 58 62
-TeXDict begin 58 61 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(58)390
+%%Page: 59 63
+TeXDict begin 59 62 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(59)390
386 y Fe(COMMAND)41 b(commands[])g(=)f({)468 473 y({)g("cd",)g(com_cd,)
h("Change)g(to)f(directory)h(DIR")f(},)468 560 y({)g("delete",)h
(com_delete,)h("Delete)f(FILE")f(},)468 648 y({)g("help",)h(com_help,)g
@@ -10716,9 +10879,9 @@ y(break;)625 5093 y(/*)g(Remove)h(leading)f(and)g(trailing)h
(whitespace)h(from)e(the)g(line.)743 5181 y(Then,)g(if)g(there)g(is)g
(anything)h(left,)g(add)e(it)h(to)g(the)g(history)h(list)743
5268 y(and)f(execute)h(it.)f(*/)p eop end
-%%Page: 59 63
-TeXDict begin 59 62 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(59)625
+%%Page: 60 64
+TeXDict begin 60 63 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(60)625
299 y Fe(s)40 b(=)f(stripwhite)j(\(line\);)625 473 y(if)e(\(*s\))704
560 y({)782 648 y(add_history)i(\(s\);)782 735 y(execute_line)g(\(s\);)
704 822 y(})625 996 y(free)e(\(line\);)547 1083 y(})468
@@ -10745,9 +10908,9 @@ y(if)e(\(!command\))547 3524 y({)625 3611 y(fprintf)h(\(stderr,)g
b(Return)41 b(a)e(NULL)h(pointer)h(if)f(NAME)g(isn't)g(a)g(command)g
(name.)h(*/)390 5006 y(COMMAND)g(*)390 5093 y(find_command)h(\(name\))
586 5181 y(char)e(*name;)390 5268 y({)p eop end
-%%Page: 60 64
-TeXDict begin 60 63 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(60)468
+%%Page: 61 65
+TeXDict begin 61 64 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(61)468
299 y Fe(register)41 b(int)f(i;)468 473 y(for)g(\(i)g(=)f(0;)h
(commands[i].name;)j(i++\))547 560 y(if)d(\(strcmp)g(\(name,)h
(commands[i].name\))i(==)d(0\))625 648 y(return)h(\(&commands[i]\);)468
@@ -10788,9 +10951,9 @@ b(We)40 b(can)g(use)f(the)h(entire)h(contents)g(of)f(rl_line_buffer)508
b(Return)40 b(the)g(array)h(of)e(matches,)508 5181 y(or)g(NULL)h(if)g
(there)h(aren't)f(any.)g(*/)390 5268 y(char)g(**)p eop
end
-%%Page: 61 65
-TeXDict begin 61 64 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(61)390
+%%Page: 62 66
+TeXDict begin 62 65 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(62)390
299 y Fe(fileman_completion)43 b(\(text,)e(start,)g(end\))586
386 y(const)f(char)h(*text;)586 473 y(int)f(start,)h(end;)390
560 y({)468 648 y(char)g(**matches;)468 822 y(matches)g(=)f(\(char)g
@@ -10829,9 +10992,9 @@ b(*/)390 4832 y(/*)903 b(FileMan)41 b(Commands)1060 b(*/)390
b(*/)390 5181 y(/*)40 b(String)g(to)g(pass)g(to)g(system)g(\(\).)80
b(This)40 b(is)f(for)h(the)g(LIST,)h(VIEW)f(and)g(RENAME)508
5268 y(commands.)h(*/)p eop end
-%%Page: 62 66
-TeXDict begin 62 65 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(62)390
+%%Page: 63 67
+TeXDict begin 63 66 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(63)390
299 y Fe(static)41 b(char)f(syscom[1024];)390 473 y(/*)g(List)g(the)g
(file\(s\))h(named)f(in)g(arg.)g(*/)390 560 y(com_list)h(\(arg\))586
648 y(char)f(*arg;)390 735 y({)468 822 y(if)g(\(!arg\))547
@@ -10859,9 +11022,9 @@ j(==)d(1\))f(?)h("")f(:)h("s",)782 5093 y(finfo.st_size,)782
5181 y(\(finfo.st_size)j(==)c(1\))h(?)g("")f(:)h("s"\);)468
5268 y(printf)h(\("Inode)g(Last)f(Change)h(at:)f(\045s",)g(ctime)g
(\(&finfo.st_ctime\)\);)p eop end
-%%Page: 63 67
-TeXDict begin 63 66 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(63)468
+%%Page: 64 68
+TeXDict begin 64 67 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(64)468
299 y Fe(printf)41 b(\(")236 b(Last)40 b(access)h(at:)f(\045s",)g
(ctime)g(\(&finfo.st_atime\)\);)468 386 y(printf)h(\(")157
b(Last)41 b(modified)g(at:)f(\045s",)g(ctime)g(\(&finfo.st_mtime\)\);)
@@ -10890,9 +11053,9 @@ b(Possibilties)42 b(are:\\n",)f(arg\);)625 3176 y(for)f(\(i)g(=)f(0;)h
4919 y(com_cd)h(\(arg\))586 5006 y(char)f(*arg;)390 5093
y({)468 5181 y(if)g(\(chdir)h(\(arg\))f(==)g(-1\))547
5268 y({)p eop end
-%%Page: 64 68
-TeXDict begin 64 67 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(64)625
+%%Page: 65 69
+TeXDict begin 65 68 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(65)625
299 y Fe(perror)41 b(\(arg\);)625 386 y(return)g(1;)547
473 y(})468 648 y(com_pwd)g(\(""\);)468 735 y(return)g(\(0\);)390
822 y(})390 996 y(/*)f(Print)g(out)g(the)g(current)h(working)g
@@ -10921,8 +11084,8 @@ y({)625 4658 y(fprintf)h(\(stderr,)g("\045s:)f(Argument)h
(required.\\n",)i(caller\);)625 4745 y(return)e(\(0\);)547
4832 y(})468 5006 y(return)g(\(1\);)390 5093 y(})p eop
end
-%%Page: 65 69
-TeXDict begin 65 68 bop 3659 -116 a Ft(65)150 299 y Fp(App)t(endix)52
+%%Page: 66 70
+TeXDict begin 66 69 bop 3659 -116 a Ft(66)150 299 y Fp(App)t(endix)52
b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359
502 y Ft(V)-8 b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390
635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fq(\015)e
@@ -11003,10 +11166,10 @@ b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g
5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27
b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s
(cumen)m(t)g(is)g(released)p eop end
-%%Page: 66 70
-TeXDict begin 66 69 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 67 71
+TeXDict begin 67 70 bop 150 -116 a Ft(App)s(endix)29
b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(66)330 299 y(under)26 b(this)i(License.)40 b(If)27
+b(67)330 299 y(under)26 b(this)i(License.)40 b(If)27
b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h
(de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408
y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5
@@ -11097,10 +11260,10 @@ b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m
b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330
5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199
5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end
-%%Page: 67 71
-TeXDict begin 67 70 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 68 72
+TeXDict begin 68 71 bop 150 -116 a Ft(App)s(endix)29
b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(67)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
+b(68)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
(the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h
(or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42
b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j
@@ -11190,10 +11353,10 @@ b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e
5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m
(ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8
b(,)p eop end
-%%Page: 68 72
-TeXDict begin 68 71 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 69 73
+TeXDict begin 69 72 bop 150 -116 a Ft(App)s(endix)29
b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(68)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
+b(69)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
(the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same)
h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original)
i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360
@@ -11272,10 +11435,10 @@ b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g
(designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5
b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p
eop end
-%%Page: 69 73
-TeXDict begin 69 72 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 70 74
+TeXDict begin 70 73 bop 150 -116 a Ft(App)s(endix)29
b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(69)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
+b(70)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8
b(ersion's)36 b(license)g(notice.)57 b(These)330 408
y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g
@@ -11360,10 +11523,10 @@ b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h
5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g
(other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330
5340 y(that)d(do)s(cumen)m(t.)p eop end
-%%Page: 70 74
-TeXDict begin 70 73 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 71 75
+TeXDict begin 71 74 bop 150 -116 a Ft(App)s(endix)29
b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(70)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
+b(71)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
(W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f
(its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep)
s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h
@@ -11448,10 +11611,10 @@ b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g
(reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f
(the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f
(an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end
-%%Page: 71 75
-TeXDict begin 71 74 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 72 76
+TeXDict begin 72 75 bop 150 -116 a Ft(App)s(endix)29
b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(71)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330
+b(72)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330
433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8
b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g
(the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34
@@ -11515,10 +11678,10 @@ f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g
g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g
(time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is)
330 4005 y(eligible)h(for)e(relicensing.)p eop end
-%%Page: 72 76
-TeXDict begin 72 75 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 73 77
+TeXDict begin 73 76 bop 150 -116 a Ft(App)s(endix)29
b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(72)150 299 y Fr(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
+b(73)150 299 y Fr(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
(for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Ft(T)-8 b(o)35
b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e)
i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150
@@ -11553,11 +11716,11 @@ y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g
b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s
(ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p
eop end
-%%Page: 73 77
-TeXDict begin 73 76 bop 150 -116 a Ft(Concept)31 b(Index)2927
-b(73)150 100 y Fp(Concept)52 b(Index)146 434 y Fr(A)150
+%%Page: 74 78
+TeXDict begin 74 77 bop 150 -116 a Ft(Concept)31 b(Index)2927
+b(74)150 100 y Fp(Concept)52 b(Index)146 434 y Fr(A)150
550 y Fb(application-sp)r(eci\014c)27 b(completion)f(functions)e
-Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(49)146 796 y
+Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(50)146 796 y
Fr(C)150 913 y Fb(command)26 b(editing)6 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(1)146 1159
@@ -11588,20 +11751,20 @@ b(readline)11 b Fa(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
b Fa(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)32 b Fb(2)p eop end
-%%Page: 74 78
-TeXDict begin 74 77 bop 3659 -116 a Ft(74)150 299 y Fp(F)-13
+%%Page: 75 79
+TeXDict begin 75 78 bop 3659 -116 a Ft(75)150 299 y Fp(F)-13
b(unction)52 b(and)h(V)-13 b(ariable)53 b(Index)p 156
740 41 6 v 150 864 a Fe(_rl_digit_p)10 b Fa(:)16 b(:)d(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(41)150
953 y Fe(_rl_digit_value)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)32 b Fb(41)150 1043 y Fe(_rl_lowercase_p)17
+(:)g(:)g(:)32 b Fb(42)150 1043 y Fe(_rl_lowercase_p)17
b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
b Fb(41)150 1132 y Fe(_rl_to_lower)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(41)150
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(42)150
1222 y Fe(_rl_to_upper)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(41)150 1309 y Fe(_rl_uppercase_p)17
@@ -11612,14 +11775,14 @@ b Fa(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)31 b Fb(22)150 1815 y Fe(accept-line)d(\(Newline)g(or)e(Return\))14
b Fa(:)g(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28
-b Fb(16)146 2111 y Fr(B)150 2234 y Fe(backward-char)h(\(C-b\))14
+b Fb(17)146 2111 y Fr(B)150 2234 y Fe(backward-char)h(\(C-b\))14
b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(16)150 2324
y Fe(backward-delete-char)i(\(Rubout\))24 b Fa(:)14 b(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(18)150 2413
y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))7 b Fa(:)15
b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)21 b
-Fb(19)150 2503 y Fe(backward-kill-word)30 b(\(M-DEL\))13
+Fb(20)150 2503 y Fe(backward-kill-word)30 b(\(M-DEL\))13
b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)27 b Fb(20)150 2593 y Fe(backward-word)i(\(M-b\))14
b Fa(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
@@ -11638,9 +11801,9 @@ y(blink-matc)n(hing-paren)6 b Fa(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)21 b Fb(5)150 3128 y Fe(bracketed-paste-begin)30
b(\(\))18 b Fa(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(18)146 3423 y Fr(C)150
+(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(19)146 3423 y Fr(C)150
3547 y Fe(call-last-kbd-macro)d(\(C-x)c(e\))17 b Fa(:)d(:)f(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(21)150
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(22)150
3636 y Fe(capitalize-word)d(\(M-c\))9 b Fa(:)14 b(:)f(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
23 b Fb(19)150 3726 y Fe(character-search)29 b(\(C-]\))6
@@ -11695,7 +11858,7 @@ Fe(,)h(...)f Fc(M--)p Fe(\))13 b Fa(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)28 b Fb(20)2025 1288 y(disable-completion)20 b Fa(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(6)2025
-1376 y Fe(do-uppercase-version)c(\(M-a,)d(M-b,)f(M-)p
+1376 y Fe(do-lowercase-version)c(\(M-A,)d(M-B,)f(M-)p
Fc(x)p Fe(,)h(...\))12 b Fa(:)i(:)27 b Fb(22)2025 1464
y Fe(downcase-word)h(\(M-l\))14 b Fa(:)g(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28
@@ -11725,7 +11888,7 @@ b Fb(6)2025 2548 y(enable-k)n(eypad)7 b Fa(:)12 b(:)h(:)g(:)g(:)h(:)f
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(7)2025
2636 y Fe(end-kbd-macro)28 b(\(C-x)f(\)\))16 b Fa(:)d(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)30 b Fb(21)2025 2724 y Fc(end-of-file)e Fe(\(usually)f(C-d\))d
+g(:)30 b Fb(22)2025 2724 y Fc(end-of-file)e Fe(\(usually)f(C-d\))d
Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)37 b Fb(18)2025 2812 y Fe(end-of-history)29
b(\(M->\))11 b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
@@ -11756,98 +11919,101 @@ b Fa(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)30 b Fb(17)2025 4353 y(history-size)22 b Fa(:)13
b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)37 b Fb(7)2025 4441 y Fe(history-substr-search-backward)32
-b(\(\))12 b Fa(:)i(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27
-b Fb(17)2025 4529 y Fe(history-substr-search-forward)32
-b(\(\))15 b Fa(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)29
-b Fb(17)2025 4616 y(horizon)n(tal-scroll-mo)r(de)10 b
-Fa(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(7)2021
-4867 y Fr(I)2025 4986 y Fb(input-meta)9 b Fa(:)j(:)h(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24
-b Fb(7)2025 5074 y Fe(insert-comment)29 b(\(M-#\))11
-b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(22)2025 5162
-y Fe(insert-completions)j(\(M-*\))18 b Fa(:)d(:)e(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33
+g(:)37 b Fb(7)2025 4441 y Fe(history-substring-search-backw)q(ard)32
+b(\(\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)36 b Fb(18)2025
+4529 y Fe(history-substring-search-forwa)q(rd)c(\(\))7
+b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(17)2025
+4616 y(horizon)n(tal-scroll-mo)r(de)10 b Fa(:)15 b(:)e(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)25 b Fb(7)2021 4867 y Fr(I)2025 4986 y Fb(input-meta)9
+b Fa(:)j(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)24 b Fb(7)2025 5074 y Fe(insert-comment)29
+b(\(M-#\))11 b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(23)2025
+5162 y Fe(insert-completions)j(\(M-*\))18 b Fa(:)d(:)e(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33
b Fb(21)2025 5249 y(isearc)n(h-terminators)9 b Fa(:)14
b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(7)p
eop end
-%%Page: 75 79
-TeXDict begin 75 78 bop 150 -116 a Ft(F)-8 b(unction)31
-b(and)f(V)-8 b(ariable)32 b(Index)2370 b(75)146 294 y
-Fr(K)150 426 y Fb(k)n(eymap)14 b Fa(:)e(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+%%Page: 76 80
+TeXDict begin 76 79 bop 150 -116 a Ft(F)-8 b(unction)31
+b(and)f(V)-8 b(ariable)32 b(Index)2370 b(76)146 294 y
+Fr(K)150 424 y Fb(k)n(eymap)14 b Fa(:)e(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)29
-b Fb(8)150 519 y Fe(kill-line)f(\(C-k\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g
+b Fb(8)150 516 y Fe(kill-line)f(\(C-k\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(19)150 611 y
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(19)150 607 y
Fe(kill-region)28 b(\(\))10 b Fa(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)24 b Fb(20)150 703 y Fe(kill-whole-line)29
+(:)f(:)g(:)g(:)g(:)24 b Fb(20)150 699 y Fe(kill-whole-line)29
b(\(\))16 b Fa(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31
-b Fb(19)150 791 y Fe(kill-word)d(\(M-d\))7 b Fa(:)14
+b Fb(20)150 786 y Fe(kill-word)d(\(M-d\))7 b Fa(:)14
b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
-b Fb(19)146 1136 y Fr(M)150 1268 y Fb(mark-mo)r(di\014ed-lines)c
+b Fb(20)146 1116 y Fr(M)150 1246 y Fb(mark-mo)r(di\014ed-lines)c
Fa(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(8)150
-1360 y(mark-symlink)n(ed-directories)14 b Fa(:)f(:)g(:)h(:)f(:)g(:)g(:)
+1338 y(mark-symlink)n(ed-directories)14 b Fa(:)f(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29
-b Fb(8)150 1453 y(matc)n(h-hidden-\014les)7 b Fa(:)12
+b Fb(8)150 1430 y(matc)n(h-hidden-\014les)7 b Fa(:)12
b(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
-b Fb(8)150 1545 y Fe(menu-complete)29 b(\(\))22 b Fa(:)13
+b Fb(8)150 1521 y Fe(menu-complete)29 b(\(\))22 b Fa(:)13
b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(21)150
-1638 y Fe(menu-complete-backward)31 b(\(\))16 b Fa(:)d(:)g(:)g(:)g(:)g
+1613 y Fe(menu-complete-backward)31 b(\(\))16 b Fa(:)d(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)30
-b Fb(21)150 1730 y(men)n(u-complete-displa)n(y-pre\014x)10
+b Fb(21)150 1705 y(men)n(u-complete-displa)n(y-pre\014x)10
b Fa(:)h(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)25 b Fb(8)150 1817 y(meta-\015ag)d Fa(:)13
+h(:)f(:)g(:)25 b Fb(8)150 1792 y(meta-\015ag)d Fa(:)13
b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)36 b Fb(7)146 2171 y Fr(N)150 2303 y Fe(next-history)28
+h(:)f(:)g(:)36 b Fb(7)146 2130 y Fr(N)150 2260 y Fe(next-history)28
b(\(C-n\))16 b Fa(:)f(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31
-b Fb(17)150 2387 y Fe(non-incremental-forward-)227 2474
-y(search-history)e(\(M-n\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
-b Fb(17)150 2561 y Fe(non-incremental-reverse-)227 2648
+b Fb(17)150 2352 y Fe(next-screen-line)e(\(\))14 b Fa(:)g(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)28 b Fb(16)150 2424 y Fe(non-incremental-forward-)227
+2512 y(search-history)h(\(M-n\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
+b Fb(17)150 2599 y Fe(non-incremental-reverse-)227 2686
y(search-history)29 b(\(M-p\))7 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
-b Fb(17)146 3012 y Fr(O)150 3145 y Fb(output-meta)d Fa(:)13
+b Fb(17)146 3035 y Fr(O)150 3165 y Fb(output-meta)d Fa(:)13
b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-34 b Fb(8)150 3232 y Fe(overwrite-mode)29 b(\(\))19 b
+34 b Fb(8)150 3252 y Fe(overwrite-mode)29 b(\(\))19 b
Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(19)146
-3577 y Fr(P)150 3709 y Fb(page-completions)8 b Fa(:)15
+3582 y Fr(P)150 3712 y Fb(page-completions)8 b Fa(:)15
b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
-b Fb(9)150 3802 y Fe(possible-completions)30 b(\(M-?\))13
+b Fb(9)150 3804 y Fe(possible-completions)30 b(\(M-?\))13
b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)27 b Fb(21)150 3894 y Fe(prefix-meta)h(\(ESC\))20
+h(:)27 b Fb(21)150 3896 y Fe(prefix-meta)h(\(ESC\))20
b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(22)150
3987 y Fe(previous-history)c(\(C-p\))6 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(16)150 4074 y Fe(print-last-kbd-macro)30 b(\(\))21
+b Fb(17)150 4079 y Fe(previous-screen-line)30 b(\(\))21
b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)35 b Fb(21)146 4429 y Fr(Q)150 4556
-y Fe(quoted-insert)29 b(\(C-q)d(or)g(C-v\))10 b Fa(:)k(:)f(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
-b Fb(18)2021 294 y Fr(R)2025 410 y Fe(re-read-init-file)29
+(:)h(:)f(:)g(:)g(:)35 b Fb(16)150 4166 y Fe(print-last-kbd-macro)30
+b(\(\))21 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(22)146 4506 y
+Fr(Q)150 4632 y Fe(quoted-insert)29 b(\(C-q)d(or)g(C-v\))10
+b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)24 b Fb(18)2021 294 y Fr(R)2025 410 y Fe(re-read-init-file)29
b(\(C-x)e(C-r\))17 b Fa(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)32 b Fb(22)2025 498 y Fe(readline)18
b Fa(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)33 b Fb(24)2025 585 y Fe(redraw-current-line)d(\(\))6
b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(16)2025 672 y Fe
+(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(17)2025 672 y Fe
(reverse-search-history)30 b(\(C-r\))8 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(17)2025
760 y(rev)n(ert-all-at-newline)10 b Fa(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g
@@ -11862,342 +12028,352 @@ b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(36)2025
1109 y Fe(rl_add_undo)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(36)2025 1197 y
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(37)2025 1197 y
Fe(rl_alphabetic)g Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)37 b Fb(40)2025 1284 y Fe(rl_begin_undo_group)7
+(:)g(:)g(:)37 b Fb(41)2025 1284 y Fe(rl_begin_undo_group)7
b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(36)2025
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(37)2025
1371 y Fe(rl_bind_key)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(33)2025 1459 y
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(34)2025 1459 y
Fe(rl_bind_key_if_unbound)16 b Fa(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31
b Fb(34)2025 1546 y Fe(rl_bind_key_if_unbound_in_map)16
b Fa(:)j(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30
b Fb(34)2025 1633 y Fe(rl_bind_key_in_map)10 b Fa(:)17
b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(33)2025 1721
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(34)2025 1721
y Fe(rl_bind_keyseq)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)34 b Fb(34)2025 1808 y Fe(rl_bind_keyseq_if_unbound)9
+h(:)f(:)34 b Fb(35)2025 1808 y Fe(rl_bind_keyseq_if_unbound)9
b Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)23 b Fb(34)2025 1896 y Fe(rl_bind_keyseq_if_unbound_in_m)q
+(:)g(:)h(:)23 b Fb(35)2025 1896 y Fe(rl_bind_keyseq_if_unbound_in_m)q
(ap)8 b Fa(:)19 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)23
-b Fb(34)2025 1983 y Fe(rl_bind_keyseq_in_map)h Fa(:)13
+b Fb(35)2025 1983 y Fe(rl_bind_keyseq_in_map)h Fa(:)13
b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)34 b Fb(34)2025 2070 y Fe
+(:)g(:)g(:)g(:)g(:)34 b Fb(35)2025 2070 y Fe
(rl_callback_handler_install)27 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(42)2025 2158 y
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(43)2025 2158 y
Fe(rl_callback_handler_remove)6 b Fa(:)19 b(:)13 b(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(42)2025
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(43)2025
2245 y Fe(rl_callback_read_char)j Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fb(42)2025 2332 y Fe(rl_callback_sigcleanup)16 b Fa(:)i(:)13
+b Fb(43)2025 2332 y Fe(rl_callback_sigcleanup)16 b Fa(:)i(:)13
b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)31 b Fb(42)2025 2420 y Fe(rl_cleanup_after_signal)14
-b Fa(:)k(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)28 b Fb(48)2025 2507 y Fe(rl_clear_history)15
+(:)g(:)g(:)31 b Fb(43)2025 2420 y Fe(rl_check_signals)15
+b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b
+Fb(49)2025 2507 y Fe(rl_cleanup_after_signal)14 b Fa(:)k(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)28 b Fb(49)2025 2595 y Fe(rl_clear_history)15
b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b
-Fb(42)2025 2595 y Fe(rl_clear_message)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g
+Fb(42)2025 2682 y Fe(rl_clear_message)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)29 b Fb(37)2025 2682 y Fe(rl_clear_pending_input)16
+g(:)g(:)g(:)h(:)f(:)29 b Fb(38)2025 2769 y Fe(rl_clear_pending_input)16
b Fa(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(39)2025 2769 y Fe(rl_clear_signals)15
+(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(40)2025 2857 y Fe(rl_clear_signals)15
b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b
-Fb(49)2025 2857 y Fe(rl_clear_visible_line)24 b Fa(:)13
+Fb(50)2025 2944 y Fe(rl_clear_visible_line)24 b Fa(:)13
b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)34 b Fb(37)2025 2944 y Fe(rl_complete)10
+(:)g(:)g(:)g(:)g(:)34 b Fb(38)2025 3031 y Fe(rl_complete)10
b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)25 b Fb(50)2025 3031 y Fe(rl_complete_internal)h
+g(:)25 b Fb(51)2025 3119 y Fe(rl_complete_internal)h
Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(50)2025 3119 y
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(51)2025 3206 y
Fe(rl_completion_matches)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fb(51)2025 3206 y Fe(rl_completion_mode)10 b Fa(:)17
+b Fb(52)2025 3293 y Fe(rl_completion_mode)10 b Fa(:)17
b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(51)2025 3293
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(51)2025 3381
y Fe(rl_copy_keymap)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)34 b Fb(33)2025 3381 y Fe(rl_copy_text)8 b Fa(:)15
+h(:)f(:)34 b Fb(33)2025 3468 y Fe(rl_copy_text)8 b Fa(:)15
b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22
-b Fb(38)2025 3468 y Fe(rl_crlf)g Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+b Fb(39)2025 3556 y Fe(rl_crlf)g Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fb(37)2025 3556 y Fe(rl_delete_text)23 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)
+b Fb(38)2025 3643 y Fe(rl_delete_text)23 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(38)2025 3643 y
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(39)2025 3730 y
Fe(rl_deprep_terminal)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24
-b Fb(39)2025 3730 y Fe(rl_ding)e Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+b Fb(40)2025 3818 y Fe(rl_ding)e Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fb(40)2025 3818 y Fe(rl_discard_keymap)12 b Fa(:)17
+b Fb(41)2025 3905 y Fe(rl_discard_keymap)12 b Fa(:)17
b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(33)2025
-3905 y Fe(rl_display_match_list)d Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+3992 y Fe(rl_display_match_list)d Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fb(40)2025 3992 y Fe(rl_do_undo)13 b Fa(:)i(:)e(:)g(:)g(:)h(:)f(:)g
+b Fb(41)2025 4080 y Fe(rl_do_undo)13 b Fa(:)i(:)e(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(36)2025
-4080 y Fe(rl_echo_signal_char)7 b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(37)2025
+4167 y Fe(rl_echo_signal_char)7 b Fa(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-22 b Fb(48)2025 4167 y Fe(rl_end_undo_group)12 b Fa(:)17
-b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(36)2025
-4255 y Fe(rl_execute_next)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)32 b Fb(39)2025 4342 y Fe(rl_expand_prompt)15
-b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 b
-Fb(38)2025 4429 y Fe(rl_extend_line_buffer)24 b Fa(:)13
+22 b Fb(49)2025 4255 y Fe(rl_empty_keymap)17 b Fa(:)g(:)c(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(33)2025 4342 y Fe
+(rl_end_undo_group)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+27 b Fb(37)2025 4429 y Fe(rl_execute_next)17 b Fa(:)g(:)c(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(40)2025 4517 y Fe(rl_expand_prompt)
+15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29
+b Fb(38)2025 4604 y Fe(rl_extend_line_buffer)24 b Fa(:)13
b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)34 b Fb(40)2025 4517 y Fe
+(:)g(:)g(:)g(:)g(:)34 b Fb(41)2025 4691 y Fe
(rl_filename_completion_functio)q(n)11 b Fa(:)19 b(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(51)2025
-4604 y Fe(rl_forced_update_display)11 b Fa(:)19 b(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(52)2025
+4779 y Fe(rl_forced_update_display)11 b Fa(:)19 b(:)13
b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)26 b Fb(37)2025 4691 y Fe(rl_free)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)
+(:)26 b Fb(37)2025 4866 y Fe(rl_free)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fb(40)2025 4779 y Fe(rl_free_keymap)23 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)
+b Fb(41)2025 4954 y Fe(rl_free_keymap)23 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(33)2025 4866 y
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(33)2025 5041 y
Fe(rl_free_line_state)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24
-b Fb(48)2025 4954 y Fe(rl_free_undo_list)12 b Fa(:)17
+b Fb(49)2025 5128 y Fe(rl_free_undo_list)12 b Fa(:)17
b(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(36)2025
-5041 y Fe(rl_function_dumper)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)24 b Fb(35)2025 5128 y Fe(rl_function_of_keyseq)g
-Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(35)p eop end
-%%Page: 76 80
-TeXDict begin 76 79 bop 150 -116 a Ft(F)-8 b(unction)31
-b(and)f(V)-8 b(ariable)32 b(Index)2370 b(76)150 260 y
-Fe(rl_funmap_names)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)32 b Fb(35)150 347 y Fe(rl_generic_bind)17 b Fa(:)g(:)c(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(35)150 434 y Fe(rl_get_keymap)25
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(37)p eop
+end
+%%Page: 77 81
+TeXDict begin 77 80 bop 150 -116 a Ft(F)-8 b(unction)31
+b(and)f(V)-8 b(ariable)32 b(Index)2370 b(77)150 260 y
+Fe(rl_function_dumper)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
+b Fb(36)150 347 y Fe(rl_function_of_keyseq)g Fa(:)13
+b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)33 b Fb(36)150 434 y Fe(rl_function_of_keyseq_len)9
+b Fa(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)23 b Fb(36)150 522 y Fe(rl_funmap_names)17
+b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
+b Fb(36)150 609 y Fe(rl_generic_bind)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(35)150 696 y Fe(rl_get_keymap)25
b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
-b Fb(33)150 522 y Fe(rl_get_keymap_by_name)24 b Fa(:)13
+b Fb(33)150 783 y Fe(rl_get_keymap_by_name)24 b Fa(:)13
b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)33 b Fb(33)150 609 y Fe(rl_get_keymap_name)10
+(:)g(:)g(:)h(:)f(:)33 b Fb(33)150 871 y Fe(rl_get_keymap_name)10
b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(33)150
-696 y Fe(rl_get_screen_size)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f
+958 y Fe(rl_get_screen_size)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)24 b Fb(49)150 783 y Fe(rl_get_termcap)f Fa(:)13
+g(:)24 b Fb(50)150 1045 y Fe(rl_get_termcap)f Fa(:)13
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
-b Fb(42)150 871 y Fe(rl_getc)22 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
-b Fb(39)150 958 y Fe(rl_initialize)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
+b Fb(42)150 1132 y Fe(rl_getc)22 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
+b Fb(39)150 1219 y Fe(rl_initialize)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(40)150 1045 y
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(41)150 1307 y
Fe(rl_insert_completions)24 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33
-b Fb(51)150 1132 y Fe(rl_insert_text)23 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f
+b Fb(51)150 1394 y Fe(rl_insert_text)23 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(38)150 1220 y Fe
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(39)150 1481 y Fe
(rl_invoking_keyseqs)7 b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
-b Fb(35)150 1307 y Fe(rl_invoking_keyseqs_in_map)7 b
+b Fb(36)150 1568 y Fe(rl_invoking_keyseqs_in_map)7 b
Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)21 b Fb(35)150 1394 y Fe(rl_kill_text)8 b Fa(:)16
+g(:)g(:)21 b Fb(36)150 1656 y Fe(rl_kill_text)8 b Fa(:)16
b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
-b Fb(38)150 1481 y Fe(rl_list_funmap_names)k Fa(:)13
+b Fb(39)150 1743 y Fe(rl_list_funmap_names)k Fa(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(35)150 1568 y Fe(rl_macro_bind)25
+(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(36)150 1830 y Fe(rl_macro_bind)25
b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
-b Fb(41)150 1656 y Fe(rl_macro_dumper)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g
+b Fb(42)150 1917 y Fe(rl_macro_dumper)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(41)150 1743 y Fe(rl_make_bare_keymap)7
+g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(42)150 2005 y Fe(rl_make_bare_keymap)7
b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(32)150
-1830 y Fe(rl_make_keymap)i Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(33)150
+2092 y Fe(rl_make_keymap)i Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)34 b Fb(33)150 1917 y Fe(rl_message)13
+(:)f(:)g(:)g(:)34 b Fb(33)150 2179 y Fe(rl_message)13
b Fa(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)27 b Fb(37)150 2005 y Fe(rl_modifying)8 b Fa(:)16
+(:)g(:)27 b Fb(38)150 2266 y Fe(rl_modifying)8 b Fa(:)16
b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
-b Fb(36)150 2092 y Fe(rl_named_function)12 b Fa(:)17
+b Fb(37)150 2354 y Fe(rl_named_function)12 b Fa(:)17
b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(35)150
-2179 y Fe(rl_on_new_line)d Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(36)150
+2441 y Fe(rl_on_new_line)d Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)34 b Fb(37)150 2266 y Fe(rl_on_new_line_with_prompt)7
+(:)f(:)g(:)g(:)34 b Fb(37)150 2528 y Fe(rl_on_new_line_with_prompt)7
b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)21 b Fb(37)150 2354 y Fe(rl_parse_and_bind)12
+(:)g(:)g(:)21 b Fb(38)150 2615 y Fe(rl_parse_and_bind)12
b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(35)150
-2441 y Fe(rl_pending_signal)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g
+2703 y Fe(rl_pending_signal)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)26 b Fb(48)150 2528 y Fe(rl_possible_completions)14
+g(:)h(:)26 b Fb(49)150 2790 y Fe(rl_possible_completions)14
b Fa(:)k(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)28 b Fb(50)150 2615 y Fe(rl_prep_terminal)15
+(:)g(:)h(:)f(:)g(:)28 b Fb(51)150 2877 y Fe(rl_prep_terminal)15
b Fa(:)h(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b
-Fb(39)150 2703 y Fe(rl_push_macro_input)7 b Fa(:)17 b(:)d(:)f(:)g(:)g
+Fb(40)150 2964 y Fe(rl_push_macro_input)7 b Fa(:)17 b(:)d(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)21 b Fb(38)150 2790 y Fe(rl_read_init_file)12
+g(:)h(:)f(:)21 b Fb(39)150 3052 y Fe(rl_read_init_file)12
b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(35)150
-2877 y Fe(rl_read_key)10 b Fa(:)16 b(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+3139 y Fe(rl_read_key)10 b Fa(:)16 b(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(38)150 2964 y
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(39)150 3226 y
Fe(rl_redisplay)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)22 b Fb(37)150 3052 y Fe(rl_replace_line)17
+g(:)g(:)h(:)f(:)g(:)22 b Fb(37)150 3313 y Fe(rl_replace_line)17
b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
-b Fb(40)150 3139 y Fe(rl_reset_after_signal)24 b Fa(:)13
+b Fb(41)150 3400 y Fe(rl_reset_after_signal)24 b Fa(:)13
b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)33 b Fb(48)150 3226 y Fe(rl_reset_line_state)7
+(:)g(:)g(:)h(:)f(:)33 b Fb(49)150 3488 y Fe(rl_reset_line_state)7
b Fa(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(37)150
-3313 y Fe(rl_reset_screen_size)26 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(38)150
+3575 y Fe(rl_reset_screen_size)26 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
-b Fb(49)150 3401 y Fe(rl_reset_terminal)12 b Fa(:)17
+b Fb(50)150 3662 y Fe(rl_reset_terminal)12 b Fa(:)17
b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(40)150
-3488 y Fe(rl_resize_terminal)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f
+3749 y Fe(rl_resize_terminal)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)24 b Fb(48)150 3575 y Fe(rl_restore_prompt)12 b Fa(:)17
+g(:)24 b Fb(49)150 3837 y Fe(rl_restore_prompt)12 b Fa(:)17
b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(38)150
-3662 y Fe(rl_restore_state)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+3924 y Fe(rl_restore_state)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)29 b Fb(40)150 3750 y Fe(rl_save_prompt)23 b
+g(:)g(:)29 b Fb(41)150 4011 y Fe(rl_save_prompt)23 b
Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
-b Fb(37)150 3837 y Fe(rl_save_state)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
+b Fb(38)150 4098 y Fe(rl_save_state)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(40)150 3924 y
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(40)150 4186 y
Fe(rl_set_key)13 b Fa(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(34)150 4011 y Fe
+g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(35)150 4273 y Fe
(rl_set_keyboard_input_timeout)17 b Fa(:)h(:)c(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(39)150 4099 y Fe(rl_set_keymap)25
+(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(40)150 4360 y Fe(rl_set_keymap)25
b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
-b Fb(33)150 4186 y Fe(rl_set_paren_blink_timeout)7 b
-Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)21 b Fb(41)150 4273 y Fe(rl_set_prompt)k Fa(:)13
-b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
-b Fb(38)150 4360 y Fe(rl_set_screen_size)10 b Fa(:)17
+b Fb(33)150 4447 y Fe(rl_set_keymap_name)10 b Fa(:)17
b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(49)150 4447
-y Fe(rl_set_signals)f Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)34 b Fb(49)150 4535 y Fe(rl_show_char)8 b Fa(:)16
-b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
-b Fb(37)150 4622 y Fe(rl_stuff_char)j Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(39)150 4709 y Fe
-(rl_tty_set_default_bindings)27 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(39)2025 260 y
-Fe(rl_tty_set_echoing)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24
-b Fb(39)2025 347 y Fe(rl_tty_unset_default_bindings)16
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(33)150 4535
+y Fe(rl_set_paren_blink_timeout)7 b Fa(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(42)150
+4622 y Fe(rl_set_prompt)k Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)37 b Fb(39)150 4709 y Fe(rl_set_screen_size)10
+b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(49)150
+4796 y Fe(rl_set_signals)f Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)34 b Fb(50)150 4884 y Fe(rl_show_char)8
+b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+22 b Fb(38)2025 260 y Fe(rl_stuff_char)j Fa(:)13 b(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(39)2025 347 y
+Fe(rl_tty_set_default_bindings)27 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(40)2025 435
+y Fe(rl_tty_set_echoing)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+24 b Fb(40)2025 523 y Fe(rl_tty_unset_default_bindings)16
b Fa(:)j(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30
-b Fb(39)2025 435 y Fe(rl_unbind_command_in_map)11 b Fa(:)19
+b Fb(40)2025 610 y Fe(rl_unbind_command_in_map)11 b Fa(:)19
b(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)26 b Fb(34)2025 523 y Fe(rl_unbind_function_in_map)9
+g(:)g(:)26 b Fb(35)2025 698 y Fe(rl_unbind_function_in_map)9
b Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)23 b Fb(34)2025 610 y Fe(rl_unbind_key)i Fa(:)13
+(:)g(:)h(:)23 b Fb(34)2025 786 y Fe(rl_unbind_key)i Fa(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(34)2025 698 y Fe(rl_unbind_key_in_map)26 b Fa(:)13
+b Fb(34)2025 873 y Fe(rl_unbind_key_in_map)26 b Fa(:)13
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(34)2025 786 y Fe
+(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(34)2025 961 y Fe
(rl_username_completion_functio)q(n)11 b Fa(:)19 b(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(51)2025
-873 y Fe(rl_variable_bind)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(52)2025
+1048 y Fe(rl_variable_bind)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)29 b Fb(41)2025 961 y Fe(rl_variable_dumper)10
+h(:)f(:)29 b Fb(42)2025 1136 y Fe(rl_variable_dumper)10
b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(41)2025
-1048 y Fe(rl_variable_value)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(42)2025
+1223 y Fe(rl_variable_value)12 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)27 b Fb(41)2021 1292 y Fr(S)2025 1410 y Fe(self-insert)h(\(a,)e
+g(:)g(:)27 b Fb(42)2021 1467 y Fr(S)2025 1585 y Fe(self-insert)h(\(a,)e
(b,)g(A,)g(1,)g(!,)g(...)q(\))15 b Fa(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)29 b Fb(18)2025 1497 y Fe(set-mark)e(\(C-@\))10
+(:)g(:)g(:)h(:)f(:)29 b Fb(19)2025 1672 y Fe(set-mark)e(\(C-@\))10
b Fa(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24
-b Fb(22)2025 1585 y(sho)n(w-all-if-am)n(biguous)e Fa(:)13
+b Fb(22)2025 1760 y(sho)n(w-all-if-am)n(biguous)e Fa(:)13
b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(9)2025 1672
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(9)2025 1847
y(sho)n(w-all-if-unmo)r(di\014ed)11 b Fa(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)27 b Fb(9)2025 1760 y(sho)n(w-mo)r(de-in-prompt)15
+(:)g(:)27 b Fb(9)2025 1935 y(sho)n(w-mo)r(de-in-prompt)15
b Fa(:)d(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 b Fb(9)2025
-1848 y(skip-completed-text)17 b Fa(:)11 b(:)j(:)f(:)g(:)g(:)g(:)g(:)g
+2023 y(skip-completed-text)17 b Fa(:)11 b(:)j(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)32 b Fb(9)2025 1935 y Fe(skip-csi-sequence)d(\(\))11
+g(:)g(:)g(:)32 b Fb(9)2025 2110 y Fe(skip-csi-sequence)d(\(\))11
b Fa(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(22)2025 2022
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(23)2025 2197
y Fe(start-kbd-macro)j(\(C-x)d(\(\))10 b Fa(:)k(:)f(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
-b Fb(21)2021 2266 y Fr(T)2025 2383 y Fe(tab-insert)j(\(M-TAB\))16
+b Fb(21)2021 2441 y Fr(T)2025 2558 y Fe(tab-insert)j(\(M-TAB\))16
b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(18)2025
-2471 y Fe(tilde-expand)d(\(M-~\))16 b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(19)2025
+2645 y Fe(tilde-expand)d(\(M-~\))16 b Fa(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)31 b Fb(22)2025 2558 y Fe(transpose-chars)e(\(C-t\))9
+(:)g(:)31 b Fb(22)2025 2733 y Fe(transpose-chars)e(\(C-t\))9
b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(19)2025 2645 y
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(19)2025 2820 y
Fe(transpose-words)29 b(\(M-t\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23
-b Fb(19)2021 2899 y Fr(U)2025 3016 y Fe(undo)j(\(C-_)h(or)f(C-x)g
+b Fb(19)2021 3074 y Fr(U)2025 3191 y Fe(undo)j(\(C-_)h(or)f(C-x)g
(C-u\))12 b Fa(:)i(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(22)2025
-3104 y Fe(universal-argument)i(\(\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g
+3279 y Fe(universal-argument)i(\(\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-23 b Fb(20)2025 3192 y Fe(unix-filename-rubout)30 b(\(\))21
+23 b Fb(21)2025 3366 y Fe(unix-filename-rubout)30 b(\(\))21
b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)35 b Fb(20)2025 3279 y Fe(unix-line-discard)29
+(:)g(:)g(:)h(:)f(:)35 b Fb(20)2025 3454 y Fe(unix-line-discard)29
b(\(C-u\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(19)2025 3367
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(20)2025 3541
y Fe(unix-word-rubout)29 b(\(C-w\))6 b Fa(:)14 b(:)g(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21
-b Fb(20)2025 3454 y Fe(upcase-word)28 b(\(M-u\))20 b
+b Fb(20)2025 3629 y Fe(upcase-word)28 b(\(M-u\))20 b
Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(19)2021
-3708 y Fr(V)2025 3825 y Fb(vi-cmd-mo)r(de-string)18 b
+3882 y Fr(V)2025 3999 y Fb(vi-cmd-mo)r(de-string)18 b
Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(10)2025
-3913 y Fe(vi-editing-mode)c(\(M-C-j\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)
+4087 y Fe(vi-editing-mode)c(\(M-C-j\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35
-b Fb(23)2025 4000 y(vi-ins-mo)r(de-string)8 b Fa(:)13
+b Fb(23)2025 4175 y(vi-ins-mo)r(de-string)8 b Fa(:)13
b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(10)2025
-4087 y(visible-stats)11 b Fa(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+4262 y(visible-stats)11 b Fa(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(10)2021 4329 y
-Fr(Y)2025 4447 y Fe(yank)g(\(C-y\))21 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(10)2021 4504 y
+Fr(Y)2025 4621 y Fe(yank)g(\(C-y\))21 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b
-Fb(20)2025 4534 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))10
+Fb(20)2025 4709 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))10
b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)24 b Fb(18)2025 4622 y Fe(yank-nth-arg)k(\(M-C-y\))11
+f(:)g(:)24 b Fb(18)2025 4796 y Fe(yank-nth-arg)k(\(M-C-y\))11
b Fa(:)k(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(17)2025 4709
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(18)2025 4884
y Fe(yank-pop)h(\(M-y\))10 b Fa(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)24 b Fb(20)p eop end
diff --git a/doc/readline_3.ps b/doc/readline_3.ps
index 5c74c3f..c7b925e 100644
--- a/doc/readline_3.ps
+++ b/doc/readline_3.ps
@@ -1,12 +1,12 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.3
-%%CreationDate: Wed Sep 7 17:16:26 2016
+%%CreationDate: Mon May 21 10:32:52 2018
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Courier
%%DocumentSuppliedResources: procset grops 1.22 3
-%%Pages: 16
+%%Pages: 17
%%PageOrder: Ascend
%%DocumentMedia: Default 612 792 0 () ()
%%Orientation: Portrait
@@ -344,8 +344,8 @@ le is read, and the k)108 616.8 R 1.459 -.15(ey b)-.1 H 1.159
(re).15 G(xample, placing)-2.65 E(M\255Control\255u: uni)144 698.4 Q
-.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(or)108 710.4 Q
(C\255Meta\255u: uni)144 722.4 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)
--.18 E(GNU Readline 7.0)72 768 Q(2016 February 28)123.74 E(1)193.45 E 0
-Cg EP
+-.18 E(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(1)190.955 E
+0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
@@ -441,7 +441,8 @@ tes should be used to indicate a macro de\214nition.)-.15 F .089
(Unquoted te)108 720 R .089(xt is assumed to be a function name.)-.15 F
.09(In the macro body)5.089 F 2.59(,t)-.65 G .09
(he backslash escapes described abo)-2.59 F -.15(ve)-.15 G
-(GNU Readline 7.0)72 768 Q(2016 February 28)123.74 E(2)193.45 E 0 Cg EP
+(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(2)190.955 E 0 Cg
+EP
%%Page: 3 3
%%BeginPageSetup
BP
@@ -517,13 +518,13 @@ F0 .062(The string that is inserted in)144 480 R F1(vi)2.562 E F0 .062
(command is e)2.562 F -.15(xe)-.15 G 2.562(cuted. This).15 F(com-)2.562
E(mand is bound to)144 492 Q F1(M\255#)2.5 E F0(in emacs mode and to)2.5
E F1(#)2.5 E F0(in vi command mode.)2.5 E F1
-(completion\255display\255width \(-1\))108 504 Q F0 1.453(The number of\
- screen columns used to display possible matches when performing comple\
-tion.)144 516 R .194(The v)144 528 R .193(alue is ignored if it is less\
- than 0 or greater than the terminal screen width.)-.25 F 2.693(Av)5.193
-G .193(alue of 0 will)-2.943 F
+(completion\255display\255width \(\2551\))108 504 Q F0 1.453(The number\
+ of screen columns used to display possible matches when performing com\
+pletion.)144 516 R .194(The v)144 528 R .193(alue is ignored if it is l\
+ess than 0 or greater than the terminal screen width.)-.25 F 2.693(Av)
+5.193 G .193(alue of 0 will)-2.943 F
(cause matches to be displayed one per line.)144 540 Q(The def)5 E
-(ault v)-.1 E(alue is -1.)-.25 E F1(completion\255ignor)108 552 Q
+(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 552 Q
(e\255case \(Off\))-.18 E F0(If set to)144 564 Q F1(On)2.5 E F0 2.5(,r)C
(eadline performs \214lename matching and completion in a case\255insen\
siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1
@@ -553,7 +554,8 @@ the v)5.783 F .782(alue of this)-.25 F -.25(va)144 708 S .237
.237(re simply listed)-2.737 F(on the terminal.)144 720 Q 2.5(An)5 G
-2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve v)-.25 H
(alue causes readline to ne)-.1 E -.15(ve)-.25 G 2.5(ra).15 G(sk.)-2.5 E
-(GNU Readline 7.0)72 768 Q(2016 February 28)123.74 E(3)193.45 E 0 Cg EP
+(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(3)190.955 E 0 Cg
+EP
%%Page: 4 4
%%BeginPageSetup
BP
@@ -584,190 +586,193 @@ F2(Of)3.003 E(f)-.18 E F0 .502(if the locale contains eight-bit char)
.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.642 E F0
(or)2.642 E F2(vi)2.642 E F0(.)A F1(editing\255mode)5.142 E F0
(can be set to either)144 240 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E
-F0(.)A F1(enable\255brack)108 252 Q(eted\255paste \(Off\))-.1 E F0 1.222
-(When set to)144 264 R F1(On)3.721 E F0 3.721(,r)C 1.221
+F0(.)A F1(emacs\255mode\255string \(@\))108 252 Q F0 .518(If the)144 264
+R F2(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F0 -.25(va)3.018 G
+.517(riable is enabled, this string is displayed immediately before the)
+.25 F .622
+(last line of the primary prompt when emacs editing mode is acti)144 276
+R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F
+.622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 288 S 3.34(yb)-.05 G
+.839(inding, so the standard set of meta- and control pre\214x)-3.34 F
+.839(es and backslash escape sequences is)-.15 F -.2(av)144 300 S 2.798
+(ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298
+(gin and end sequences of non-printing characters, which)-.15 F
+(can be used to embed a terminal control sequence into the mode string.)
+144 312 Q F1(enable\255brack)108 324 Q(eted\255paste \(Off\))-.1 E F0
+1.222(When set to)144 336 R F1(On)3.721 E F0 3.721(,r)C 1.221
(eadline will con\214gure the terminal in a w)-3.721 F 1.221
(ay that will enable it to insert each)-.1 F .353
-(paste into the editing b)144 276 R(uf)-.2 E .353(fer as a single strin\
+(paste into the editing b)144 348 R(uf)-.2 E .353(fer as a single strin\
g of characters, instead of treating each character as if)-.25 F .544
-(it had been read from the k)144 288 R -.15(ey)-.1 G 3.043(board. This)
+(it had been read from the k)144 360 R -.15(ey)-.1 G 3.043(board. This)
.15 F .543(can pre)3.043 F -.15(ve)-.25 G .543
(nt pasted characters from being interpreted as).15 F(editing commands.)
-144 300 Q F1(enable\255k)108 312 Q(eypad \(Off\))-.1 E F0 .892
-(When set to)144 324 R F1(On)3.393 E F0 3.393(,r)C .893
+144 372 Q F1(enable\255k)108 384 Q(eypad \(Off\))-.1 E F0 .892
+(When set to)144 396 R F1(On)3.393 E F0 3.393(,r)C .893
(eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G
.893(pad when it is called.).15 F .893(Some sys-)5.893 F
-(tems need this to enable the arro)144 336 Q 2.5(wk)-.25 G -.15(ey)-2.6
-G(s.).15 E F1(enable\255meta\255k)108 348 Q(ey \(On\))-.1 E F0 .64
-(When set to)144 360 R F1(On)3.14 E F0 3.14(,r)C .64
+(tems need this to enable the arro)144 408 Q 2.5(wk)-.25 G -.15(ey)-2.6
+G(s.).15 E F1(enable\255meta\255k)108 420 Q(ey \(On\))-.1 E F0 .64
+(When set to)144 432 R F1(On)3.14 E F0 3.14(,r)C .64
(eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64
(eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64
-(he terminal claims to support).15 F(when it is called.)144 372 Q
+(he terminal claims to support).15 F(when it is called.)144 444 Q
(On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H
2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1
-(expand\255tilde \(Off\))108 384 Q F0(If set to)144 396 Q F1(On)2.5 E F0
+(expand\255tilde \(Off\))108 456 Q F0(If set to)144 468 Q F1(On)2.5 E F0
2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w)
--.15 E(ord completion.)-.1 E F1(history\255pr)108 408 Q(eser)-.18 E -.1
-(ve)-.1 G(\255point \(Off\)).1 E F0 1.338(If set to)144 420 R F1(On)
+-.15 E(ord completion.)-.1 E F1(history\255pr)108 480 Q(eser)-.18 E -.1
+(ve)-.1 G(\255point \(Off\)).1 E F0 1.338(If set to)144 492 R F1(On)
3.838 E F0 3.838(,t)C 1.338(he history code attempts to place point at \
-the same location on each history line)-3.838 F(retrie)144 432 Q -.15
+the same location on each history line)-3.838 F(retrie)144 504 Q -.15
(ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G
(ious-history).15 E F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1
-(history\255size \(unset\))108 444 Q F0 .949
-(Set the maximum number of history entries sa)144 456 R -.15(ve)-.2 G
+(history\255size \(unset\))108 516 Q F0 .949
+(Set the maximum number of history entries sa)144 528 R -.15(ve)-.2 G
3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .948
(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 E .482
-(history entries are deleted and no ne)144 468 R 2.982(we)-.25 G .483
+(history entries are deleted and no ne)144 540 R 2.982(we)-.25 G .483
(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483(set to a v)
2.983 F .483(alue less than zero, the num-)-.25 F .356
-(ber of history entries is not limited.)144 480 R .356(By def)5.356 F
+(ber of history entries is not limited.)144 552 R .356(By def)5.356 F
.355(ault, the number of history entries is not limited.)-.1 F .355
-(If an)5.355 F 1.97(attempt is made to set)144 492 R F2(history\255size)
+(If an)5.355 F 1.97(attempt is made to set)144 564 R F2(history\255size)
4.47 E F0 1.97(to a non-numeric v)4.47 F 1.97
(alue, the maximum number of history)-.25 F(entries will be set to 500.)
-144 504 Q F1(horizontal\255scr)108 516 Q(oll\255mode \(Off\))-.18 E F0
-.449(When set to)144 528 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448
+144 576 Q F1(horizontal\255scr)108 588 Q(oll\255mode \(Off\))-.18 E F0
+.449(When set to)144 600 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448
(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448
(crolling the input horizontally on a)-2.948 F 1.194(single screen line\
when it becomes longer than the screen width rather than wrapping to a\
- ne)144 540 R(w)-.25 E(line.)144 552 Q F1(input\255meta \(Off\))108 564
-Q F0 .367(If set to)144 576 R F1(On)2.867 E F0 2.867(,r)C .367(eadline \
+ ne)144 612 R(w)-.25 E(line.)144 624 Q F1(input\255meta \(Off\))108 636
+Q F0 .367(If set to)144 648 R F1(On)2.867 E F0 2.867(,r)C .367(eadline \
will enable eight-bit input \(that is, it will not clear the eighth bit\
- in the char)-2.867 F(-)-.2 E .956(acters it reads\), re)144 588 R -.05
+ in the char)-2.867 F(-)-.2 E .956(acters it reads\), re)144 660 R -.05
(ga)-.15 G .956(rdless of what the terminal claims it can support.).05 F
.957(The name)5.956 F F1(meta\255\215ag)3.457 E F0 .957(is a)3.457 F
-(synon)144 600 Q .77(ym for this v)-.15 F 3.27(ariable. The)-.25 F(def)
+(synon)144 672 Q .77(ym for this v)-.15 F 3.27(ariable. The)-.25 F(def)
3.27 E .77(ault is)-.1 F F2(Of)3.27 E(f)-.18 E F0 3.27(,b)C .77
(ut readline will set it to)-3.47 F F2(On)3.27 E F0 .77
-(if the locale contains)3.27 F(eight-bit characters.)144 612 Q F1(isear)
-108 624 Q(ch\255terminators \(`)-.18 E(`C\255[ C\255J')-.63 E('\))-.63 E
+(if the locale contains)3.27 F(eight-bit characters.)144 684 Q F1(isear)
+108 696 Q(ch\255terminators \(`)-.18 E(`C\255[ C\255J')-.63 E('\))-.63 E
F0 .439(The string of characters that should terminate an incremental s\
-earch without subsequently e)144 636 R -.15(xe)-.15 G(cut-).15 E .935
-(ing the character as a command.)144 648 R .935(If this v)5.935 F .935
+earch without subsequently e)144 708 R -.15(xe)-.15 G(cut-).15 E .935
+(ing the character as a command.)144 720 R .935(If this v)5.935 F .935
(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.434(nav).15 G .934
-(alue, the characters)-3.684 F F2(ESC)3.434 E F0(and)144 660 Q F2
-(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke)
-108 672 S(ymap \(emacs\)).1 E F0 2.323(Set the current readline k)144
-684 R -.15(ey)-.1 G 4.823(map. The).15 F 2.323(set of le)4.823 F -.05
-(ga)-.15 G 4.823(lk).05 G -.15(ey)-4.923 G 2.323(map names is).15 F F2
-2.324(emacs, emacs-standar)4.823 F(d,)-.37 E .809
-(emacs-meta, emacs-ctlx, vi, vi-mo)144 696 R(ve)-.1 E 3.308(,v)-.1 G
-(i-command)-3.308 E F0 3.308(,a)C(nd)-3.308 E F2(vi-insert)3.308 E F0(.)
-.68 E F2(vi)5.808 E F0 .808(is equi)3.308 F -.25(va)-.25 G .808(lent to)
-.25 F F2(vi-command)3.308 E F0(;)A F2(emacs)144 708 Q F0 .697(is equi)
-3.196 F -.25(va)-.25 G .697(lent to).25 F F2(emacs-standar)3.197 E(d)
--.37 E F0 5.697(.T)C .697(he def)-5.697 F .697(ault v)-.1 F .697
-(alue is)-.25 F F2(emacs)3.197 E F0 5.697(.T).27 G .697(he v)-5.697 F
-.697(alue of)-.25 F F1(editing\255mode)3.197 E F0(also af)144 720 Q
-(fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E
-(GNU Readline 7.0)72 768 Q(2016 February 28)123.74 E(4)193.45 E 0 Cg EP
+(alue, the characters)-3.684 F F2(ESC)3.434 E F0(GNU Readline 7.0)72 768
+Q(2017 December 28)121.245 E(4)190.955 E 0 Cg EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
-(emacs\255mode\255string \(@\))108 84 Q F0 .051(This string is displaye\
-d immediately before the last line of the primary prompt when emacs edi\
-ting)144 96 R .292(mode is acti)144 108 R -.15(ve)-.25 G 5.292(.T).15 G
-.292(he v)-5.292 F .293(alue is e)-.25 F .293(xpanded lik)-.15 F 2.793
-(eak)-.1 G .593 -.15(ey b)-2.893 H .293
-(inding, so the standard set of meta- and control).15 F(pre\214x)144 120
-Q .602(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.101
-(ilable. Use).25 F .601(the \\1 and \\2 escapes to be)3.101 F .601
-(gin and end)-.15 F .019(sequences of non-printing characters, which ca\
-n be used to embed a terminal control sequence into)144 132 R
-(the mode string.)144 144 Q F1 -.1(ke)108 156 S(yseq\255timeout \(500\))
-.1 E F0 .368(Speci\214es the duration)144 168 R/F2 10/Times-Italic@0 SF
--.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E(and)144 84 Q/F1 10
+/Times-Italic@0 SF(C\255J)2.5 E F0
+(will terminate an incremental search.)2.5 E/F2 10/Times-Bold@0 SF -.1
+(ke)108 96 S(ymap \(emacs\)).1 E F0 2.323(Set the current readline k)144
+108 R -.15(ey)-.1 G 4.823(map. The).15 F 2.323(set of le)4.823 F -.05
+(ga)-.15 G 4.823(lk).05 G -.15(ey)-4.923 G 2.323(map names is).15 F F1
+2.324(emacs, emacs-standar)4.823 F(d,)-.37 E .809
+(emacs-meta, emacs-ctlx, vi, vi-mo)144 120 R(ve)-.1 E 3.308(,v)-.1 G
+(i-command)-3.308 E F0 3.308(,a)C(nd)-3.308 E F1(vi-insert)3.308 E F0(.)
+.68 E F1(vi)5.808 E F0 .808(is equi)3.308 F -.25(va)-.25 G .808(lent to)
+.25 F F1(vi-command)3.308 E F0(;)A F1(emacs)144 132 Q F0 .697(is equi)
+3.196 F -.25(va)-.25 G .697(lent to).25 F F1(emacs-standar)3.197 E(d)
+-.37 E F0 5.697(.T)C .697(he def)-5.697 F .697(ault v)-.1 F .697
+(alue is)-.25 F F1(emacs)3.197 E F0 5.697(.T).27 G .697(he v)-5.697 F
+.697(alue of)-.25 F F2(editing\255mode)3.197 E F0(also af)144 144 Q
+(fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F2 -.1(ke)
+108 156 S(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)
+144 168 R F1 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367
(ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s)
-.1 H(equence).15 E 1.356(\(one that can form a complete k)144 180 R
1.656 -.15(ey s)-.1 H 1.356(equence using the input read so f).15 F(ar)
-.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.356(an tak)-3.856 F 3.856(ea)
-.1 G(dditional)-3.856 E .32(input to complete a longer k)144 192 R .62
-.15(ey s)-.1 H 2.82(equence\). If).15 F .32(no input is recei)2.82 F
--.15(ve)-.25 G 2.82(dw).15 G .32(ithin the timeout,)-2.82 F F2 -.37(re)
+-.15(ve)-.25 G 2.82(dw).15 G .32(ithin the timeout,)-2.82 F F1 -.37(re)
2.82 G(adline).37 E F0(will)2.82 E .906(use the shorter b)144 204 R .907
(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407(equence. The).15 F -.25
(va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .907
-(alue of)-.25 F .05(1000 means that)144 216 R F2 -.37(re)2.55 G(adline)
+(alue of)-.25 F .05(1000 means that)144 216 R F1 -.37(re)2.55 G(adline)
.37 E F0 .05(will w)2.55 F .05(ait one second for additional input.)-.1
F .05(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051
(less than or equal to zero, or to a non-numeric v)144 228 R(alue,)-.25
-E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051
+E F1 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051
(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed)
-2.552 E(to decide which k)144 240 Q .3 -.15(ey s)-.1 H
-(equence to complete.).15 E F1(mark\255dir)108 252 Q(ectories \(On\))
--.18 E F0(If set to)144 264 Q F1(On)2.5 E F0 2.5(,c)C
+(equence to complete.).15 E F2(mark\255dir)108 252 Q(ectories \(On\))
+-.18 E F0(If set to)144 264 Q F2(On)2.5 E F0 2.5(,c)C
(ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.)
-.15 E F1(mark\255modi\214ed\255lines \(Off\))108 276 Q F0(If set to)144
-288 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b)
--.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F1
-(*)A F0(\).)A F1(mark\255symlink)108 300 Q(ed\255dir)-.1 E
-(ectories \(Off\))-.18 E F0 .175(If set to)144 312 R F1(On)2.675 E F0
+.15 E F2(mark\255modi\214ed\255lines \(Off\))108 276 Q F0(If set to)144
+288 Q F2(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b)
+-.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F2
+(*)A F0(\).)A F2(mark\255symlink)108 300 Q(ed\255dir)-.1 E
+(ectories \(Off\))-.18 E F0 .175(If set to)144 312 R F2(On)2.675 E F0
2.675(,c)C .175
(ompleted names which are symbolic links to directories ha)-2.675 F .475
-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 324
-Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1
+Q(alue of)-.25 E F2(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F2
(match\255hidden\255\214les \(On\))108 336 Q F0 .192(This v)144 348 R
-.192(ariable, when set to)-.25 F F1(On)2.692 E F0 2.692(,c)C .192
+.192(ariable, when set to)-.25 F F2(On)2.692 E F0 2.692(,c)C .192
(auses readline to match \214les whose names be)-2.692 F .193
(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457
(\214les\) when performing \214lename completion.)144 360 R .456
-(If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.)
+(If set to)5.456 F F2(Off)2.956 E F0 2.956(,t)C .456(he leading `.)
-2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F
-(user in the \214lename to be completed.)144 372 Q F1
+(user in the \214lename to be completed.)144 372 Q F2
(menu\255complete\255display\255pr)108 384 Q(e\214x \(Off\))-.18 E F0
-1.585(If set to)144 396 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\
+1.585(If set to)144 396 R F2(On)4.085 E F0 4.085(,m)C 1.585(enu complet\
ion displays the common pre\214x of the list of possible completions)
-4.085 F(\(which may be empty\) before c)144 408 Q
-(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 420 Q F0
-.507(If set to)144 432 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \
+(ycling through the list.)-.15 E F2(output\255meta \(Off\))108 420 Q F0
+.507(If set to)144 432 R F2(On)3.007 E F0 3.007(,r)C .507(eadline will \
display characters with the eighth bit set directly rather than as a me\
ta-)-3.007 F(pre\214x)144 444 Q .884(ed escape sequence.)-.15 F .884
-(The def)5.884 F .884(ault is)-.1 F F2(Of)3.384 E(f)-.18 E F0 3.384(,b)C
-.884(ut readline will set it to)-3.584 F F2(On)3.384 E F0 .885
-(if the locale contains)3.384 F(eight-bit characters.)144 456 Q F1
-(page\255completions \(On\))108 468 Q F0 .809(If set to)144 480 R F1(On)
-3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2(mor)
+(The def)5.884 F .884(ault is)-.1 F F1(Of)3.384 E(f)-.18 E F0 3.384(,b)C
+.884(ut readline will set it to)-3.584 F F1(On)3.384 E F0 .885
+(if the locale contains)3.384 F(eight-bit characters.)144 456 Q F2
+(page\255completions \(On\))108 468 Q F0 .809(If set to)144 480 R F2(On)
+3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F1(mor)
3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808
(ager to display a screenful of possible comple-)-3.308 F
-(tions at a time.)144 492 Q F1
+(tions at a time.)144 492 Q F2
(print\255completions\255horizontally \(Off\))108 504 Q F0 1.318
-(If set to)144 516 R F1(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\
+(If set to)144 516 R F2(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\
play completions with matches sorted horizontally in alphabetical)-3.818
F(order)144 528 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25
-E F1 -2.29 -.18(re v)108 540 T(ert\255all\255at\255newline \(Off\)).08 E
-F0 .699(If set to)144 552 R F1(On)3.199 E F0 3.199(,r)C .699
+E F2 -2.29 -.18(re v)108 540 T(ert\255all\255at\255newline \(Off\)).08 E
+F0 .699(If set to)144 552 R F2(On)3.199 E F0 3.199(,r)C .699
(eadline will undo all changes to history lines before returning when)
--3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 564 S
+-3.199 F F2(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 564 S
2.686(cuted. By).15 F(def)2.686 E .186
(ault, history lines may be modi\214ed and retain indi)-.1 F .186
-(vidual undo lists across calls to)-.25 F F1 -.18(re)144 576 S(adline)
-.18 E F0(.)A F1(sho)108 588 Q(w\255all\255if\255ambiguous \(Off\))-.1 E
+(vidual undo lists across calls to)-.25 F F2 -.18(re)144 576 S(adline)
+.18 E F0(.)A F2(sho)108 588 Q(w\255all\255if\255ambiguous \(Off\))-.1 E
F0 .304(This alters the def)144 600 R .304(ault beha)-.1 F .304
-(vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On)
+(vior of the completion functions.)-.2 F .304(If set to)5.304 F F2(On)
2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H
(ore).15 E 1.264(than one possible completion cause the matches to be l\
-isted immediately instead of ringing the)144 612 R(bell.)144 624 Q F1
+isted immediately instead of ringing the)144 612 R(bell.)144 624 Q F2
(sho)108 636 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346
(This alters the def)144 648 R 5.346(ault beha)-.1 F 5.345
(vior of the completion functions in a f)-.2 F 5.345(ashion similar to)
--.1 F F1(sho)144 660 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C
-4.19(fs)-6.69 G 1.691(et to)-4.19 F F1(On)4.191 E F0 4.191(,w)C 1.691
+-.1 F F2(sho)144 660 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C
+4.19(fs)-6.69 G 1.691(et to)-4.19 F F2(On)4.191 E F0 4.191(,w)C 1.691
(ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691
(ore than one possible completion).15 F 1.04(without an)144 672 R 3.54
(yp)-.15 G 1.039
(ossible partial completion \(the possible completions don')-3.54 F
3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\
-es to be listed immediately instead of ringing the bell.)144 684 Q F1
-(sho)108 696 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 .251
-(If set to)144 708 R F1(On)2.751 E F0 2.751(,a)C .252
-(dd a character to the be)-2.751 F .252
+es to be listed immediately instead of ringing the bell.)144 684 Q F2
+(sho)108 696 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021
+(If set to)144 708 R F2(On)3.521 E F0 3.521(,a)C 1.022
+(dd a string to the be)-3.521 F 1.022
(ginning of the prompt indicating the editing mode: emacs, vi)-.15 F
(command, or vi insertion.)144 720 Q(The mode strings are user)5 E
-(-settable.)-.2 E(GNU Readline 7.0)72 768 Q(2016 February 28)123.74 E(5)
-193.45 E 0 Cg EP
+(-settable \(e.g.,)-.2 E F1(emacs\255mode\255string)2.5 E F0(\).)A
+(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(5)190.955 E 0 Cg
+EP
%%Page: 6 6
%%BeginPageSetup
BP
@@ -784,33 +789,36 @@ F .046(enabled, readline does not)2.546 F 1.394(insert characters from \
the completion that match characters after point in the w)144 120 R
1.394(ord being com-)-.1 F(pleted, so portions of the w)144 132 Q
(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1
-(vi\255cmd\255mode\255string \(\(cmd\)\))108 144 Q F0 1.198(This string\
- is displayed immediately before the last line of the primary prompt wh\
-en vi editing)144 156 R .522(mode is acti)144 168 R .822 -.15(ve a)-.25
-H .522(nd in command mode.).15 F .522(The v)5.522 F .522(alue is e)-.25
-F .522(xpanded lik)-.15 F 3.022(eak)-.1 G .821 -.15(ey b)-3.122 H .521
-(inding, so the standard).15 F .869(set of meta- and control pre\214x)
-144 180 R .869(es and backslash escape sequences is a)-.15 F -.25(va)-.2
-G 3.37(ilable. Use).25 F .87(the \\1 and \\2)3.37 F .387(escapes to be)
-144 192 R .386(gin and end sequences of non-printing characters, which \
-can be used to embed a ter)-.15 F(-)-.2 E
-(minal control sequence into the mode string.)144 204 Q F1
-(vi\255ins\255mode\255string \(\(ins\)\))108 216 Q F0 1.198(This string\
- is displayed immediately before the last line of the primary prompt wh\
-en vi editing)144 228 R .783(mode is acti)144 240 R 1.083 -.15(ve a)-.25
-H .783(nd in insertion mode.).15 F .783(The v)5.783 F .783(alue is e)
--.25 F .783(xpanded lik)-.15 F 3.283(eak)-.1 G 1.083 -.15(ey b)-3.383 H
-.783(inding, so the standard).15 F .869
-(set of meta- and control pre\214x)144 252 R .869
-(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.37
-(ilable. Use).25 F .87(the \\1 and \\2)3.37 F .387(escapes to be)144 264
-R .386(gin and end sequences of non-printing characters, which can be u\
-sed to embed a ter)-.15 F(-)-.2 E
-(minal control sequence into the mode string.)144 276 Q F1
-(visible\255stats \(Off\))108 288 Q F0 .846(If set to)144 300 R F1(On)
-3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346
-(st)-.55 G .846(ype as reported by)-3.346 F/F2 10/Times-Italic@0 SF
-(stat)3.346 E F0 .846(\(2\) is appended to the \214lename)B
+(vi\255cmd\255mode\255string \(\(cmd\)\))108 144 Q F0 .517(If the)144
+156 R/F2 10/Times-Italic@0 SF(show\255mode\255in\255pr)3.017 E(ompt)-.45
+E F0 -.25(va)3.017 G .518
+(riable is enabled, this string is displayed immediately before the).25
+F .475(last line of the primary prompt when vi editing mode is acti)144
+168 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475(The v)
+5.475 F(alue)-.25 E 1.235(is e)144 180 R 1.235(xpanded lik)-.15 F 3.735
+(eak)-.1 G 1.535 -.15(ey b)-3.835 H 1.236
+(inding, so the standard set of meta- and control pre\214x).15 F 1.236
+(es and backslash)-.15 F .315(escape sequences is a)144 192 R -.25(va)
+-.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F
+.314(gin and end sequences of non-print-)-.15 F(ing characters, which c\
+an be used to embed a terminal control sequence into the mode string.)
+144 204 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 216 Q F0 .517
+(If the)144 228 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0
+-.25(va)3.017 G .518
+(riable is enabled, this string is displayed immediately before the).25
+F .186(last line of the primary prompt when vi editing mode is acti)144
+240 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v)
+5.186 F .186(alue is)-.25 F -.15(ex)144 252 S 1.929(panded lik).15 F
+4.429(eak)-.1 G 2.229 -.15(ey b)-4.529 H 1.929
+(inding, so the standard set of meta- and control pre\214x).15 F 1.93
+(es and backslash)-.15 F .315(escape sequences is a)144 264 R -.25(va)
+-.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F
+.314(gin and end sequences of non-print-)-.15 F(ing characters, which c\
+an be used to embed a terminal control sequence into the mode string.)
+144 276 Q F1(visible\255stats \(Off\))108 288 Q F0 .846(If set to)144
+300 R F1(On)3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')
+-3.346 F 3.346(st)-.55 G .846(ype as reported by)-3.346 F F2(stat)3.346
+E F0 .846(\(2\) is appended to the \214lename)B
(when listing possible completions.)144 312 Q F1(Conditional Constructs)
87 328.8 Q F0 .05(Readline implements a f)108 340.8 R .05(acility simil\
ar in spirit to the conditional compilation features of the C preproces\
@@ -820,13 +828,14 @@ sor)-.1 F .096(which allo)108 352.8 R .096(ws k)-.25 F .396 -.15(ey b)
(There are four parser)5.096 F(directi)108 364.8 Q -.15(ve)-.25 G 2.5
(su).15 G(sed.)-2.5 E F1($if)108 381.6 Q F0(The)144 381.6 Q F1($if)2.963
E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\
-he editing mode, the terminal being used,)-.25 F .477
-(or the application using readline.)144 393.6 R .477(The te)5.477 F .477
-(xt of the test e)-.15 F .477
-(xtends to the end of the line; no characters)-.15 F
-(are required to isolate it.)144 405.6 Q F1(mode)144 422.4 Q F0(The)180
-422.4 Q F1(mode=)3.712 E F0 1.212(form of the)3.712 F F1($if)3.711 E F0
-(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211
+he editing mode, the terminal being used,)-.25 F .961
+(or the application using readline.)144 393.6 R .961(The te)5.961 F .961
+(xt of the test, after an)-.15 F 3.462(yc)-.15 G .962
+(omparison operator)-3.462 F 3.462(,e)-.4 G .962(xtends to)-3.612 F(the\
+ end of the line; unless otherwise noted, no characters are required to\
+ isolate it.)144 405.6 Q F1(mode)144 422.4 Q F0(The)180 422.4 Q F1
+(mode=)3.712 E F0 1.212(form of the)3.712 F F1($if)3.711 E F0(directi)
+3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211
(sed to test whether readline is in emacs or vi)-3.711 F 3.065
(mode. This)180 434.4 R .565(may be used in conjunction with the)3.065 F
F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to)
@@ -843,773 +852,836 @@ E F0 .503(is tested ag)3.003 F .504(ainst the full name of the terminal\
and the portion of the terminal name)-.05 F(before the \214rst)180
511.2 Q F1<ad>2.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0
(to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.5 E F0
-2.5(,f).77 G(or instance.)-2.5 E F1(application)144 528 Q F0(The)180 540
-Q F1(application)3.003 E F0 .503
+2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 528 S(rsion).1 E F0(The)
+180 540 Q F1 -.1(ve)3.109 G(rsion).1 E F0 .608
+(test may be used to perform comparisons ag)3.109 F .608
+(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 552 Q F1 -.1
+(ve)3.928 G(rsion).1 E F0 -.15(ex)3.928 G 1.428
+(pands to the current readline v).15 F 3.928(ersion. The)-.15 F 1.429
+(set of comparison operators)3.929 F(includes)180 564 Q F1(=)2.606 E F0
+2.606(,\()C(and)-2.606 E F1(==)2.606 E F0(\),)A F1(!=)2.606 E F0(,)A F1
+(<=)2.606 E F0(,)A F1(>=)2.606 E F0(,)A F1(<)2.606 E F0 2.606(,a)C(nd)
+-2.606 E F1(>)2.606 E F0 5.106(.T)C .106(he v)-5.106 F .106
+(ersion number supplied on the right side)-.15 F 1.471
+(of the operator consists of a major v)180 576 R 1.471(ersion number)
+-.15 F 3.972(,a)-.4 G 3.972(no)-3.972 G 1.472
+(ptional decimal point, and an)-3.972 F .767(optional minor v)180 588 R
+.767(ersion \(e.g.,)-.15 F F1(7.1)3.267 E F0 .766(\). If the minor v)B
+.766(ersion is omitted, it is assumed to be)-.15 F F1(0)3.266 E F0(.)A
+1.755(The operator may be separated from the string)180 600 R F1 -.1(ve)
+4.255 G(rsion).1 E F0 1.756(and from the v)4.256 F 1.756(ersion number)
+-.15 F(ar)180 612 Q(gument by whitespace.)-.18 E F1(application)144
+628.8 Q F0(The)180 640.8 Q F1(application)3.003 E F0 .503
(construct is used to include application-speci\214c settings.)3.003 F
.503(Each program)5.503 F .114(using the readline library sets the)180
-552 R F2 .114(application name)2.614 F F0 2.614(,a)C .114
+652.8 R F2 .114(application name)2.614 F F0 2.614(,a)C .114
(nd an initialization \214le can test for a)-2.614 F .501(particular v)
-180 564 R 3.001(alue. This)-.25 F .501(could be used to bind k)3.001 F
+180 664.8 R 3.001(alue. This)-.25 F .501(could be used to bind k)3.001 F
.801 -.15(ey s)-.1 H .5(equences to functions useful for a spe-).15 F
-.396(ci\214c program.)180 576 R -.15(Fo)5.396 G 2.896(ri).15 G .396
+.396(ci\214c program.)180 676.8 R -.15(Fo)5.396 G 2.896(ri).15 G .396
(nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15
-(ey s)-.1 H .397(equence that quotes the).15 F(current or pre)180 588 Q
-(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 612 Q F0
-(Bash)2.5 E 2.5(#Q)180 624 S(uote the current or pre)-2.5 E(vious w)-.25
-E(ord)-.1 E("\\C-xq": "\\eb\\"\\ef\\"")180 636 Q F1($endif)180 648 Q
-($endif)108 664.8 Q F0(This command, as seen in the pre)144 664.8 Q
-(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)
-2.5 E F1($else)108 681.6 Q F0(Commands in this branch of the)144 681.6 Q
-F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)
--.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108 698.4 Q F0
-.357(This directi)144 710.4 R .657 -.15(ve t)-.25 H(ak).15 E .357
-(es a single \214lename as an ar)-.1 F .356
-(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F)
-144 722.4 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
--.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A
-(GNU Readline 7.0)72 768 Q(2016 February 28)123.74 E(6)193.45 E 0 Cg EP
+(ey s)-.1 H .397(equence that quotes the).15 F(current or pre)180 688.8
+Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 712.8 Q F0
+(Bash)2.5 E 2.5(#Q)180 724.8 S(uote the current or pre)-2.5 E(vious w)
+-.25 E(ord)-.1 E(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(6)
+190.955 E 0 Cg EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
-($include)144 84 Q/F2 10/Times-Italic@0 SF(/etc/inputr)5.833 E(c)-.37 E
-/F3 10.95/Times-Bold@0 SF(SEARCHING)72 100.8 Q F0 1.003(Readline pro)108
-112.8 R 1.003(vides commands for searching through the command history \
-for lines containing a speci\214ed)-.15 F 2.5(string. There)108 124.8 R
-(are tw)2.5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E(emental)
--.37 E F0(and)3.01 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 E .698
-(Incremental searches be)108 141.6 R .698
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E
+("\\C-xq": "\\eb\\"\\ef\\"")180 84 Q/F1 10/Times-Bold@0 SF($endif)180 96
+Q/F2 10/Times-Italic@0 SF(variable)144 112.8 Q F0(The)180 124.8 Q F2
+(variable)3.777 E F0 1.277(construct pro)3.777 F 1.276
+(vides simple equality tests for readline v)-.15 F 1.276(ariables and v)
+-.25 F(alues.)-.25 E .079(The permitted comparison operators are)180
+136.8 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2
+(!=)2.579 E F0 5.079(.T)C .079(he v)-5.079 F .08
+(ariable name must be sepa-)-.25 F .98(rated from the comparison operat\
+or by whitespace; the operator may be separated from)180 148.8 R .129
+(the v)180 160.8 R .129(alue on the right hand side by whitespace.)-.25
+F .13(Both string and boolean v)5.129 F .13(ariables may be)-.25 F
+(tested. Boolean v)180 172.8 Q(ariables must be tested ag)-.25 E
+(ainst the v)-.05 E(alues)-.25 E F2(on)2.5 E F0(and)2.5 E F2(of)2.5 E(f)
+-.18 E F0(.)A F1($endif)108 189.6 Q F0(This command, as seen in the pre)
+144 189.6 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0
+(command.)2.5 E F1($else)108 206.4 Q F0(Commands in this branch of the)
+144 206.4 Q F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E
+-.15(xe)-.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108
+223.2 Q F0 .357(This directi)144 235.2 R .657 -.15(ve t)-.25 H(ak).15 E
+.357(es a single \214lename as an ar)-.1 F .356
+(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F)
+144 247.2 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
+-.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1
+($include)144 271.2 Q F2(/etc/inputr)5.833 E(c)-.37 E/F3 10.95
+/Times-Bold@0 SF(SEARCHING)72 288 Q F0 1.003(Readline pro)108 300 R
+1.003(vides commands for searching through the command history for line\
+s containing a speci\214ed)-.15 F 2.5(string. There)108 312 R(are tw)2.5
+E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E(emental)-.37 E F0(and)
+3.01 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 E .698
+(Incremental searches be)108 328.8 R .698
(gin before the user has \214nished typing the search string.)-.15 F
.697(As each character of the)5.697 F .112
-(search string is typed, readline displays the ne)108 153.6 R .112
+(search string is typed, readline displays the ne)108 340.8 R .112
(xt entry from the history matching the string typed so f)-.15 F(ar)-.1
E 5.113(.A)-.55 G(n)-5.113 E .545
-(incremental search requires only as man)108 165.6 R 3.045(yc)-.15 G
+(incremental search requires only as man)108 352.8 R 3.045(yc)-.15 G
.544(haracters as needed to \214nd the desired history entry)-3.045 F
-5.544(.T)-.65 G 3.044(os)-6.344 G(earch)-3.044 E(backw)108 177.6 Q .18
+5.544(.T)-.65 G 3.044(os)-6.344 G(earch)-3.044 E(backw)108 364.8 Q .18
(ard in the history for a particular string, type)-.1 F F1(C\255r)2.681
E F0 5.181(.T)C(yping)-5.981 E F1(C\255s)2.681 E F0 .181(searches forw)
2.681 F .181(ard through the history)-.1 F(.)-.65 E .354
-(The characters present in the v)108 189.6 R .354(alue of the)-.25 F F1
+(The characters present in the v)108 376.8 R .354(alue of the)-.25 F F1
(isear)2.854 E(ch-terminators)-.18 E F0 -.25(va)2.854 G .354
(riable are used to terminate an incremen-).25 F .6(tal search.)108
-201.6 R .6(If that v)5.6 F .6(ariable has not been assigned a v)-.25 F
+388.8 R .6(If that v)5.6 F .6(ariable has not been assigned a v)-.25 F
.6(alue the)-.25 F F2(Escape)3.1 E F0(and)3.1 E F1(C\255J)3.1 E F0 .6
-(characters will terminate an)3.1 F .123(incremental search.)108 213.6 R
+(characters will terminate an)3.1 F .123(incremental search.)108 400.8 R
F1(C\255G)5.123 E F0 .123
(will abort an incremental search and restore the original line.)2.623 F
.122(When the search is)5.122 F(terminated, the history entry containin\
-g the search string becomes the current line.)108 225.6 Q 2.406 -.8
-(To \214)108 242.4 T .806
+g the search string becomes the current line.)108 412.8 Q 2.406 -.8
+(To \214)108 429.6 T .806
(nd other matching entries in the history list, type).8 F F1(C\255s)
3.306 E F0(or)3.306 E F1(C\255r)3.306 E F0 .806(as appropriate.)3.306 F
-.807(This will search back-)5.806 F -.1(wa)108 254.4 S 1.309(rd or forw)
+.807(This will search back-)5.806 F -.1(wa)108 441.6 S 1.309(rd or forw)
.1 F 1.309(ard in the history for the ne)-.1 F 1.309
(xt line matching the search string typed so f)-.15 F(ar)-.1 E 6.309(.A)
-.55 G 1.609 -.15(ny o)-6.309 H 1.308(ther k).15 F -.15(ey)-.1 G .317
(sequence bound to a readline command will terminate the search and e)
-108 266.4 R -.15(xe)-.15 G .318(cute that command.).15 F -.15(Fo)5.318 G
-2.818(ri).15 G(nstance,)-2.818 E 3.481(an)108 278.4 S -.25(ew)-3.481 G
+108 453.6 R -.15(xe)-.15 G .318(cute that command.).15 F -.15(Fo)5.318 G
+2.818(ri).15 G(nstance,)-2.818 E 3.481(an)108 465.6 S -.25(ew)-3.481 G
.981(line will terminate the search and accept the line, thereby e).25 F
-.15(xe)-.15 G .98(cuting the command from the history).15 F 3.061
-(list. A)108 290.4 R(mo)3.061 E -.15(ve)-.15 G .562
+(list. A)108 477.6 R(mo)3.061 E -.15(ve)-.15 G .562
(ment command will terminate the search, mak).15 F 3.062(et)-.1 G .562
(he last line found the current line, and be)-3.062 F(gin)-.15 E
-(editing.)108 302.4 Q .567(Non-incremental searches read the entire sea\
+(editing.)108 489.6 Q .567(Non-incremental searches read the entire sea\
rch string before starting to search for matching history lines.)108
-319.2 R(The search string may be typed by the user or be part of the co\
-ntents of the current line.)108 331.2 Q F3(EDITING COMMANDS)72 348 Q F0
-1.391(The follo)108 360 R 1.391
+506.4 R(The search string may be typed by the user or be part of the co\
+ntents of the current line.)108 518.4 Q F3(EDITING COMMANDS)72 535.2 Q
+F0 1.391(The follo)108 547.2 R 1.391
(wing is a list of the names of the commands and the def)-.25 F 1.391
(ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F
-3.892(ya)-.15 G(re)-3.892 E 2.5(bound. Command)108 372 R
+3.892(ya)-.15 G(re)-3.892 E 2.5(bound. Command)108 559.2 R
(names without an accompan)2.5 E(ying k)-.15 E .3 -.15(ey s)-.1 H
-(equence are unbound by def).15 E(ault.)-.1 E .055(In the follo)108
-388.8 R .055(wing descriptions,)-.25 F F2(point)2.555 E F0 .055
+(equence are unbound by def).15 E(ault.)-.1 E .055(In the follo)108 576
+R .055(wing descriptions,)-.25 F F2(point)2.555 E F0 .055
(refers to the current cursor position, and)2.555 F F2(mark)2.555 E F0
-.054(refers to a cursor position)2.554 F(sa)108 400.8 Q -.15(ve)-.2 G
-2.5(db).15 G 2.5(yt)-2.5 G(he)-2.5 E F1(set\255mark)2.5 E F0 2.5
+.054(refers to a cursor position)2.554 F(sa)108 588 Q -.15(ve)-.2 G 2.5
+(db).15 G 2.5(yt)-2.5 G(he)-2.5 E F1(set\255mark)2.5 E F0 2.5
(command. The)2.5 F(te)2.5 E
(xt between the point and mark is referred to as the)-.15 E F2 -.37(re)
-2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 417.6 Q(or Mo)-.25 E(ving)-.1
-E(beginning\255of\255line \(C\255a\))108 429.6 Q F0(Mo)144 441.6 Q .3
+2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 604.8 Q(or Mo)-.25 E(ving)-.1
+E(beginning\255of\255line \(C\255a\))108 616.8 Q F0(Mo)144 628.8 Q .3
-.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1
-(end\255of\255line \(C\255e\))108 453.6 Q F0(Mo)144 465.6 Q .3 -.15
+(end\255of\255line \(C\255e\))108 640.8 Q F0(Mo)144 652.8 Q .3 -.15
(ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108
-477.6 S(rward\255char \(C\255f\)).25 E F0(Mo)144 489.6 Q .3 -.15(ve f)
+664.8 S(rward\255char \(C\255f\)).25 E F0(Mo)144 676.8 Q .3 -.15(ve f)
-.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1
-(backward\255char \(C\255b\))108 501.6 Q F0(Mo)144 513.6 Q .3 -.15(ve b)
--.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 525.6 S(rward\255w)
-.25 E(ord \(M\255f\))-.1 E F0(Mo)144 537.6 Q .822 -.15(ve f)-.15 H(orw)
-.15 E .522(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W)
--.1 F .523(ords are composed of alphanumeric characters \(let-)-.8 F
-(ters and digits\).)144 549.6 Q F1(backward\255w)108 561.6 Q
-(ord \(M\255b\))-.1 E F0(Mo)144 573.6 Q 1.71 -.15(ve b)-.15 H 1.41
-(ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91
-(ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F
-(characters \(letters and digits\).)144 585.6 Q F1(clear\255scr)108
-597.6 Q(een \(C\255l\))-.18 E F0 .993(Clear the screen lea)144 609.6 R
-.993(ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993
-G .993(th an ar).4 F .993(gument, refresh the)-.18 F
-(current line without clearing the screen.)144 621.6 Q F1 -.18(re)108
-633.6 S(draw\255curr).18 E(ent\255line)-.18 E F0
-(Refresh the current line.)144 645.6 Q F1(Commands f)87 662.4 Q
-(or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108
-674.4 Q(n\))-.15 E F0 .365(Accept the line re)144 686.4 R -.05(ga)-.15 G
-.364(rdless of where the cursor is.).05 F .364
-(If this line is non-empty)5.364 F 2.864(,i)-.65 G 2.864(tm)-2.864 G
-.364(ay be added to the)-2.864 F .74
-(history list for future recall with)144 698.4 R F1(add_history\(\))3.24
-E F0 5.741(.I)C 3.241(ft)-5.741 G .741
-(he line is a modi\214ed history line, the history)-3.241 F
-(line is restored to its original state.)144 710.4 Q(GNU Readline 7.0)72
-768 Q(2016 February 28)123.74 E(7)193.45 E 0 Cg EP
+(backward\255char \(C\255b\))108 688.8 Q F0(Mo)144 700.8 Q .3 -.15(ve b)
+-.15 H(ack a character).15 E(.)-.55 E(GNU Readline 7.0)72 768 Q
+(2017 December 28)121.245 E(7)190.955 E 0 Cg EP
%%Page: 8 8
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
-(pr)108 84 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0
-(Fetch the pre)144 96 Q(vious command from the history list, mo)-.25 E
-(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 108 Q
-F0(Fetch the ne)144 120 Q(xt command from the history list, mo)-.15 E
+-.25(fo)108 84 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 96 Q
+.822 -.15(ve f)-.15 H(orw).15 E .522(ard to the end of the ne)-.1 F .523
+(xt w)-.15 F 3.023(ord. W)-.1 F .523
+(ords are composed of alphanumeric characters \(let-)-.8 F
+(ters and digits\).)144 108 Q F1(backward\255w)108 120 Q(ord \(M\255b\))
+-.1 E F0(Mo)144 132 Q 1.71 -.15(ve b)-.15 H 1.41
+(ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91
+(ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F
+(characters \(letters and digits\).)144 144 Q F1(pr)108 156 Q -.15(ev)
+-.18 G(ious\255scr).15 E(een\255line)-.18 E F0 .89(Attempt to mo)144 168
+R 1.19 -.15(ve p)-.15 H .89(oint to the same ph).15 F .891
+(ysical screen column on the pre)-.05 F .891(vious ph)-.25 F .891
+(ysical screen line.)-.05 F .87(This will not ha)144 180 R 1.17 -.15
+(ve t)-.2 H .87(he desired ef).15 F .87
+(fect if the current Readline line does not tak)-.25 F 3.37(eu)-.1 G
+3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 192 Q(ysical line or if\
+ point is not greater than the length of the prompt plus the screen wid\
+th.)-.05 E F1(next\255scr)108 204 Q(een\255line)-.18 E F0 .637
+(Attempt to mo)144 216 R .937 -.15(ve p)-.15 H .637(oint to the same ph)
+.15 F .638(ysical screen column on the ne)-.05 F .638(xt ph)-.15 F .638
+(ysical screen line. This)-.05 F .009(will not ha)144 228 R .309 -.15
+(ve t)-.2 H .009(he desired ef).15 F .009
+(fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G
+2.509(pm)-2.509 G .008(ore than one ph)-2.509 F(ysical)-.05 E .772(line\
+ or if the length of the current Readline line is not greater than the \
+length of the prompt plus)144 240 R(the screen width.)144 252 Q F1
+(clear\255scr)108 264 Q(een \(C\255l\))-.18 E F0 .993
+(Clear the screen lea)144 276 R .993
+(ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G
+.993(th an ar).4 F .993(gument, refresh the)-.18 F
+(current line without clearing the screen.)144 288 Q F1 -.18(re)108 300
+S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144
+312 Q F1(Commands f)87 328.8 Q(or Manipulating the History)-.25 E
+(accept\255line \(Newline, Retur)108 340.8 Q(n\))-.15 E F0 .364
+(Accept the line re)144 352.8 R -.05(ga)-.15 G .364
+(rdless of where the cursor is.).05 F .364(If this line is non-empty)
+5.364 F 2.864(,i)-.65 G 2.864(tm)-2.864 G .365(ay be added to the)-2.864
+F .741(history list for future recall with)144 364.8 R F1
+(add_history\(\))3.241 E F0 5.741(.I)C 3.241(ft)-5.741 G .74
+(he line is a modi\214ed history line, the history)-3.241 F
+(line is restored to its original state.)144 376.8 Q F1(pr)108 388.8 Q
+-.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144
+400.8 Q(vious command from the history list, mo)-.25 E
+(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 412.8 Q
+F0(Fetch the ne)144 424.8 Q(xt command from the history list, mo)-.15 E
(ving forw)-.15 E(ard in the list.)-.1 E F1
-(beginning\255of\255history \(M\255<\))108 132 Q F0(Mo)144 144 Q .3 -.15
-(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.)-.65 E
-F1(end\255of\255history \(M\255>\))108 156 Q F0(Mo)144 168 Q .3 -.15
-(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5(,i)-.65
-G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18(re v)108
-180 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 1.471
-(Search backw)144 192 R 1.471(ard starting at the current line and mo)
--.1 F 1.47(ving `up' through the history as necessary)-.15 F(.)-.65 E
-(This is an incremental search.)144 204 Q F1 -.25(fo)108 216 S
-(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131
-(Search forw)144 228 R 1.131(ard starting at the current line and mo)-.1
-F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary)-.25
-F(.)-.65 E(This is an incremental search.)144 240 Q F1(non\255incr)108
-252 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H(rse\255sear).15 E
-(ch\255history \(M\255p\))-.18 E F0 .165(Search backw)144 264 R .164(ar\
-d through the history starting at the current line using a non-incremen\
-tal search for)-.1 F 2.5(as)144 276 S(tring supplied by the user)-2.5 E
-(.)-.55 E F1(non\255incr)108 288 Q(emental\255f)-.18 E(orward\255sear)
--.25 E(ch\255history \(M\255n\))-.18 E F0 1.353(Search forw)144 300 R
-1.354(ard through the history using a non-incremental search for a stri\
-ng supplied by the)-.1 F(user)144 312 Q(.)-.55 E F1(history\255sear)108
-324 Q(ch\255backward)-.18 E F0 .951(Search backw)144 336 R .951(ard thr\
-ough the history for the string of characters between the start of the \
-current)-.1 F .12(line and the current cursor position \(the)144 348 R
-/F2 10/Times-Italic@0 SF(point)2.62 E F0 2.62(\). The)B .12
+(beginning\255of\255history \(M\255<\))108 436.8 Q F0(Mo)144 448.8 Q .3
+-.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.)
+-.65 E F1(end\255of\255history \(M\255>\))108 460.8 Q F0(Mo)144 472.8 Q
+.3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5
+(,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18
+(re v)108 484.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0
+1.47(Search backw)144 496.8 R 1.471
+(ard starting at the current line and mo)-.1 F 1.471
+(ving `up' through the history as necessary)-.15 F(.)-.65 E
+(This is an incremental search.)144 508.8 Q F1 -.25(fo)108 520.8 S
+(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132
+(Search forw)144 532.8 R 1.132(ard starting at the current line and mo)
+-.1 F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary)
+-.25 F(.)-.65 E(This is an incremental search.)144 544.8 Q F1
+(non\255incr)108 556.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H
+(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .164(Search backw)
+144 568.8 R .164(ard through the history starting at the current line u\
+sing a non-incremental search for)-.1 F 2.5(as)144 580.8 S
+(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 592.8 Q
+(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18
+E F0 1.354(Search forw)144 604.8 R 1.354(ard through the history using \
+a non-incremental search for a string supplied by the)-.1 F(user)144
+616.8 Q(.)-.55 E F1(history\255sear)108 628.8 Q(ch\255backward)-.18 E F0
+.95(Search backw)144 640.8 R .951(ard through the history for the strin\
+g of characters between the start of the current)-.1 F .12
+(line and the current cursor position \(the)144 652.8 R/F2 10
+/Times-Italic@0 SF(point)2.62 E F0 2.62(\). The)B .12
(search string must match at the be)2.62 F .12(ginning of a)-.15 F
-(history line.)144 360 Q(This is a non-incremental search.)5 E F1
-(history\255sear)108 372 Q(ch\255f)-.18 E(orward)-.25 E F0 .249
-(Search forw)144 384 R .249(ard through the history for the string of c\
-haracters between the start of the current line)-.1 F .035
-(and the point.)144 396 R .035(The search string must match at the be)
-5.035 F .036(ginning of a history line.)-.15 F .036
-(This is a non-incre-)5.036 F(mental search.)144 408 Q F1
-(history\255substring\255sear)108 420 Q(ch\255backward)-.18 E F0 .951
-(Search backw)144 432 R .951(ard through the history for the string of \
-characters between the start of the current)-.1 F .007
-(line and the current cursor position \(the)144 444 R F2(point)2.507 E
-F0 2.507(\). The)B .007(search string may match an)2.507 F .007
-(ywhere in a history)-.15 F 2.5(line. This)144 456 R
-(is a non-incremental search.)2.5 E F1(history\255substring\255sear)108
-468 Q(ch\255f)-.18 E(orward)-.25 E F0 .249(Search forw)144 480 R .249(a\
-rd through the history for the string of characters between the start o\
-f the current line)-.1 F .318(and the point.)144 492 R .319
-(The search string may match an)5.318 F .319(ywhere in a history line.)
--.15 F .319(This is a non-incremental)5.319 F(search.)144 504 Q F1
-(yank\255nth\255ar)108 516 Q 2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622
-(Insert the \214rst ar)144 528 R .622(gument to the pre)-.18 F .622
-(vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F
-.622(vious line\))-.25 F .794(at point.)144 540 R -.4(Wi)5.794 G .794
-(th an ar).4 F(gument)-.18 E F2(n)3.294 E F0 3.294(,i).24 G .794
-(nsert the)-3.294 F F2(n)3.294 E F0 .794(th w)B .794(ord from the pre)
--.1 F .794(vious command \(the w)-.25 F .795(ords in the)-.1 F(pre)144
-552 Q .292(vious command be)-.25 F .292(gin with w)-.15 F .291(ord 0\).)
--.1 F 2.791(An)5.291 G -2.25 -.15(eg a)-2.791 H(ti).15 E .591 -.15(ve a)
--.25 H -.18(rg).15 G .291(ument inserts the).18 F F2(n)2.791 E F0 .291
-(th w)B .291(ord from the end of)-.1 F .281(the pre)144 564 R .281
-(vious command.)-.25 F .281(Once the ar)5.281 F(gument)-.18 E F2(n)2.781
-E F0 .281(is computed, the ar)2.781 F .281(gument is e)-.18 F .282
-(xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 576 Q
-(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 588 Q
-2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.308
-(Insert the last ar)144 600 R 1.308(gument to the pre)-.18 F 1.307
-(vious command \(the last w)-.25 F 1.307(ord of the pre)-.1 F 1.307
-(vious history entry\).)-.25 F -.4(Wi)144 612 S .203(th a numeric ar).4
-F .203(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e)
--.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.204(.S)C(uccessi)-5.204
-E .504 -.15(ve c)-.25 H .204(alls to).15 F F1(yank\255last\255ar)2.704 E
-(g)-.1 E F0(mo)144 624 Q .807 -.15(ve b)-.15 H .507
+(history line.)144 664.8 Q(This is a non-incremental search.)5 E F1
+(history\255sear)108 676.8 Q(ch\255f)-.18 E(orward)-.25 E F0 .248
+(Search forw)144 688.8 R .249(ard through the history for the string of\
+ characters between the start of the current line)-.1 F .036
+(and the point.)144 700.8 R .036(The search string must match at the be)
+5.036 F .035(ginning of a history line.)-.15 F .035
+(This is a non-incre-)5.035 F(mental search.)144 712.8 Q
+(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(8)190.955 E 0 Cg
+EP
+%%Page: 9 9
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+(history\255substring\255sear)108 84 Q(ch\255backward)-.18 E F0 .95
+(Search backw)144 96 R .951(ard through the history for the string of c\
+haracters between the start of the current)-.1 F .007
+(line and the current cursor position \(the)144 108 R/F2 10
+/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B .007
+(search string may match an)2.507 F .006(ywhere in a history)-.15 F 2.5
+(line. This)144 120 R(is a non-incremental search.)2.5 E F1
+(history\255substring\255sear)108 132 Q(ch\255f)-.18 E(orward)-.25 E F0
+.248(Search forw)144 144 R .249(ard through the history for the string \
+of characters between the start of the current line)-.1 F .319
+(and the point.)144 156 R .319(The search string may match an)5.319 F
+.319(ywhere in a history line.)-.15 F .318(This is a non-incremental)
+5.318 F(search.)144 168 Q F1(yank\255nth\255ar)108 180 Q 2.5(g\()-.1 G
+<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 192 R .622
+(gument to the pre)-.18 F .622(vious command \(usually the second w)-.25
+F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .795(at point.)144
+204 R -.4(Wi)5.795 G .794(th an ar).4 F(gument)-.18 E F2(n)3.294 E F0
+3.294(,i).24 G .794(nsert the)-3.294 F F2(n)3.294 E F0 .794(th w)B .794
+(ord from the pre)-.1 F .794(vious command \(the w)-.25 F .794
+(ords in the)-.1 F(pre)144 216 Q .291(vious command be)-.25 F .291
+(gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a)
+-2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291
+(ument inserts the).18 F F2(n)2.791 E F0 .291(th w)B .292
+(ord from the end of)-.1 F .282(the pre)144 228 R .282(vious command.)
+-.25 F .282(Once the ar)5.282 F(gument)-.18 E F2(n)2.781 E F0 .281
+(is computed, the ar)2.781 F .281(gument is e)-.18 F .281
+(xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 240 Q
+(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 252 Q
+2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307
+(Insert the last ar)144 264 R 1.307(gument to the pre)-.18 F 1.307
+(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308
+(vious history entry\).)-.25 F -.4(Wi)144 276 S .204(th a numeric ar).4
+F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e)
+-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi)-5.203
+E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar)2.703 E
+(g)-.1 E F0(mo)144 288 Q .806 -.15(ve b)-.15 H .507
(ack through the history list, inserting the last w).15 F .507
(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E
-1.396(to the \214rst call\) of each line in turn.)144 636 R(An)6.396 E
-3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.397
-(gument supplied to these successi)-.18 F 1.697 -.15(ve c)-.25 H(alls)
-.15 E .492(determines the direction to mo)144 648 R .792 -.15(ve t)-.15
-H .492(hrough the history).15 F 5.491(.A)-.65 G(ne)-2.5 E -.05(ga)-.15 G
-(ti).05 E .791 -.15(ve a)-.25 H -.18(rg).15 G .491
+1.397(to the \214rst call\) of each line in turn.)144 300 R(An)6.396 E
+3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.396
+(gument supplied to these successi)-.18 F 1.696 -.15(ve c)-.25 H(alls)
+.15 E .491(determines the direction to mo)144 312 R .791 -.15(ve t)-.15
+H .491(hrough the history).15 F 5.492(.A)-.65 G(ne)-2.5 E -.05(ga)-.15 G
+(ti).05 E .792 -.15(ve a)-.25 H -.18(rg).15 G .492
(ument switches the direction).18 F .494
-(through the history \(back or forw)144 660 R 2.994(ard\). The)-.1 F
+(through the history \(back or forw)144 324 R 2.994(ard\). The)-.1 F
.494(history e)2.994 F .494(xpansion f)-.15 F .494
-(acilities are used to e)-.1 F .494(xtract the last)-.15 F(ar)144 672 Q
+(acilities are used to e)-.1 F .494(xtract the last)-.15 F(ar)144 336 Q
(gument, as if the "!$" history e)-.18 E(xpansion had been speci\214ed.)
--.15 E F1(Commands f)87 688.8 Q(or Changing T)-.25 E(ext)-.92 E F2
-(end\255of\255\214le)108 700.8 Q F1(\(usually C\255d\))2.5 E F0 .799
-(The character indicating end-of-\214le as set, for e)144 712.8 R .799
-(xample, by)-.15 F/F3 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.298
-(ft)-5.799 G .798(his character is read when)-3.298 F .592
-(there are no characters on the line, and point is at the be)144 724.8 R
-.593(ginning of the line, Readline interprets it)-.15 F
-(GNU Readline 7.0)72 768 Q(2016 February 28)123.74 E(8)193.45 E 0 Cg EP
-%%Page: 9 9
+-.15 E F1(Commands f)87 352.8 Q(or Changing T)-.25 E(ext)-.92 E F2
+(end\255of\255\214le)108 364.8 Q F1(\(usually C\255d\))2.5 E F0 .798
+(The character indicating end-of-\214le as set, for e)144 376.8 R .799
+(xample, by)-.15 F/F3 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.299
+(ft)-5.799 G .799(his character is read when)-3.299 F .592
+(there are no characters on the line, and point is at the be)144 388.8 R
+.592(ginning of the line, Readline interprets it)-.15 F
+(as the end of input and returns)144 400.8 Q/F4 9/Times-Bold@0 SF(EOF)
+2.5 E/F5 9/Times-Roman@0 SF(.)A F1(delete\255char \(C\255d\))108 412.8 Q
+F0 .441(Delete the character at point.)144 424.8 R .442
+(If this function is bound to the same character as the tty)5.441 F F1
+(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 436.8 Q 2.5(,a)-.4 G(s)
+-2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H
+(or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\))
+108 448.8 Q F0 .553(Delete the character behind the cursor)144 460.8 R
+5.553(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553
+(umeric ar)-3.053 F .552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552
+(he deleted te).15 F .552(xt on)-.15 F(the kill ring.)144 472.8 Q F1
+-.25(fo)108 484.8 S(rward\255backward\255delete\255char).25 E F0 .473
+(Delete the character under the cursor)144 496.8 R 2.973(,u)-.4 G .474
+(nless the cursor is at the end of the line, in which case the)-2.973 F
+(character behind the cursor is deleted.)144 508.8 Q F1
+(quoted\255insert \(C\255q, C\255v\))108 520.8 Q F0 1.229(Add the ne)144
+532.8 R 1.228(xt character that you type to the line v)-.15 F 3.728
+(erbatim. This)-.15 F 1.228(is ho)3.728 F 3.728(wt)-.25 G 3.728(oi)
+-3.728 G 1.228(nsert characters lik)-3.728 F(e)-.1 E F1(C\255q)144 544.8
+Q F0 2.5(,f)C(or e)-2.5 E(xample.)-.15 E F1(tab\255insert \(M-T)108
+556.8 Q(AB\))-.9 E F0(Insert a tab character)144 568.8 Q(.)-.55 E F1
+(self\255insert \(a, b, A, 1, !, ...\))108 580.8 Q F0
+(Insert the character typed.)144 592.8 Q F1
+(transpose\255chars \(C\255t\))108 604.8 Q F0 .321
+(Drag the character before point forw)144 616.8 R .321(ard o)-.1 F -.15
+(ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322
+(ving point forw)-.15 F .322(ard as well.)-.1 F 1.182
+(If point is at the end of the line, then this transposes the tw)144
+628.8 R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E
+-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 640.8 Q(guments ha)-.18 E
+.3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1
+(transpose\255w)108 652.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144
+664.8 R .023(ord before point past the w)-.1 F .023(ord after point, mo)
+-.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w)
+-2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F
+(is at the end of the line, this transposes the last tw)144 676.8 Q 2.5
+(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 688.8 Q
+(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144
+700.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F
+-.05(ga)-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698
+(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 712.8 S(rd, b).1
+E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E(GNU Readline 7.0)72
+768 Q(2017 December 28)121.245 E(9)190.955 E 0 Cg EP
+%%Page: 10 10
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E
-(as the end of input and returns)144 84 Q/F1 9/Times-Bold@0 SF(EOF)2.5 E
-/F2 9/Times-Roman@0 SF(.)A/F3 10/Times-Bold@0 SF
-(delete\255char \(C\255d\))108 96 Q F0 .442
-(Delete the character at point.)144 108 R .442
-(If this function is bound to the same character as the tty)5.442 F F3
-(EOF)2.941 E F0(char)2.941 E(-)-.2 E(acter)144 120 Q 2.5(,a)-.4 G(s)-2.5
-E F3(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H
-(or the ef).15 E(fects.)-.25 E F3(backward\255delete\255char \(Rubout\))
-108 132 Q F0 .552(Delete the character behind the cursor)144 144 R 5.553
-(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553
-(umeric ar)-3.053 F .553(gument, sa)-.18 F .853 -.15(ve t)-.2 H .553
-(he deleted te).15 F .553(xt on)-.15 F(the kill ring.)144 156 Q F3 -.25
-(fo)108 168 S(rward\255backward\255delete\255char).25 E F0 .474
-(Delete the character under the cursor)144 180 R 2.974(,u)-.4 G .474
-(nless the cursor is at the end of the line, in which case the)-2.974 F
-(character behind the cursor is deleted.)144 192 Q F3
-(quoted\255insert \(C\255q, C\255v\))108 204 Q F0 1.228(Add the ne)144
-216 R 1.228(xt character that you type to the line v)-.15 F 3.728
-(erbatim. This)-.15 F 1.228(is ho)3.728 F 3.729(wt)-.25 G 3.729(oi)
--3.729 G 1.229(nsert characters lik)-3.729 F(e)-.1 E F3(C\255q)144 228 Q
-F0 2.5(,f)C(or e)-2.5 E(xample.)-.15 E F3(tab\255insert \(M-T)108 240 Q
-(AB\))-.9 E F0(Insert a tab character)144 252 Q(.)-.55 E F3
-(self\255insert \(a, b, A, 1, !, ...\))108 264 Q F0
-(Insert the character typed.)144 276 Q F3(transpose\255chars \(C\255t\))
-108 288 Q F0 .322(Drag the character before point forw)144 300 R .321
-(ard o)-.1 F -.15(ve)-.15 G 2.821(rt).15 G .321
-(he character at point, mo)-2.821 F .321(ving point forw)-.15 F .321
-(ard as well.)-.1 F 1.182
-(If point is at the end of the line, then this transposes the tw)144 312
-R 3.683(oc)-.1 G 1.183(haracters before point.)-3.683 F(Ne)6.183 E -.05
-(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 324 Q(guments ha)-.18 E .3
--.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F3
-(transpose\255w)108 336 Q(ords \(M\255t\))-.1 E F0 .024(Drag the w)144
-348 R .024(ord before point past the w)-.1 F .023(ord after point, mo)
--.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.523(rt).15 G .023(hat w)
--2.523 F .023(ord as well.)-.1 F .023(If point)5.023 F
-(is at the end of the line, this transposes the last tw)144 360 Q 2.5
-(ow)-.1 G(ords on the line.)-2.6 E F3(upcase\255w)108 372 Q
-(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144 384
-R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)
--.15 G(ti).05 E 1.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699
-(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 396 S(rd, b).1 E
-(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F3(do)108 408 Q
-(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 420 Q 1.648
-(wercase the current \(or follo)-.25 F 1.648(wing\) w)-.25 F 4.148
-(ord. W)-.1 F 1.647(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.947 -.15
-(ve a)-.25 H -.18(rg).15 G 1.647(ument, lo).18 F 1.647(wercase the pre)
--.25 F(vious)-.25 E -.1(wo)144 432 S(rd, b).1 E(ut do not mo)-.2 E .3
--.15(ve p)-.15 H(oint.).15 E F3(capitalize\255w)108 444 Q
-(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144 456
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+(do)108 84 Q(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 96 Q 1.647
+(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147
+(ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15
+(ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre)
+-.25 F(vious)-.25 E -.1(wo)144 108 S(rd, b).1 E(ut do not mo)-.2 E .3
+-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 120 Q
+(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 132
R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga)
--.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.975
-(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 468 S(rd, b).1
-E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F3 -.1(ove)108 480
-S(rwrite\255mode).1 E F0 -.8(To)144 492 S .438(ggle o).8 F -.15(ve)-.15
-G .438(rwrite mode.).15 F -.4(Wi)5.438 G .438(th an e).4 F .438
-(xplicit positi)-.15 F .737 -.15(ve n)-.25 H .437(umeric ar).15 F .437
-(gument, switches to o)-.18 F -.15(ve)-.15 G .437(rwrite mode.).15 F -.4
-(Wi)144 504 S .78(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 -.15
-(ve n)-.25 H .781(umeric ar).15 F .781(gument, switches to insert mode.)
--.18 F .781(This command af)5.781 F(fects)-.25 E(only)144 516 Q F3
-(emacs)4.395 E F0(mode;)4.395 E F3(vi)4.395 E F0 1.894(mode does o)4.395
-F -.15(ve)-.15 G 1.894(rwrite dif).15 F(ferently)-.25 E 6.894(.E)-.65 G
-1.894(ach call to)-6.894 F/F4 10/Times-Italic@0 SF -.37(re)4.394 G
-(adline\(\)).37 E F0 1.894(starts in insert)4.394 F 3.968(mode. In)144
-528 R -.15(ove)3.968 G 1.468(rwrite mode, characters bound to).15 F F3
-(self\255insert)3.969 E F0 1.469(replace the te)3.969 F 1.469
-(xt at point rather than)-.15 F .958(pushing the te)144 540 R .958
-(xt to the right.)-.15 F .957(Characters bound to)5.958 F F3
-(backward\255delete\255char)3.457 E F0 .957(replace the character)3.457
-F(before point with a space.)144 552 Q(By def)5 E
-(ault, this command is unbound.)-.1 E F3(Killing and Y)87 568.8 Q
-(anking)-.85 E(kill\255line \(C\255k\))108 580.8 Q F0(Kill the te)144
-592.8 Q(xt from point to the end of the line.)-.15 E F3
-(backward\255kill\255line \(C\255x Rubout\))108 604.8 Q F0(Kill backw)
-144 616.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F3
-(unix\255line\255discard \(C\255u\))108 628.8 Q F0(Kill backw)144 640.8
+-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974
+(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 144 S(rd, b).1
+E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 156
+S(rwrite\255mode).1 E F0 -.8(To)144 168 S .437(ggle o).8 F -.15(ve)-.15
+G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437
+(xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438
+(gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4
+(Wi)144 180 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081
+-.15(ve n)-.25 H .781(umeric ar).15 F .781
+(gument, switches to insert mode.)-.18 F .78(This command af)5.781 F
+(fects)-.25 E(only)144 192 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi)
+4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15
+F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F2 10
+/Times-Italic@0 SF -.37(re)4.395 G(adline\(\)).37 E F0 1.895
+(starts in insert)4.395 F 3.969(mode. In)144 204 R -.15(ove)3.969 G
+1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E
+F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F
+.957(pushing the te)144 216 R .957(xt to the right.)-.15 F .958
+(Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0
+.958(replace the character)3.458 F(before point with a space.)144 228 Q
+(By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87
+244.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 256.8 Q F0
+(Kill the te)144 268.8 Q(xt from point to the end of the line.)-.15 E F1
+(backward\255kill\255line \(C\255x Rubout\))108 280.8 Q F0(Kill backw)
+144 292.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
+(unix\255line\255discard \(C\255u\))108 304.8 Q F0(Kill backw)144 316.8
Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E
(The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)
--2.5 G(he kill-ring.)-2.5 E F3(kill\255whole\255line)108 652.8 Q F0
+-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 328.8 Q F0
(Kill all characters on the current line, no matter where point is.)144
-664.8 Q F3(kill\255w)108 676.8 Q(ord \(M\255d\))-.1 E F0 1.308
-(Kill from point the end of the current w)144 688.8 R 1.308
-(ord, or if between w)-.1 F 1.308(ords, to the end of the ne)-.1 F 1.308
-(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 700.8 S
-(rd boundaries are the same as those used by).8 E F3 -.25(fo)2.5 G
-(rward\255w).25 E(ord)-.1 E F0(.)A(GNU Readline 7.0)72 768 Q
-(2016 February 28)123.74 E(9)193.45 E 0 Cg EP
-%%Page: 10 10
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
-(backward\255kill\255w)108 84 Q(ord \(M\255Rubout\))-.1 E F0(Kill the w)
-144 96 Q(ord behind point.)-.1 E -.8(Wo)5 G
-(rd boundaries are the same as those used by).8 E F1(backward\255w)2.5 E
-(ord)-.1 E F0(.)A F1(unix\255w)108 108 Q(ord\255rubout \(C\255w\))-.1 E
-F0 .365(Kill the w)144 120 R .365
-(ord behind point, using white space as a w)-.1 F .364(ord boundary)-.1
-F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364(xt is sa)-.15 F -.15
-(ve)-.2 G 2.864(do).15 G 2.864(nt)-2.864 G(he)-2.864 E(kill-ring.)144
-132 Q F1(unix\255\214lename\255rubout)108 144 Q F0 .166(Kill the w)144
-156 R .166
+340.8 Q F1(kill\255w)108 352.8 Q(ord \(M\255d\))-.1 E F0 1.308
+(Kill from point the end of the current w)144 364.8 R 1.308
+(ord, or if between w)-.1 F 1.308(ords, to the end of the ne)-.1 F 1.307
+(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 376.8 S
+(rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G
+(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 388.8 Q
+(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 400.8 Q(ord behind point.)
+-.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1
+(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(unix\255w)108 412.8 Q
+(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 424.8 R .364
+(ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1
+F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15
+(ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144
+436.8 Q F1(unix\255\214lename\255rubout)108 448.8 Q F0 .167(Kill the w)
+144 460.8 R .166
(ord behind point, using white space and the slash character as the w)
--.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 168 Q
+-.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 472.8 Q
(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.)
--2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 180 Q F0
-(Delete all spaces and tabs around point.)144 192 Q F1(kill\255r)108 204
-Q(egion)-.18 E F0 1.13(Kill the te)144 216 R 1.13
-(xt between the point and)-.15 F/F2 10/Times-Italic@0 SF(mark)3.63 E F0
-(\(sa)3.63 E -.15(ve)-.2 G 3.63(dc).15 G 1.13(ursor position\).)-3.63 F
-1.13(This te)6.13 F 1.13(xt is referred to as the)-.15 F F2 -.37(re)144
-228 S(gion)-.03 E F0(.)A F1(copy\255r)108 240 Q(egion\255as\255kill)-.18
-E F0(Cop)144 252 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
+-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 484.8 Q F0
+(Delete all spaces and tabs around point.)144 496.8 Q F1(kill\255r)108
+508.8 Q(egion)-.18 E F0 1.13(Kill the te)144 520.8 R 1.13
+(xt between the point and)-.15 F F2(mark)3.63 E F0(\(sa)3.63 E -.15(ve)
+-.2 G 3.63(dc).15 G 1.13(ursor position\).)-3.63 F 1.13(This te)6.13 F
+1.13(xt is referred to as the)-.15 F F2 -.37(re)144 532.8 S(gion)-.03 E
+F0(.)A F1(copy\255r)108 544.8 Q(egion\255as\255kill)-.18 E F0(Cop)144
+556.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1
-(copy\255backward\255w)108 264 Q(ord)-.1 E F0(Cop)144 276 Q 4.8(yt)-.1 G
-2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E(fer)
--.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301
-(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144 288
-Q(ord)-.1 E F0(.)A F1(copy\255f)108 300 Q(orward\255w)-.25 E(ord)-.1 E
-F0(Cop)144 312 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008(ord follo)-.1
-F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.007(.T)
--.55 G 2.007(he w)-7.007 F 2.007(ord boundaries are the same as)-.1 F F1
--.25(fo)4.507 G -.37(r-).25 G(ward\255w)144 324 Q(ord)-.1 E F0(.)A F1
-(yank \(C\255y\))108 336 Q F0 -1(Ya)144 348 S
+(copy\255backward\255w)108 568.8 Q(ord)-.1 E F0(Cop)144 580.8 Q 4.801
+(yt)-.1 G 2.301(he w)-4.801 F 2.301(ord before point to the kill b)-.1 F
+(uf)-.2 E(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.3
+(ord boundaries are the same as)-.1 F F1(back-)4.8 E(ward\255w)144 592.8
+Q(ord)-.1 E F0(.)A F1(copy\255f)108 604.8 Q(orward\255w)-.25 E(ord)-.1 E
+F0(Cop)144 616.8 Q 4.507(yt)-.1 G 2.007(he w)-4.507 F 2.007(ord follo)
+-.1 F 2.007(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.008
+(.T)-.55 G 2.008(he w)-7.008 F 2.008(ord boundaries are the same as)-.1
+F F1 -.25(fo)4.508 G -.37(r-).25 G(ward\255w)144 628.8 Q(ord)-.1 E F0(.)
+A F1(yank \(C\255y\))108 640.8 Q F0 -1(Ya)144 652.8 S
(nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25
-E F1(yank\255pop \(M\255y\))108 360 Q F0
-(Rotate the kill ring, and yank the ne)144 372 Q 2.5(wt)-.25 G 2.5
+E F1(yank\255pop \(M\255y\))108 664.8 Q F0
+(Rotate the kill ring, and yank the ne)144 676.8 Q 2.5(wt)-.25 G 2.5
(op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E
-F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 388.8 Q
-(guments)-.1 E(digit\255ar)108 400.8 Q
+F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 693.6 Q
+(guments)-.1 E(digit\255ar)108 705.6 Q
(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367
-(Add this digit to the ar)144 412.8 R .367
+(Add this digit to the ar)144 717.6 R .367
(gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18
-(rg)-2.867 G 2.867(ument. M\255\255).18 F .367(starts a ne)2.867 F -.05
-(ga)-.15 G(-).05 E(ti)144 424.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
-(ument.).18 E F1(uni)108 436.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1
-E F0 .779(This is another w)144 448.8 R .779(ay to specify an ar)-.1 F
-3.279(gument. If)-.18 F .779(this command is follo)3.279 F .778
+(rg)-2.867 G 2.867(ument. M\255\255).18 F .366(starts a ne)2.867 F -.05
+(ga)-.15 G(-).05 E(ti)144 729.6 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
+(ument.).18 E(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(10)
+185.955 E 0 Cg EP
+%%Page: 11 11
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+(uni)108 84 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .778
+(This is another w)144 96 R .779(ay to specify an ar)-.1 F 3.279
+(gument. If)-.18 F .779(this command is follo)3.279 F .779
(wed by one or more digits,)-.25 F 1.376
(optionally with a leading minus sign, those digits de\214ne the ar)144
-460.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
-472.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
+108 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
+120 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17
(ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other)
--.2 F(-)-.2 E .898(wise ignored.)144 484.8 R .898
-(As a special case, if this command is immediately follo)5.898 F .898
+-.2 F(-)-.2 E .899(wise ignored.)144 132 R .898
+(As a special case, if this command is immediately follo)5.899 F .898
(wed by a character that is)-.25 F .243
-(neither a digit or minus sign, the ar)144 496.8 R .243
+(neither a digit or minus sign, the ar)144 144 R .243
(gument count for the ne)-.18 F .243(xt command is multiplied by four)
--.15 F 5.242(.T)-.55 G(he)-5.242 E(ar)144 508.8 Q .378
+-.15 F 5.243(.T)-.55 G(he)-5.243 E(ar)144 156 Q .378
(gument count is initially one, so e)-.18 F -.15(xe)-.15 G .378
(cuting this function the \214rst time mak).15 F .378(es the ar)-.1 F
-.378(gument count)-.18 F(four)144 520.8 Q 2.5(,as)-.4 G(econd time mak)
+.378(gument count)-.18 F(four)144 168 Q 2.5(,as)-.4 G(econd time mak)
-2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1
-(Completing)87 537.6 Q(complete \(T)108 549.6 Q(AB\))-.9 E F0 1.909
-(Attempt to perform completion on the te)144 561.6 R 1.908
-(xt before point.)-.15 F 1.908(The actual completion performed is)6.908
-F(application-speci\214c.)144 573.6 Q F1(Bash)5.517 E F0 3.017(,f)C .518
-(or instance, attempts completion treating the te)-3.017 F .518
-(xt as a v)-.15 F .518(ariable \(if the)-.25 F(te)144 585.6 Q .657
-(xt be)-.15 F .657(gins with)-.15 F F1($)3.156 E F0 .656
+(Completing)87 184.8 Q(complete \(T)108 196.8 Q(AB\))-.9 E F0 1.908
+(Attempt to perform completion on the te)144 208.8 R 1.908
+(xt before point.)-.15 F 1.909(The actual completion performed is)6.909
+F(application-speci\214c.)144 220.8 Q F1(Bash)5.518 E F0 3.018(,f)C .518
+(or instance, attempts completion treating the te)-3.018 F .517
+(xt as a v)-.15 F .517(ariable \(if the)-.25 F(te)144 232.8 Q .656
+(xt be)-.15 F .656(gins with)-.15 F F1($)3.156 E F0 .656
(\), username \(if the te)B .656(xt be)-.15 F .656(gins with)-.15 F F1
(~)3.156 E F0 .656(\), hostname \(if the te)B .656(xt be)-.15 F .656
-(gins with)-.15 F F1(@)3.156 E F0 .656(\), or)B .929
-(command \(including aliases and functions\) in turn.)144 597.6 R .93
-(If none of these produces a match, \214lename)5.929 F 1.274
-(completion is attempted.)144 609.6 R F1(Gdb)6.273 E F0 3.773(,o)C 3.773
+(gins with)-.15 F F1(@)3.157 E F0 .657(\), or)B .93
+(command \(including aliases and functions\) in turn.)144 244.8 R .929
+(If none of these produces a match, \214lename)5.929 F 1.273
+(completion is attempted.)144 256.8 R F1(Gdb)6.273 E F0 3.773(,o)C 3.773
(nt)-3.773 G 1.273(he other hand, allo)-3.773 F 1.273
-(ws completion of program functions and)-.25 F -.25(va)144 621.6 S(riab\
+(ws completion of program functions and)-.25 F -.25(va)144 268.8 S(riab\
les, and only attempts \214lename completion under certain circumstance\
-s.).25 E F1(possible\255completions \(M\255?\))108 633.6 Q F0 .261
-(List the possible completions of the te)144 645.6 R .262
-(xt before point.)-.15 F .262
-(When displaying completions, readline sets)5.262 F 1.002
-(the number of columns used for display to the v)144 657.6 R 1.002
-(alue of)-.25 F F1(completion-display-width)3.502 E F0 3.502(,t)C 1.002
-(he v)-3.502 F 1.002(alue of)-.25 F(the en)144 669.6 Q(vironment v)-.4 E
-(ariable)-.25 E/F3 9/Times-Bold@0 SF(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF
+s.).25 E F1(possible\255completions \(M\255?\))108 280.8 Q F0 .262
+(List the possible completions of the te)144 292.8 R .262
+(xt before point.)-.15 F .261
+(When displaying completions, readline sets)5.261 F 1.002
+(the number of columns used for display to the v)144 304.8 R 1.002
+(alue of)-.25 F F1(completion-display-width)3.502 E F0 3.502(,t)C 1.003
+(he v)-3.502 F 1.003(alue of)-.25 F(the en)144 316.8 Q(vironment v)-.4 E
+(ariable)-.25 E/F2 9/Times-Bold@0 SF(COLUMNS)2.5 E/F3 9/Times-Roman@0 SF
(,)A F0(or the screen width, in that order)2.25 E(.)-.55 E F1
-(insert\255completions \(M\255*\))108 681.6 Q F0 .783
-(Insert all completions of the te)144 693.6 R .783
+(insert\255completions \(M\255*\))108 328.8 Q F0 .783
+(Insert all completions of the te)144 340.8 R .783
(xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H
-.783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144
-705.6 Q F0(.)A(GNU Readline 7.0)72 768 Q(2016 February 28)123.74 E(10)
-188.45 E 0 Cg EP
-%%Page: 11 11
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
-(menu\255complete)108 84 Q F0 .929(Similar to)144 96 R F1(complete)3.429
-E F0 3.429(,b)C .929(ut replaces the w)-3.629 F .929
-(ord to be completed with a single match from the list of)-.1 F 1.193
-(possible completions.)144 108 R 1.193(Repeated e)6.193 F -.15(xe)-.15 G
-1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194
-(steps through the list of possible)3.694 F .829
-(completions, inserting each match in turn.)144 120 R .828
+.783(een generated by).15 F F1(possible\255com-)3.282 E(pletions)144
+352.8 Q F0(.)A F1(menu\255complete)108 364.8 Q F0 .928(Similar to)144
+376.8 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628
+F .929(ord to be completed with a single match from the list of)-.1 F
+1.194(possible completions.)144 388.8 R 1.194(Repeated e)6.194 F -.15
+(xe)-.15 G 1.194(cution of).15 F F1(menu\255complete)3.694 E F0 1.193
+(steps through the list of possible)3.694 F .828
+(completions, inserting each match in turn.)144 400.8 R .828
(At the end of the list of completions, the bell is rung)5.828 F .727
-(\(subject to the setting of)144 132 R F1(bell\255style)3.227 E F0 3.227
-(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F .727
-(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227 E
-F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.228 E F0 1.73
-(positions forw)144 144 R 1.73(ard in the list of matches; a ne)-.1 F
+(\(subject to the setting of)144 412.8 R F1(bell\255style)3.227 E F0
+3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F
+.727(An ar)5.727 F .727(gument of)-.18 F/F4 10/Times-Italic@0 SF(n)3.227
+E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F4(n)3.227 E F0 1.73
+(positions forw)144 424.8 R 1.73(ard in the list of matches; a ne)-.1 F
-.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73
(ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1
-E(through the list.)144 156 Q(This command is intended to be bound to)5
-E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E(ault.)
--.1 E F1(menu\255complete\255backward)108 168 Q F0 .82(Identical to)144
-180 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82(ut mo)-3.52 F -.15(ve)
--.15 G 3.32(sb).15 G(ackw)-3.32 E .82
+E(through the list.)144 436.8 Q(This command is intended to be bound to)
+5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E
+(ault.)-.1 E F1(menu\255complete\255backward)108 448.8 Q F0 .82
+(Identical to)144 460.8 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82
+(ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82
(ard through the list of possible completions, as if)-.1 F F1
-(menu\255complete)144 192 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5(nan)
-.15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg).15 G
-2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E F1
-(delete\255char\255or\255list)108 204 Q F0 .374
-(Deletes the character under the cursor if not at the be)144 216 R .373
-(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete-char)2.873 E
-F0(\).)A(If at the end of the line, beha)144 228 Q -.15(ve)-.2 G 2.5(si)
-.15 G(dentically to)-2.5 E F1(possible-completions)2.5 E F0(.)A F1 -.25
-(Ke)87 244.8 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)108
-256.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 268.8 Q
+(menu\255complete)144 472.8 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5
+(nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg)
+.15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E
+F1(delete\255char\255or\255list)108 484.8 Q F0 .373
+(Deletes the character under the cursor if not at the be)144 496.8 R
+.374(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete-char)
+2.874 E F0(\).)A(If at the end of the line, beha)144 508.8 Q -.15(ve)-.2
+G 2.5(si).15 G(dentically to)-2.5 E F1(possible-completions)2.5 E F0(.)A
+F1 -.25(Ke)87 525.6 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)
+108 537.6 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 549.6 Q
(gin sa)-.15 E(ving the characters typed into the current k)-.2 E -.15
-(ey)-.1 G(board macro.).15 E F1(end\255kbd\255macr)108 280.8 Q 2.5(o\()
--.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 292.8 Q
+(ey)-.1 G(board macro.).15 E F1(end\255kbd\255macr)108 561.6 Q 2.5(o\()
+-.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 573.6 Q
(ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
(board macro and store the de\214nition.).15 E F1
-(call\255last\255kbd\255macr)108 304.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5
-E F0(Re-e)144 316.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey)
--.1 G .999(board macro de\214ned, by making the characters in the macro\
- appear as if).15 F .663(typed at the k)144 328.8 R -.15(ey)-.1 G
-(board.).15 E F1(print\255last\255kbd\255macr)5.663 E 3.163(o\()-.18 G
-(\))-3.163 E F0 .663(Print the last k)3.163 F -.15(ey)-.1 G .663
-(board macro de\214ned in a for).15 F(-)-.2 E(mat suitable for the)144
-340.8 Q F2(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1(Miscellaneous)87
-357.6 Q -.18(re)108 369.6 S<ad72>.18 E
-(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776
-(Read in the contents of the)144 381.6 R F2(inputr)4.276 E(c)-.37 E F0
-1.777(\214le, and incorporate an)4.276 F 4.277(yb)-.15 G 1.777
+(call\255last\255kbd\255macr)108 585.6 Q 2.5(o\()-.18 G(C\255x e\))-2.5
+E F0(Re-e)144 597.6 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1
+G .999(board macro de\214ned, by making the characters in the macro app\
+ear as if).15 F(typed at the k)144 609.6 Q -.15(ey)-.1 G(board.).15 E F1
+(print\255last\255kbd\255macr)108 621.6 Q 2.5(o\()-.18 G(\))-2.5 E F0
+(Print the last k)144 633.6 Q -.15(ey)-.1 G
+(board macro de\214ned in a format suitable for the).15 E F4(inputr)2.5
+E(c)-.37 E F0(\214le.)2.5 E F1(Miscellaneous)87 650.4 Q -.18(re)108
+662.4 S<ad72>.18 E(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0
+1.776(Read in the contents of the)144 674.4 R F4(inputr)4.276 E(c)-.37 E
+F0 1.777(\214le, and incorporate an)4.276 F 4.277(yb)-.15 G 1.777
(indings or v)-4.277 F 1.777(ariable assignments)-.25 F(found there.)144
-393.6 Q F1(abort \(C\255g\))108 405.6 Q F0 3.249
-(Abort the current editing command and ring the terminal')144 417.6 R
+686.4 Q F1(abort \(C\255g\))108 698.4 Q F0 3.249
+(Abort the current editing command and ring the terminal')144 710.4 R
5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1
-(bell\255style)144 429.6 Q F0(\).)A F1(do\255upper)108 441.6 Q
-(case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.)
-C(..\))-2.5 E F0 1.755(If the meta\214ed character)144 453.6 R F2(x)
-4.255 E F0 1.755(is lo)4.255 F 1.756
-(wercase, run the command that is bound to the corresponding)-.25 F
-(uppercase character)144 465.6 Q(.)-.55 E F1(pr)108 477.6 Q
-(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 489.6 Q
-(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF(ESC)5 E F1(f)2.25 E F0
-(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1(Meta\255f)2.5 E F0(.)A F1
-(undo \(C\255_, C\255x C\255u\))108 501.6 Q F0
-(Incremental undo, separately remembered for each line.)144 513.6 Q F1
--2.29 -.18(re v)108 525.6 T(ert\255line \(M\255r\)).08 E F0 1.095
-(Undo all changes made to this line.)144 537.6 R 1.095(This is lik)6.095
-F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E
+(bell\255style)144 722.4 Q F0(\).)A(GNU Readline 7.0)72 768 Q
+(2017 December 28)121.245 E(11)185.955 E 0 Cg EP
+%%Page: 12 12
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
+(do\255lo)108 84 Q(wer)-.1 E(case\255v)-.18 E
+(ersion \(M\255A, M\255B, M\255)-.1 E/F2 10/Times-Italic@0 SF(x)A F1 2.5
+(,.)C(..\))-2.5 E F0 1.738(If the meta\214ed character)144 96 R F2(x)
+4.238 E F0 1.739
+(is uppercase, run the command that is bound to the corresponding)4.238
+F(meta\214ed lo)144 108 Q(wercase character)-.25 E 5(.T)-.55 G(he beha)
+-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo)2.5 E
+(wercase.)-.25 E F1(pr)108 120 Q(e\214x\255meta \(ESC\))-.18 E F0
+(Metafy the ne)144 132 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF
+(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1
+(Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 144 Q F0
+(Incremental undo, separately remembered for each line.)144 156 Q F1
+-2.29 -.18(re v)108 168 T(ert\255line \(M\255r\)).08 E F0 1.095
+(Undo all changes made to this line.)144 180 R 1.095(This is lik)6.095 F
+3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E
F0 1.095(command enough times to)3.595 F
-(return the line to its initial state.)144 549.6 Q F1
-(tilde\255expand \(M\255&\))108 561.6 Q F0(Perform tilde e)144 573.6 Q
+(return the line to its initial state.)144 192 Q F1
+(tilde\255expand \(M\255&\))108 204 Q F0(Perform tilde e)144 216 Q
(xpansion on the current w)-.15 E(ord.)-.1 E F1
-(set\255mark \(C\255@, M\255<space>\))108 585.6 Q F0
-(Set the mark to the point.)144 597.6 Q(If a numeric ar)5 E
+(set\255mark \(C\255@, M\255<space>\))108 228 Q F0
+(Set the mark to the point.)144 240 Q(If a numeric ar)5 E
(gument is supplied, the mark is set to that position.)-.18 E F1
-(exchange\255point\255and\255mark \(C\255x C\255x\))108 609.6 Q F0(Sw)
-144 621.6 Q .282(ap the point with the mark.)-.1 F .283
+(exchange\255point\255and\255mark \(C\255x C\255x\))108 252 Q F0(Sw)144
+264 Q .282(ap the point with the mark.)-.1 F .283
(The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G
2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa)
-144 633.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
-(character\255sear)108 645.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144
-657.6 S .536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G
-3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535
+144 276 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
+(character\255sear)108 288 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 300 S
+.536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G 3.035(dt)
+.15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535
(xt occurrence of that character)-.15 F 5.535(.A)-.55 G(ne)-2.5 E -.05
(ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre)
-144 669.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 681.6 Q
-(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 693.6 S 1.043
+144 312 Q(vious occurrences.)-.25 E F1(character\255sear)108 324 Q
+(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 336 S 1.043
(haracter is read and point is mo)-3.543 F -.15(ve)-.15 G 3.544(dt).15 G
3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044
(vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E
-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G
-(count searches for subsequent occurrences.)144 705.6 Q
-(GNU Readline 7.0)72 768 Q(2016 February 28)123.74 E(11)188.45 E 0 Cg EP
-%%Page: 12 12
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
-(skip\255csi\255sequence)108 84 Q F0 1.827
-(Read enough characters to consume a multi-k)144 96 R 2.126 -.15(ey s)
+(count searches for subsequent occurrences.)144 348 Q F1
+(skip\255csi\255sequence)108 360 Q F0 1.827
+(Read enough characters to consume a multi-k)144 372 R 2.126 -.15(ey s)
-.1 H 1.826(equence such as those de\214ned for k).15 F -.15(ey)-.1 G
-4.326(sl).15 G(ik)-4.326 E(e)-.1 E .79(Home and End.)144 108 R .791
+4.326(sl).15 G(ik)-4.326 E(e)-.1 E .79(Home and End.)144 384 R .791
(Such sequences be)5.79 F .791
(gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F
-.332(If this sequence is bound to "\\[", k)144 120 R -.15(ey)-.1 G 2.831
+.332(If this sequence is bound to "\\[", k)144 396 R -.15(ey)-.1 G 2.831
(sp).15 G .331(roducing such sequences will ha)-2.831 F .631 -.15(ve n)
-.2 H 2.831(oe).15 G -.25(ff)-2.831 G .331(ect unless e).25 F(xplic-)
-.15 E .026(itly bound to a readline command, instead of inserting stra\
-y characters into the editing b)144 132 R(uf)-.2 E(fer)-.25 E 5.026(.T)
--.55 G(his)-5.026 E(is unbound by def)144 144 Q(ault, b)-.1 E
+y characters into the editing b)144 408 R(uf)-.2 E(fer)-.25 E 5.026(.T)
+-.55 G(his)-5.026 E(is unbound by def)144 420 Q(ault, b)-.1 E
(ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108
-156 Q F0 -.4(Wi)144 168 S .481(thout a numeric ar).4 F .481
+432 Q F0 -.4(Wi)144 444 S .481(thout a numeric ar).4 F .481
(gument, the v)-.18 F .481(alue of the readline)-.25 F F1
(comment\255begin)2.981 E F0 -.25(va)2.981 G .48
-(riable is inserted at the).25 F(be)144 180 Q .244
+(riable is inserted at the).25 F(be)144 456 Q .244
(ginning of the current line.)-.15 F .245(If a numeric ar)5.244 F .245
(gument is supplied, this command acts as a toggle: if)-.18 F .322
-(the characters at the be)144 192 R .321
+(the characters at the be)144 468 R .321
(ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1
(comment\255begin)2.821 E F0 2.821(,t)C .321(he v)-2.821 F .321(alue is)
--.25 F 1.013(inserted, otherwise the characters in)144 204 R F1
+-.25 F 1.013(inserted, otherwise the characters in)144 480 R F1
(comment-begin)3.514 E F0 1.014(are deleted from the be)3.514 F 1.014
(ginning of the line.)-.15 F 1.469
-(In either case, the line is accepted as if a ne)144 216 R 1.468
+(In either case, the line is accepted as if a ne)144 492 R 1.468
(wline had been typed.)-.25 F 1.468(The def)6.468 F 1.468(ault v)-.1 F
-1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 228 Q F0(mak)
+1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 504 Q F0(mak)
2.982 E .483(es the current line a shell comment.)-.1 F .483
(If a numeric ar)5.483 F .483(gument causes the comment)-.18 F
-(character to be remo)144 240 Q -.15(ve)-.15 G(d, the line will be e).15
-E -.15(xe)-.15 G(cuted by the shell.).15 E F1(dump\255functions)108 252
-Q F0 .627(Print all of the functions and their k)144 264 R .927 -.15
+(character to be remo)144 516 Q -.15(ve)-.15 G(d, the line will be e).15
+E -.15(xe)-.15 G(cuted by the shell.).15 E F1(dump\255functions)108 528
+Q F0 .627(Print all of the functions and their k)144 540 R .927 -.15
(ey b)-.1 H .626(indings to the readline output stream.).15 F .626
(If a numeric ar)5.626 F(gu-)-.18 E
-(ment is supplied, the output is formatted in such a w)144 276 Q
-(ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr)
-2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 288 Q(ariables)-.1 E F0
-.283(Print all of the settable v)144 300 R .283(ariables and their v)
--.25 F .283(alues to the readline output stream.)-.25 F .283
-(If a numeric ar)5.283 F(gu-)-.18 E
-(ment is supplied, the output is formatted in such a w)144 312 Q
+(ment is supplied, the output is formatted in such a w)144 552 Q
+(ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0
+(\214le.)2.5 E F1(dump\255v)108 564 Q(ariables)-.1 E F0 .283
+(Print all of the settable v)144 576 R .283(ariables and their v)-.25 F
+.283(alues to the readline output stream.)-.25 F .283(If a numeric ar)
+5.283 F(gu-)-.18 E
+(ment is supplied, the output is formatted in such a w)144 588 Q
(ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0
-(\214le.)2.5 E F1(dump\255macr)108 324 Q(os)-.18 E F0 .593
-(Print all of the readline k)144 336 R .893 -.15(ey s)-.1 H .592
+(\214le.)2.5 E F1(dump\255macr)108 600 Q(os)-.18 E F0 .593
+(Print all of the readline k)144 612 R .893 -.15(ey s)-.1 H .592
(equences bound to macros and the strings the).15 F 3.092(yo)-.15 G
-3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 348 Q
+3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 624 Q
.528(gument is supplied, the output is formatted in such a w)-.18 F .528
(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0
-(\214le.)144 360 Q F1(emacs\255editing\255mode \(C\255e\))108 372 Q F0
-(When in)144 384 Q F1(vi)2.5 E F0(command mode, this causes a switch to)
+(\214le.)144 636 Q F1(emacs\255editing\255mode \(C\255e\))108 648 Q F0
+(When in)144 660 Q F1(vi)2.5 E F0(command mode, this causes a switch to)
2.5 E F1(emacs)2.5 E F0(editing mode.)2.5 E F1
-(vi\255editing\255mode \(M\255C\255j\))108 396 Q F0(When in)144 408 Q F1
+(vi\255editing\255mode \(M\255C\255j\))108 672 Q F0(When in)144 684 Q F1
(emacs)2.5 E F0(editing mode, this causes a switch to)2.5 E F1(vi)2.5 E
-F0(editing mode.)2.5 E/F3 10.95/Times-Bold@0 SF(DEF)72 424.8 Q -.548(AU)
+F0(editing mode.)2.5 E/F4 10.95/Times-Bold@0 SF(DEF)72 700.8 Q -.548(AU)
-.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F0 .065(The follo)
-108 436.8 R .065(wing is a list of the def)-.25 F .065
+108 712.8 R .065(wing is a list of the def)-.25 F .065
(ault emacs and vi bindings.)-.1 F .064
(Characters with the eighth bit set are written as)5.064 F .527
-(M\255<character>, and are referred to as)108 448.8 R F2(meta\214ed)
+(M\255<character>, and are referred to as)108 724.8 R F2(meta\214ed)
3.407 E F0 3.027(characters. The)3.797 F .527
-(printable ASCII characters not mentioned)3.027 F 1.116
-(in the list of emacs standard bindings are bound to the)108 460.8 R F1
-(self\255insert)3.615 E F0 1.115(function, which just inserts the gi)
-3.615 F -.15(ve)-.25 G(n).15 E .945(character into the input line.)108
-472.8 R .945(In vi insertion mode, all characters not speci\214cally me\
-ntioned are bound to)5.945 F F1(self\255insert)108 484.8 Q F0 5.359(.C)C
-.359(haracters assigned to signal generation by)-5.359 F F2(stty)2.859 E
-F0 .359(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.159 -.4(r, s)
-.15 H .358(uch as C-Z or C-C,).4 F .187(retain that function.)108 496.8
-R .187(Upper and lo)5.187 F .188(wer case meta\214ed characters are bou\
-nd to the same function in the emacs)-.25 F .305(mode meta k)108 508.8 R
--.15(ey)-.1 G 2.805(map. The).15 F .305(remaining characters are unboun\
-d, which causes readline to ring the bell \(subject)2.805 F
-(to the setting of the)108 520.8 Q F1(bell\255style)2.5 E F0 -.25(va)2.5
-G(riable\).).25 E F1(Emacs Mode)87 537.6 Q F0(Emacs Standard bindings)
-151.2 549.6 Q 2.5("C-@" set-mark)151.2 573.6 R 2.5("C-A" be)151.2 585.6
-R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2 597.6 R(ard-char)-.1 E
-2.5("C-D" delete-char)151.2 609.6 R 2.5("C-E" end-of-line)151.2 621.6 R
-2.5("C-F" forw)151.2 633.6 R(ard-char)-.1 E 2.5("C-G" abort)151.2 645.6
-R 2.5("C-H" backw)151.2 657.6 R(ard-delete-char)-.1 E 2.5
-("C-I" complete)151.2 669.6 R 2.5("C-J" accept-line)151.2 681.6 R 2.5
-("C-K" kill-line)151.2 693.6 R 2.5("C-L" clear)151.2 705.6 R(-screen)-.2
-E 2.5("C-M" accept-line)151.2 717.6 R 2.5("C-N" ne)151.2 729.6 R
-(xt-history)-.15 E(GNU Readline 7.0)72 768 Q(2016 February 28)123.74 E
-(12)188.45 E 0 Cg EP
+(printable ASCII characters not mentioned)3.027 F(GNU Readline 7.0)72
+768 Q(2017 December 28)121.245 E(12)185.955 E 0 Cg EP
%%Page: 13 13
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("C-P" pre)151.2 84 R
-(vious-history)-.25 E 2.5("C-Q" quoted-insert)151.2 96 R 2.5("C-R" re)
-151.2 108 R -.15(ve)-.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2
-120 R(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 132 R 2.5
-("C-U" unix-line-discard)151.2 144 R 2.5("C-V" quoted-insert)151.2 156 R
-2.5("C-W" unix-w)151.2 168 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 180 R
-2.5("C-]" character)151.2 192 R(-search)-.2 E 2.5("C-_" undo)151.2 204 R
-3.333("")151.2 216 S(to "/")-.833 E(self-insert)5 E 2.5("0" to)151.2 228
-R 2.5("9" self-insert)2.5 F 2.5(":" to)151.2 240 R 2.5("~" self-insert)
-2.5 F 2.5("C-?" backw)151.2 252 R(ard-delete-char)-.1 E
-(Emacs Meta bindings)151.2 268.8 Q 2.5("M-C-G" abort)151.2 292.8 R 2.5
-("M-C-H" backw)151.2 304.8 R(ard-kill-w)-.1 E(ord)-.1 E 2.5
-("M-C-I" tab-insert)151.2 316.8 R 2.5("M-C-J" vi-editing-mode)151.2
-328.8 R 2.5("M-C-M" vi-editing-mode)151.2 340.8 R 2.5("M-C-R" re)151.2
-352.8 R -.15(ve)-.25 G(rt-line).15 E 2.5("M-C-Y" yank-nth-ar)151.2 364.8
-R(g)-.18 E 2.5("M-C-[" complete)151.2 376.8 R 2.5("M-C-]" character)
-151.2 388.8 R(-search-backw)-.2 E(ard)-.1 E 2.5("M-space" set-mark)151.2
-400.8 R 2.5("M-#" insert-comment)151.2 412.8 R 2.5("M-&" tilde-e)151.2
-424.8 R(xpand)-.15 E 2.5("M-*" insert-completions)151.2 436.8 R 2.5
-("M--" digit-ar)151.2 448.8 R(gument)-.18 E 2.5("M-." yank-last-ar)151.2
-460.8 R(g)-.18 E 2.5("M-0" digit-ar)151.2 472.8 R(gument)-.18 E 2.5
-("M-1" digit-ar)151.2 484.8 R(gument)-.18 E 2.5("M-2" digit-ar)151.2
-496.8 R(gument)-.18 E 2.5("M-3" digit-ar)151.2 508.8 R(gument)-.18 E 2.5
-("M-4" digit-ar)151.2 520.8 R(gument)-.18 E 2.5("M-5" digit-ar)151.2
-532.8 R(gument)-.18 E 2.5("M-6" digit-ar)151.2 544.8 R(gument)-.18 E 2.5
-("M-7" digit-ar)151.2 556.8 R(gument)-.18 E 2.5("M-8" digit-ar)151.2
-568.8 R(gument)-.18 E 2.5("M-9" digit-ar)151.2 580.8 R(gument)-.18 E 2.5
-("M-<" be)151.2 592.8 R(ginning-of-history)-.15 E 2.5
-("M-=" possible-completions)151.2 604.8 R 2.5("M->" end-of-history)151.2
-616.8 R 2.5("M-?" possible-completions)151.2 628.8 R 2.5("M-B" backw)
-151.2 640.8 R(ard-w)-.1 E(ord)-.1 E 2.5("M-C" capitalize-w)151.2 652.8 R
-(ord)-.1 E 2.5("M-D" kill-w)151.2 664.8 R(ord)-.1 E 2.5("M-F" forw)151.2
-676.8 R(ard-w)-.1 E(ord)-.1 E 2.5("M-L" do)151.2 688.8 R(wncase-w)-.25 E
-(ord)-.1 E 2.5("M-N" non-incremental-forw)151.2 700.8 R
-(ard-search-history)-.1 E 2.5("M-P" non-incremental-re)151.2 712.8 R
--.15(ve)-.25 G(rse-search-history).15 E 2.5("M-R" re)151.2 724.8 R -.15
-(ve)-.25 G(rt-line).15 E(GNU Readline 7.0)72 768 Q(2016 February 28)
-123.74 E(13)188.45 E 0 Cg EP
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E 1.116
+(in the list of emacs standard bindings are bound to the)108 84 R/F1 10
+/Times-Bold@0 SF(self\255insert)3.615 E F0 1.115
+(function, which just inserts the gi)3.615 F -.15(ve)-.25 G(n).15 E .945
+(character into the input line.)108 96 R .945(In vi insertion mode, all\
+ characters not speci\214cally mentioned are bound to)5.945 F F1
+(self\255insert)108 108 Q F0 5.359(.C)C .359
+(haracters assigned to signal generation by)-5.359 F/F2 10
+/Times-Italic@0 SF(stty)2.859 E F0 .359(\(1\) or the terminal dri).32 F
+-.15(ve)-.25 G 1.159 -.4(r, s).15 H .358(uch as C-Z or C-C,).4 F .187
+(retain that function.)108 120 R .187(Upper and lo)5.187 F .188(wer cas\
+e meta\214ed characters are bound to the same function in the emacs)-.25
+F .305(mode meta k)108 132 R -.15(ey)-.1 G 2.805(map. The).15 F .305(re\
+maining characters are unbound, which causes readline to ring the bell \
+\(subject)2.805 F(to the setting of the)108 144 Q F1(bell\255style)2.5 E
+F0 -.25(va)2.5 G(riable\).).25 E F1(Emacs Mode)87 160.8 Q F0
+(Emacs Standard bindings)151.2 172.8 Q 2.5("C-@" set-mark)151.2 196.8 R
+2.5("C-A" be)151.2 208.8 R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2
+220.8 R(ard-char)-.1 E 2.5("C-D" delete-char)151.2 232.8 R 2.5
+("C-E" end-of-line)151.2 244.8 R 2.5("C-F" forw)151.2 256.8 R(ard-char)
+-.1 E 2.5("C-G" abort)151.2 268.8 R 2.5("C-H" backw)151.2 280.8 R
+(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 292.8 R 2.5
+("C-J" accept-line)151.2 304.8 R 2.5("C-K" kill-line)151.2 316.8 R 2.5
+("C-L" clear)151.2 328.8 R(-screen)-.2 E 2.5("C-M" accept-line)151.2
+340.8 R 2.5("C-N" ne)151.2 352.8 R(xt-history)-.15 E 2.5("C-P" pre)151.2
+364.8 R(vious-history)-.25 E 2.5("C-Q" quoted-insert)151.2 376.8 R 2.5
+("C-R" re)151.2 388.8 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
+("C-S" forw)151.2 400.8 R(ard-search-history)-.1 E 2.5
+("C-T" transpose-chars)151.2 412.8 R 2.5("C-U" unix-line-discard)151.2
+424.8 R 2.5("C-V" quoted-insert)151.2 436.8 R 2.5("C-W" unix-w)151.2
+448.8 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 460.8 R 2.5
+("C-]" character)151.2 472.8 R(-search)-.2 E 2.5("C-_" undo)151.2 484.8
+R 3.333("")151.2 496.8 S(to "/")-.833 E(self-insert)5 E 2.5("0" to)151.2
+508.8 R 2.5("9" self-insert)2.5 F 2.5(":" to)151.2 520.8 R 2.5
+("~" self-insert)2.5 F 2.5("C-?" backw)151.2 532.8 R(ard-delete-char)-.1
+E(Emacs Meta bindings)151.2 549.6 Q 2.5("M-C-G" abort)151.2 573.6 R 2.5
+("M-C-H" backw)151.2 585.6 R(ard-kill-w)-.1 E(ord)-.1 E 2.5
+("M-C-I" tab-insert)151.2 597.6 R 2.5("M-C-J" vi-editing-mode)151.2
+609.6 R 2.5("M-C-M" vi-editing-mode)151.2 621.6 R 2.5("M-C-R" re)151.2
+633.6 R -.15(ve)-.25 G(rt-line).15 E 2.5("M-C-Y" yank-nth-ar)151.2 645.6
+R(g)-.18 E 2.5("M-C-[" complete)151.2 657.6 R 2.5("M-C-]" character)
+151.2 669.6 R(-search-backw)-.2 E(ard)-.1 E 2.5("M-space" set-mark)151.2
+681.6 R 2.5("M-#" insert-comment)151.2 693.6 R 2.5("M-&" tilde-e)151.2
+705.6 R(xpand)-.15 E 2.5("M-*" insert-completions)151.2 717.6 R 2.5
+("M--" digit-ar)151.2 729.6 R(gument)-.18 E(GNU Readline 7.0)72 768 Q
+(2017 December 28)121.245 E(13)185.955 E 0 Cg EP
%%Page: 14 14
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("M-T" transpose-w)
-151.2 84 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 96 R(ord)-.1 E 2.5
-("M-Y" yank-pop)151.2 108 R 2.5("M-\\" delete-horizontal-space)151.2 120
-R 2.5("M-~" tilde-e)151.2 132 R(xpand)-.15 E 2.5("M-C-?" backw)151.2 144
-R(ard-kill-w)-.1 E(ord)-.1 E 2.5("M-_" yank-last-ar)151.2 156 R(g)-.18 E
-(Emacs Control-X bindings)151.2 172.8 Q 2.5("C-XC-G" abort)151.2 196.8 R
-2.5("C-XC-R" re-read-init-\214le)151.2 208.8 R 2.5("C-XC-U" undo)151.2
-220.8 R 2.5("C-XC-X" e)151.2 232.8 R(xchange-point-and-mark)-.15 E 2.5
-("C-X\(" start-kbd-macro)151.2 244.8 R 2.5("C-X\)" end-kbd-macro)151.2
-256.8 R 2.5("C-XE" call-last-kbd-macro)151.2 268.8 R 2.5("C-XC-?" backw)
-151.2 280.8 R(ard-kill-line)-.1 E/F1 10/Times-Bold@0 SF
-(VI Mode bindings)87 309.6 Q F0(VI Insert Mode functions)151.2 321.6 Q
-2.5("C-D" vi-eof-maybe)151.2 345.6 R 2.5("C-H" backw)151.2 357.6 R
-(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 369.6 R 2.5
-("C-J" accept-line)151.2 381.6 R 2.5("C-M" accept-line)151.2 393.6 R 2.5
-("C-R" re)151.2 405.6 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
-("C-S" forw)151.2 417.6 R(ard-search-history)-.1 E 2.5
-("C-T" transpose-chars)151.2 429.6 R 2.5("C-U" unix-line-discard)151.2
-441.6 R 2.5("C-V" quoted-insert)151.2 453.6 R 2.5("C-W" unix-w)151.2
-465.6 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 477.6 R 2.5("C-[" vi-mo)
-151.2 489.6 R -.15(ve)-.15 G(ment-mode).15 E 2.5("C-_" undo)151.2 501.6
-R 3.333("")151.2 513.6 S(to "~")-.833 E(self-insert)5 E 2.5("C-?" backw)
-151.2 525.6 R(ard-delete-char)-.1 E(VI Command Mode functions)151.2
-542.4 Q 2.5("C-D" vi-eof-maybe)151.2 566.4 R 2.5
-("C-E" emacs-editing-mode)151.2 578.4 R 2.5("C-G" abort)151.2 590.4 R
-2.5("C-H" backw)151.2 602.4 R(ard-char)-.1 E 2.5("C-J" accept-line)151.2
-614.4 R 2.5("C-K" kill-line)151.2 626.4 R 2.5("C-L" clear)151.2 638.4 R
-(-screen)-.2 E 2.5("C-M" accept-line)151.2 650.4 R 2.5("C-N" ne)151.2
-662.4 R(xt-history)-.15 E 2.5("C-P" pre)151.2 674.4 R(vious-history)-.25
-E 2.5("C-Q" quoted-insert)151.2 686.4 R 2.5("C-R" re)151.2 698.4 R -.15
-(ve)-.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 710.4 R
-(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 722.4 R
-(GNU Readline 7.0)72 768 Q(2016 February 28)123.74 E(14)188.45 E 0 Cg EP
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("M-." yank-last-ar)
+151.2 84 R(g)-.18 E 2.5("M-0" digit-ar)151.2 96 R(gument)-.18 E 2.5
+("M-1" digit-ar)151.2 108 R(gument)-.18 E 2.5("M-2" digit-ar)151.2 120 R
+(gument)-.18 E 2.5("M-3" digit-ar)151.2 132 R(gument)-.18 E 2.5
+("M-4" digit-ar)151.2 144 R(gument)-.18 E 2.5("M-5" digit-ar)151.2 156 R
+(gument)-.18 E 2.5("M-6" digit-ar)151.2 168 R(gument)-.18 E 2.5
+("M-7" digit-ar)151.2 180 R(gument)-.18 E 2.5("M-8" digit-ar)151.2 192 R
+(gument)-.18 E 2.5("M-9" digit-ar)151.2 204 R(gument)-.18 E 2.5
+("M-<" be)151.2 216 R(ginning-of-history)-.15 E 2.5
+("M-=" possible-completions)151.2 228 R 2.5("M->" end-of-history)151.2
+240 R 2.5("M-?" possible-completions)151.2 252 R 2.5("M-B" backw)151.2
+264 R(ard-w)-.1 E(ord)-.1 E 2.5("M-C" capitalize-w)151.2 276 R(ord)-.1 E
+2.5("M-D" kill-w)151.2 288 R(ord)-.1 E 2.5("M-F" forw)151.2 300 R(ard-w)
+-.1 E(ord)-.1 E 2.5("M-L" do)151.2 312 R(wncase-w)-.25 E(ord)-.1 E 2.5
+("M-N" non-incremental-forw)151.2 324 R(ard-search-history)-.1 E 2.5
+("M-P" non-incremental-re)151.2 336 R -.15(ve)-.25 G(rse-search-history)
+.15 E 2.5("M-R" re)151.2 348 R -.15(ve)-.25 G(rt-line).15 E 2.5
+("M-T" transpose-w)151.2 360 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 372 R
+(ord)-.1 E 2.5("M-Y" yank-pop)151.2 384 R 2.5
+("M-\\" delete-horizontal-space)151.2 396 R 2.5("M-~" tilde-e)151.2 408
+R(xpand)-.15 E 2.5("M-C-?" backw)151.2 420 R(ard-kill-w)-.1 E(ord)-.1 E
+2.5("M-_" yank-last-ar)151.2 432 R(g)-.18 E(Emacs Control-X bindings)
+151.2 448.8 Q 2.5("C-XC-G" abort)151.2 472.8 R 2.5
+("C-XC-R" re-read-init-\214le)151.2 484.8 R 2.5("C-XC-U" undo)151.2
+496.8 R 2.5("C-XC-X" e)151.2 508.8 R(xchange-point-and-mark)-.15 E 2.5
+("C-X\(" start-kbd-macro)151.2 520.8 R 2.5("C-X\)" end-kbd-macro)151.2
+532.8 R 2.5("C-XE" call-last-kbd-macro)151.2 544.8 R 2.5("C-XC-?" backw)
+151.2 556.8 R(ard-kill-line)-.1 E/F1 10/Times-Bold@0 SF
+(VI Mode bindings)87 585.6 Q F0(VI Insert Mode functions)151.2 597.6 Q
+2.5("C-D" vi-eof-maybe)151.2 621.6 R 2.5("C-H" backw)151.2 633.6 R
+(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 645.6 R 2.5
+("C-J" accept-line)151.2 657.6 R 2.5("C-M" accept-line)151.2 669.6 R 2.5
+("C-R" re)151.2 681.6 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
+("C-S" forw)151.2 693.6 R(ard-search-history)-.1 E 2.5
+("C-T" transpose-chars)151.2 705.6 R 2.5("C-U" unix-line-discard)151.2
+717.6 R 2.5("C-V" quoted-insert)151.2 729.6 R(GNU Readline 7.0)72 768 Q
+(2017 December 28)121.245 E(14)185.955 E 0 Cg EP
%%Page: 15 15
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5
-("C-U" unix-line-discard)151.2 84 R 2.5("C-V" quoted-insert)151.2 96 R
-2.5("C-W" unix-w)151.2 108 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 120 R
-2.5("C-_" vi-undo)151.2 132 R -4.166 3.333("" f)151.2 144 T(orw)-3.333 E
-(ard-char)-.1 E 2.5("#" insert-comment)151.2 156 R 2.5("$" end-of-line)
-151.2 168 R 2.5("%" vi-match)151.2 180 R 2.5("&" vi-tilde-e)151.2 192 R
-(xpand)-.15 E 2.5("*" vi-complete)151.2 204 R 2.5("+" ne)151.2 216 R
-(xt-history)-.15 E 2.5("," vi-char)151.2 228 R(-search)-.2 E 2.5
-("-" pre)151.2 240 R(vious-history)-.25 E 2.5("." vi-redo)151.2 252 R
-2.5("/" vi-search)151.2 264 R 2.5("0" be)151.2 276 R(ginning-of-line)
--.15 E("1" to "9")151.2 288 Q(vi-ar)5 E(g-digit)-.18 E 2.5(";" vi-char)
-151.2 300 R(-search)-.2 E 2.5("=" vi-complete)151.2 312 R 2.5
-("?" vi-search)151.2 324 R 2.5("A" vi-append-eol)151.2 336 R 2.5
-("B" vi-pre)151.2 348 R(v-w)-.25 E(ord)-.1 E 2.5("C" vi-change-to)151.2
-360 R 2.5("D" vi-delete-to)151.2 372 R 2.5("E" vi-end-w)151.2 384 R(ord)
--.1 E 2.5("F" vi-char)151.2 396 R(-search)-.2 E 2.5
-("G" vi-fetch-history)151.2 408 R 2.5("I" vi-insert-be)151.2 420 R(g)
--.15 E 2.5("N" vi-search-ag)151.2 432 R(ain)-.05 E 2.5("P" vi-put)151.2
-444 R 2.5("R" vi-replace)151.2 456 R 2.5("S" vi-subst)151.2 468 R 2.5
-("T" vi-char)151.2 480 R(-search)-.2 E 2.5("U" re)151.2 492 R -.15(ve)
--.25 G(rt-line).15 E 2.5("W" vi-ne)151.2 504 R(xt-w)-.15 E(ord)-.1 E 2.5
-("X" backw)151.2 516 R(ard-delete-char)-.1 E 2.5("Y" vi-yank-to)151.2
-528 R 2.5("\\" vi-complete)151.2 540 R 2.5("^" vi-\214rst-print)151.2
-552 R 2.5("_" vi-yank-ar)151.2 564 R(g)-.18 E 2.5("`" vi-goto-mark)151.2
-576 R 2.5("a" vi-append-mode)151.2 588 R 2.5("b" vi-pre)151.2 600 R(v-w)
--.25 E(ord)-.1 E 2.5("c" vi-change-to)151.2 612 R 2.5("d" vi-delete-to)
-151.2 624 R 2.5("e" vi-end-w)151.2 636 R(ord)-.1 E 2.5("f" vi-char)151.2
-648 R(-search)-.2 E 2.5("h" backw)151.2 660 R(ard-char)-.1 E 2.5
-("i" vi-insertion-mode)151.2 672 R 2.5("j" ne)151.2 684 R(xt-history)
--.15 E 2.5("k" pre)151.2 696 R(v-history)-.25 E 2.5("l" forw)151.2 708 R
-(ard-char)-.1 E 2.5("m" vi-set-mark)151.2 720 R(GNU Readline 7.0)72 768
-Q(2016 February 28)123.74 E(15)188.45 E 0 Cg EP
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("C-W" unix-w)151.2
+84 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 96 R 2.5("C-[" vi-mo)151.2
+108 R -.15(ve)-.15 G(ment-mode).15 E 2.5("C-_" undo)151.2 120 R 3.333
+("")151.2 132 S(to "~")-.833 E(self-insert)5 E 2.5("C-?" backw)151.2 144
+R(ard-delete-char)-.1 E(VI Command Mode functions)151.2 160.8 Q 2.5
+("C-D" vi-eof-maybe)151.2 184.8 R 2.5("C-E" emacs-editing-mode)151.2
+196.8 R 2.5("C-G" abort)151.2 208.8 R 2.5("C-H" backw)151.2 220.8 R
+(ard-char)-.1 E 2.5("C-J" accept-line)151.2 232.8 R 2.5("C-K" kill-line)
+151.2 244.8 R 2.5("C-L" clear)151.2 256.8 R(-screen)-.2 E 2.5
+("C-M" accept-line)151.2 268.8 R 2.5("C-N" ne)151.2 280.8 R(xt-history)
+-.15 E 2.5("C-P" pre)151.2 292.8 R(vious-history)-.25 E 2.5
+("C-Q" quoted-insert)151.2 304.8 R 2.5("C-R" re)151.2 316.8 R -.15(ve)
+-.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 328.8 R
+(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 340.8 R 2.5
+("C-U" unix-line-discard)151.2 352.8 R 2.5("C-V" quoted-insert)151.2
+364.8 R 2.5("C-W" unix-w)151.2 376.8 R(ord-rubout)-.1 E 2.5("C-Y" yank)
+151.2 388.8 R 2.5("C-_" vi-undo)151.2 400.8 R -4.166 3.333("" f)151.2
+412.8 T(orw)-3.333 E(ard-char)-.1 E 2.5("#" insert-comment)151.2 424.8 R
+2.5("$" end-of-line)151.2 436.8 R 2.5("%" vi-match)151.2 448.8 R 2.5
+("&" vi-tilde-e)151.2 460.8 R(xpand)-.15 E 2.5("*" vi-complete)151.2
+472.8 R 2.5("+" ne)151.2 484.8 R(xt-history)-.15 E 2.5("," vi-char)151.2
+496.8 R(-search)-.2 E 2.5("-" pre)151.2 508.8 R(vious-history)-.25 E 2.5
+("." vi-redo)151.2 520.8 R 2.5("/" vi-search)151.2 532.8 R 2.5("0" be)
+151.2 544.8 R(ginning-of-line)-.15 E("1" to "9")151.2 556.8 Q(vi-ar)5 E
+(g-digit)-.18 E 2.5(";" vi-char)151.2 568.8 R(-search)-.2 E 2.5
+("=" vi-complete)151.2 580.8 R 2.5("?" vi-search)151.2 592.8 R 2.5
+("A" vi-append-eol)151.2 604.8 R 2.5("B" vi-pre)151.2 616.8 R(v-w)-.25 E
+(ord)-.1 E 2.5("C" vi-change-to)151.2 628.8 R 2.5("D" vi-delete-to)151.2
+640.8 R 2.5("E" vi-end-w)151.2 652.8 R(ord)-.1 E 2.5("F" vi-char)151.2
+664.8 R(-search)-.2 E 2.5("G" vi-fetch-history)151.2 676.8 R 2.5
+("I" vi-insert-be)151.2 688.8 R(g)-.15 E 2.5("N" vi-search-ag)151.2
+700.8 R(ain)-.05 E 2.5("P" vi-put)151.2 712.8 R 2.5("R" vi-replace)151.2
+724.8 R(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(15)185.955
+E 0 Cg EP
%%Page: 16 16
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("n" vi-search-ag)
-151.2 84 R(ain)-.05 E 2.5("p" vi-put)151.2 96 R 2.5("r" vi-change-char)
-151.2 108 R 2.5("s" vi-subst)151.2 120 R 2.5("t" vi-char)151.2 132 R
-(-search)-.2 E 2.5("u" vi-undo)151.2 144 R 2.5("w" vi-ne)151.2 156 R
-(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 168 R 2.5("y" vi-yank-to)
-151.2 180 R 2.5("|" vi-column)151.2 192 R 2.5("~" vi-change-case)151.2
-204 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72 220.8 Q/F2 10/Times-Italic@0
-SF(The Gnu Readline Libr)108 232.8 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5
-E(ox and Chet Rame)-.15 E(y)-.15 E F2(The Gnu History Libr)108 244.8 Q
-(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E
-F2(bash)108 256.8 Q F0(\(1\))A F1(FILES)72 273.6 Q F2(~/.inputr)109.666
-285.6 Q(c)-.37 E F0(Indi)144 297.6 Q(vidual)-.25 E/F3 10/Times-Bold@0 SF
--.18(re)2.5 G(adline).18 E F0(initialization \214le)2.5 E F1 -.548(AU)72
-314.4 S(THORS).548 E F0(Brian F)108 326.4 Q(ox, Free Softw)-.15 E(are F)
--.1 E(oundation)-.15 E(bfox@gnu.or)108 338.4 Q(g)-.18 E(Chet Rame)108
-355.2 Q 1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15
-G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108 367.2 Q(y@case.edu)
--.15 E F1 -.11(BU)72 384 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0
-.69(If you \214nd a b)108 396 R .69(ug in)-.2 F F3 -.18(re)3.19 G
-(adline,).18 E F0 .69(you should report it.)3.19 F .691
-(But \214rst, you should mak)5.69 F 3.191(es)-.1 G .691
-(ure that it really is a b)-3.191 F(ug,)-.2 E
-(and that it appears in the latest v)108 408 Q(ersion of the)-.15 E F3
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("S" vi-subst)151.2
+84 R 2.5("T" vi-char)151.2 96 R(-search)-.2 E 2.5("U" re)151.2 108 R
+-.15(ve)-.25 G(rt-line).15 E 2.5("W" vi-ne)151.2 120 R(xt-w)-.15 E(ord)
+-.1 E 2.5("X" backw)151.2 132 R(ard-delete-char)-.1 E 2.5
+("Y" vi-yank-to)151.2 144 R 2.5("\\" vi-complete)151.2 156 R 2.5
+("^" vi-\214rst-print)151.2 168 R 2.5("_" vi-yank-ar)151.2 180 R(g)-.18
+E 2.5("`" vi-goto-mark)151.2 192 R 2.5("a" vi-append-mode)151.2 204 R
+2.5("b" vi-pre)151.2 216 R(v-w)-.25 E(ord)-.1 E 2.5("c" vi-change-to)
+151.2 228 R 2.5("d" vi-delete-to)151.2 240 R 2.5("e" vi-end-w)151.2 252
+R(ord)-.1 E 2.5("f" vi-char)151.2 264 R(-search)-.2 E 2.5("h" backw)
+151.2 276 R(ard-char)-.1 E 2.5("i" vi-insertion-mode)151.2 288 R 2.5
+("j" ne)151.2 300 R(xt-history)-.15 E 2.5("k" pre)151.2 312 R(v-history)
+-.25 E 2.5("l" forw)151.2 324 R(ard-char)-.1 E 2.5("m" vi-set-mark)151.2
+336 R 2.5("n" vi-search-ag)151.2 348 R(ain)-.05 E 2.5("p" vi-put)151.2
+360 R 2.5("r" vi-change-char)151.2 372 R 2.5("s" vi-subst)151.2 384 R
+2.5("t" vi-char)151.2 396 R(-search)-.2 E 2.5("u" vi-undo)151.2 408 R
+2.5("w" vi-ne)151.2 420 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2
+432 R 2.5("y" vi-yank-to)151.2 444 R 2.5("|" vi-column)151.2 456 R 2.5
+("~" vi-change-case)151.2 468 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72
+484.8 Q/F2 10/Times-Italic@0 SF(The Gnu Readline Libr)108 496.8 Q(ary)
+-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2
+(The Gnu History Libr)108 508.8 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
+(ox and Chet Rame)-.15 E(y)-.15 E F2(bash)108 520.8 Q F0(\(1\))A F1
+(FILES)72 537.6 Q F2(~/.inputr)109.666 549.6 Q(c)-.37 E F0(Indi)144
+561.6 Q(vidual)-.25 E/F3 10/Times-Bold@0 SF -.18(re)2.5 G(adline).18 E
+F0(initialization \214le)2.5 E F1 -.548(AU)72 578.4 S(THORS).548 E F0
+(Brian F)108 590.4 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E
+(bfox@gnu.or)108 602.4 Q(g)-.18 E(Chet Rame)108 619.2 Q 1.3 -.65(y, C)
+-.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)
+-.25 G(rsity).15 E(chet.rame)108 631.2 Q(y@case.edu)-.15 E F1 -.11(BU)72
+648 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .69(If you \214nd a b)
+108 660 R .69(ug in)-.2 F F3 -.18(re)3.19 G(adline,).18 E F0 .69
+(you should report it.)3.19 F .691(But \214rst, you should mak)5.69 F
+3.191(es)-.1 G .691(ure that it really is a b)-3.191 F(ug,)-.2 E
+(and that it appears in the latest v)108 672 Q(ersion of the)-.15 E F3
-.18(re)2.5 G(adline).18 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.)
-.15 E .705(Once you ha)108 424.8 R 1.005 -.15(ve d)-.2 H .705
+.15 E .705(Once you ha)108 688.8 R 1.005 -.15(ve d)-.2 H .705
(etermined that a b).15 F .704(ug actually e)-.2 F .704(xists, mail a b)
-.15 F .704(ug report to)-.2 F F2 -.2(bu)3.204 G(g\255r).2 E(eadline)
-.37 E F0(@)A F2(gnu.or)A(g)-.37 E F0 5.704(.I)C 3.204(fy)-5.704 G(ou)
--3.204 E(ha)108 436.8 Q 1.809 -.15(ve a \214)-.2 H 1.509
+-3.204 E(ha)108 700.8 Q 1.809 -.15(ve a \214)-.2 H 1.509
(x, you are welcome to mail that as well!).15 F 1.51
(Suggestions and `philosophical' b)6.51 F 1.51(ug reports may be)-.2 F
-(mailed to)108 448.8 Q F2 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F2
+(mailed to)108 712.8 Q F2 -.2(bu)2.5 G(g-r).2 E(eadline)-.37 E F0(@)A F2
(gnu.or)A(g)-.37 E F0(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3
-(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 465.6 Q
+(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 729.6 Q
(ug reports concerning this manual page should be directed to)-.2 E F2
-.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.).25 E
-F1 -.11(BU)72 482.4 S(GS).11 E F0(It')108 494.4 Q 2.5(st)-.55 G
+(GNU Readline 7.0)72 768 Q(2017 December 28)121.245 E(16)185.955 E 0 Cg
+EP
+%%Page: 17 17
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
+(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10.95/Times-Bold@0 SF
+-.11(BU)72 84 S(GS).11 E F0(It')108 96 Q 2.5(st)-.55 G
(oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 7.0)72 768 Q
-(2016 February 28)123.74 E(16)188.45 E 0 Cg EP
+(2017 December 28)121.245 E(17)185.955 E 0 Cg EP
%%Trailer
end
%%EOF
diff --git a/doc/rltech.texi b/doc/rltech.texi
index b8ce90f..28a02d9 100644
--- a/doc/rltech.texi
+++ b/doc/rltech.texi
@@ -90,6 +90,12 @@ If @code{readline} encounters an @code{EOF} while reading the line, and the
line is empty at that point, then @code{(char *)NULL} is returned.
Otherwise, the line is ended just as if a newline had been typed.
+Readline performs some expansion on the @var{prompt} before it is
+displayed on the screen. See the description of @code{rl_expand_prompt}
+(@pxref{Redisplay}) for additional details, especially if @var{prompt}
+will contain characters that do not consume physical screen space when
+displayed.
+
If you want the user to be able to get at the line later, (with
@key{C-p} for example), you must call @code{add_history()} to save the
line away in a @dfn{history} list of such lines.
@@ -688,6 +694,11 @@ Free all storage associated with @var{keymap}. This calls
@code{rl_discard_keymap} to free subordindate keymaps and macros.
@end deftypefun
+@deftypefun int rl_empty_keymap (Keymap keymap)
+Return non-zero if there are no keys bound to functions in @var{keymap};
+zero if there are any keys bound.
+@end deftypefun
+
Readline has several internal keymaps. These functions allow you to
change which keymap is active.
@@ -709,6 +720,24 @@ Return the name matching @var{keymap}. @var{name} is one which would
be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
@end deftypefun
+@deftypefun int rl_set_keymap_name (const char *name, Keymap keymap)
+Set the name of @var{keymap}. This name will then be "registered" and
+available for use in a @code{set keymap} inputrc directive
+@pxref{Readline Init File}).
+The @var{name} may not be one of Readline's builtin keymap names;
+you may not add a different name for one of Readline's builtin keymaps.
+You may replace the name associated with a given keymap by calling this
+function more than once with the same @var{keymap} argument.
+You may associate a registered @var{name} with a new keymap by calling this
+function more than once with the same @var{name} argument.
+There is no way to remove a named keymap once the name has been
+registered.
+Readline will make a copy of @var{name}.
+The return value is greater than zero unless @var{name} is one of
+Readline's builtin keymap names or @var{keymap} is one of Readline's
+builtin keymaps.
+@end deftypefun
+
@node Binding Keys
@subsection Binding Keys
@@ -835,6 +864,16 @@ Return the function invoked by @var{keyseq} in keymap @var{map}.
If @var{map} is @code{NULL}, the current keymap is used. If @var{type} is
not @code{NULL}, the type of the object is returned in the @code{int} variable
it points to (one of @code{ISFUNC}, @code{ISKMAP}, or @code{ISMACR}).
+It takes a "translated" key sequence and should not be used if the key sequence
+can include NUL.
+@end deftypefun
+
+@deftypefun {rl_command_func_t *} rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type)
+Return the function invoked by @var{keyseq} of length @var{len}
+in keymap @var{map}. Equivalent to @code{rl_function_of_keyseq} with the
+addition of the @var{len} parameter.
+It takes a "translated" key sequence and should be used if the key sequence
+can include NUL.
@end deftypefun
@deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function)
@@ -1679,6 +1718,19 @@ handlers, depending on the values of @code{rl_catch_signals} and
@code{rl_catch_sigwinch}.
@end deftypefun
+If an application wants to force Readline to handle any signals that
+have arrived while it has been executing, @code{rl_check_signals()}
+will call Readline's internal signal handler if there are any pending
+signals. This is primarily intended for those applications that use
+a custom @code{rl_getc_function} (@pxref{Readline Variables}) and wish
+to handle signals received while waiting for input.
+
+@deftypefun void rl_check_signals (void)
+If there are any pending signals, call Readline's internal signal handling
+functions to process them. @code{rl_pending_signal()} can be used independently
+to determine whether or not there are any pending signals.
+@end deftypefun
+
If an application does not wish Readline to catch @code{SIGWINCH}, it may
call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force
Readline to update its idea of the terminal size when a @code{SIGWINCH}
@@ -2094,6 +2146,8 @@ character (@samp{\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.
+It is set to the default before any application-specific completion function
+is called, and may only be changed within such a function.
@end deftypevar
@deftypevar int rl_completion_suppress_append
diff --git a/doc/rluser.texi b/doc/rluser.texi
index 4c094c8..a59bd14 100644
--- a/doc/rluser.texi
+++ b/doc/rluser.texi
@@ -475,6 +475,7 @@ The default value is @samp{off}.
If set to @samp{on}, and @var{completion-ignore-case} is enabled, Readline
treats hyphens (@samp{-}) and underscores (@samp{_}) as equivalent when
performing case-insensitive filename matching and completion.
+The default value is @samp{off}.
@item completion-prefix-display-length
@vindex completion-prefix-display-length
@@ -524,7 +525,8 @@ set to either @samp{emacs} or @samp{vi}.
@item emacs-mode-string
@vindex emacs-mode-string
-This string is displayed immediately before the last line of the primary
+If the @var{show-mode-in-prompt} variable is enabled,
+this string is displayed immediately before the last line of the primary
prompt when emacs editing mode is active. The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
backslash escape sequences is available.
@@ -604,7 +606,7 @@ If this variable has not been given a value, the characters @key{ESC} and
@item keymap
@vindex keymap
Sets Readline's idea of the current keymap for key binding commands.
-Acceptable @code{keymap} names are
+Built-in @code{keymap} names are
@code{emacs},
@code{emacs-standard},
@code{emacs-meta},
@@ -615,6 +617,7 @@ Acceptable @code{keymap} names are
@code{vi-insert}.
@code{vi} is equivalent to @code{vi-command} (@code{vi-move} is also a
synonym); @code{emacs} is equivalent to @code{emacs-standard}.
+Applications may add additional names.
The default value is @code{emacs}.
The value of the @code{editing-mode} variable also affects the
default keymap.
@@ -714,9 +717,9 @@ The default value is @samp{off}.
@item show-mode-in-prompt
@vindex show-mode-in-prompt
-If set to @samp{on}, add a character to the beginning of the prompt
+If set to @samp{on}, add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi insertion.
-The mode strings are user-settable.
+The mode strings are user-settable (e.g., @var{emacs-mode-string}).
The default value is @samp{off}.
@item skip-completed-text
@@ -735,7 +738,8 @@ The default value is @samp{off}.
@item vi-cmd-mode-string
@vindex vi-cmd-mode-string
-This string is displayed immediately before the last line of the primary
+If the @var{show-mode-in-prompt} variable is enabled,
+this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in command mode.
The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
@@ -747,7 +751,8 @@ The default is @samp{(cmd)}.
@item vi-ins-mode-string
@vindex vi-ins-mode-string
-This string is displayed immediately before the last line of the primary
+If the @var{show-mode-in-prompt} variable is enabled,
+this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in insertion mode.
The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
@@ -799,7 +804,7 @@ Meta-Rubout: backward-kill-word
Control-o: "> output"
@end example
-In the above example, @kbd{C-u} is bound to the function
+In the example above, @kbd{C-u} is bound to the function
@code{universal-argument},
@kbd{M-DEL} is bound to the function @code{backward-kill-word}, and
@kbd{C-o} is bound to run the macro
@@ -914,8 +919,9 @@ of tests. There are four parser directives used.
@item $if
The @code{$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.
+Readline. The text of the test, after any comparison operator,
+extends to the end of the line;
+unless otherwise noted, no characters are required to isolate it.
@table @code
@item mode
@@ -935,6 +941,27 @@ the portion of the terminal name before the first @samp{-}. This
allows @code{sun} to match both @code{sun} and @code{sun-cmd},
for instance.
+@item version
+The @code{version} test may be used to perform comparisons against
+specific Readline versions.
+The @code{version} expands to the current Readline version.
+The set of comparison operators includes
+@samp{=} (and @samp{==}), @samp{!=}, @samp{<=}, @samp{>=}, @samp{<},
+and @samp{>}.
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., @samp{7.1}). If the minor version is omitted, it
+is assumed to be @samp{0}.
+The operator may be separated from the string @code{version} and
+from the version number argument by whitespace.
+The following example sets a variable if the Readline version being used
+is 7.0 or newer:
+@example
+$if version >= 7.0
+set show-mode-in-prompt on
+$endif
+@end example
+
@item application
The @var{application} construct is used to include
application-specific settings. Each program using the Readline
@@ -949,6 +976,23 @@ $if Bash
"\C-xq": "\eb\"\ef\""
$endif
@end example
+
+@item variable
+The @var{variable} construct provides simple equality tests for Readline
+variables and values.
+The permitted comparison operators are @samp{=}, @samp{==}, and @samp{!=}.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values @var{on} and @var{off}.
+The following example is equivalent to the @code{mode=emacs} test described
+above:
+@example
+$if editing-mode == emacs
+set show-mode-in-prompt on
+$endif
+@end example
@end table
@item $endif
@@ -1138,6 +1182,19 @@ Move back to the start of the current or previous word.
Words are delimited by non-quoted shell metacharacters.
@end ifset
+@item previous-screen-line ()
+Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not
+greater than the length of the prompt plus the screen width.
+
+@item next-screen-line ()
+Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
+
@item clear-screen (C-l)
Clear the screen and redraw the current line,
leaving the current line at the top of the screen.
@@ -1216,14 +1273,14 @@ The search string must match at the beginning of a history line.
This is a non-incremental search.
By default, this command is unbound.
-@item history-substr-search-forward ()
+@item history-substring-search-forward ()
Search forward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
This is a non-incremental search.
By default, this command is unbound.
-@item history-substr-search-backward ()
+@item history-substring-search-backward ()
Search backward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
@@ -1297,7 +1354,7 @@ This function is intended to be bound to the "bracketed paste" escape
sequence sent by some terminals, and such a binding is assigned by default.
It allows Readline to insert the pasted text as a single unit without treating
each character as if it had been read from the keyboard. The characters
-are inserted as if each one was bound to @code{self-insert}) instead of
+are inserted as if each one was bound to @code{self-insert} instead of
executing any editing commands.
@item transpose-chars (C-t)
@@ -1590,9 +1647,10 @@ Abort the current editing command and
ring the terminal's bell (subject to the setting of
@code{bell-style}).
-@item do-uppercase-version (M-a, M-b, M-@var{x}, @dots{})
-If the metafied character @var{x} is lowercase, run the command
-that is bound to the corresponding uppercase character.
+@item do-lowercase-version (M-A, M-B, M-@var{x}, @dots{})
+If the metafied character @var{x} is upper case, run the command
+that is bound to the corresponding metafied lower case character.
+The behavior is undefined if @var{x} is already lower case.
@item prefix-meta (@key{ESC})
Metafy the next character typed. This is for keyboards
@@ -1718,10 +1776,11 @@ A synonym for @code{yank-last-arg}.
@item operate-and-get-next (C-o)
Accept the current line for execution and fetch the next line
-relative to the current line from the history for editing. Any
-argument is ignored.
+relative to the current line from the history for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
-@item edit-and-execute-command (C-xC-e)
+@item edit-and-execute-command (C-x C-e)
Invoke an editor on the current command line, and execute the result as shell
commands.
Bash attempts to invoke
@@ -1792,6 +1851,9 @@ If no compspec is found for the full pathname, an attempt is made to
find a compspec for the portion following the final slash.
If those searches do not result in a compspec, any compspec defined with
the @option{-D} option to @code{complete} is used as the default.
+If there is no default compspec, Bash attempts alias expansion
+on the command word as a final resort, and attempts to find a compspec
+for the command word from any successful expansion
Once a compspec has been found, it is used to generate the list of
matching words.
@@ -1816,7 +1878,9 @@ Next, the string specified as the argument to the @option{-W} option
is considered.
The string is first split using the characters in the @env{IFS}
special variable as delimiters.
-Shell quoting is honored.
+Shell quoting is honored within the string, in order to provide a
+mechanism for the words to contain shell metacharacters or characters
+in the value of @env{IFS}.
Each word is then expanded using
brace expansion, tilde expansion, parameter and variable expansion,
command substitution, and arithmetic expansion,
@@ -1960,10 +2024,10 @@ matches were generated.
@item complete
@btindex complete
@example
-@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DE] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}]
-[-F @var{function}] [-C @var{command}] [-X @var{filterpat}]
+@code{complete [-abcdefgjksuv] [-o @var{comp-option}] [-DEI] [-A @var{action}] [-G @var{globpat}]
+[-W @var{wordlist}] [-F @var{function}] [-C @var{command}] [-X @var{filterpat}]
[-P @var{prefix}] [-S @var{suffix}] @var{name} [@var{name} @dots{}]}
-@code{complete -pr [-DE] [@var{name} @dots{}]}
+@code{complete -pr [-DEI] [@var{name} @dots{}]}
@end example
Specify how arguments to each @var{name} should be completed.
@@ -1973,16 +2037,24 @@ reused as input.
The @option{-r} option removes a completion specification for
each @var{name}, or, if no @var{name}s are supplied, all
completion specifications.
-The @option{-D} option indicates that the remaining options and actions should
+The @option{-D} option indicates that other supplied options and actions should
apply to the ``default'' command completion; that is, completion attempted
on a command for which no completion has previously been defined.
-The @option{-E} option indicates that the remaining options and actions should
+The @option{-E} option indicates that other supplied options and actions should
apply to ``empty'' command completion; that is, completion attempted on a
blank line.
+The @option{-I} option indicates that other supplied options and actions should
+apply to completion on the inital non-assignment word on the line, or after a
+command delimiter such as @samp{;} or @samp{|}, which is usually command
+name completion.
+If multiple options are supplied, the @option{-D} option takes precedence
+over @option{-E}, and both take precedence over @option{-I}.
+If any of @option{-D}, @option{-E}, or @option{-I} are supplied, any other
+@var{name} arguments are ignored; these completions only apply to the case
+specified by the option.
The process of applying these completion specifications when word completion
-is attempted is described above (@pxref{Programmable Completion}). The
-@option{-D} option takes precedence over @option{-E}.
+is attempted is described above (@pxref{Programmable Completion}).
Other options, if specified, have the following meanings.
The arguments to the @option{-G}, @option{-W}, and @option{-X} options
@@ -2012,7 +2084,7 @@ Perform directory name completion if the compspec generates no matches.
@item filenames
Tell Readline that the compspec generates filenames, so it can perform any
-filename-specific processing (like adding a slash to directory names
+filename-specific processing (like adding a slash to directory names,
quoting special characters, or suppressing trailing spaces).
This option is intended to be used with shell functions specified
with @option{-F}.
@@ -2167,7 +2239,7 @@ an error occurs adding a completion specification.
@item compopt
@btindex compopt
@example
-@code{compopt} [-o @var{option}] [-DE] [+o @var{option}] [@var{name}]
+@code{compopt} [-o @var{option}] [-DEI] [+o @var{option}] [@var{name}]
@end example
Modify completion options for each @var{name} according to the
@var{option}s, or for the currently-executing completion if no @var{name}s
@@ -2176,14 +2248,19 @@ If no @var{option}s are given, display the completion options for each
@var{name} or the current completion.
The possible values of @var{option} are those valid for the @code{complete}
builtin described above.
-The @option{-D} option indicates that the remaining options should
+The @option{-D} option indicates that other supplied options should
apply to the ``default'' command completion; that is, completion attempted
on a command for which no completion has previously been defined.
-The @option{-E} option indicates that the remaining options should
+The @option{-E} option indicates that other supplied options should
apply to ``empty'' command completion; that is, completion attempted on a
blank line.
+The @option{-I} option indicates that other supplied options should
+apply to completion on the inital non-assignment word on the line, or after a
+command delimiter such as @samp{;} or @samp{|}, which is usually command
+name completion.
-The @option{-D} option takes precedence over @option{-E}.
+If multiple options are supplied, the @option{-D} option takes precedence
+over @option{-E}, and both take precedence over @option{-I}
The return value is true unless an invalid option is supplied, an attempt
is made to modify the options for a @var{name} for which no completion
@@ -2200,7 +2277,7 @@ a shell function and bind it to a particular command using @code{complete -F}.
The following function provides completions for the @code{cd} builtin.
It is a reasonably good example of what shell functions must do when
-used for completion. This function uses the word passsed as @code{$2}
+used for completion. This function uses the word passed as @code{$2}
to determine the directory name to complete. You can also use the
@code{COMP_WORDS} array variable; the current word is indexed by the
@code{COMP_CWORD} variable.
@@ -2230,7 +2307,7 @@ _comp_cd()
local cur _skipdot _cdpath
local i j k
- # Tilde expansion, with side effect of expanding tilde to full pathname
+ # Tilde expansion, which also expands tilde to full pathname
case "$2" in
\~*) eval cur="$2" ;;
*) cur=$2 ;;
diff --git a/doc/rluserman.dvi b/doc/rluserman.dvi
index b6ec82f..a985ac1 100644
--- a/doc/rluserman.dvi
+++ b/doc/rluserman.dvi
Binary files differ
diff --git a/doc/rluserman.html b/doc/rluserman.html
index e742ff0..8600cb9 100644
--- a/doc/rluserman.html
+++ b/doc/rluserman.html
@@ -1,6 +1,6 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on September, 7 2016 by texi2html 1.64 -->
+<!-- Created on December, 18 2018 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
@@ -647,6 +647,7 @@ The default value is <SAMP>`off'</SAMP>.
If set to <SAMP>`on'</SAMP>, and <VAR>completion-ignore-case</VAR> is enabled, Readline
treats hyphens (<SAMP>`-'</SAMP>) and underscores (<SAMP>`_'</SAMP>) as equivalent when
performing case-insensitive filename matching and completion.
+The default value is <SAMP>`off'</SAMP>.
<P>
<DT><CODE>completion-prefix-display-length</CODE>
@@ -703,7 +704,8 @@ set to either <SAMP>`emacs'</SAMP> or <SAMP>`vi'</SAMP>.
<DT><CODE>emacs-mode-string</CODE>
<DD><A NAME="IDX20"></A>
-This string is displayed immediately before the last line of the primary
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
prompt when emacs editing mode is active. The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
backslash escape sequences is available.
@@ -793,7 +795,7 @@ If this variable has not been given a value, the characters <KBD>ESC</KBD> and
<DT><CODE>keymap</CODE>
<DD><A NAME="IDX30"></A>
Sets Readline's idea of the current keymap for key binding commands.
-Acceptable <CODE>keymap</CODE> names are
+Built-in <CODE>keymap</CODE> names are
<CODE>emacs</CODE>,
<CODE>emacs-standard</CODE>,
<CODE>emacs-meta</CODE>,
@@ -804,6 +806,7 @@ Acceptable <CODE>keymap</CODE> names are
<CODE>vi-insert</CODE>.
<CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE> (<CODE>vi-move</CODE> is also a
synonym); <CODE>emacs</CODE> is equivalent to <CODE>emacs-standard</CODE>.
+Applications may add additional names.
The default value is <CODE>emacs</CODE>.
The value of the <CODE>editing-mode</CODE> variable also affects the
default keymap.
@@ -916,9 +919,9 @@ The default value is <SAMP>`off'</SAMP>.
<DT><CODE>show-mode-in-prompt</CODE>
<DD><A NAME="IDX40"></A>
-If set to <SAMP>`on'</SAMP>, add a character to the beginning of the prompt
+If set to <SAMP>`on'</SAMP>, add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi insertion.
-The mode strings are user-settable.
+The mode strings are user-settable (e.g., <VAR>emacs-mode-string</VAR>).
The default value is <SAMP>`off'</SAMP>.
<P>
@@ -939,7 +942,8 @@ The default value is <SAMP>`off'</SAMP>.
<DT><CODE>vi-cmd-mode-string</CODE>
<DD><A NAME="IDX42"></A>
-This string is displayed immediately before the last line of the primary
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in command mode.
The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
@@ -952,7 +956,8 @@ The default is <SAMP>`(cmd)'</SAMP>.
<DT><CODE>vi-ins-mode-string</CODE>
<DD><A NAME="IDX43"></A>
-This string is displayed immediately before the last line of the primary
+If the <VAR>show-mode-in-prompt</VAR> variable is enabled,
+this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in insertion mode.
The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
@@ -1003,7 +1008,7 @@ 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
+In the example above, <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
@@ -1142,8 +1147,9 @@ of tests. There are four parser directives used.
<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.
+Readline. The text of the test, after any comparison operator,
+extends to the end of the line;
+unless otherwise noted, no characters are required to isolate it.
<P>
<DL COMPACT>
@@ -1166,6 +1172,26 @@ allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>,
for instance.
<P>
+<DT><CODE>version</CODE>
+<DD>The <CODE>version</CODE> test may be used to perform comparisons against
+specific Readline versions.
+The <CODE>version</CODE> expands to the current Readline version.
+The set of comparison operators includes
+<SAMP>`='</SAMP> (and <SAMP>`=='</SAMP>), <SAMP>`!='</SAMP>, <SAMP>`&#60;='</SAMP>, <SAMP>`&#62;='</SAMP>, <SAMP>`&#60;'</SAMP>,
+and <SAMP>`&#62;'</SAMP>.
+The version number supplied on the right side of the operator consists
+of a major version number, an optional decimal point, and an optional
+minor version (e.g., <SAMP>`7.1'</SAMP>). If the minor version is omitted, it
+is assumed to be <SAMP>`0'</SAMP>.
+The operator may be separated from the string <CODE>version</CODE> and
+from the version number argument by whitespace.
+The following example sets a variable if the Readline version being used
+is 7.0 or newer:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if version &#62;= 7.0
+set show-mode-in-prompt on
+$endif
+</pre></td></tr></table><P>
+
<DT><CODE>application</CODE>
<DD>The <VAR>application</VAR> construct is used to include
application-specific settings. Each program using the Readline
@@ -1178,6 +1204,22 @@ key sequence that quotes the current or previous word in Bash:
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endif
+</pre></td></tr></table><P>
+
+<DT><CODE>variable</CODE>
+<DD>The <VAR>variable</VAR> construct provides simple equality tests for Readline
+variables and values.
+The permitted comparison operators are <SAMP>`='</SAMP>, <SAMP>`=='</SAMP>, and <SAMP>`!='</SAMP>.
+The variable name must be separated from the comparison operator by
+whitespace; the operator may be separated from the value on the right hand
+side by whitespace.
+Both string and boolean variables may be tested. Boolean variables must be
+tested against the values <VAR>on</VAR> and <VAR>off</VAR>.
+The following example is equivalent to the <CODE>mode=emacs</CODE> test described
+above:
+<TABLE><tr><td>&nbsp;</td><td class=example><pre>$if editing-mode == emacs
+set show-mode-in-prompt on
+$endif
</pre></td></tr></table></DL>
<P>
@@ -1419,15 +1461,34 @@ Words are composed of letters and digits.
<P>
<A NAME="IDX57"></A>
-<DT><CODE>clear-screen (C-l)</CODE>
+<DT><CODE>previous-screen-line ()</CODE>
<DD><A NAME="IDX58"></A>
+Attempt to move point to the same physical screen column on the previous
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if point is not
+greater than the length of the prompt plus the screen width.
+<P>
+
+<A NAME="IDX59"></A>
+<DT><CODE>next-screen-line ()</CODE>
+<DD><A NAME="IDX60"></A>
+Attempt to move point to the same physical screen column on the next
+physical screen line. This will not have the desired effect if the current
+Readline line does not take up more than one physical line or if the length
+of the current Readline line is not greater than the length of the prompt
+plus the screen width.
+<P>
+
+<A NAME="IDX61"></A>
+<DT><CODE>clear-screen (C-l)</CODE>
+<DD><A NAME="IDX62"></A>
Clear the screen and redraw the current line,
leaving the current line at the top of the screen.
<P>
-<A NAME="IDX59"></A>
+<A NAME="IDX63"></A>
<DT><CODE>redraw-current-line ()</CODE>
-<DD><A NAME="IDX60"></A>
+<DD><A NAME="IDX64"></A>
Refresh the current line. By default, this is unbound.
<P>
@@ -1453,9 +1514,9 @@ Refresh the current line. By default, this is unbound.
<P>
<DL COMPACT>
-<A NAME="IDX61"></A>
+<A NAME="IDX65"></A>
<DT><CODE>accept-line (Newline or Return)</CODE>
-<DD><A NAME="IDX62"></A>
+<DD><A NAME="IDX66"></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
@@ -1464,66 +1525,66 @@ If this line is a modified history line, the history line is restored
to its original state.
<P>
-<A NAME="IDX63"></A>
+<A NAME="IDX67"></A>
<DT><CODE>previous-history (C-p)</CODE>
-<DD><A NAME="IDX64"></A>
+<DD><A NAME="IDX68"></A>
Move `back' through the history list, fetching the previous command.
<P>
-<A NAME="IDX65"></A>
+<A NAME="IDX69"></A>
<DT><CODE>next-history (C-n)</CODE>
-<DD><A NAME="IDX66"></A>
+<DD><A NAME="IDX70"></A>
Move `forward' through the history list, fetching the next command.
<P>
-<A NAME="IDX67"></A>
+<A NAME="IDX71"></A>
<DT><CODE>beginning-of-history (M-&#60;)</CODE>
-<DD><A NAME="IDX68"></A>
+<DD><A NAME="IDX72"></A>
Move to the first line in the history.
<P>
-<A NAME="IDX69"></A>
+<A NAME="IDX73"></A>
<DT><CODE>end-of-history (M-&#62;)</CODE>
-<DD><A NAME="IDX70"></A>
+<DD><A NAME="IDX74"></A>
Move to the end of the input history, i.e., the line currently
being entered.
<P>
-<A NAME="IDX71"></A>
+<A NAME="IDX75"></A>
<DT><CODE>reverse-search-history (C-r)</CODE>
-<DD><A NAME="IDX72"></A>
+<DD><A NAME="IDX76"></A>
Search backward starting at the current line and moving `up' through
the history as necessary. This is an incremental search.
<P>
-<A NAME="IDX73"></A>
+<A NAME="IDX77"></A>
<DT><CODE>forward-search-history (C-s)</CODE>
-<DD><A NAME="IDX74"></A>
+<DD><A NAME="IDX78"></A>
Search forward starting at the current line and moving `down' through
the history as necessary. This is an incremental search.
<P>
-<A NAME="IDX75"></A>
+<A NAME="IDX79"></A>
<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
-<DD><A NAME="IDX76"></A>
+<DD><A NAME="IDX80"></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.
The search string may match anywhere in a history line.
<P>
-<A NAME="IDX77"></A>
+<A NAME="IDX81"></A>
<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
-<DD><A NAME="IDX78"></A>
+<DD><A NAME="IDX82"></A>
Search forward starting at the current line and moving `down'
through the history as necessary using a non-incremental search
for a string supplied by the user.
The search string may match anywhere in a history line.
<P>
-<A NAME="IDX79"></A>
+<A NAME="IDX83"></A>
<DT><CODE>history-search-forward ()</CODE>
-<DD><A NAME="IDX80"></A>
+<DD><A NAME="IDX84"></A>
Search forward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
@@ -1531,9 +1592,9 @@ This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX81"></A>
+<A NAME="IDX85"></A>
<DT><CODE>history-search-backward ()</CODE>
-<DD><A NAME="IDX82"></A>
+<DD><A NAME="IDX86"></A>
Search backward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
@@ -1541,9 +1602,9 @@ This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX83"></A>
-<DT><CODE>history-substr-search-forward ()</CODE>
-<DD><A NAME="IDX84"></A>
+<A NAME="IDX87"></A>
+<DT><CODE>history-substring-search-forward ()</CODE>
+<DD><A NAME="IDX88"></A>
Search forward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
@@ -1551,9 +1612,9 @@ This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX85"></A>
-<DT><CODE>history-substr-search-backward ()</CODE>
-<DD><A NAME="IDX86"></A>
+<A NAME="IDX89"></A>
+<DT><CODE>history-substring-search-backward ()</CODE>
+<DD><A NAME="IDX90"></A>
Search backward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
@@ -1561,9 +1622,9 @@ This is a non-incremental search.
By default, this command is unbound.
<P>
-<A NAME="IDX87"></A>
+<A NAME="IDX91"></A>
<DT><CODE>yank-nth-arg (M-C-y)</CODE>
-<DD><A NAME="IDX88"></A>
+<DD><A NAME="IDX92"></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>,
@@ -1574,9 +1635,9 @@ Once the argument <VAR>n</VAR> is computed, the argument is extracted
as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified.
<P>
-<A NAME="IDX89"></A>
+<A NAME="IDX93"></A>
<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
-<DD><A NAME="IDX90"></A>
+<DD><A NAME="IDX94"></A>
Insert last argument to the previous command (the last word of the
previous history entry).
With a numeric argument, behave exactly like <CODE>yank-nth-arg</CODE>.
@@ -1613,71 +1674,71 @@ as if the <SAMP>`!$'</SAMP> history expansion had been specified.
<DL COMPACT>
-<A NAME="IDX91"></A>
+<A NAME="IDX95"></A>
<DT><CODE><I>end-of-file</I> (usually C-d)</CODE>
-<DD><A NAME="IDX92"></A>
+<DD><A NAME="IDX96"></A>
The character indicating end-of-file as set, for example, by
<CODE>stty</CODE>. If this character is read when there are no characters
on the line, and point is at the beginning of the line, Readline
interprets it as the end of input and returns EOF.
<P>
-<A NAME="IDX93"></A>
+<A NAME="IDX97"></A>
<DT><CODE>delete-char (C-d)</CODE>
-<DD><A NAME="IDX94"></A>
+<DD><A NAME="IDX98"></A>
Delete the character at point. If this function is bound to the
same character as the tty EOF character, as <KBD>C-d</KBD>
commonly is, see above for the effects.
<P>
-<A NAME="IDX95"></A>
+<A NAME="IDX99"></A>
<DT><CODE>backward-delete-char (Rubout)</CODE>
-<DD><A NAME="IDX96"></A>
+<DD><A NAME="IDX100"></A>
Delete the character behind the cursor. A numeric argument means
to kill the characters instead of deleting them.
<P>
-<A NAME="IDX97"></A>
+<A NAME="IDX101"></A>
<DT><CODE>forward-backward-delete-char ()</CODE>
-<DD><A NAME="IDX98"></A>
+<DD><A NAME="IDX102"></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="IDX99"></A>
+<A NAME="IDX103"></A>
<DT><CODE>quoted-insert (C-q or C-v)</CODE>
-<DD><A NAME="IDX100"></A>
+<DD><A NAME="IDX104"></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="IDX101"></A>
+<A NAME="IDX105"></A>
<DT><CODE>tab-insert (M-<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX102"></A>
+<DD><A NAME="IDX106"></A>
Insert a tab character.
<P>
-<A NAME="IDX103"></A>
+<A NAME="IDX107"></A>
<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
-<DD><A NAME="IDX104"></A>
+<DD><A NAME="IDX108"></A>
Insert yourself.
<P>
-<A NAME="IDX105"></A>
+<A NAME="IDX109"></A>
<DT><CODE>bracketed-paste-begin ()</CODE>
-<DD><A NAME="IDX106"></A>
+<DD><A NAME="IDX110"></A>
This function is intended to be bound to the "bracketed paste" escape
sequence sent by some terminals, and such a binding is assigned by default.
It allows Readline to insert the pasted text as a single unit without treating
each character as if it had been read from the keyboard. The characters
-are inserted as if each one was bound to <CODE>self-insert</CODE>) instead of
+are inserted as if each one was bound to <CODE>self-insert</CODE> instead of
executing any editing commands.
<P>
-<A NAME="IDX107"></A>
+<A NAME="IDX111"></A>
<DT><CODE>transpose-chars (C-t)</CODE>
-<DD><A NAME="IDX108"></A>
+<DD><A NAME="IDX112"></A>
Drag the character before the cursor forward over
the character at the cursor, moving the
cursor forward as well. If the insertion point
@@ -1686,39 +1747,39 @@ transposes the last two characters of the line.
Negative arguments have no effect.
<P>
-<A NAME="IDX109"></A>
+<A NAME="IDX113"></A>
<DT><CODE>transpose-words (M-t)</CODE>
-<DD><A NAME="IDX110"></A>
+<DD><A NAME="IDX114"></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="IDX111"></A>
+<A NAME="IDX115"></A>
<DT><CODE>upcase-word (M-u)</CODE>
-<DD><A NAME="IDX112"></A>
+<DD><A NAME="IDX116"></A>
Uppercase the current (or following) word. With a negative argument,
uppercase the previous word, but do not move the cursor.
<P>
-<A NAME="IDX113"></A>
+<A NAME="IDX117"></A>
<DT><CODE>downcase-word (M-l)</CODE>
-<DD><A NAME="IDX114"></A>
+<DD><A NAME="IDX118"></A>
Lowercase the current (or following) word. With a negative argument,
lowercase the previous word, but do not move the cursor.
<P>
-<A NAME="IDX115"></A>
+<A NAME="IDX119"></A>
<DT><CODE>capitalize-word (M-c)</CODE>
-<DD><A NAME="IDX116"></A>
+<DD><A NAME="IDX120"></A>
Capitalize the current (or following) word. With a negative argument,
capitalize the previous word, but do not move the cursor.
<P>
-<A NAME="IDX117"></A>
+<A NAME="IDX121"></A>
<DT><CODE>overwrite-mode ()</CODE>
-<DD><A NAME="IDX118"></A>
+<DD><A NAME="IDX122"></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
@@ -1758,106 +1819,106 @@ By default, this command is unbound.
<DL COMPACT>
-<A NAME="IDX119"></A>
+<A NAME="IDX123"></A>
<DT><CODE>kill-line (C-k)</CODE>
-<DD><A NAME="IDX120"></A>
+<DD><A NAME="IDX124"></A>
Kill the text from point to the end of the line.
<P>
-<A NAME="IDX121"></A>
+<A NAME="IDX125"></A>
<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
-<DD><A NAME="IDX122"></A>
+<DD><A NAME="IDX126"></A>
Kill backward from the cursor to the beginning of the current line.
<P>
-<A NAME="IDX123"></A>
+<A NAME="IDX127"></A>
<DT><CODE>unix-line-discard (C-u)</CODE>
-<DD><A NAME="IDX124"></A>
+<DD><A NAME="IDX128"></A>
Kill backward from the cursor to the beginning of the current line.
<P>
-<A NAME="IDX125"></A>
+<A NAME="IDX129"></A>
<DT><CODE>kill-whole-line ()</CODE>
-<DD><A NAME="IDX126"></A>
+<DD><A NAME="IDX130"></A>
Kill all characters on the current line, no matter where point is.
By default, this is unbound.
<P>
-<A NAME="IDX127"></A>
+<A NAME="IDX131"></A>
<DT><CODE>kill-word (M-d)</CODE>
-<DD><A NAME="IDX128"></A>
+<DD><A NAME="IDX132"></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="IDX129"></A>
+<A NAME="IDX133"></A>
<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
-<DD><A NAME="IDX130"></A>
+<DD><A NAME="IDX134"></A>
Kill the word behind point.
Word boundaries are the same as <CODE>backward-word</CODE>.
<P>
-<A NAME="IDX131"></A>
+<A NAME="IDX135"></A>
<DT><CODE>unix-word-rubout (C-w)</CODE>
-<DD><A NAME="IDX132"></A>
+<DD><A NAME="IDX136"></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="IDX133"></A>
+<A NAME="IDX137"></A>
<DT><CODE>unix-filename-rubout ()</CODE>
-<DD><A NAME="IDX134"></A>
+<DD><A NAME="IDX138"></A>
Kill the word behind point, using white space and the slash character
as the word boundaries.
The killed text is saved on the kill-ring.
<P>
-<A NAME="IDX135"></A>
+<A NAME="IDX139"></A>
<DT><CODE>delete-horizontal-space ()</CODE>
-<DD><A NAME="IDX136"></A>
+<DD><A NAME="IDX140"></A>
Delete all spaces and tabs around point. By default, this is unbound.
<P>
-<A NAME="IDX137"></A>
+<A NAME="IDX141"></A>
<DT><CODE>kill-region ()</CODE>
-<DD><A NAME="IDX138"></A>
+<DD><A NAME="IDX142"></A>
Kill the text in the current region.
By default, this command is unbound.
<P>
-<A NAME="IDX139"></A>
+<A NAME="IDX143"></A>
<DT><CODE>copy-region-as-kill ()</CODE>
-<DD><A NAME="IDX140"></A>
+<DD><A NAME="IDX144"></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="IDX141"></A>
+<A NAME="IDX145"></A>
<DT><CODE>copy-backward-word ()</CODE>
-<DD><A NAME="IDX142"></A>
+<DD><A NAME="IDX146"></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="IDX143"></A>
+<A NAME="IDX147"></A>
<DT><CODE>copy-forward-word ()</CODE>
-<DD><A NAME="IDX144"></A>
+<DD><A NAME="IDX148"></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="IDX145"></A>
+<A NAME="IDX149"></A>
<DT><CODE>yank (C-y)</CODE>
-<DD><A NAME="IDX146"></A>
+<DD><A NAME="IDX150"></A>
Yank the top of the kill ring into the buffer at point.
<P>
-<A NAME="IDX147"></A>
+<A NAME="IDX151"></A>
<DT><CODE>yank-pop (M-y)</CODE>
-<DD><A NAME="IDX148"></A>
+<DD><A NAME="IDX152"></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>
@@ -1881,16 +1942,16 @@ the prior command is <CODE>yank</CODE> or <CODE>yank-pop</CODE>.
<!--docid::SEC18::-->
<DL COMPACT>
-<A NAME="IDX149"></A>
+<A NAME="IDX153"></A>
<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
-<DD><A NAME="IDX150"></A>
+<DD><A NAME="IDX154"></A>
Add this digit to the argument already accumulating, or start a new
argument. <KBD>M--</KBD> starts a negative argument.
<P>
-<A NAME="IDX151"></A>
+<A NAME="IDX155"></A>
<DT><CODE>universal-argument ()</CODE>
-<DD><A NAME="IDX152"></A>
+<DD><A NAME="IDX156"></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.
@@ -1925,33 +1986,33 @@ By default, this is not bound to a key.
<P>
<DL COMPACT>
-<A NAME="IDX153"></A>
+<A NAME="IDX157"></A>
<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
-<DD><A NAME="IDX154"></A>
+<DD><A NAME="IDX158"></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="IDX155"></A>
+<A NAME="IDX159"></A>
<DT><CODE>possible-completions (M-?)</CODE>
-<DD><A NAME="IDX156"></A>
+<DD><A NAME="IDX160"></A>
List the possible completions of the text before point.
When displaying completions, Readline sets the number of columns used
for display to the value of <CODE>completion-display-width</CODE>, the value of
the environment variable <CODE>COLUMNS</CODE>, or the screen width, in that order.
<P>
-<A NAME="IDX157"></A>
+<A NAME="IDX161"></A>
<DT><CODE>insert-completions (M-*)</CODE>
-<DD><A NAME="IDX158"></A>
+<DD><A NAME="IDX162"></A>
Insert all completions of the text before point that would have
been generated by <CODE>possible-completions</CODE>.
<P>
-<A NAME="IDX159"></A>
+<A NAME="IDX163"></A>
<DT><CODE>menu-complete ()</CODE>
-<DD><A NAME="IDX160"></A>
+<DD><A NAME="IDX164"></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
@@ -1966,17 +2027,17 @@ This command is intended to be bound to <KBD>TAB</KBD>, but is unbound
by default.
<P>
-<A NAME="IDX161"></A>
+<A NAME="IDX165"></A>
<DT><CODE>menu-complete-backward ()</CODE>
-<DD><A NAME="IDX162"></A>
+<DD><A NAME="IDX166"></A>
Identical to <CODE>menu-complete</CODE>, but moves backward through the list
of possible completions, as if <CODE>menu-complete</CODE> had been given a
negative argument.
<P>
-<A NAME="IDX163"></A>
+<A NAME="IDX167"></A>
<DT><CODE>delete-char-or-list ()</CODE>
-<DD><A NAME="IDX164"></A>
+<DD><A NAME="IDX168"></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
@@ -2005,29 +2066,29 @@ This command is unbound by default.
<!--docid::SEC20::-->
<DL COMPACT>
-<A NAME="IDX165"></A>
+<A NAME="IDX169"></A>
<DT><CODE>start-kbd-macro (C-x ()</CODE>
-<DD><A NAME="IDX166"></A>
+<DD><A NAME="IDX170"></A>
Begin saving the characters typed into the current keyboard macro.
<P>
-<A NAME="IDX167"></A>
+<A NAME="IDX171"></A>
<DT><CODE>end-kbd-macro (C-x ))</CODE>
-<DD><A NAME="IDX168"></A>
+<DD><A NAME="IDX172"></A>
Stop saving the characters typed into the current keyboard macro
and save the definition.
<P>
-<A NAME="IDX169"></A>
+<A NAME="IDX173"></A>
<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
-<DD><A NAME="IDX170"></A>
+<DD><A NAME="IDX174"></A>
Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
<P>
-<A NAME="IDX171"></A>
+<A NAME="IDX175"></A>
<DT><CODE>print-last-kbd-macro ()</CODE>
-<DD><A NAME="IDX172"></A>
+<DD><A NAME="IDX176"></A>
Print the last keboard macro defined in a format suitable for the
<VAR>inputrc</VAR> file.
<P>
@@ -2053,87 +2114,88 @@ Print the last keboard macro defined in a format suitable for the
<!--docid::SEC21::-->
<DL COMPACT>
-<A NAME="IDX173"></A>
+<A NAME="IDX177"></A>
<DT><CODE>re-read-init-file (C-x C-r)</CODE>
-<DD><A NAME="IDX174"></A>
+<DD><A NAME="IDX178"></A>
Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
any bindings or variable assignments found there.
<P>
-<A NAME="IDX175"></A>
+<A NAME="IDX179"></A>
<DT><CODE>abort (C-g)</CODE>
-<DD><A NAME="IDX176"></A>
+<DD><A NAME="IDX180"></A>
Abort the current editing command and
ring the terminal's bell (subject to the setting of
<CODE>bell-style</CODE>).
<P>
-<A NAME="IDX177"></A>
-<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
-<DD><A NAME="IDX178"></A>
-If the metafied character <VAR>x</VAR> is lowercase, run the command
-that is bound to the corresponding uppercase character.
+<A NAME="IDX181"></A>
+<DT><CODE>do-lowercase-version (M-A, M-B, M-<VAR>x</VAR>, <small>...</small>)</CODE>
+<DD><A NAME="IDX182"></A>
+If the metafied character <VAR>x</VAR> is upper case, run the command
+that is bound to the corresponding metafied lower case character.
+The behavior is undefined if <VAR>x</VAR> is already lower case.
<P>
-<A NAME="IDX179"></A>
+<A NAME="IDX183"></A>
<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
-<DD><A NAME="IDX180"></A>
+<DD><A NAME="IDX184"></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="IDX181"></A>
+<A NAME="IDX185"></A>
<DT><CODE>undo (C-_ or C-x C-u)</CODE>
-<DD><A NAME="IDX182"></A>
+<DD><A NAME="IDX186"></A>
Incremental undo, separately remembered for each line.
<P>
-<A NAME="IDX183"></A>
+<A NAME="IDX187"></A>
<DT><CODE>revert-line (M-r)</CODE>
-<DD><A NAME="IDX184"></A>
+<DD><A NAME="IDX188"></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="IDX185"></A>
+<A NAME="IDX189"></A>
<DT><CODE>tilde-expand (M-~)</CODE>
-<DD><A NAME="IDX186"></A>
+<DD><A NAME="IDX190"></A>
Perform tilde expansion on the current word.
<P>
-<A NAME="IDX187"></A>
+<A NAME="IDX191"></A>
<DT><CODE>set-mark (C-@)</CODE>
-<DD><A NAME="IDX188"></A>
+<DD><A NAME="IDX192"></A>
Set the mark to the point. If a
numeric argument is supplied, the mark is set to that position.
<P>
-<A NAME="IDX189"></A>
+<A NAME="IDX193"></A>
<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
-<DD><A NAME="IDX190"></A>
+<DD><A NAME="IDX194"></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="IDX191"></A>
+<A NAME="IDX195"></A>
<DT><CODE>character-search (C-])</CODE>
-<DD><A NAME="IDX192"></A>
+<DD><A NAME="IDX196"></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="IDX193"></A>
+<A NAME="IDX197"></A>
<DT><CODE>character-search-backward (M-C-])</CODE>
-<DD><A NAME="IDX194"></A>
+<DD><A NAME="IDX198"></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="IDX195"></A>
+<A NAME="IDX199"></A>
<DT><CODE>skip-csi-sequence ()</CODE>
-<DD><A NAME="IDX196"></A>
+<DD><A NAME="IDX200"></A>
Read enough characters to consume a multi-key sequence such as those
defined for keys like Home and End. Such sequences begin with a
Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
@@ -2143,9 +2205,9 @@ stray characters into the editing buffer. This is unbound by default,
but usually bound to ESC-[.
<P>
-<A NAME="IDX197"></A>
+<A NAME="IDX201"></A>
<DT><CODE>insert-comment (M-#)</CODE>
-<DD><A NAME="IDX198"></A>
+<DD><A NAME="IDX202"></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
@@ -2156,43 +2218,43 @@ the line.
In either case, the line is accepted as if a newline had been typed.
<P>
-<A NAME="IDX199"></A>
+<A NAME="IDX203"></A>
<DT><CODE>dump-functions ()</CODE>
-<DD><A NAME="IDX200"></A>
+<DD><A NAME="IDX204"></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="IDX201"></A>
+<A NAME="IDX205"></A>
<DT><CODE>dump-variables ()</CODE>
-<DD><A NAME="IDX202"></A>
+<DD><A NAME="IDX206"></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="IDX203"></A>
+<A NAME="IDX207"></A>
<DT><CODE>dump-macros ()</CODE>
-<DD><A NAME="IDX204"></A>
+<DD><A NAME="IDX208"></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="IDX205"></A>
+<A NAME="IDX209"></A>
<DT><CODE>emacs-editing-mode (C-e)</CODE>
-<DD><A NAME="IDX206"></A>
+<DD><A NAME="IDX210"></A>
When in <CODE>vi</CODE> command mode, this causes a switch to <CODE>emacs</CODE>
editing mode.
<P>
-<A NAME="IDX207"></A>
+<A NAME="IDX211"></A>
<DT><CODE>vi-editing-mode (M-C-j)</CODE>
-<DD><A NAME="IDX208"></A>
+<DD><A NAME="IDX212"></A>
When in <CODE>emacs</CODE> editing mode, this causes a switch to <CODE>vi</CODE>
editing mode.
<P>
@@ -2919,7 +2981,7 @@ to permit their use in free software.
<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</I> on <I>September, 7 2016</I>
+This document was generated by <I>chet</I> on <I>December, 18 2018</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
@@ -3081,7 +3143,7 @@ the following structure:
<BR>
<FONT SIZE="-1">
This document was generated
-by <I>chet</I> on <I>September, 7 2016</I>
+by <I>chet</I> on <I>December, 18 2018</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
diff --git a/doc/rluserman.info b/doc/rluserman.info
index 0b649ba..78ccfa8 100644
--- a/doc/rluserman.info
+++ b/doc/rluserman.info
@@ -1,9 +1,9 @@
-This is rluserman.info, produced by makeinfo version 6.1 from
+This is rluserman.info, produced by makeinfo version 6.5 from
rluserman.texi.
This manual describes the end user interface of the GNU Readline Library
-(version 7.0, 16 July 2016), a library which aids in the consistency of
-user interface across discrete programs which provide a command line
+(version 8.0, 30 November 2018), a library which aids in the consistency
+of user interface across discrete programs which provide a command line
interface.
Copyright (C) 1988-2016 Free Software Foundation, Inc.
@@ -412,7 +412,7 @@ Variable Settings
If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
Readline treats hyphens ('-') and underscores ('_') as
equivalent when performing case-insensitive filename matching
- and completion.
+ and completion. The default value is 'off'.
'completion-prefix-display-length'
The length in characters of the common prefix of a list of
@@ -456,14 +456,14 @@ Variable Settings
This variable can be set to either 'emacs' or 'vi'.
'emacs-mode-string'
- This string is displayed immediately before the last line of
- the primary prompt when emacs editing mode is active. The
- value is expanded like a key binding, so the standard set of
- meta- and control prefixes and backslash escape sequences is
- available. Use the '\1' and '\2' escapes to begin and end
- sequences of non-printing characters, which can be used to
- embed a terminal control sequence into the mode string. The
- default is '@'.
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when emacs editing mode is active. The value is
+ expanded like a key binding, so the standard set of meta- and
+ control prefixes and backslash escape sequences is available.
+ Use the '\1' and '\2' escapes to begin and end sequences of
+ non-printing characters, which can be used to embed a terminal
+ control sequence into the mode string. The default is '@'.
'enable-bracketed-paste'
When set to 'On', Readline will configure the terminal in a
@@ -527,13 +527,13 @@ Variable Settings
'keymap'
Sets Readline's idea of the current keymap for key binding
- commands. Acceptable 'keymap' names are 'emacs',
+ commands. Built-in 'keymap' names are 'emacs',
'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move',
'vi-command', and 'vi-insert'. 'vi' is equivalent to
'vi-command' ('vi-move' is also a synonym); 'emacs' is
- equivalent to 'emacs-standard'. The default value is 'emacs'.
- The value of the 'editing-mode' variable also affects the
- default keymap.
+ equivalent to 'emacs-standard'. Applications may add
+ additional names. The default value is 'emacs'. The value of
+ the 'editing-mode' variable also affects the default keymap.
'keyseq-timeout'
Specifies the duration Readline will wait for a character when
@@ -615,10 +615,10 @@ Variable Settings
default value is 'off'.
'show-mode-in-prompt'
- If set to 'on', add a character to the beginning of the prompt
+ If set to 'on', add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi
- insertion. The mode strings are user-settable. The default
- value is 'off'.
+ insertion. The mode strings are user-settable (e.g.,
+ EMACS-MODE-STRING). The default value is 'off'.
'skip-completed-text'
If set to 'on', this alters the default completion behavior
@@ -634,24 +634,26 @@ Variable Settings
'off'.
'vi-cmd-mode-string'
- This string is displayed immediately before the last line of
- the primary prompt when vi editing mode is active and in
- command mode. The value is expanded like a key binding, so
- the standard set of meta- and control prefixes and backslash
- escape sequences is available. Use the '\1' and '\2' escapes
- to begin and end sequences of non-printing characters, which
- can be used to embed a terminal control sequence into the mode
- string. The default is '(cmd)'.
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when vi editing mode is active and in command mode.
+ The value is expanded like a key binding, so the standard set
+ of meta- and control prefixes and backslash escape sequences
+ is available. Use the '\1' and '\2' escapes to begin and end
+ sequences of non-printing characters, which can be used to
+ embed a terminal control sequence into the mode string. The
+ default is '(cmd)'.
'vi-ins-mode-string'
- This string is displayed immediately before the last line of
- the primary prompt when vi editing mode is active and in
- insertion mode. The value is expanded like a key binding, so
- the standard set of meta- and control prefixes and backslash
- escape sequences is available. Use the '\1' and '\2' escapes
- to begin and end sequences of non-printing characters, which
- can be used to embed a terminal control sequence into the mode
- string. The default is '(ins)'.
+ If the SHOW-MODE-IN-PROMPT variable is enabled, this string is
+ displayed immediately before the last line of the primary
+ prompt when vi editing mode is active and in insertion mode.
+ The value is expanded like a key binding, so the standard set
+ of meta- and control prefixes and backslash escape sequences
+ is available. Use the '\1' and '\2' escapes to begin and end
+ sequences of non-printing characters, which can be used to
+ embed a terminal control sequence into the mode string. The
+ default is '(ins)'.
'visible-stats'
If set to 'on', a character denoting a file's type is appended
@@ -682,7 +684,7 @@ Key Bindings
Meta-Rubout: backward-kill-word
Control-o: "> output"
- In the above example, 'C-u' is bound to the function
+ In the example above, '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
@@ -774,8 +776,9 @@ 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.
+ The text of the test, after any comparison operator, extends to the
+ end of the line; unless otherwise noted, no characters are required
+ to isolate it.
'mode'
The 'mode=' form of the '$if' directive is used to test
@@ -792,6 +795,22 @@ four parser directives used.
the portion of the terminal name before the first '-'. This
allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
+ 'version'
+ The 'version' test may be used to perform comparisons against
+ specific Readline versions. The 'version' expands to the
+ current Readline version. The set of comparison operators
+ includes '=' (and '=='), '!=', '<=', '>=', '<', and '>'. The
+ version number supplied on the right side of the operator
+ consists of a major version number, an optional decimal point,
+ and an optional minor version (e.g., '7.1'). If the minor
+ version is omitted, it is assumed to be '0'. The operator may
+ be separated from the string 'version' and from the version
+ number argument by whitespace. The following example sets a
+ variable if the Readline version being used is 7.0 or newer:
+ $if version >= 7.0
+ set show-mode-in-prompt on
+ $endif
+
'application'
The APPLICATION construct is used to include
application-specific settings. Each program using the
@@ -805,6 +824,20 @@ four parser directives used.
"\C-xq": "\eb\"\ef\""
$endif
+ 'variable'
+ The VARIABLE construct provides simple equality tests for
+ Readline variables and values. The permitted comparison
+ operators are '=', '==', and '!='. The variable name must be
+ separated from the comparison operator by whitespace; the
+ operator may be separated from the value on the right hand
+ side by whitespace. Both string and boolean variables may be
+ tested. Boolean variables must be tested against the values
+ ON and OFF. The following example is equivalent to the
+ 'mode=emacs' test described above:
+ $if editing-mode == emacs
+ set show-mode-in-prompt on
+ $endif
+
'$endif'
This command, as seen in the previous example, terminates an '$if'
command.
@@ -980,6 +1013,20 @@ File: rluserman.info, Node: Commands For Moving, Next: Commands For History,
Move back to the start of the current or previous word. Words are
composed of letters and digits.
+'previous-screen-line ()'
+ Attempt to move point to the same physical screen column on the
+ previous physical screen line. This will not have the desired
+ effect if the current Readline line does not take up more than one
+ physical line or if point is not greater than the length of the
+ prompt plus the screen width.
+
+'next-screen-line ()'
+ Attempt to move point to the same physical screen column on the
+ next physical screen line. This will not have the desired effect
+ if the current Readline line does not take up more than one
+ physical line or if the length of the current Readline line is not
+ greater than the length of the prompt plus the screen width.
+
'clear-screen (C-l)'
Clear the screen and redraw the current line, leaving the current
line at the top of the screen.
@@ -1045,13 +1092,13 @@ File: rluserman.info, Node: Commands For History, Next: Commands For Text, Pr
string must match at the beginning of a history line. This is a
non-incremental search. By default, this command is unbound.
-'history-substr-search-forward ()'
+'history-substring-search-forward ()'
Search forward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
non-incremental search. By default, this command is unbound.
-'history-substr-search-backward ()'
+'history-substring-search-backward ()'
Search backward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
@@ -1120,7 +1167,7 @@ File: rluserman.info, Node: Commands For Text, Next: Commands For Killing, Pr
assigned by default. It allows Readline to insert the pasted text
as a single unit without treating each character as if it had been
read from the keyboard. The characters are inserted as if each one
- was bound to 'self-insert') instead of executing any editing
+ was bound to 'self-insert' instead of executing any editing
commands.
'transpose-chars (C-t)'
@@ -1329,9 +1376,10 @@ File: rluserman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up
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.
+'do-lowercase-version (M-A, M-B, M-X, ...)'
+ If the metafied character X is upper case, run the command that is
+ bound to the corresponding metafied lower case character. The
+ behavior is undefined if X is already lower case.
'prefix-meta (<ESC>)'
Metafy the next character typed. This is for keyboards without a
@@ -1916,29 +1964,29 @@ their use in free software.

Tag Table:
-Node: Top904
-Node: Command Line Editing1426
-Node: Introduction and Notation2080
-Node: Readline Interaction3705
-Node: Readline Bare Essentials4898
-Node: Readline Movement Commands6683
-Node: Readline Killing Commands7645
-Node: Readline Arguments9565
-Node: Searching10611
-Node: Readline Init File12765
-Node: Readline Init File Syntax13920
-Node: Conditional Init Constructs33828
-Node: Sample Init File36355
-Node: Bindable Readline Commands39474
-Node: Commands For Moving40530
-Node: Commands For History41392
-Node: Commands For Text45652
-Node: Commands For Killing49096
-Node: Numeric Arguments51264
-Node: Commands For Completion52405
-Node: Keyboard Macros54375
-Node: Miscellaneous Commands55064
-Node: Readline vi Mode58916
-Node: GNU Free Documentation License59830
+Node: Top908
+Node: Command Line Editing1430
+Node: Introduction and Notation2084
+Node: Readline Interaction3709
+Node: Readline Bare Essentials4902
+Node: Readline Movement Commands6687
+Node: Readline Killing Commands7649
+Node: Readline Arguments9569
+Node: Searching10615
+Node: Readline Init File12769
+Node: Readline Init File Syntax13924
+Node: Conditional Init Constructs34084
+Node: Sample Init File38282
+Node: Bindable Readline Commands41401
+Node: Commands For Moving42457
+Node: Commands For History44025
+Node: Commands For Text48291
+Node: Commands For Killing51734
+Node: Numeric Arguments53902
+Node: Commands For Completion55043
+Node: Keyboard Macros57013
+Node: Miscellaneous Commands57702
+Node: Readline vi Mode61625
+Node: GNU Free Documentation License62539

End Tag Table
diff --git a/doc/rluserman.pdf b/doc/rluserman.pdf
index 0df0c8f..25443eb 100644
--- a/doc/rluserman.pdf
+++ b/doc/rluserman.pdf
Binary files differ
diff --git a/doc/rluserman.ps b/doc/rluserman.ps
index 1290809..81f6db3 100644
--- a/doc/rluserman.ps
+++ b/doc/rluserman.ps
@@ -1,7 +1,7 @@
%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.996 Copyright 2016 Radical Eye Software
+%%Creator: dvips(k) 5.998 Copyright 2018 Radical Eye Software
%%Title: rluserman.dvi
-%%CreationDate: Wed Sep 7 17:16:25 2016
+%%CreationDate: Tue Dec 18 16:44:19 2018
%%Pages: 34
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
@@ -12,7 +12,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 600 -t letter -o rluserman.ps rluserman.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2016.09.07:1716
+%DVIPSSource: TeX output 2018.12.18:1144
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -2475,6 +2475,7 @@ FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
dup 45 /hyphen put
dup 65 /A put
dup 66 /B put
@@ -2497,6 +2498,7 @@ dup 87 /W put
dup 97 /a put
dup 98 /b put
dup 99 /c put
+dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
@@ -2513,6 +2515,7 @@ dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
+dup 118 /v put
dup 119 /w put
dup 120 /x put
dup 121 /y put
@@ -2704,298 +2707,321 @@ B240D1888CB89FBB748FD10B214773D466A44AA2AF44371CA8B9A4450DA76EDC
0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B0844362B0652A
6345C6EC83DFEFE099455232455943718297254186940D6305C96EE2B9E3E7C9
A622D25E0471AC31A8ED3AF8897BD19E322CFC3BD3860D8A0634081D9AF53A9D
-84F4ED39D8127CBCAF9AD48E9CBD10A67A2CD0CF93D61A5CA71D73ADBC8C6C3D
-D9E388D86A4BAC64F0C72D81B5302EF6EA042B155D45427E2A28B75CD98478F8
-36F926EC6BCD9641D2BB87BFC81AF6BEB934EA33028F1646E09AFBB80F49A382
-501E00C22F2FCC5DBEAE35F9210F3FA32BE3B16589B20A16C2E1CEC96613109F
-94F168C15C2F926C52162F50ABC9568CF2039792768461F6B5C9E87963E5A121
-F114D952CE508922D73520F1EC5B79AB4DD5C9F0F640069E650F9C0948FB240A
-B4FC01D353718C6FDA13E72505E89E3CB502C07987E9F8DE0CFD71C58010C076
-A5C92D28309E7FBC721658C721A15648A8500E035C03AA523C29B78392725A8F
-AAAF709E72C509210DB0737C7E4D08DC11618B3FD9D6DF89A1C3D902F0BC2764
-5549A49E9EBF0B31DA04E1DE6E2BD42F71B392E9A80F80407BB08213CF81DFAB
-9498D3F780548FEEE87F3A0493BE20D464E926A1827FA5EA99632EF0999B76A7
-32976C66FCA857FAEC97BB2573611F5B14455C432CB0EC061C76A65F52B819C2
-63DE11E4A0325F0AE07795688D96E18144BB94C568D0FDA013A018D2014DE062
-E8E0B7971B16EDC8397C06604287BF746143F33EB31D0DCF16D659CC02EC227D
-C175F343A99FD844371159A32794B7827533980D2D187D4257B9474F6506C41D
-6D835027661A7D3790F8C59FC2782DCDD735CB7ABB302F9C01F3FE2DD3ED41CA
-789FCC866ADEB5C67DA985D95673ADE94AC9764B2AD6EF47FD8D0A24A7511E9E
-00BA3BD9CC08700727E6C4B2FFDDBBB9D9649E1F3A258C06C5423CBDBA8B5F7E
-23691878C0298108BBC7E61B020ABB184C9D917EE339AC9DDA97611505EB9FE1
-DDA9333CB5685B9D4C292B4119B093FDDB3C1F32C00CC9949A3ECF95ED5417C9
-182AAA3158DE3BDF900B4700D6431E9A349737FB4234275151C14BB582C3488D
-803FBC397FA9D68114924786A8E4A0118281DA9919EB8BAA92B7BEDD432E37A3
-8312BDB187E55DA5C4B405DDDE855ADF7B406EFADCE82109FBAA2A39788EFD37
-64C8E7977C4C06D20628DE93183A0F62B88ECC3248AAC9A9EEE5E70217394308
-039C8A27591E2209E8C134E5D95BBD45440B92DBD5A4B905AF2922663BC14478
-6F7799DA30A6A0E944A54A6C148E0644097E10312504FE53D0C3CE16FC0EAA58
-4169280BF125B55FE858254DBD66C1FC8B15CB18526DFDF7BE18D91031239421
-9DFCB27BCEEA63A7E29506B1C1B3E8A432E70912B4FE6E4CF2D6031830C2A536
-6F87B16B4139B9D8E591DC489F49EA0673A6DB11991383F737AB8ACA9C2C433E
-6A855C1B0F134CFB8FD560670C896D2294219BF50D1690D8727BA48A63D599FE
-EE225D9220BA891B1DA4BE86C0F55361AF8E56CCFEC6024A8F18119A2A21F688
-A61FEFE80CF5107E1F84B1E3EC425C7E3CD57033086556777C6C103CB01D772A
-BAB3CBCA65859E76399BCB9F5969DF80E4FEE4F804A7E8B631FE7439CFED28BE
-3DBF3902EF41BF139623011012DF0B1909FE53FAA4CD9E8CD0E5582F5590073D
-BA2FBE6D848692B05EC3A5B43FFD7EB6AEA3FFCB5BE6664D4936258DBD84607A
-6C15A0BE197575B5CBC7C4ACB5EE8FDF125B01336E2516EB148111C863FAA96D
-43398B332FA3299DFAF393A5CDD5D566052A1F6FB1842065FDE28F1C6756E3AD
-FE087DF02E38732963FD78A75A307D33CC1A1C4E227B1C626EF538C30211F2E7
-2DA21239D7EB2B133298B19864B59E7ECA955E1FAB6F019E48802857BF73C179
-1FC71444FACBEF208D3545D6E5D538F5538D6A3B472C4F08824BFCD397595C45
-3BC9ADDE8DCFFE524AE8508659F514FB5FC7D77BC569424065880FD8C401D63A
-81F9232763B7453882CEF6CF90EA2A981B60BA420C0BE853C7B32107F46DC7A6
-B5DC2F23AEC929DFC0B383994E440F139CE756F4F61736863B616D392A168005
-6E935DACE037159F2A1C23100AECDF1E6A86231429A1A3642C654116477ABF49
-218559EE3C3393BD4457271427D791E9A8DED9AFBE9605E5613271ADE5A8235C
-47E9145F1B4B8184AE50F0979F110128C5BDA54A46CB32707B1DA7DFA0B74F31
-F3CE304DDF3ED459FF2601BEBF37D3B12011CE3203688663F39D3D0A022E755F
-7C6BA39C2EA012634F6392D1C68EBA82159143E5B92E4BDE0A9B277EA8FAB0AC
-BB099FF370DAAC82A0923BA2FEBFE2B8CFFE433FE70B5F6129FEC95A6870B8ED
-0F7A4225684E69538BF0D7CE8026517D05DEFE93877F73EC803BA467411DDC37
-ECC4622B3E0E15A168E0278D76950FE9C284CB566D8F9C22C80BFD665A9CF5BA
-7B9805679DFD50234F78CE49D7E8ED29D09D8A4D881AC1C5A4FB17DB4C32B06F
-D147A2003BC92295019390D74A7620FFAAA8CD4702A6418774B440F7736A4B74
-7DBEDE25B1D552D6DF0C278DC2AD4AE4BFF8CE835EB9F13C846DCE264D40BF5D
-EACEC137284DCB24BF6A4C4CEF98D5ED1822B7A693231CDCFE2EFB95F40801C6
-F2B4195E723544026E94ECD6B3C99F8B0975200FDC6F81841A3E14F546336E24
-3EC1AAE6C3E22A1515E429F6688B467820566463E3108FBB0F5806D8211F1D27
-FBFF7659316BD1148185C77A9363999D06D93CCFD86E7C5EC830913A1B316611
-B24678A78E7352C48C374BA974F60378F312EEB055AE523232D85EB43334CB19
-9EB5F69EA6FD7C7720DF0D56410E00EB238BC1DD9AED3747AACCAC094D7918C9
-0038F6E0B9EFC8A034E74FBDFBC112AF25DC3F0C2D5B885B80BC141EA4CC5B14
-ADD3956407BB74641659F3FF632CC67AF8816489C8D9F79C3924F621B4658D52
-1D298131DE98303DB87629DF82CA16A4428AC05BBA58D2AF843BE0203EF2984B
-9BDDCA03A54FC05F5C8BCCBAB5F5DAE63436F3AEFE2B09018E2E89FB043D5214
-431BCEC6F1C4E5476CA69B7A3FE7EA256624CB5ADBFF4A3D6FE386F872F54107
-9C17ADA22072B6AB3BCBDA76CE3FC3ABE9DC54C26B1C8DC50B26F5137C6331B7
-9548AB2C3616FFE6153DD86C36F8FAC8FF5C37F8EEBFD23E763B790C77BDA2A3
-AA2CE83EF647AB2EE373894C427843E4543E89959C8BD9DBEB27EEF19BF06859
-FFC94842AC3646106254351C2BFDA5411C97C1CA15F4943DAA6E76A182659028
-8397891FF6CB1CC566A20B9F9F5065D65A421B4D19C4A95B06A4CF9732DA78C3
-E6560B839C001970E891A85C84BA091F2553DD0CDDA866DA8A22C4D85EC5343A
-79F54B36FE2E697793420347FC81C079982D584674C0B53DF9B16AF4926A1463
-39495876642A862EE192AE0BDAC9B432E5CB88DA54DA8F2FDD73723DB183F6B2
-86F546E7C5D0318ABE81BD715FFD71DF611D5C38DC15CCC4A2AA93CE0B45665E
-C0CA6FEBBF51710392CB6C88A4648ABD5C71841F49294A32867A6B095F1DC048
-D9510610165C11E85471193C15C8906CE53F1AF0C6F4FC38FAD80C1CC0478F85
-94605E690DD8107ADE5285914D1391EBEF151B611FF691A6ADAA30BF0B96F204
-A84EE3A78AB9B6D0CDEEC78883CB62254D97D137C50E41D4647CCF9C94EC1BE9
-5B42A097EC252AF0213F30B5BFC8AB8AE7853A4F9651A912DBF286EAD5CC63D5
-8A14ADEDBA49E667E39C4BA9BFE4B50739B7AE378F59E770CD037C4017FADB71
-C207E70DC78A7B11A9EA70EDFC8A1F925E8D2979627FA3676BFAF441B3CF34FE
-4C62665C1D8BCD81E38BC6EBD06DD226324C074E84A2A60D47491D3B4E55B434
-71C72A2F021A81EFCB9D03C987A47AAAB5E15A7562BCDC63109E3FDAF1D909DE
-D9AF044A7E66B06C504A75BCFF16DF21E3C332CD82A5BE3B40A2F2AC9917D2CE
-BE6C6CA371855E59FAE01D5EF2B2685F9A02409AD54128F0042A50BD3D4EFEC1
-31372A2D75A40EA84FEB1ADD040075B2B697A96ECC051C73B21CC0EB83B33CB8
-7047E0C98245F46A9EE03F2A0B42C93D031307848ADA04AFF6591FBEAB5F9E84
-DAC2C8D2DD74CC284DD3EB0BB7C4E5F23922D159055ADB2655C63BF637175148
-C31BDC54A013F15A02085A9DA121C129AD041BBC7C671DABE6E10BF03130A373
-34BE05218E494856A3FB0D96BA175BF620DE541A95205A5039F9966FD32DD0FE
-169BA181B3A06F4BBEEE9AA7B233F70DDADF04EB41B93CF58DBF050E08ABAB47
-EE21D8204EE354C521ACDEE383614D564D9BB8EE2177E36831D57AA26F9A6E0B
-906092DD3AB73631346C0D0065178C1C34515AD1DCCA5A6C76094EB9ED2516E5
-46DEA262C32DFF65B8E2180D75A143B2F55A114C40D8A59DFC11A965D4CA70C6
-A064F7790967B718552CCB01765D2BB4DC510E90D10B6654D3E8E9B00847748E
-27F08F533E7A1ECAAE36882872F259125A2B46ED6E01905EA05D859C827C439F
-75143A8525F7C2A7A397B2E23E6638E4BD9DA5275682B1369BCD420D02A67BC9
-08050F5E06DBDD1E327C090067BFEBE134132AB1E9154C0275F219610FAF1260
-2F46B763F033BD9FA3AFD1A6BFE15140279730F725D2775EB46184EDD08AD2CF
-29623B5D295E24B33259438422698575CA2B2A6C5BF708B3338F341309CF4A62
-5D9F4B20BA741F9A9E0FDD13C93B59FB01FC6DCA0011FF63DA94EF606CCCB3C1
-4325C65A896548D3409CADC9307880E104E29B3F4B37231F10FCEC6990080B25
-E132C6728236CCC3E5FE8F3321AA7AFB57D2C4B71EF95D1D4018A9884EAC7157
-D826D5D7FE2839C972B57A452681682E788EFA4A1FD076F29194C7709B67A94F
-E9F2059C0029AF5CE1AC6159A6B555D00E3C554ADDE130C4A65778B2D01A03B0
-DC9458400AFEB75FEF9E180CDCE4B32A357E9CDBBF5BC6A1D086ED771601D6EB
-C71F80DFFD2324B1754787B58B493D9F4964CE424BF3F9917AB031560E3719FC
-19DEB610DF00DE8CED6DA01287AC961A024A4435AD16FE58CC5EFBAB0BE6279D
-816F646808F0B95D943442366E9C1B658382CB11FF898275F2201CAA1F0AECB2
-617D9C58B394851EE9226559D22C1B8B5585B5DAA8AE153FF04BEE43ED74EB56
-1A45F53B6C74D64FA0EA9236C00176889AC0E813B53FFA1C1FB091CCB789A9C7
-31838C4D9B98BF4623525A6E3ADD71E90AF0B536FD16907446C7D7B38BCAFB3B
-88C288DEC4466A0ADF73C04F8876134E5B5DA19762386214F88F1C8FD4B84617
-86575A10AD69A1DC1214AEAA0E55EC57632C41F6365D561211F5E2F0095C70F8
-42707CF23A1A5E90C9B99E03A6BCA7BBA0C9B204F2365A4570EB224749FC6E04
-D9DF87731573AB7D97B04DD51951247700326C54B81B64CCDE48B1E4805418C5
-990F3DFA35E5BEA7529BE2473FD026E15332938B2AB4F1EF69C1F2A70D861A27
-00CB9618CAA6D9A1FCB5861F58D1447EB9A7374E76BB98C9FAF11693A4D4E37B
-6AADA4BEF82485DA916A8D7D07557E3DCF9BD6A19169C7679B26A291225B8AA0
-4D9DACF88D1CA65F83275B91B679B63B5EAB051C927BF29F8E9FA0AE5B56429A
-CDD1CE35E7D5460EF05BE6447D14CA0A1C4863C5417A7E9C110EB07C3D194035
-0A09EC8E504E2B75B26DDB484DB9534C295C9007DDADB53BB6250551C34C4F58
-416B4E9F773B324EE6E1CDA1048F1342B6CF625EBF75D538EDF9D4C6D960DE99
-806024D4ECBE45A69003CC24211F007AD2B713D87EB926D99058F1B8A2E53835
-87BF135686AF641AB0BC1122C8C81E14687579C43FD8012E92529492175EE7EE
-34C4E0B792C751DE462B789F96FC6A013CF9D3AC63655CD2DECE38BB75B3E547
-F1D42820FBDC04FEE1EB362464695F58CB7C6334221FB660B46CD0F98222AD05
-CDCB50BBF41C0159F11747C7EF37F6ACFEEE7F24C5CE0B12D1B6AB35B1AF0310
-D41FB521926868E44D345D578D83B805AEF7BF209BC34A7F83CA5E109A146D4C
-012D25B8DDE2AD426A2A9907AA2C63F06357A3B8B37B2323067793825093CC45
-7A595BB54452B11B8ECE761708C8FBB73DAD3A0D75167F91CCEB009947EF868A
-C4807F7A3E735A4841D1841EA31FDA3B82301CD1126C33CBD1AC45F710C36EF8
-83AA4BFE530DA078F648804176E74FC948AE369E36A809847FE1A61C1D16BEC0
-ADA4CB7149AC5E3B3D8F5B1559ECBDF839CC9BFCDF1FD5542C8B9B381DD99BAC
-119ED65807DCFBD91B867B7C5E5096CDCEE2FF2CB195D70D521347B8A8116F41
-E5B98924F5CA2465633D482142C2E83552F38097D2519B56DA5F666A6C9E27D3
-195115D9F98BB0174BB91D4FE8183A1C95EEF2CA921585D15EFE268F87AC8431
-419F7D17580AC8D4D8371D70D397D8181B6368A5E1BF79FCE976107CBED4A610
-95563CEA9BA22D7C894443A5896FB4D31A87B9F2EA644AA6EB63907F48E8B6F5
-56C8D8DF5EA4E6AE2A6167DC4FA496FB24ECD9CACDF076B2467307DDAFA220D7
-226215F7E5B73F323A2A2B51336E92076011B084023C1B54ADCB2E126C46FE39
-F1AF5CCE1D85D668A955BFBF8953B6D3F3028A9BDAAF48FB203E0EC7798A04B7
-0CD6070D106873A3F86735A5B3AF8236CFF53C22CE451DF3F6C5D12CB99848C1
-60EF8551EFF8D71767B78180EA959234F20C1CDA398EEF9EA71DDCF4685E08F8
-FA7B4DDB72B6B1D07B77A0FCADB177AAE2D2D8760A8586F9CBD96739F338EA9B
-5ABB8C5E5CF035C7F6B7A839649913A0B41C43C3CB4A224DF41E181105B2B009
-72087CE176852E7F64A50C5BFE76ED67DE4ECDF164D2A9C80E0D2727283C29B7
-E9D09CE886EFF897940031BDD677D5C7CD437523F1873DD7B056D3A32CF731C7
-57604F91C71ED4F372B7770E1C64ACD097F82C7FE1D4519D2820622E1B8A8A1B
-BB55E0C2D344FD1E5FD466D2F71555EE704C2E2A4BF9EA55DD1384EA172B648F
-4909C291760E2524643EC90ACB5F39569B5E24F31A4AC3C59EA80217C2714DF2
-CB44104C78C87CAFB2A68C8A932B6A167ACB2C306C756A237ABECC98F045A64A
-3819E33D5CF306C79305D3FB32478A5427FF5697D64E627F1A8642D9EF3B0A7C
-5B924916DD79D8DFC4793A33E635184E99635D993A4E7BC77634EA1268C3C46B
-BA74E26F4A85134C75CF6C7FB5EC30A3E71A8AD0278E0DF9B0D05394DA240E20
-880D5B8D888D972CBF13CB5F6DCF4645741B0F7154657AEAAED76E2E9E2C3FF0
-0CDD1958B8B7A7E4E9A7598B66BA569B15417213805251663DA07FAA62C59B33
-71F200C55E2D451EC251460E91086C1DDE4D9E47DBDF449974F42D1D0E92ACAC
-EF5DE2CC7365C7F59DD0B2F20D38F80C6FBDE47E1F3C98A0C25DDB03BA643DC9
-3B72E52324034C0046E703713AC9525F7F2A44CF33862328BD7083353EEBD56D
-658A83900E5393EA8154F916DC15E43DA15AB7D9AF5B46DE78862D475C790578
-E80981B931AE8ECADDAD817B02B439DDA2FAD039B7566FE9A1870AAAE1A8F9DA
-0974971C236ADCE18BD79E419D5861F521B5CF47C2A52AF54399096ED71DF71E
-2B35BD42980551BA7DD5188ADF2402C69B5495A65A0E769794A996BBFA687209
-978EBF888CF88D30C4BA8CB9E87A612285F75F5486EB9E44AC2CC861B6FD4496
-5392CB19213E7368947552002DA2FB501865EC1D4BBDAAEC1621372A3660D97E
-E9008373A972ED3B963BD5E6C37E84B445551D88BEB48174405A1714AE47CE58
-AF424E63D0BA721665AD96A58A39CF36D779AB7B2184126E54199BA8ABEE5230
-B51BD62B286E5AC061DA76689B572781EA72713F72ADE8733688ACC5CB453440
-DC8C28F0E74CA97CEB88B520256D89DBC91F149136835BC4F019FFD60AB292E7
-82AAFD0F87EF36F6E1BC72FD0A50196428923B9CF72A712C87E93265365655A8
-A830112F6EB412699CAACF5EBED5BDA0930DB4F1116EE3D0DFD1F8EDD67BF633
-FFF3C5CCB4109CC8E796C6BE653D34E43CE19D4F2C0D1D29FA2623840F93B819
-7A90C668BA96EE19F1C905A022284E64D270E10D372752ED6F42CE56172E83C8
-F5C171E5EEE3AAB7893239BF125CD76969E5BD708CD2AC00B0FD20B684C574FF
-DB4DF2BAE71180CBEE7365507A0970EC7F7E6F483316CD1A120E5BD344173F2D
-78C7F53BDBA2BE1E5ABCFFA9F8E96D3AE4E6B85D2D7E32CAFB0786AE4EAC77E8
-7C65C16C6E3DA64CF39288965123E53B040ED24EE45F62585D241457471CC607
-90E04F49CC846B6DAD3BD6C56F6BB62F702DE3B92761065CFF0984D94025A021
-8C5E0493594473A82439D0A9A4DBC9CCBD9FE492C6843A0E4187FA649084F06A
-C4F360225EE43CD621EC0332FA046ABE76743BB2B76C78D5A18752DD1367E95A
-01C61D5F2DC81B93860E2AE67F958B845BD5A09E06471618B3D76A7344DB5340
-344659983A87333A5F31E13768C5B3B3537CEB2EA557D0DD56DD71A34D182984
-D9C6FC7710832FE04EE7D22358A0111933BA8955E0AFFE938994CCF6D3CA8C58
-BEC29AB25142EE5FAEDF98014633598B35AF6548F7525C97AA3BC800F9580981
-9CF173CEBD3DC80D2FC49F1F1E5B2EC5B8659647F4DFA2D3342E0E6F12C219BC
-DA4550E58AC70E12C08D0544D25CD618C4F254ADD2291B2D84F311800788C3E3
-AE541D222EF6B375525E0DD224845A0297EAF99ABBD80EE40B7FE1C6D9781CB9
-994B356640E6152C3AE819F5E6912C1ABEF73E9251BC7E4C9E3C6960859F2A9C
-5FF301B97A715CFE7A441EACAD7B89EA64AD532D1783D2D7883DC8B22C5B331B
-A9657BCE7045E43F11298F2B2891A09E15031740D1776CCB2109133CF83070CE
-EA54B97C4D609B47FFF0F20046C4AB71A2588B99A27802D0A5B2F44CC9E8DE08
-1355C405C2FC8E1245D9E55D02C10414321B1757DE0914AC924828A7E3CEA0D4
-1741E9A60BDEE828CEFF9AA91E79D4A1355249578E9F3F472881823262292CDC
-0A02059F0BD178D1BD9A5967388D54F605C045B7472109F3BB6C732E191487DE
-20E7DB95DA669788102357DD3BC004AB8E71970A33413DE6C6689B4A8C16E7A5
-0D0014CEB0B5DF6AB32F1B5174221C777329535DAEE9D8C1C4E31137704AC157
-8C76EEA3FE634F8262A8B4F87E5485F6DD9AAA7C1B2BEBD9A30D2F0605436322
-C10ACF037DDFF785E9319F91B78A845BE510A7066847F6E8B4E8592698827B2F
-B15C50ED71AD2ED486AD68C388342F50E628DE8E9385B2E3CE8BD2644F951248
-597263173C83EA45758A64EBAC15AFB13616D4CBB1683C330B1AA5343683EA2A
-7352F21E648D73548DDFC68780266FF85F967894819CD33DE1968AB5468E7055
-E2E3FADB699C3E158C2B3E2A81186C35CAFF79B19B1D7F8985E7254B69407797
-F452451A38803A7F5339D39F89FE7098031B4DED5B55B2049C58223D3101C419
-DC8AAF5420640E1D588D876B4DBA192267D882FE1B90D183F05AF6C920141393
-366814BF1F15B4D8B42741DAEB26D06B34D18657DEDB450756C0E9E07B82423F
-0499E01B6A66E87EB4C5599775EF22DA15854F2C62F944758A438E145D4B21F8
-C2A6D3B77A58A1DB1FAD71C69F5CFC5B5AE6649E0DF1070C1222E689E7175890
-D417E9CC41A64E91DAEB542F58A45C3613FA23EF766DF95707CA1D8E213E344E
-9D7C72BB70B8AB4DD2F858EE63EC2511F936A5ED103138F9839A3BAFD49C099B
-D284F8796636033AA4B1FA24A7AD9926A85EE16702C33B7E92084F95CECF2552
-F399AD837C7D96FF932BDF988A20B94579736A518CF87C27E2EF2118E7A1A46A
-CC50B001D9C21E7B670570A8CBB74FDD867FC4E6B082A60FBB8240B2E61107A4
-AD6AA8351F647ABD73937498AD366684AFB5EF84F4469F6D8DC03E7AD8123D8D
-754F914AB68B859DA2985F27140F1F33CD3F026AF93730F0BDE8D2F63EB76F6E
-5C44FE4A1F66E46418F49628A4657771A349B4054206AF41266E92C2D9D92F58
-CC8AECA0CD0A69E2FDDCB4E5D0F9F9BB726352038EE6BA1ED40AA5757639CF36
-608AD8D72B3BEF5FF08F533DF679202853FC1DCDD99EB84608153B02A22ACC0E
-8F9B0C54B89D48236A813AFDD4A8AFB074F9A87409B764435602057811A56956
-44AA307E1539632F91CAA64DA77525E7291019CFB0A8A3F697B5A94868FF0C25
-9AC8528408EAB5500FADE5FEBAC49CB16D50D9CA16726FF4B9228741E5E51B43
-9B78EE224C09DBCA64E2059FA2B9F8DA7971B1A576B336D1F7024E9C3AB9209D
-3D99E46C6915C5CA0BCDE15C224923C300BCFA44854E15AE10AAFAF6F67B0C56
-6D12852E70A087E1FB1477455060D01CAD9181C51F72B17A34273E67146C6F41
-CAE3C2952D6AA312CD9E5FDD63E0CED803F99188932F478D12D7114076DB0ED8
-9BAE4588E788D2CC9A8836EE6514888DB2727CACD93ECB1580EA61FB778C562C
-B27763BBBEA8BAB40635C3E7E5BB788EDC5088A8A86C935417E993A468C70EC1
-1ACF5BC3396025572AD97ED758B04C71E769C52CECF31034F94CC088382AFFD1
-CD158230E71000717231DBDDE0896F94C5ABE7F1BF0EE6046CC83F79B811DA96
-29FC33BA65ECA3EB763A850439C7B97D648D400F09C21A6C3DD01E616E94BA03
-06CFE7FB7E83CDEAAB85E5ED98CC623334580F2B28FDF4257D3BFB008AD81D58
-6570382A2B25112279BA39EBEFB4A6334E529D76D68F93583EC352E6CEDCAB76
-CF18602C7FCD02B82747C47F18DC85B867AADE10C5B88FF4CB319C981DB89FAB
-FB4911C8D5F249F58B28B63A80460E3217A67585BFA4660156C2CEDFBA07B445
-E739AD58D0BCC5E0C1CA1E9271622E6497FC7F517E560A6ECD4FEA69BF8D3B43
-A099FECA870CBB8904E8CACC5D5C1B95981DC73C09D058183DF154ECEAD47E19
-92A355967C631948ED38C1E47172782CCB52AB4CB78F6A94FBCFC0AC5247F272
-7239FC6A41655715BD870D7E55B4CE58513CC17BC2EAF4F237BB6AAC15ED6818
-245C112A4C29F487CD6AA69212F7C45D77CF3DF902D0A4F2213BFDF2AE5B8ABD
-243F1EA4F5D0C2C4197729D74E71416098D8924FAE68F7F14E32CE0DDDB6A47D
-E665F6FBFD5EE5FEC326C5E20C32C65A99E61AF5C3190E8912D3D6E21A2739DA
-E2219CBA41C20721265E258440C7A3883A59F583722031FE4983F237F3FCD8F4
-F48B7B3F9713D493BEE9DB2C53DA12C79451E0F8221FF6E1B0A277D6DDD9E100
-0C444B6051B845AD321C179DC62944F9BEF9C6E5E5510749DB5762A4D00E908E
-01127E880CCB7B438887E9F98A8A66CE96244CA87AC11895D0DB9A92552D9273
-C056AB06F93D7574D30EB03988B4B040933D919D99D517DF808E775481FC6B00
-5DED9F8B9F17165CEB8FF7F2A7BF58E60943205B046B69C070428BE8874F4975
-6E8B36AFC9FF2D790FD978C71B496B2CB0E71D471B16C6D0D4DB22C517DE6A09
-0FA78BF29FB208D84C1964E3CA6420800253249179318570BD38725F3109E65A
-006C6C5C99BFAC1DE70B4AFABA79257C6496F591B0DDB23A40D45EE0F05E8123
-F2397E5CA900272A4250CB50A2D2ACAFCBC57ABB24DA551FFC9CD87D24D65961
-BD75ECE1D29DF16D4B0A676BCFAEEA38BBA059F73C2EA04789E8E2871DC343F1
-10E8140BC4C0632AE737237189DE6C7FF27CB1DB5C49F9D2EB255B610EE00127
-FFADDBEF2616FE47A098A713205784F0FD6D083CBA7F9288D90374A1B9582A20
-13E7069FEF28B208DE72B21E4C3180CA858B2644577CA492D931C95A48E1EB09
-4BAA1F5FF22AA00B8C60940A1A7B10FF68DE6924F384086BA9E606BE261603E0
-F6C9FD17EB30A41BA32AE5869C56E8C66A0F13DCEE95869913C6A81A209DBF6D
-9D6DEA469E8C247EAC48E0F2FEF2E1010E6F1A24939B9F6CA41DFA79BD6829CC
-4A6E0402249738660D3E38B8D96146AC0218DA0C99949432FB5C4985790514B2
-1DBB52BB7AB2A2EA3B33837D1633D71D17C67320714DC98AAC7784074DC78508
-53AB088214763B4F35EE87D7520C93E3736DD177A36EC40E3F9BBFBC8C117390
-182990D7C252AF33EE8039549B519707FDA4440D254C44A5CF19FA19E4D0C4D3
-7A8B2EC19FD27A4643E3A88F5826D82014EA58AEDDA621815EF27BBFD771D6AD
-D5C014C0555637D37899D15D1257BD0E75C84291C4A96C0BED70FF29D24BF675
-4EC766E78CFD0E576BB5113B1B6CCB859B3BE6A98AD80AC2FBB4D7F7BFD1BEEB
-2FD01E50695D54111AF85CF5120FB0802387415E1B8EA85AA74FB443B5DC9D38
-F5D8D602D545E78766CB621D51B434A7A06E8F1B6EDEC8D0456F0883868F9A3F
-4B2FCE7D71DEE094777406F2FC4E7652C7265380F08629EBB9E2FD2CE7EF0493
-8943C1CC164652B21DBA5FAF09FAC7B91F3F7988A662D5FD3F11DCF5B768D98D
-80C673EC1D4CF10ED0B696546B04B6D5BB28828BC51FBDADB085099BB3AD8241
-7E4936BE686C34F521FD973566703731C3264E068CA15BEEC4E4707B5125E045
-87C3C9EC8DBEF8EA7122D6BF05632C07208922D07C05AC0F6CDA6B42A71C555A
-0349D2ED7C500C393EE38710FDEEE0F786ECB00A6A33FA7FCE4613A4F18C691F
-3743ED9E3633375FF58551B91ADD5DC185998547B78F34816E7F333F90E18231
-27B055E454DD37D7B064B0A996244BAD4676BBCBBA2727396E044FEF13046D64
-E297C7DA27FEC2B0A7DFEC067168F6117C46903296EE144862F58C53C4BFEA69
-49C3F31322DEA89944314AA41EFF120DC542D71969277400F911718DB0B93D7F
-3E4AB21386913ADCE58C2B1CB5633E89244E52743F7B44A2F9A0DFE0899C2D3F
-6F7A47889D82118AE8D151CDBCFC6D6C57E5145740DDC5F8077E4A8637AFB1C6
-D7F295A0DD49B9D7E525E5E5E39C915ABB0B778D8EF1E1BF0C90570A260EE0EC
-CDD7122C832CBA4C0AC959FBF9FE98E4A11EEDE727E6D9C43BFB90D0AFF1ECCA
-0A6BCA5825259081906845ED1528BA18A34DA0E983FEA8B08D300AC564931992
-D1783BCF1296D835D913008C08DAD381831DF05DF42ED7DD1E14F1F3B06B147F
-1BA1E6A4E866183AF593EBB1BDA8AFE81A67D76B27492D9BF2E64690533F0B72
-B1B3AD206F81F5A795616F5F512EA329FDE80AA930F23C8E0C7E6B58623A1919
-8814037A8EE703F49874F4A384FB2A3D01E03DCB9BCE150A391BE36FB15CC00C
-A691F862D14D65846520E242D119836D421E3999EF87658D88CC19AA50486E47
-B68AFA052AE380E0B495D5BF3197E483B182A232403FEA80C8491CE99E09C6C0
-0CBBAA0E5F50535B56C70B218A078AD48E8C6B11F3B32D218439F3CF7E2671AD
-33D321CF8F8F6BAF362B1DE0BDD85557AC85E8BD7B4C6934E9ACCEFE81A5C420
-8B5A7A98723A5138A44E6BFCF1386B3DDB12F2F1E0359BF9F5348EB134313225
-2E6C17B2
+84F4ED39D8127CBCAF9AD48E9CBD10A67A2CD0CF93D61A593C0627AAE80E297F
+610CF0B2FDB6EB3BED1D866BC1E1DA14C1A2583976BB788E9B26B26D6071AF28
+04DE56A166D01ABB14FE7A5C409A3F6AE1F17F322522621F97113DA3C0CD1EA5
+11AD5168DE7B3BBF39F61A45B553D16A31A1FF6000C7BF7A3DDF5B852BF6FEB1
+2AAA616AD71EE44D7A3EADF8CDF02666A78E346CE8507646ACAFBCB42D804F89
+07085FB776C81D773B33AD206D49FA01351D19E9B93423686FD7C8D1F4085009
+A3D67A249C7B38C40D4A83D74E819A62B938D89AE9070009275EE70CCC716937
+0BFC0EE647EC231309588DFF33EE995006FEF93469A8C4CEC33E5C77D53F8BA7
+5C444825DC75D418831EE39A0FE3DA51CD3C5CDD8D28EA853EB7F4925E040BF5
+F38262DD8FABAA1B6A5EAB2E50AA4FDBDAA7318795B5E3B8520B9CE2C02D3053
+74F30A8680D3D25B1A8D9287B67430BE892BCB142A6391FD774289B426F82590
+B01E16018820D33ECEAA498ECFE0023DD959ECDD891113323CA14761136D43F2
+A32A3F8255D0A00E0FAE6FD2BC390D9484AD38193CD5EF2A0B6526B925D91FBB
+966E69F1F7310EBD4306E2D9D16F308363FC231C626445F3029990699E6B0CF5
+229ECE0EDF004E8602D582EF7810BA119B058DD90C01C22744B5EF5CB156A1DA
+7A9FA7086CD89B2E8C5E90B258A3D64AF7A9E698ADF3D0EF1C2CE3D30ED5A4F8
+93572BCD11B506228DDB2C85B79631258B5376E30EC113D2D97C12854A892352
+4016AA0558446EB491FEA150C7707E53A959AEEC3F606E8FE8BD6803881E7091
+625E3DB91BD919071CB21186DBCBE103403C49F634AD063EFEF99A59DF1F589D
+5CDDE87414F6D12429B32C1EEF09665D6606F33E015BD62409295538A487A93E
+796AD8C64182629AD78DF437E04C0E09CA8397FFC74FA927664EACF7576939CF
+CF56962843FBEAAB2C5AFCAC3DD6C05FC7402C2148280AFD5025C33A1D117359
+68BD0E06472B0D335BCCD589365BA20568DFD46180A38CA13770A8570C3C90E3
+B1D86706D81754B00B4F1CBA76D8341C4A552851A79877C8F14E8996592E8434
+AAAD811BCBD37DD9BA69E6D76A19192AD53A8F60E50166DBC41DA9B77783DA9E
+5358A61F08D5FB1731EC73386AFF81B09631D57368A2984019FD887CB16A37D2
+FF085B743E2A3EEF2CF70CC006799F1AB3DE1569E2377D0F00DAB31F73CF6EA8
+339CC5F37B42E0DA5A9FADBDE4348EBD8E8E41F4588BE9CC71BA9B8CEA1FEB1A
+296BBFB3E93052480FC0460EBE407B68C5DDCF3471D5D70D58562132E228742D
+E1298F26E89FE76925B21024384A3BCF0805BA535818525AA30E5267076EED17
+9479E85C7BE3A67B23390E0D413B04E548BB08E7AEB468FA87707225248AB35C
+043355788C90839CEC662D883BE9A5BCA92F1C802734084553B54BA72CB7A8AD
+CC7A1B7439A68E84F1B1F1271B32CD1B719BA52E0BA5DB53C6372CBAF47C6622
+65D10D789FF729CE2F422D464CA83424CCE7E06591659809F91F7087EE721F64
+6FF9AA5E47FCA748EEC49D202F538023F7295E03637BD089641A14BF85F926B3
+7DDBE5B216F4A85262EAA63E204AABA92552EB93169A07C9BF3BFF389941D751
+EF82F9118E9D53EAEA71B5DA45AEAC7FC1F855AF5CAC11EDB1041FAB35423A37
+B1974AC24E5E83F32931CE05399EE7829BB1785A0F117252DD7DB5EE45159BE8
+F96026FC3A9D6E67FBE906C9FBE5D0B1CE09CD30889F575471AACBFC343A60E1
+253A70A4F7F9EE8A771474F8C3C8DD5C410165F00FD2E08FFB820C030088F452
+1AB1770F80FA609C8978C5CD1FF94A6C77CCC7315AD714B990BE419955B99747
+82D883C4DE1593875FE60460E2D370337DE830A3060EC38B2CBAB76FE40FD9B6
+00E693B9090259ABCD7D3ED4B9BA444C94D16573FB33708BCF12A0016A839568
+E223CA958242021032FC6B4AE83A900DC87CC6ECF2BC00F9F8EFAC6606208EAE
+FC933B0689A554AA1BCD5F7FBC20299DFB1632B284C24D64AA90DEDDF272F7C3
+470CE467B5F959C24D45B8BF53E96E5E56B2703E863FF8A846D14C210696F2CF
+FCBA34C2478F25493F39B067A4D16F8BC484F5BDA1B11038DCF25D149F49C59D
+3DA99DC0A08EF232D98E9FBFE46FB5E457975E7771459E330DF4BB863E092AC6
+B368FADFC326DEF82C2E1F5014A54B5D8AB78EAD86CA2496D0D753A4914C4F3A
+9251677B6B7A76B3F46D564CD855D423B7FD3756958DDAC02CBA90115E2586AB
+2328ED830172111B3048FB5021CEF1A52424E31DFC904C67F3EE4D176E0AECE4
+2815188935C37E307BE490FDB7D86C9ECA73D165C659C2102D60935CEAB955C6
+D5F932B3D3F355E5AA2CE54EC1BCD0863949C0D976FAE7D862A3E8319173B55C
+FD17CA38B17015634F22CB58DEEDEFF2DE3735ADA5C5BAE39B4B0805A6F77813
+51C64EA337386FBC74F2C86446A50E134E20F34E580CCF0C88F38F7D5BDFBE8D
+884777BB0EAE668E1C385AF59359668BBA3584EF4B0DE732C2DC88E2D0C3E081
+358298442A33541E8494C3D8E9F0261A2B79382507FDC4503055E14ECB54972A
+66FE4FF0B584E91464DE5AA6667E8D8B123CB182A652224050A235C1B0D8E5F1
+07097D98476731A1D9224E156665BA64DFD471B6C0B11519703F349C3846C2EA
+F123F5EC585E2E357A9B016D82004436D460E4E3A0D81C6A4EBD3A600822A6B7
+FC2C8581DE02B61096F1E44DBDA5BD22529B31D715ADC9FEE721DEFE8D5A7305
+6FE51844A7A31FC453F8E957212D0262D8B5654C47123385D6309C9E91613C37
+693340BBE694449042CA913A6F7AF2B98270C7FE9B4ABE728AAB48D8D37D8F1E
+BFC3AB2C613FB6DC9B12A69276FBB8D4218D800515BED9CC3F8ABB90F4907993
+D252C28A994B71A7A725F4EF5E189E4B8E3EB46A756469DFE6D20CEB897B331D
+AF8EB7E9DB01A539EC89A3E2AAF71B4F62F9B46CF90329DAE6D0905DE7D66667
+8DC3D965DB4A54B4FC63A46CCFC487784A0B4F9045CDA8827BE808DDBF6FB4BE
+CA0FCCF1A8A6B512892EF43ADF8F00CDB94D774447B0CA23AEB62641CD4D7CE8
+4DF24C4BE165D5D901EC9F8A0C91A21F1E15FB1C6994297CD468EFDF37FDED3D
+CB18B1DF5F8B13F6731457E2E1E84C694FD59321C214A6FA00FD63736F43A0BB
+46610DE20C7B63C2585538EACFD958D38CB48B848398722596F99FD902DE3669
+AFB419590B21C195FA98B123154544DA1E9C3E6D54679DD3434FA27E0209F7E1
+EA99684FCA8BCBB105DF37297E9EDC960DD623659F26B3C1B29DD90E89D22F60
+2FF619C26F0C7EE13B0924017DB0B7B09D6C83837C02E381A8CA197E5D590669
+BC616C29AF0E5534230A6AF724FAF6732C6BCBF26596459BB0B03E3B4D3D9F88
+3444C38978A9412CFE52ACB5DE75BE92349AB04BC08F99FFDABC98F7D20ABC47
+7FAE1E6E9909628F16DF65854E991B44BE8471ED5F84DD77CDC32A03D49BB82F
+BC1E559026029D81F2E80B46062C743EA521C40E4F598655EAA50C749C92227C
+26C7E481559F733518A44E467D06A92A8BE1AC43C57F3339E517F8D43F75D434
+BF40775F91ED694717B7B6A5D6A9DA2FF46DC29BCC9CF53232454BB3846DA528
+72A46D4B199ED2B80A20993BC303729EF1C06E341B321BC37383E7E201DE0BB3
+929CFF074B2AD7EAADF5DAB328D01F32DF7D3A886B90E665F5526E279DA4CDC3
+3985B1D582A1AC36C0F9708C27ADC43F678EE09101A04312072C5C4F9DDACB30
+ADA37AFF97CDC00220B71ED8D762EF3D06250D5FEA90EB29CAF1A9DAEBC23DF1
+F9680F8266D9BC42613706C8D328C2DC41CE73A6BAFB96FE7AA60A0D5D904C81
+8B2F64AA3D78C3AF18A7B99BFFC96211223B4EF5B70B1C19BE189DDC613378DA
+082DE0BBB822FEB46EE05F8D83F201A8AE2B59861CA9F52C54780B3360160814
+BC369D35C07A4D4EF9FB534477376B336CF1A372E6C6E7D076D2C1F95B6507A1
+62CF058FD9D28A0D9A86E859DEC3BD2E2DA69010B1D6C3D6D0F35E25CE3458B5
+4A8DD7485A18858B6EC1ACDA8E5D3DC74CC8B37A7EA18ED9E1B3A333F7F41545
+8A9C8598E870F85DA7E4A772175DAA887A4BD065101ED1D704652299FA193387
+7A1E684357205136A83B6D76EB0C167363C9248221CB09199477D24D3788115D
+B8446CC827C7385333000BBB82DAEDE63ACF9D328041961710D3FA09466CF2D7
+B1685E6B6FE892F9B75F49F1DC7F6AF4E8D5F2B0AF7986216225FCA4F7AD1D01
+880672F6AFAFE640713B5B83567264AF6620DFDB3B0BD45E8EB6C375D230FD28
+C5CF99DB705DDDB9A2B6884E2D62A9547DF6CA0D8E86E7FD1FD28CDDB4DFE321
+4921327FE2D0AEF48EE7E15E17B91D71B3485CAEF2871BF343761983B4DCB7F4
+156E6D8D5310ECACD6661DB1D962A7EA8FF44A2A12C37561E21E5C1C5AC88D32
+38159E3CCDE194F8BEF038B04F94CACFB29F8A93EC9A375667C8BDB4ACA5D195
+CECD055E06C67ED9C2C0374DB6C390EF4D65AAA194EE54BB26CD7869A5FBE3EA
+09A6E1285F66BC0C0B5F1434E1F2BCFB6EEFA0A215C37CF8DEFC02727A637CB3
+46A83C6ED1B8AFB5FFA7DC2C4F1C3CD57D63BA2A986108E3EC91B54B48E99AB7
+3A58D8990D8EE81BAEA6CABB3F372A2AEA6E918F49266ACBE23A68D9A6863849
+4DBD6364F2A0AEC6FA454E5AD9D56BD097F7FF16D98C5C8FFDC5222A301B3C57
+6BDD7F281E6D575F46DCF293DDA0DFAF727226254E8CB2E39DB8EB1B443FAF3A
+4F7AC38741969E050F59A9A193E0BE89544825A0C0692CFBD7044CD12CC14189
+79EE566E5FC74A76EC65E5285684F4575AF05F9FB2356CABC4BDF8A6067D169A
+EA546A99288D64DDD928598FBD7ABC96B9B7C42D6912273D786385E7C60B30D3
+29756256728279E500FC73BADD4C21F0700C916E3EA0428BD052FD8A2487054E
+049FD14E372F0ECD6E3ECF4805D02FD4E146DAEDE6849AC9299390414A0FDB10
+153A2AFE5E8FA44A1186A395EBBCEC9ACFE9719C6E7436785BCEA6380941CE0C
+6A46296F0DCA6C3C13C3A9252BB87A45E9E4DAFCD3868CAC9D83BB0DD174DFC6
+27D5D1BBDD986CB0B5A9BF9CA5AD2C94BABB3AA21CAC876F10FBA5B464622B3D
+B8AC3773E3C8B3C36BAF980DB29432A01FB5733C2887729D5FE0C412199AA6DD
+A4D7623599680BA2196E9F439D6C293D6E16A2FF1205168F31277895A853FE6A
+1FD47593AB67CA4F4D407A90E7F7D8A80C6D9BE25BA5ADA64F744A50FF665A43
+D9F7A8430EBF084928BC3B492E8F1EDD523C8CD0EBD4A065096A78DD3D8F5A21
+8E6A5E4DB1FB611B4CC47C87394409400C6D0615F571EE4A96564F3366E5D938
+236560F6A9957E8D087AD152B8F6E01C9DFC27ECE0BFCFFA409B94C9D523EC69
+3C328139DE7F828CEF88150A864F8F64CD7363A84601216DD34DDB4085FDE7A9
+8D90D3571DAD0C3BA52419FC79036754396903B86AD37AF2F5A877DBE1BAF1F5
+8EFE1507E8787F5C5AC5368DEA4DF9D8A8D0BDD5F0E9687D1D614BB70567BDC8
+8B1CEA009D324518C46B17D521F28E17AB8C2252E01A88DAC5187B153C1C25CD
+C342ABB1E059247E276EDC61D51A2CAB2114BE28EB27407DF0E3048143062E54
+215841330CEB3212216055913E93FDB5889D0862798B2C9EC4C7AA867EBAFAC9
+8D9C5E5221C1D63654A4838F15D0640C6360EEE3F78BCAE95892191BC102EA2A
+84BC256B2E51E3D5C6A2C9C4DCD5189189A292BC47FA28CDF05EC12740D45F2A
+480FA39C3A164A201F0D353CCE51F8B765FC47BA5EA8FAE41832320D18A90A24
+4AD12E6C4E82DF6E172406961F414305F390148F61472D732364E581862532EC
+748309596199EBDE301256766B26CCD77898C8A97A226BE0D1634DD4CD12295A
+D6990DED2FB64B5CFC8B4073EFF20540D50E21A56B9E63F075FEFF20D50D96B4
+17275B729D73F68D4CE816B36FAB46C5551E4D3C001B55107EADC29DF51874D6
+E936DAFFC19B2DEB8788C7E7FCB9D2ABE5660FCB3708E81F19BF9C600F203BED
+4DB8649D9B91450982A801D15B3841C7339D1D20EF138030CEEE013EFD570348
+0A6346682F82963745931F85C431792C64B1E6E0637B63AA85554717C96DE31D
+B4D2515B18A00891063AAF9FD2B4BE8708009A334F7CFD689D81ABB348CA4BDD
+F21882F2EF86048F018565C26728BBE7417E685776114470B32B18A71223DBAA
+EC66F6A864F7944A4C459F0899EC7B5FD8C0FE9AD393C867D5B7C9E98C5FC32F
+707027466005E23475A87BD88BB8B5520BD87516120A2FEB5F0C00DC0B424C88
+5D8204646F2ADF4C7081D2CD0D0B3453FE69C955BE1C40AC66624083CFEB434D
+FA7D2214BC69F0310594029EB6B1D355C9FD13A8895F0BFE85B725E47809A824
+E74B7A7E31FC95E6655147D20B4A14E420A6DEFE9BD80CDD4B8924E2E7EB3EFB
+3774B612975D6DC561D4DEF163AF1DD76EBCE76D339B583950C2981EBDD8D02C
+48A5D5B2E8AE036020BE8B760049DD6418440ACBB03E798C0BAD524E82B6B422
+0DC30556016452AAB929801A343B719367419ABF1AD387925953A2CF4A1AEFFB
+8EA00A873B2ECFD127C80E23BE2F36E10E77F86D3BFE8B076E355BE1B85292A7
+906BAC9371610C4AAC2D3A0239BC2BA384314ADC834AAD796C8A7557139D9BFF
+A7B56DAB7D63FF9AC78AA9AB416A0AA3F96B0EE6C525BFDF5925F4859A3A737C
+6E573FA019456ACEC1AFCAC3787F83DB80FC3DB6CF66F351D47E9042C33DA41C
+A9876A5ED89F7E1C5C32045F44E6D9F99CC3AF6F3F6C537A9E6B5B33E18BEEA2
+7EFC03C85F3F9FB5BC05D57510ACF67E864A20F5C9D46BBCC179C00456EE9D56
+691F2F5A0D4F2499772A6D91517AA6EF54DF7BF4E3546C63CE47076149D5A70E
+4A649D801BA0032F47668005F8460F6BB9488566D4AA5A7BAF13FB1810B219F9
+7E21BBB6619D78A42224D89A8C02721C3E802E0AF94C55461B5761200794508B
+E379198FFB5A4EDF5AF7C0FCD6DC71FA1F88623664D0447694503676D6E59738
+9F79981C2AB97EEB8E493F471780B0A73031375C3827B6F50EA1F7EE885B9B90
+E9AB441283F4EF1C6C41DC8FE9DCE582BAB0CD65CB8AF0CA61DE4A7AFC3B7F75
+CA6097DFE38E07B318BE55372C64698D01486E55880DF0E177BA270AD2A5F813
+5701A4E5B87647E53EF14EDD19E4B7007683B569712FE119C27BCFC075979BC7
+8A5B0748E1960C5ABC8C5BE4B92607B33572F525562C8E039ABF49E965D2CFB8
+369DAD99981263229E068F5C3570760842486D82A78DFACC9BBDD36E4C92017F
+52AF6FF3085D19FD3D69BEF26BF4FE486C4DA28B67D8F8A9EEFE6880CA09D2B0
+D6659F69E9CF9B8C048851DD2EBCCEF01D71002B2DF0B991D2E93763D7FBE496
+0CA746868E3EC8576735B7AD2980CFB4CF3D13A7D2F1A7D170816E7B5F36CE7A
+26CCC8F7FDD1FAB9DF86966AB4559A2698EDDA603842D97622053AC85531F0A2
+16A97ED8B2E9E9FCE247C33A414BE13DF50A257AAEFD9A00764142AE6CF9D890
+BF73B590807FE1B7ABA71BA62CD68867A96739EEDC1EB0824C8AA59A13535931
+7B3BAD294588402474B9DD42BCA14C18F64C0FF78B85971BD4179B299D23D9D9
+954D71AF0B94986149B5EB8F18232D957FF1EAE068B90B560C72A13EA7B442C6
+828EFED6D96384E045B610B0A8BF005B0B99C11E2F99DBE20627C056E14B7C2B
+0DF7DD753917691CAF013D7964DF6E4ED5E49241B65914397BFA07D68A5BC15E
+E52187CC260540A2F41F4A6D4BD7CAB2C825D72B312B8794BDCB73DDA4C66E96
+CA52C51928647A5A59FF268BD487BBCC5A8A6F36AC8BEDC211B6B108606C8D36
+3A2D4EA6461CA1251E10A86A40D3C46C10DE603C3596FDD87D2510A8A29A9D0E
+E27A52372345A829A84F1254847CB52378A710A8B3EAFA2FD94892D3A32C9F6D
+BDC495F27573D7E5DA65146423736952A0A13E6E8030A184D2FF95CE2B68A33C
+7F0D94FDE8DA4ACD5FB84C5E6B7D6AE891F4E76289F28F7D766B79B09200FC3F
+A082AF28A6DDBF1DFBC29EE3D49BFA8116E5A8EA86D9B1A5E34558A83545B7F3
+0C512D2004357DE29C5221FE6163933C0A7C59995769A07BB5B817DB58B6DEED
+415A3D643DEAA04A5F7C0B73801410134501C6EC7E55C737B81CFF59F91D1084
+BAC2276662BCB529973FFE12717D95C884E714678B60481B69F6059E16B83120
+7A6DB96912C2B6463E03732063AF2C6C703E95DA52B5D72265135A18D7186618
+F23610A06500E0468758B19D198870ADC4D26227C2FB99B97F231216FBAF7769
+83C421D4EDB4B880D2E53EACAC19FF259B7B61C0824FD51E281571FDE1F82A54
+93794D923DE8F5512070E6E8AFB5BFF99B8B73E22993305BB60538262B5467E0
+678BFB37BAB72658DDDB5037126E86D0F9935A9908164A06FD5055651E83A11E
+E7058915122D9F2EAB20D69C6937EA70A58CBBF5F86F846785C92974B6C52D96
+BBE2CF060BA5BC78CB760B5BF518DC630031471CD2C0C136628DD815636E878C
+EEF640E2DAAE6663EBF873CC521A6272349A7BE9F845E9A2CFF2007D5CD9C12E
+B156BC49815D2261CCA72B9ADA22FB720223AE8C0253DDF43A4395566146B9B1
+687D5612E8485AD038BB26AFEE7433A77E69BA110183D4D7922C85DBE0DE76C2
+DB0438CC99A281AC6CDDDEC6080868AFD6C9916FF45F2FFE9EEC22EC13B7214F
+A4A34342F0715E22540A26503251C4F079D53B507A7A8A4C26C765CB5D3E6487
+D3AF0A0867AA512CE112F77B379F54D91759225907A1454733EA33674337F06C
+BBCF54429C15DED15DEB59AEFFFA82B4FAF1CD1E3C071A4DC9C8D634939A52EB
+89ED3BA0697FF8EE3697A64F48115266635DB5F4286E828E308E1D7C6B5D5A01
+907EAE2ACCD3199FCB8AAD01471F7098D54D457215C2756D9617C9316A8E0CE4
+F32521B6F32B9EE2A8980614744A02638B157355B709444055DDD2AE8ABB0FE4
+885F5F55150D98BBFCE02164237C1D82E55F9061D44893E73C337B7C17327945
+B164F85481401656CCD0FBC280F0213E77FF6B433A49A9FA6B3DAD3C2E191131
+0C76576EAE08A677CB46CC44DC87368EFC29D4E9A8577535B619F594117D3BD4
+12DE2166B4CF59F122F16B4FB5092BB15D9501CBD734828C478638A01C7CA12F
+2F3E9519766F1E31AEDB3F6D6D6820A85B72CEA12778014D207C2E5FDDDA6AF9
+B3604DF3634B123C7C7F2EEA0146FA7412FDA6AB9E62F4B0F2FE3FC94F89BD4A
+290224FCC8C85CCB7AF6A86CC765ED026E7DC1FA8971DD25C67451B0CC62B07B
+30549C6A7987C5A9D576E8A5DDF2CA26B9756E89B526E718B79406DEA65FB596
+0C71DC919771AA57E6913E56FF5EADD3C966F1D5FC26E56087F98AF7F37CBC22
+4FCC928AA4221F925CBB7E0A3A623DF3FB2ABB658361B88BBB1E94B78A948A9E
+21198332A3FF310217C0DA145DC97314A6878126F88CA53101F0B3D4ACFE85C8
+E7BC1F33C6DAFB4D57A89FA33E8599A76CD796D653B13C2512BE4F561F81F502
+67C69AC40EC879790C00148CACAFDEAA424A809B9246486C45ECC4E09F6AE655
+2FDB077C4C5A2029949AFC6958FD029922164DC9AA8207790D0F138E0E736FD5
+5970BE8C4E4EFC951E912D614570A998DD034948DC5449C56A2B33E89B8B077F
+97A1EA7542176C03553021FD98B8F0C96D2C135A43D8A0A6D33114DAC906D9F0
+4334AB431812105B969FE584623C1BC44B8D6D32C433EEBB7B9BE6BDD1873C25
+F06CCC01B9B43E4A6445E9E0936805A38BF1E01F23861FDA9B0087BF3E2C85E9
+0776A5306C6B97DB8CE6377108739EA84DF52CADF14C806DA7EB284028805B94
+8DB61CB5C591B5E3FEF87E74A0F3F1B963A1B84F717DE48F085F5AE9CB8D60F5
+ED2D3D09E720072A2A4C2A256DD98A9F69FC6095C964DCC618FAE945A714BB8A
+24B0995F5FFED10FA0D8A6CBB2DF565EEDA1950907CD9AF9FD1B360BBC6E0963
+82B35E3073FD7FE70B874CB51F06D9698959F459FC748589C1856387CD60BE2E
+A8F7E621858E50F0FC7965BB2CD3481C53A3E3AAC137B75F2EF13AD72E51C0B5
+F6101240EE677EE6D89E0A8A45111DB661AE6C2B3A07A1BDCE24C4F20EDCB4E2
+19DE64A2C1099AAEF4CC90568A13B83957C016D518859643557E54C43D03C968
+3B22C4834FF5204A1C94611B8B968A9D0BF33915C7A74A64BA80663F318C6349
+2A176111C6A2DBE4C5B25A6774AABD94C148F64BAA0D94A7520B23BA02337189
+F8BC91D75417AEE0935D699E4E113B7CA25E7BDD189B787D278B83041DB25479
+84098A94BB2159FD82EBC32596FDDD435D2B568F3030E31A98F005E8FEC084B4
+42FBC39627119CE8D8F7A84BF68353AED19A7576D74B7CDBBF9E6BDBD2026303
+3C1EB51FEE04DAAC22DA8B26B0C3DCFD7AD50E44CE9C734BDCC605C2C5AFB99B
+815B9E0DFFE77CFB35CEB211C6E5092370628184B08ED27B8CACA1C7BE8C6521
+E41D3C4142A84D267702289E6AF90C48B7DFD05156CD6FB4EB424B0CC12BE5D8
+9A4DD29029CAFACF480ADF9E9D8BBE6F7D90F77123F3E15C6F667A718AD69721
+F2D996CA371AB4DD46D28476A84DC6C0B22507FAA8031B7D0CB8693DAAF8BD6D
+24E4578B3CEC87D60018236E612025BD514B7AE56FB0C859C451F0B34885E629
+434A3937990C3C20227A043BFA53C3628F747BD588460BB25C02D0C607C409C6
+F56A23750F8B09959C7B3935E70F90650EF8A71A9293A7EE6D5D01914B9B9201
+1B53DF0BA9D573F2D6A6C0D9B884E9B46BCC92D4D82AFE8EE1661B66F77B13CD
+7C5267786A4B9ED1A036B591962A4C9F49D58FCBC86EF12B447363A724A9EB9A
+43B0A46580564CD8B6CDBBD0011D2C2AE51C1FF386472A8DD61C66363D88F0EA
+5BBCE688605B3C7082248856EC479F04F99DE1E827D87494285CBD2AEDADF415
+D154BC6C30A35058800A1360DECF3609CF5513D86F41C4D058FB9304FE0CA42B
+90F23C676499E2A983AF06FCF09E372C69C5AC195C6AA0007014878AC4EF2CB2
+A8FA9151B2C77F776DA1C329736E0F908F48512991562FD3C0EE5E7C75EBA52D
+C4686544960F7A37FB2DE00B945C521E9FA54210F42C1E453D0439DEA072916F
+D1C9B9C01526E79D44AFA41B7AA08BD4CDA27379C1A0BCABD929AE917BCEE67F
+E3AC05E5764E79ECF059E52EE85D64D28766076B412D2CA9271B74A6095CF04A
+31655432E2BF0F9C2C5F37C257B31E7A5B06EAD92329ABE9D70FAB1C16957EE5
+8C80A873E3AB6B29B0126C75CF659E483099A5A32D9B0B46E803B5F35386F136
+B2515ACF4DFF8779C311E74A57A13C127185C2CFEBAE6B9997043721DE4450D6
+61648C6A697F09ED42BAB11759845D46E8605079C36B670CAB73A0A1E01D9E38
+433FC147E25E8A702282286860917D4A0DEAC8222A740E58FBDA91816DFCED58
+F933AC7F7EACBE198DB60E6F11ACF470B57FCDC16DE31BF4B15BB951E50ABC04
+7A9EED8550B60364CF3782CDB7165385DE0B650599AB3DA34F5D5B963514B4AF
+09826FBBF93278DE6EED781FECA7CF00D2191D14C9D8A5B018C73E3152EC3C7D
+079350C0BAD84CFB574C35D7C9B1390D81957EEBC3EE70802E0B572AAF20C79D
+B08D8C2EC77F08071356C2645A4F7C257899E0B72826B89B713A4501BACB6B92
+06DA791E0DFBE3C0E68CC28DA52D2B1FE5E924585BAA78C463D865D7366EAC60
+EAFB579FFD8E0C57385D05AE1E8B6072F56DE0D227339AA24B0E4B6838EB84B3
+A891C4F078A69245717FD73DB2704A1147970CCFD9E4B4B1B109B3B717320555
+D6E7A3CD8DFF269AA35BB959BE5A70946ABA128DA86D92B92046BDBB73C7822E
+CAD1F50FD9C064364071A9A8CFBFE3F365912C2B53758807859107685023B015
+E59A1DB2C85CAEE13175BC9D60942B31EDC438AB4743AF2CCC57A0379F922DF6
+11FD6B1AB6FD9E136EC11148C08372C65278116A1457BD8DED61E3B987C0A3F9
+FDCC5C1BD67A2AFAA505A50E925D18863E2FFE33E293195DA5B3B9B993BEA762
+5C2AB3C89DA2BB72EDCADF3C7993445A26191124196494FD3819F38E1ADC02F4
+53BC8487EAEB01B6502343C360EE62FA6A5133354DE836BA12A6E98B3770051D
+97478423C4C26A75B667B30844EB7C7450E39439F5E2FB30763E519F67A1BEBA
+1164E4CBB723531B04BEE7572C808408965E4BD1A9C991DBC59469C57504EE3D
+0EA77F0B688DAB51C1A11B5447DF43B76A97CFD09A6239A8293C9BEBEB2786C1
+04045ED4F8791918648352DBFA58626CEC471E47A0C2DD369434AA93C4D13C01
+FE22FC16270445D61BEDE0CA168DD7AF4A4DF923FA871ECE63ADF237D37CEE47
+9C6E657A4D8874F7872D0B62F775570AF435EF8FEE6D3C85571ABA7877348E32
+4712DFF94F1DB89064281B94E44B3606A9D3E63646F40774526E99390EB4F196
+4CF48B9F39EC5079091E4FD385F6B7A98DC6076582AD027DC94E7A4501B0BB26
+8C00F79509D91279A17BEBE5FB19022C1C98B784E113C126B9B5568E20700322
+E45F1CA1662471B3F3E667EEB8E0DAC038199F9982DECC9EF81B8560C697187A
+F83DF3CF7F399328C13ABE41F7D091F60046D72E8F94B94D4D539B228754B4FB
+769A930980B4CA7F2D88D31A842E45476E34EF002FA928E866584C7F93908AFD
+E8EC64790D76157EF201BED6903511F4648645B0229E648BF2D2A61A759F0B9B
+E80C814D449D65F0B7588D27BCE36D70EABBDCA2A09973BE36DDE06F651C0E6D
+9A83AD303008986B2A94C0722620022E6706BF709950CE9B3EB09D8B5D4C50EB
+922C5779A5A5350F0CAD649D175EAA8F3FE4C7E6ADFE77B5D9184F750E51A1CA
+1C1021C89AB45777CBDFA4B7DE550005B10E21BC4D1F034A03DE398CCFD7A21A
+A68BE1161911997EB8F43B150CB2A683FE2DADC53914338EC9DBB7A26718E86B
+51B8D8C9E098B021C510C1FA908C4D5FA8FA60DC6B4DF825352610D5C65751DF
+B3F01EFDC2D71F49C650384595806CB70B21C2503E27A06E817540EC46EA7772
+E876DEE2F17252F39A9D57A542876D9CD51F41C489813D62EF5F7BE7BA6C3644
+42D3AFF0BE9C63E2A80A4ACBA1C2E042983DF080B162FC392987DBC66F4FBC0F
+DEEF00B9503C7699DA93160EAC233C7DFC7F09F91752213BC63D05775706A18B
+45B5A9BE0DB983220AD2F24DBF5814314E194528AAA540BA19C95DA8622A2A61
+4FA39EB7BE6BDD394DC9B14A77DAA7FE758F6BF5F0C7B5C3C1C480CF3B41743B
+6466B8C95F4C112879386508264549A56250D02462ACC3A5CA62304138A90CE5
+E0FD95D975014F3FE0EEEF30B20C5F21CD179246EE87C057FA304689471D515F
+B168343171AD40C6D321510804AD735871C08F0C14A5549D21A0F4DC1BB8115A
+4AE7E8739DFFAE2D51E28689ED56B3C9653CEC7B160B5A90600A9EB139E3C3B4
+99B692C28028970D70BFC1CB3B5FA95900E3E68BA80853756B768E7120F08BAA
+67734E0F5588B1C71961B1CBDA92036DD24FF72EB73796C52BC00EDF27DDC1E1
+7281D147BE84C4FB91A68FEA90C3E245FFDDD78CAB1CBB53F1DD75449C03771E
+5348317A3C4DC79FF83340E91D29692DE71101A7BCB4CB400E8D81DA9536F601
+C84BF0277EC915E4A0F350038850E0CDBFE9250FC166EFF1B12A92A6C160ADE2
+02A9B84DB6F998B82FCBCAA88B22E24D2528982F3F4FD44F722EEA4978BC5D1F
+9D8FCAC59E66A969430B760F7433A4195A10AB6691FE2BE4057BA6B45E5A42CA
+A09CC3F70DCA414232372EE4BBB9972B730F1B5E20E61982E39BB4520E805442
+ACD3D64BBB96105ADF1EB4BC3EE8790DDE514E25A7757964E0737F383816BC87
+5448723D6AC995CFC16C6813234952E63FCB69789B5A25AADE08DED559289187
+D50251CFC03CC3217BEE1F024523EDD5C7AE5A33BE538DFC366478070EE20BA1
+DE588DAF0609FB946A0931922453E5CDD65A85C2B0A59E4CD661E447C42CE2F8
+34852015D26689DF23E52CB2275A21A0FD2F4F52A98D2BCDB53C09782226C259
+B9EDE48551F5154D78EC14315D7ACEF6954259D8AA6A8C76D476AD5D7D141B8D
+0C7B34988A2DF797B6F4319DF83EDB8393C6DBCA6CD1073A6D7AB000F5C911F2
+0BC35104C2B580D5019E8C16C1CAC5A84EB63C79DDD421E92BBF3C553EFE5BA1
+D0EAEFB56A51D13EF586B3D44929C32EF5CE2D087841CA2FE75EE9E79F36A018
+10154805412B91A4873A793DD9C1D7A1CBD25C57ECCCFDF950C0DD2FEF7EBE2B
+A1E02B6E2F884751A5EF3A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -5068,37 +5094,37 @@ rf /Fd 134[65 65 1[65 68 48 48 50 1[68 61 68 102 34 65
1[34 68 61 37 56 68 55 68 60 7[93 4[85 68 92 3[96 116
74 96 1[46 96 1[77 81 1[89 87 93 8[61 61 61 61 61 61
61 61 2[34 46[{}46 109.091 /CMBX12 rf /Fe 133[40 48 48
-66 1[51 35 36 36 48 51 45 51 76 25 48 1[25 51 45 28 40
-1[40 51 45 9[93 1[68 66 51 67 1[62 71 68 1[57 71 1[33
-68 1[59 62 69 66 64 68 19[30 45[{}42 90.9091 /CMSL10
-rf /Ff 139[30 37 38 3[51 4[28 1[42 90[51 12[{}7 90.9091
-/CMTI10 rf /Fg 134[48 48 48 48 48 1[48 48 48 1[48 48
-1[48 48 48 48 1[48 48 48 48 1[48 48 1[48 2[48 14[48 48
-1[48 1[48 2[48 48 48 17[48 48 2[48 5[48 39[{}33 90.9091
-/CMSLTT10 rf /Fh 135[56 2[56 1[42 2[51 58 56 4[27 1[58
-49 51 1[54 1[56 97[{}12 90.9091 /CMCSC10 rf /Fi 197[25
-58[{}1 90.9091 /CMMI10 rf /Fj 197[33 58[{}1 119.552 /CMMI12
-rf /Fk 135[85 2[90 63 64 66 1[90 81 90 134 45 2[45 1[81
-49 74 90 72 90 78 11[124 112 5[126 1[97 4[127 101 106
-124 117 1[122 15[81 49[{}29 143.462 /CMBX12 rf /Fl 242[91
-13[{}1 90.9091 /CMSY10 rf /Fm 134[71 71 97 71 75 52 53
-55 1[75 67 75 112 37 2[37 75 67 41 61 75 60 75 65 9[139
-1[103 1[75 100 3[105 128 81 2[50 105 106 85 88 103 97
-96 102 6[37 4[67 67 67 67 67 2[37 1[37 44[{}46 119.552
-/CMBX12 rf /Fn 129[48 48 1[48 48 48 48 48 48 48 48 48
+66 48 51 35 36 36 48 51 45 51 76 25 48 1[25 51 45 28
+40 51 40 51 45 9[93 1[68 66 51 67 1[62 71 68 1[57 71
+1[33 68 1[59 62 69 66 64 68 19[30 33[53 11[{}45 90.9091
+/CMSL10 rf /Ff 139[30 37 38 3[51 4[28 1[42 90[51 12[{}7
+90.9091 /CMTI10 rf /Fg 134[48 48 48 48 48 1[48 48 48
+1[48 48 1[48 48 48 48 1[48 48 48 48 1[48 48 1[48 2[48
+14[48 48 1[48 1[48 2[48 48 48 17[48 48 2[48 5[48 39[{}33
+90.9091 /CMSLTT10 rf /Fh 135[56 2[56 1[42 2[51 58 56
+4[27 1[58 49 51 1[54 1[56 97[{}12 90.9091 /CMCSC10 rf
+/Fi 197[25 58[{}1 90.9091 /CMMI10 rf /Fj 197[33 58[{}1
+119.552 /CMMI12 rf /Fk 135[85 2[90 63 64 66 1[90 81 90
+134 45 2[45 1[81 49 74 90 72 90 78 11[124 112 5[126 1[97
+4[127 101 106 124 117 1[122 15[81 49[{}29 143.462 /CMBX12
+rf /Fl 242[91 13[{}1 90.9091 /CMSY10 rf /Fm 134[71 71
+97 71 75 52 53 55 1[75 67 75 112 37 2[37 75 67 41 61
+75 60 75 65 9[139 1[103 1[75 100 3[105 128 81 2[50 105
+106 85 88 103 97 96 102 6[37 4[67 67 67 67 67 2[37 1[37
+44[{}46 119.552 /CMBX12 rf /Fn 129[48 48 1[48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-1[48 1[48 48 48 1[48 3[48 48 48 48 48 48 48 48 48 48
-48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48
-48 1[48 2[48 48 48 48 48 48 48 1[48 48 48 48 2[48 48
-48 48 33[{}78 90.9091 /CMTT10 rf /Fo 131[91 45 40 48
-48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45
-28 40 51 40 51 45 25 2[25 45 25 56 68 68 93 68 68 66
-51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64
-68 5[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25
-2[35 35 25 4[45 20[51 51 53 11[{}81 90.9091 /CMR10 rf
-/Fp 134[102 4[75 76 79 3[108 1[54 2[54 2[59 88 108 86
-108 94 11[149 2[144 3[151 1[116 2[72 1[152 71[{}19 172.154
-/CMBX12 rf end
+48 48 48 48 48 1[48 1[48 48 48 1[48 3[48 48 48 48 48
+48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48
+48 48 48 1[48 1[48 48 1[48 2[48 48 48 48 48 48 48 1[48
+48 48 48 2[48 48 48 48 33[{}78 90.9091 /CMTT10 rf /Fo
+131[91 45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25
+48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25 56 68
+68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71
+59 62 69 66 64 68 5[25 25 45 45 45 45 45 45 45 45 45
+45 45 25 30 25 2[35 35 25 4[45 20[51 51 53 11[{}81 90.9091
+/CMR10 rf /Fp 134[102 4[75 76 79 3[108 1[54 2[54 2[59
+88 108 86 108 94 11[149 2[144 3[151 1[116 2[72 1[152
+71[{}19 172.154 /CMBX12 rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
@@ -5114,30 +5140,30 @@ ifelse
%%Page: 1 1
TeXDict begin 1 0 bop 150 1318 a Fp(GNU)65 b(Readline)g(Library)g(User)
g(In)-5 b(terface)p 150 1418 3600 34 v 1873 1515 a Fo(Edition)30
-b(7.0,)i(for)e Fn(Readline)e(Library)h Fo(V)-8 b(ersion)31
-b(7.0.)3367 1623 y(July)f(2016)150 4927 y Fm(Chet)45
-b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l
-(ersit)l(y)150 5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11
-b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141
-3600 17 v eop end
+b(8.0,)i(for)e Fn(Readline)e(Library)h Fo(V)-8 b(ersion)31
+b(8.0.)3139 1623 y(No)m(v)m(em)m(b)s(er)g(2018)150 4927
+y Fm(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46
+b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11
+b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11
+b(oundation)p 150 5141 3600 17 v eop end
%%Page: 2 2
TeXDict begin 2 1 bop 150 4413 a Fo(This)29 b(man)m(ual)g(describ)s(es)
g(the)h(end)e(user)h(in)m(terface)i(of)f(the)f(GNU)h(Readline)g
-(Library)f(\(v)m(ersion)h(7.0,)h(16)150 4523 y(July)25
-b(2016\),)j(a)e(library)f(whic)m(h)f(aids)i(in)f(the)g(consistency)h
-(of)f(user)g(in)m(terface)i(across)e(discrete)h(programs)150
-4633 y(whic)m(h)k(pro)m(vide)h(a)f(command)g(line)h(in)m(terface.)150
-4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 y Fl(\015)f
-Fo(1988{2016)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8
-b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h
-(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s
-(cumen)m(t)f(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8
-b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26
-b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43
-b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8
-b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46
-b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31
-b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8
+(Library)f(\(v)m(ersion)h(8.0,)h(30)150 4523 y(No)m(v)m(em)m(b)s(er)39
+b(2018\),)j(a)c(library)g(whic)m(h)g(aids)g(in)f(the)h(consistency)h
+(of)f(user)f(in)m(terface)j(across)e(discrete)150 4633
+y(programs)30 b(whic)m(h)g(pro)m(vide)h(a)f(command)g(line)h(in)m
+(terface.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577
+4767 y Fl(\015)f Fo(1988{2016)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)
+-8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21
+b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s
+(dify)e(this)i(do)s(cumen)m(t)f(under)f(the)390 5011
+y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g
+(License,)g(V)-8 b(ersion)26 b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)
+390 5121 y(published)43 b(b)m(y)h(the)h(F)-8 b(ree)46
+b(Soft)m(w)m(are)g(F)-8 b(oundation;)53 b(with)44 b(no)g(In)m(v)-5
+b(arian)m(t)46 b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)
+31 b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8
b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390
5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8
b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end
@@ -5181,7 +5207,7 @@ h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29
b Fo(12)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22
b Fi(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Fo(12)275 1992 y(1.4)92
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Fo(13)275 1992 y(1.4)92
b(Bindable)30 b(Readline)h(Commands)22 b Fi(:)15 b(:)g(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Fo(16)399 2101
@@ -5190,7 +5216,7 @@ b Fi(:)f(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)31 b Fo(16)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8
b(or)31 b(Manipulating)g(The)f(History)f Fi(:)15 b(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fo(16)399
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fo(17)399
2320 y(1.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8
b(ext)12 b Fi(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)25
@@ -5547,125 +5573,127 @@ Fn(visible)p Fo(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g
(one)g(is)g(a)m(v)-5 b(ailable.)51 b(If)33 b(set)g(to)1110
737 y(`)p Fn(audible)p Fo(')j(\(the)i(default\),)i(Readline)e(attempts)
g(to)h(ring)e(the)g(terminal's)1110 847 y(b)s(ell.)630
-993 y Fn(bind-tty-special-chars)1110 1103 y Fo(If)e(set)g(to)h(`)p
+1005 y Fn(bind-tty-special-chars)1110 1115 y Fo(If)e(set)g(to)h(`)p
Fn(on)p Fo(')f(\(the)g(default\),)i(Readline)f(attempts)g(to)g(bind)d
-(the)i(con)m(trol)1110 1212 y(c)m(haracters)30 b(treated)g(sp)s
+(the)i(con)m(trol)1110 1224 y(c)m(haracters)30 b(treated)g(sp)s
(ecially)g(b)m(y)f(the)g(k)m(ernel's)h(terminal)f(driv)m(er)g(to)h
-(their)1110 1322 y(Readline)h(equiv)-5 b(alen)m(ts.)630
-1468 y Fn(blink-matching-paren)1110 1577 y Fo(If)36 b(set)g(to)h(`)p
+(their)1110 1334 y(Readline)h(equiv)-5 b(alen)m(ts.)630
+1492 y Fn(blink-matching-paren)1110 1602 y Fo(If)36 b(set)g(to)h(`)p
Fn(on)p Fo(',)h(Readline)f(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j
-(the)f(cursor)e(to)i(an)1110 1687 y(op)s(ening)k(paren)m(thesis)h(when)
+(the)f(cursor)e(to)i(an)1110 1711 y(op)s(ening)k(paren)m(thesis)h(when)
f(a)h(closing)h(paren)m(thesis)e(is)h(inserted.)74 b(The)1110
-1797 y(default)31 b(is)f(`)p Fn(off)p Fo('.)630 1943
-y Fn(colored-completion-prefi)o(x)1110 2052 y Fo(If)f(set)h(to)g(`)p
+1821 y(default)31 b(is)f(`)p Fn(off)p Fo('.)630 1979
+y Fn(colored-completion-prefi)o(x)1110 2089 y Fo(If)f(set)h(to)g(`)p
Fn(on)p Fo(',)g(when)e(listing)i(completions,)h(Readline)f(displa)m(ys)
-g(the)f(com-)1110 2162 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s
+g(the)f(com-)1110 2198 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s
(ossible)f(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110
-2271 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g
-(v)-5 b(alue)40 b(of)g(the)g Fn(LS_COLORS)1110 2381 y
+2308 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g
+(v)-5 b(alue)40 b(of)g(the)g Fn(LS_COLORS)1110 2418 y
Fo(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30
-b(default)h(is)f(`)p Fn(off)p Fo('.)630 2527 y Fn(colored-stats)1110
-2637 y Fo(If)c(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(displa)m(ys)g
+b(default)h(is)f(`)p Fn(off)p Fo('.)630 2576 y Fn(colored-stats)1110
+2685 y Fo(If)c(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(displa)m(ys)g
(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110
-2746 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67
+2795 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67
b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110
-2856 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fn(LS_COLORS)d
+2905 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fn(LS_COLORS)d
Fo(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110
-2966 y(is)30 b(`)p Fn(off)p Fo('.)630 3112 y Fn(comment-begin)1110
-3221 y Fo(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of)
-h(the)h(line)f(when)g(the)1110 3331 y Fn(insert-comment)26
+3014 y(is)30 b(`)p Fn(off)p Fo('.)630 3173 y Fn(comment-begin)1110
+3282 y Fo(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of)
+h(the)h(line)f(when)g(the)1110 3392 y Fn(insert-comment)26
b Fo(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5
-b(alue)31 b(is)f Fn("#")p Fo(.)630 3477 y Fn(completion-display-width)
-1110 3587 y Fo(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used)
-g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 3696
+b(alue)31 b(is)f Fn("#")p Fo(.)630 3550 y Fn(completion-display-width)
+1110 3660 y Fo(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used)
+g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 3769
y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5
b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)1110
-3806 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39
+3879 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39
b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110
-3915 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e
+3988 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e
(line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630
-4061 y Fn(completion-ignore-case)1110 4171 y Fo(If)d(set)h(to)g(`)p
+4147 y Fn(completion-ignore-case)1110 4256 y Fo(If)d(set)h(to)g(`)p
Fn(on)p Fo(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i
-(and)e(completion)1110 4281 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)
+(and)e(completion)1110 4366 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)
40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Fn(off)p
-Fo('.)630 4427 y Fn(completion-map-case)1110 4536 y Fo(If)22
+Fo('.)630 4524 y Fn(completion-map-case)1110 4634 y Fo(If)22
b(set)g(to)h(`)p Fn(on)p Fo(',)h(and)e Fe(completion-ignore-case)31
-b Fo(is)22 b(enabled,)i(Readline)f(treats)1110 4646 y(h)m(yphens)29
+b Fo(is)22 b(enabled,)i(Readline)f(treats)1110 4743 y(h)m(yphens)29
b(\(`)p Fn(-)p Fo('\))j(and)e(underscores)g(\(`)p Fn(_)p
Fo('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110
-4756 y(case-insensitiv)m(e)j(\014lename)d(matc)m(hing)i(and)e
-(completion.)630 4902 y Fn(completion-prefix-displa)o(y-le)o(ngth)1110
-5011 y Fo(The)h(length)g(in)g(c)m(haracters)i(of)f(the)f(common)h
-(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 5121
-y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s
-(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 5230
-y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e
-(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 5340
-y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)
-f(completions.)p eop end
+4853 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
+(completion.)85 b(The)44 b(default)1110 4963 y(v)-5 b(alue)31
+b(is)f(`)p Fn(off)p Fo('.)630 5121 y Fn(completion-prefix-displa)o
+(y-le)o(ngth)1110 5230 y Fo(The)h(length)g(in)g(c)m(haracters)i(of)f
+(the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110
+5340 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s
+(di\014cation.)41 b(When)29 b(set)h(to)h(a)p eop end
%%Page: 6 9
TeXDict begin 6 8 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(6)630 299 y Fn
-(completion-query-items)1110 408 y Fo(The)26 b(n)m(um)m(b)s(er)f(of)h
-(p)s(ossible)g(completions)h(that)g(determines)f(when)f(the)i(user)1110
-518 y(is)i(ask)m(ed)h(whether)f(the)h(list)g(of)f(p)s(ossibilities)h
-(should)e(b)s(e)h(displa)m(y)m(ed.)41 b(If)29 b(the)1110
-628 y(n)m(um)m(b)s(er)d(of)h(p)s(ossible)f(completions)i(is)f(greater)h
-(than)e(this)h(v)-5 b(alue,)28 b(Readline)1110 737 y(will)f(ask)g(the)f
-(user)g(whether)g(or)g(not)h(he)f(wishes)g(to)i(view)e(them;)i
-(otherwise,)1110 847 y(they)d(are)f(simply)g(listed.)40
-b(This)23 b(v)-5 b(ariable)25 b(m)m(ust)g(b)s(e)e(set)i(to)g(an)g(in)m
-(teger)g(v)-5 b(alue)1110 956 y(greater)26 b(than)f(or)f(equal)i(to)f
-(0.)40 b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i
-(should)1110 1066 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g
-(is)g Fn(100)p Fo(.)630 1285 y Fn(convert-meta)1110 1395
-y Fo(If)22 b(set)g(to)h(`)p Fn(on)p Fo(',)h(Readline)f(will)f(con)m(v)m
+b(Command)29 b(Line)i(Editing)2153 b(6)1110 299 y(v)-5
+b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e(longer)j
+(than)e(this)g(v)-5 b(alue)27 b(are)1110 408 y(replaced)k(with)f(an)g
+(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)f(completions.)630
+565 y Fn(completion-query-items)1110 675 y Fo(The)c(n)m(um)m(b)s(er)f
+(of)h(p)s(ossible)g(completions)h(that)g(determines)f(when)f(the)i
+(user)1110 784 y(is)i(ask)m(ed)h(whether)f(the)h(list)g(of)f(p)s
+(ossibilities)h(should)e(b)s(e)h(displa)m(y)m(ed.)41
+b(If)29 b(the)1110 894 y(n)m(um)m(b)s(er)d(of)h(p)s(ossible)f
+(completions)i(is)f(greater)h(than)e(this)h(v)-5 b(alue,)28
+b(Readline)1110 1003 y(will)f(ask)g(the)f(user)g(whether)g(or)g(not)h
+(he)f(wishes)g(to)i(view)e(them;)i(otherwise,)1110 1113
+y(they)d(are)f(simply)g(listed.)40 b(This)23 b(v)-5 b(ariable)25
+b(m)m(ust)g(b)s(e)e(set)i(to)g(an)g(in)m(teger)g(v)-5
+b(alue)1110 1223 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40
+b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i(should)1110
+1332 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g
+Fn(100)p Fo(.)630 1489 y Fn(convert-meta)1110 1598 y
+Fo(If)22 b(set)g(to)h(`)p Fn(on)p Fo(',)h(Readline)f(will)f(con)m(v)m
(ert)i(c)m(haracters)f(with)f(the)g(eigh)m(th)h(bit)f(set)1110
-1504 y(to)33 b(an)e Fh(asci)r(i)h Fo(k)m(ey)h(sequence)f(b)m(y)g
+1708 y(to)33 b(an)e Fh(asci)r(i)h Fo(k)m(ey)h(sequence)f(b)m(y)g
(stripping)f(the)h(eigh)m(th)h(bit)f(and)f(pre\014xing)1110
-1614 y(an)24 b Fn(ESC)g Fo(c)m(haracter,)j(con)m(v)m(erting)f(them)f
-(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 1724
+1817 y(an)24 b Fn(ESC)g Fo(c)m(haracter,)j(con)m(v)m(erting)f(them)f
+(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 1927
y(The)i(default)h(v)-5 b(alue)28 b(is)f(`)p Fn(on)p Fo(',)i(but)d(will)
i(b)s(e)f(set)h(to)g(`)p Fn(off)p Fo(')g(if)f(the)h(lo)s(cale)h(is)f
-(one)1110 1833 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630
-2052 y Fn(disable-completion)1110 2162 y Fo(If)k(set)h(to)h(`)p
+(one)1110 2037 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630
+2193 y Fn(disable-completion)1110 2303 y Fo(If)k(set)h(to)h(`)p
Fn(On)p Fo(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60
-b(Completion)1110 2271 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h
+b(Completion)1110 2412 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h
(in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110
-2381 y(to)31 b Fn(self-insert)p Fo(.)38 b(The)30 b(default)g(is)h(`)p
-Fn(off)p Fo('.)630 2600 y Fn(echo-control-characters)1110
-2710 y Fo(When)f(set)h(to)g(`)p Fn(on)p Fo(',)f(on)g(op)s(erating)h
-(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 2819
+2522 y(to)31 b Fn(self-insert)p Fo(.)38 b(The)30 b(default)g(is)h(`)p
+Fn(off)p Fo('.)630 2679 y Fn(echo-control-characters)1110
+2788 y Fo(When)f(set)h(to)g(`)p Fn(on)p Fo(',)f(on)g(op)s(erating)h
+(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 2898
y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d
-(to)j(a)f(signal)g(generated)1110 2929 y(from)e(the)g(k)m(eyb)s(oard.)
-41 b(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630 3148
-y Fn(editing-mode)1110 3258 y Fo(The)d Fn(editing-mode)e
+(to)j(a)f(signal)g(generated)1110 3007 y(from)e(the)g(k)m(eyb)s(oard.)
+41 b(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630 3164
+y Fn(editing-mode)1110 3273 y Fo(The)d Fn(editing-mode)e
Fo(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k)
-m(ey)i(bind-)1110 3367 y(ings)25 b(is)g(used.)38 b(By)26
+m(ey)i(bind-)1110 3383 y(ings)25 b(is)g(used.)38 b(By)26
b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,)
-1110 3477 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to)
+1110 3493 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to)
h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110
-3587 y(b)s(e)g(set)h(to)g(either)g(`)p Fn(emacs)p Fo(')e(or)h(`)p
-Fn(vi)p Fo('.)630 3806 y Fn(emacs-mode-string)1110 3915
-y Fo(This)f(string)h(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e
-(the)h(last)g(line)h(of)e(the)h(pri-)1110 4025 y(mary)43
-b(prompt)g(when)f(emacs)i(editing)g(mo)s(de)f(is)g(activ)m(e.)82
-b(The)43 b(v)-5 b(alue)44 b(is)1110 4134 y(expanded)28
-b(lik)m(e)i(a)f(k)m(ey)g(binding,)f(so)h(the)g(standard)f(set)h(of)g
-(meta-)g(and)f(con-)1110 4244 y(trol)36 b(pre\014xes)e(and)h(bac)m
-(kslash)h(escap)s(e)g(sequences)g(is)f(a)m(v)-5 b(ailable.)58
-b(Use)36 b(the)1110 4354 y(`)p Fn(\\1)p Fo(')i(and)f(`)p
-Fn(\\2)p Fo(')h(escap)s(es)g(to)h(b)s(egin)e(and)h(end)f(sequences)h
-(of)g(non-prin)m(ting)1110 4463 y(c)m(haracters,)27 b(whic)m(h)c(can)h
-(b)s(e)f(used)f(to)j(em)m(b)s(ed)e(a)h(terminal)g(con)m(trol)h
-(sequence)1110 4573 y(in)m(to)31 b(the)g(mo)s(de)f(string.)41
-b(The)29 b(default)i(is)f(`)p Fn(@)p Fo('.)630 4792 y
-Fn(enable-bracketed-paste)1110 4902 y Fo(When)24 b(set)h(to)h(`)p
-Fn(On)p Fo(',)g(Readline)f(will)g(con\014gure)f(the)h(terminal)g(in)f
-(a)h(w)m(a)m(y)g(that)1110 5011 y(will)k(enable)f(it)h(to)g(insert)g
-(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e(as)i(a)f
-(single)1110 5121 y(string)33 b(of)f(c)m(haracters,)j(instead)e(of)g
-(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110
+3602 y(b)s(e)g(set)h(to)g(either)g(`)p Fn(emacs)p Fo(')e(or)h(`)p
+Fn(vi)p Fo('.)630 3759 y Fn(emacs-mode-string)1110 3868
+y Fo(If)j(the)h Fe(sho)m(w-mo)s(de-in-prompt)h Fo(v)-5
+b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
+3978 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)1110 4088 y(emacs)g(editing)h(mo)s
+(de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f
+(lik)m(e)h(a)h(k)m(ey)f(bind-)1110 4197 y(ing,)27 b(so)f(the)f
+(standard)g(set)h(of)f(meta-)i(and)e(con)m(trol)i(pre\014xes)d(and)h
+(bac)m(kslash)1110 4307 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5
+b(ailable.)41 b(Use)25 b(the)f(`)p Fn(\\1)p Fo(')f(and)h(`)p
+Fn(\\2)p Fo(')g(escap)s(es)g(to)g(b)s(egin)1110 4416
+y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m(haracters,)j
+(whic)m(h)c(can)h(b)s(e)f(used)1110 4526 y(to)h(em)m(b)s(ed)f(a)g
+(terminal)h(con)m(trol)h(sequence)f(in)m(to)g(the)f(mo)s(de)g(string.)
+61 b(The)1110 4635 y(default)31 b(is)f(`)p Fn(@)p Fo('.)630
+4792 y Fn(enable-bracketed-paste)1110 4902 y Fo(When)24
+b(set)h(to)h(`)p Fn(On)p Fo(',)g(Readline)f(will)g(con\014gure)f(the)h
+(terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110 5011 y(will)k(enable)f(it)h
+(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e
+(as)i(a)f(single)1110 5121 y(string)33 b(of)f(c)m(haracters,)j(instead)
+e(of)g(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110
5230 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49
b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110
5340 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41
@@ -5739,32 +5767,32 @@ Fg(C-J)g Fo(will)h(terminate)g(an)1110 5340 y(incremen)m(tal)c(searc)m
%%Page: 8 11
TeXDict begin 8 10 bop 150 -116 a Fo(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fn(keymap)192
-b Fo(Sets)39 b(Readline's)g(idea)h(of)f(the)g(curren)m(t)f(k)m(eymap)h
-(for)g(k)m(ey)g(binding)f(com-)1110 408 y(mands.)81 b(Acceptable)47
-b Fn(keymap)42 b Fo(names)i(are)h Fn(emacs)p Fo(,)i Fn(emacs-standard)p
+b Fo(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h
+(for)f(k)m(ey)h(binding)1110 408 y(commands.)71 b(Built-in)41
+b Fn(keymap)e Fo(names)h(are)h Fn(emacs)p Fo(,)h Fn(emacs-standard)p
Fo(,)1110 518 y Fn(emacs-meta)p Fo(,)99 b Fn(emacs-ctlx)p
Fo(,)f Fn(vi)p Fo(,)j Fn(vi-move)p Fo(,)f Fn(vi-command)p
Fo(,)f(and)1110 628 y Fn(vi-insert)p Fo(.)81 b Fn(vi)44
b Fo(is)h(equiv)-5 b(alen)m(t)46 b(to)g Fn(vi-command)c
-Fo(\()p Fn(vi-move)h Fo(is)i(also)h(a)1110 737 y(synon)m(ym\);)g
-Fn(emacs)39 b Fo(is)i(equiv)-5 b(alen)m(t)42 b(to)g Fn(emacs-standard)p
-Fo(.)68 b(The)40 b(default)1110 847 y(v)-5 b(alue)52
-b(is)f Fn(emacs)p Fo(.)103 b(The)51 b(v)-5 b(alue)52
-b(of)f(the)h Fn(editing-mode)c Fo(v)-5 b(ariable)52 b(also)1110
-956 y(a\013ects)32 b(the)e(default)h(k)m(eymap.)630 1113
-y Fn(keyseq-timeout)1110 1223 y Fo(Sp)s(eci\014es)25
-b(the)g(duration)g(Readline)h(will)g(w)m(ait)g(for)g(a)f(c)m(haracter)i
-(when)e(read-)1110 1332 y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h
-(sequence)f(\(one)g(that)h(can)f(form)g(a)g(complete)h(k)m(ey)1110
-1442 y(sequence)j(using)e(the)i(input)e(read)h(so)g(far,)h(or)g(can)f
-(tak)m(e)i(additional)f(input)1110 1551 y(to)g(complete)g(a)f(longer)h
-(k)m(ey)f(sequence\).)49 b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h
-(within)1110 1661 y(the)43 b(timeout,)48 b(Readline)43
-b(will)g(use)g(the)g(shorter)g(but)f(complete)j(k)m(ey)e(se-)1110
-1771 y(quence.)c(Readline)26 b(uses)f(this)h(v)-5 b(alue)26
-b(to)g(determine)g(whether)f(or)g(not)h(input)1110 1880
-y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m(t)f(input)g
-(source)h(\()p Fn(rl_instream)d Fo(b)m(y)i(default\).)1110
+Fo(\()p Fn(vi-move)h Fo(is)i(also)h(a)1110 737 y(synon)m(ym\);)41
+b Fn(emacs)c Fo(is)h(equiv)-5 b(alen)m(t)39 b(to)f Fn(emacs-standard)p
+Fo(.)59 b(Applications)1110 847 y(ma)m(y)32 b(add)e(additional)i
+(names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f
+Fn(emacs)p Fo(.)41 b(The)30 b(v)-5 b(alue)1110 956 y(of)31
+b(the)f Fn(editing-mode)d Fo(v)-5 b(ariable)31 b(also)h(a\013ects)f
+(the)g(default)g(k)m(eymap.)630 1113 y Fn(keyseq-timeout)1110
+1223 y Fo(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m
+(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 1332
+y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f
+(form)g(a)g(complete)h(k)m(ey)1110 1442 y(sequence)j(using)e(the)i
+(input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input)
+1110 1551 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49
+b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110
+1661 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter)
+g(but)f(complete)j(k)m(ey)e(se-)1110 1771 y(quence.)c(Readline)26
+b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h
+(input)1110 1880 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m
+(t)f(input)g(source)h(\()p Fn(rl_instream)d Fo(b)m(y)i(default\).)1110
1990 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h
(milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that)
1110 2099 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
@@ -5815,59 +5843,61 @@ TeXDict begin 9 11 bop 150 -116 a Fo(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2153 b(9)1110 299 y(default)26
b(is)f(`)p Fn(off)p Fo(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p
Fn(on)p Fo(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110
-408 y(eigh)m(t-bit)k(c)m(haracters.)630 596 y Fn(page-completions)1110
-706 y Fo(If)h(set)i(to)f(`)p Fn(on)p Fo(',)h(Readline)g(uses)e(an)h(in)
+408 y(eigh)m(t-bit)k(c)m(haracters.)630 581 y Fn(page-completions)1110
+690 y Fo(If)h(set)i(to)f(`)p Fn(on)p Fo(',)h(Readline)g(uses)e(an)h(in)
m(ternal)h Fn(more)p Fo(-lik)m(e)f(pager)g(to)h(displa)m(y)1110
-816 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.)
+800 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.)
47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Fn(on)p Fo(')1110
-925 y(b)m(y)e(default.)630 1113 y Fn(print-completions-horizo)o(ntal)o
-(ly)1110 1223 y Fo(If)23 b(set)i(to)g(`)p Fn(on)p Fo(',)g(Readline)g
+909 y(b)m(y)e(default.)630 1082 y Fn(print-completions-horizo)o(ntal)o
+(ly)1110 1191 y Fo(If)23 b(set)i(to)g(`)p Fn(on)p Fo(',)g(Readline)g
(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110
-1332 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c
-(than)g(do)m(wn)g(the)h(screen.)1110 1442 y(The)30 b(default)g(is)h(`)p
-Fn(off)p Fo('.)630 1630 y Fn(revert-all-at-newline)1110
-1739 y Fo(If)e(set)h(to)g(`)p Fn(on)p Fo(',)g(Readline)g(will)g(undo)f
+1301 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c
+(than)g(do)m(wn)g(the)h(screen.)1110 1410 y(The)30 b(default)g(is)h(`)p
+Fn(off)p Fo('.)630 1583 y Fn(revert-all-at-newline)1110
+1692 y Fo(If)e(set)h(to)g(`)p Fn(on)p Fo(',)g(Readline)g(will)g(undo)f
(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110
-1849 y(returning)f(when)f Fn(accept-line)f Fo(is)j(executed.)41
-b(By)29 b(default,)g(history)g(lines)1110 1958 y(ma)m(y)42
+1802 y(returning)f(when)f Fn(accept-line)f Fo(is)j(executed.)41
+b(By)29 b(default,)g(history)g(lines)1110 1911 y(ma)m(y)42
b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h
-(across)g(calls)h(to)1110 2068 y Fn(readline)p Fo(.)38
-b(The)30 b(default)h(is)f(`)p Fn(off)p Fo('.)630 2256
-y Fn(show-all-if-ambiguous)1110 2365 y Fo(This)f(alters)i(the)f
+(across)g(calls)h(to)1110 2021 y Fn(readline)p Fo(.)38
+b(The)30 b(default)h(is)f(`)p Fn(off)p Fo('.)630 2193
+y Fn(show-all-if-ambiguous)1110 2303 y Fo(This)f(alters)i(the)f
(default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40
-b(If)29 b(set)1110 2475 y(to)f(`)p Fn(on)p Fo(',)g(w)m(ords)f(whic)m(h)
+b(If)29 b(set)1110 2412 y(to)f(`)p Fn(on)p Fo(',)g(w)m(ords)f(whic)m(h)
g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause)
-1110 2585 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i
-(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 2694 y(The)30
+1110 2522 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i
+(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 2632 y(The)30
b(default)g(v)-5 b(alue)31 b(is)g(`)p Fn(off)p Fo('.)630
-2882 y Fn(show-all-if-unmodified)1110 2992 y Fo(This)38
+2804 y Fn(show-all-if-unmodified)1110 2913 y Fo(This)38
b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h
-(functions)e(in)h(a)1110 3101 y(fashion)25 b(similar)h(to)g
+(functions)e(in)h(a)1110 3023 y(fashion)25 b(similar)h(to)g
Fe(sho)m(w-all-if-am)m(biguous)p Fo(.)41 b(If)25 b(set)h(to)h(`)p
-Fn(on)p Fo(',)f(w)m(ords)f(whic)m(h)1110 3211 y(ha)m(v)m(e)32
+Fn(on)p Fo(',)f(w)m(ords)f(whic)m(h)1110 3133 y(ha)m(v)m(e)32
b(more)f(than)f(one)i(p)s(ossible)e(completion)i(without)f(an)m(y)g(p)s
-(ossible)f(par-)1110 3320 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
-f(completions)h(don't)f(share)g(a)h(common)1110 3430
+(ossible)f(par-)1110 3242 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 3352
y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g
-(immediately)i(instead)e(of)h(ring-)1110 3540 y(ing)g(the)f(b)s(ell.)41
+(immediately)i(instead)e(of)h(ring-)1110 3461 y(ing)g(the)f(b)s(ell.)41
b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Fn(off)p
-Fo('.)630 3727 y Fn(show-mode-in-prompt)1110 3837 y Fo(If)g(set)g(to)h
-(`)p Fn(on)p Fo(',)f(add)f(a)i(c)m(haracter)g(to)g(the)f(b)s(eginning)g
-(of)g(the)g(prompt)f(indi-)1110 3947 y(cating)j(the)g(editing)f(mo)s
-(de:)42 b(emacs,)33 b(vi)e(command,)g(or)g(vi)g(insertion.)43
-b(The)1110 4056 y(mo)s(de)30 b(strings)g(are)h(user-settable.)42
-b(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Fn(off)p
-Fo('.)630 4244 y Fn(skip-completed-text)1110 4354 y Fo(If)h(set)i(to)f
-(`)p Fn(on)p Fo(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s
-(eha)m(vior)f(when)f(in-)1110 4463 y(serting)d(a)h(single)g(matc)m(h)f
-(in)m(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s
-(erform-)1110 4573 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f
-(w)m(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)1110
-4682 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h
-(that)f(matc)m(h)g(c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g
-(the)g(w)m(ord)f(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g
-(w)m(ord)1110 4902 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g
-(duplicated.)45 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
+Fo('.)630 3634 y Fn(show-mode-in-prompt)1110 3743 y Fo(If)24
+b(set)h(to)g(`)p Fn(on)p Fo(',)g(add)f(a)h(string)f(to)h(the)f(b)s
+(eginning)g(of)g(the)h(prompt)e(indicating)1110 3853
+y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi)
+h(insertion.)49 b(The)32 b(mo)s(de)1110 3962 y(strings)45
+b(are)h(user-settable)g(\(e.g.,)51 b Fe(emacs-mo)s(de-string)8
+b Fo(\).)87 b(The)45 b(default)1110 4072 y(v)-5 b(alue)31
+b(is)f(`)p Fn(off)p Fo('.)630 4244 y Fn(skip-completed-text)1110
+4354 y Fo(If)i(set)i(to)f(`)p Fn(on)p Fo(',)h(this)f(alters)g(the)g
+(default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110
+4463 y(serting)d(a)h(single)g(matc)m(h)f(in)m(to)h(the)g(line.)40
+b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)1110
+4573 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m(ord.)53
+b(If)35 b(enabled,)g(readline)g(do)s(es)1110 4682 y(not)41
+b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g
+(c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f
+(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110
+4902 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45
+b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
5011 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g
(after)h(the)g(`)p Fn(e)p Fo(')f(in)1110 5121 y(`)p Fn(Makefile)p
Fo(')c(will)i(result)f(in)g(`)p Fn(Makefile)p Fo(')f(rather)h(than)h(`)
@@ -5877,203 +5907,251 @@ b(alue)1110 5340 y(is)30 b(`)p Fn(off)p Fo('.)p eop end
%%Page: 10 13
TeXDict begin 10 12 bop 150 -116 a Fo(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2107 b(10)630 299 y Fn
-(vi-cmd-mode-string)1110 408 y Fo(This)29 b(string)h(is)f(displa)m(y)m
-(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h(of)e(the)h(pri-)
-1110 518 y(mary)21 b(prompt)g(when)f(vi)i(editing)g(mo)s(de)f(is)g
-(activ)m(e)j(and)d(in)g(command)g(mo)s(de.)1110 628 y(The)38
-b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g(binding,)g
-(so)g(the)f(standard)g(set)h(of)1110 737 y(meta-)30 b(and)e(con)m(trol)
-i(pre\014xes)e(and)g(bac)m(kslash)h(escap)s(e)g(sequences)g(is)g(a)m(v)
--5 b(ail-)1110 847 y(able.)50 b(Use)33 b(the)h(`)p Fn(\\1)p
-Fo(')f(and)g(`)p Fn(\\2)p Fo(')g(escap)s(es)g(to)h(b)s(egin)f(and)g
-(end)f(sequences)i(of)1110 956 y(non-prin)m(ting)40 b(c)m(haracters,)45
-b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal)
-1110 1066 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g
-(string.)41 b(The)30 b(default)h(is)f(`)p Fn(\(cmd\))p
-Fo('.)630 1209 y Fn(vi-ins-mode-string)1110 1319 y Fo(This)f(string)h
-(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h
-(of)e(the)h(pri-)1110 1428 y(mary)25 b(prompt)f(when)g(vi)h(editing)h
-(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)1110
-1538 y(The)38 b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g
-(binding,)g(so)g(the)f(standard)g(set)h(of)1110 1648
-y(meta-)30 b(and)e(con)m(trol)i(pre\014xes)e(and)g(bac)m(kslash)h
-(escap)s(e)g(sequences)g(is)g(a)m(v)-5 b(ail-)1110 1757
-y(able.)50 b(Use)33 b(the)h(`)p Fn(\\1)p Fo(')f(and)g(`)p
-Fn(\\2)p Fo(')g(escap)s(es)g(to)h(b)s(egin)f(and)g(end)f(sequences)i
-(of)1110 1867 y(non-prin)m(ting)40 b(c)m(haracters,)45
-b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal)
-1110 1976 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g
-(string.)41 b(The)30 b(default)h(is)f(`)p Fn(\(ins\))p
-Fo('.)630 2120 y Fn(visible-stats)1110 2229 y Fo(If)h(set)i(to)f(`)p
-Fn(on)p Fo(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s
-(e)g(is)g(app)s(ended)e(to)j(the)1110 2339 y(\014lename)e(when)e
-(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p
-Fn(off)p Fo('.)150 2482 y(Key)f(Bindings)630 2592 y(The)41
-b(syn)m(tax)i(for)f(con)m(trolling)h(k)m(ey)g(bindings)e(in)h(the)g
-(init)g(\014le)g(is)g(simple.)75 b(First)43 b(y)m(ou)630
-2701 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h(the)g(command)f(that)i
-(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 b(The)27 b(follo)m(wing)630
-2811 y(sections)37 b(con)m(tain)g(tables)g(of)f(the)g(command)f(name,)j
-(the)e(default)g(k)m(eybinding,)h(if)f(an)m(y)-8 b(,)630
-2921 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h
-(do)s(es.)630 3047 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g(name)g(of)g
-(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g(the)g(init)630
-3157 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m(ou)g(wish)f(to)h
-(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)630
-3266 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
+(vi-cmd-mode-string)1110 408 y Fo(If)33 b(the)h Fe(sho)m(w-mo)s
+(de-in-prompt)h Fo(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f
+(is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g
+(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110
+628 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command)g
+(mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110
+737 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f
+(standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110
+847 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is)g
+(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Fn(\\1)p
+Fo(')1110 956 y(and)23 b(`)p Fn(\\2)p Fo(')h(escap)s(es)h(to)f(b)s
+(egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110
+1066 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)
+h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 1176
+y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
+Fn(\(cmd\))p Fo('.)630 1340 y Fn(vi-ins-mode-string)1110
+1450 y Fo(If)j(the)h Fe(sho)m(w-mo)s(de-in-prompt)h Fo(v)-5
+b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
+1559 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)1110 1669 y(vi)35
+b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)
+54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 1778 y(panded)26
+b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g
+(meta-)h(and)e(con)m(trol)1110 1888 y(pre\014xes)34 b(and)g(bac)m
+(kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57
+b(Use)35 b(the)g(`)p Fn(\\1)p Fo(')1110 1998 y(and)23
+b(`)p Fn(\\2)p Fo(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g
+(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 2107
+y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h
+(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2217
+y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
+Fn(\(ins\))p Fo('.)630 2381 y Fn(visible-stats)1110 2491
+y Fo(If)h(set)i(to)f(`)p Fn(on)p Fo(',)h(a)f(c)m(haracter)i(denoting)e
+(a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the)1110
+2600 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42
+b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)150 2765
+y(Key)f(Bindings)630 2874 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h
+(k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75
+b(First)43 b(y)m(ou)630 2984 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)
+h(the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41
+b(The)27 b(follo)m(wing)630 3093 y(sections)37 b(con)m(tain)g(tables)g
+(of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an)
+m(y)-8 b(,)630 3203 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 3340 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g
+(name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g
+(the)g(init)630 3450 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m
+(ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)
+630 3559 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g
-(and)630 3376 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
+(and)630 3669 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
(terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72
-b(The)40 b(name)h(of)630 3485 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
+b(The)40 b(name)h(of)630 3778 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
(expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h
-(what)h(y)m(ou)g(\014nd)e(most)630 3595 y(comfortable.)630
-3721 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h
+(what)h(y)m(ou)g(\014nd)e(most)630 3888 y(comfortable.)630
+4025 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h
(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630
-3831 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g
-(\(a)h Fe(macro)5 b Fo(\).)630 3974 y Fe(k)m(eyname)g
+4134 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g
+(\(a)h Fe(macro)5 b Fo(\).)630 4299 y Fe(k)m(eyname)g
Fo(:)42 b Fe(function-name)35 b Fo(or)c Fe(macro)1110
-4084 y(k)m(eyname)k Fo(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s
+4408 y(k)m(eyname)k Fo(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s
(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350
-4210 y Fn(Control-u:)45 b(universal-argument)1350 4320
-y(Meta-Rubout:)f(backward-kill-word)1350 4430 y(Control-o:)h(">)i
-(output")1110 4556 y Fo(In)94 b(the)g(ab)s(o)m(v)m(e)i(example,)111
+4545 y Fn(Control-u:)45 b(universal-argument)1350 4655
+y(Meta-Rubout:)f(backward-kill-word)1350 4765 y(Control-o:)h(">)i
+(output")1110 4902 y Fo(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112
b Fg(C-u)94 b Fo(is)g(b)s(ound)f(to)i(the)f(function)1110
-4666 y Fn(universal-argument)p Fo(,)124 b Fg(M-DEL)107
-b Fo(is)i(b)s(ound)e(to)j(the)f(function)1110 4775 y
+5011 y Fn(universal-argument)p Fo(,)124 b Fg(M-DEL)107
+b Fo(is)i(b)s(ound)e(to)j(the)f(function)1110 5121 y
Fn(backward-kill-word)p Fo(,)75 b(and)69 b Fg(C-o)g Fo(is)h(b)s(ound)e
-(to)j(run)d(the)i(macro)1110 4885 y(expressed)45 b(on)h(the)g(righ)m(t)
+(to)j(run)d(the)i(macro)1110 5230 y(expressed)45 b(on)h(the)g(righ)m(t)
g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p
-Fn(>)1110 4994 y(output)p Fo(')29 b(in)m(to)i(the)g(line\).)1110
-5121 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g
-(names)f(are)g(recognized)h(while)1110 5230 y(pro)s(cessing)40
-b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 b Fe(DEL)p
-Fo(,)42 b Fe(ESC)p Fo(,)g Fe(ESCAPE)p Fo(,)f Fe(LFD)p
-Fo(,)1110 5340 y Fe(NEWLINE)p Fo(,)31 b Fe(RET)p Fo(,)f
-Fe(RETURN)p Fo(,)g Fe(R)m(UBOUT)p Fo(,)h Fe(SP)-8 b(A)m(CE)p
-Fo(,)31 b Fe(SPC)p Fo(,)e(and)h Fe(T)-8 b(AB)p Fo(.)p
+Fn(>)1110 5340 y(output)p Fo(')29 b(in)m(to)i(the)g(line\).)p
eop end
%%Page: 11 14
TeXDict begin 11 13 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(11)630 299 y Fn(")p
-Fe(k)m(eyseq)r Fn(")p Fo(:)41 b Fe(function-name)36 b
-Fo(or)30 b Fe(macro)1110 408 y(k)m(eyseq)k Fo(di\013ers)d(from)f
-Fe(k)m(eyname)37 b Fo(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f
-(denoting)g(an)g(en-)1110 518 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)
-f(sp)s(eci\014ed,)h(b)m(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110
-628 y(double)29 b(quotes.)41 b(Some)29 b Fh(gnu)h Fo(Emacs)f(st)m(yle)i
-(k)m(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110
-737 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s(ecial)h(c)m
-(haracter)g(names)f(are)g(not)1110 847 y(recognized.)1350
-981 y Fn("\\C-u":)46 b(universal-argument)1350 1091 y("\\C-x\\C-r":)f
-(re-read-init-file)1350 1200 y("\\e[11~":)g("Function)h(Key)g(1")1110
-1334 y Fo(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74
-b Fg(C-u)64 b Fo(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110
-1444 y Fn(universal-argument)39 b Fo(\(just)k(as)h(it)g(w)m(as)g(in)g
-(the)f(\014rst)g(example\),)49 b(`)p Fg(C-x)1110 1554
+b(Command)29 b(Line)i(Editing)2107 b(11)1110 299 y(A)62
+b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g(names)f(are)g
+(recognized)h(while)1110 408 y(pro)s(cessing)40 b(this)f(k)m(ey)i
+(binding)e(syn)m(tax:)60 b Fe(DEL)p Fo(,)42 b Fe(ESC)p
+Fo(,)g Fe(ESCAPE)p Fo(,)f Fe(LFD)p Fo(,)1110 518 y Fe(NEWLINE)p
+Fo(,)31 b Fe(RET)p Fo(,)f Fe(RETURN)p Fo(,)g Fe(R)m(UBOUT)p
+Fo(,)h Fe(SP)-8 b(A)m(CE)p Fo(,)31 b Fe(SPC)p Fo(,)e(and)h
+Fe(T)-8 b(AB)p Fo(.)630 677 y Fn(")p Fe(k)m(eyseq)r Fn(")p
+Fo(:)41 b Fe(function-name)36 b Fo(or)30 b Fe(macro)1110
+787 y(k)m(eyseq)k Fo(di\013ers)d(from)f Fe(k)m(eyname)37
+b Fo(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110
+896 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m(y)
+f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 1006 y(double)29
+b(quotes.)41 b(Some)29 b Fh(gnu)h Fo(Emacs)f(st)m(yle)i(k)m(ey)f(escap)
+s(es)g(can)g(b)s(e)f(used,)g(as)1110 1115 y(in)k(the)h(follo)m(wing)i
+(example,)f(but)e(the)h(sp)s(ecial)h(c)m(haracter)g(names)f(are)g(not)
+1110 1225 y(recognized.)1350 1359 y Fn("\\C-u":)46 b
+(universal-argument)1350 1469 y("\\C-x\\C-r":)f(re-read-init-file)1350
+1578 y("\\e[11~":)g("Function)h(Key)g(1")1110 1713 y
+Fo(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 b Fg(C-u)64
+b Fo(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110
+1822 y Fn(universal-argument)39 b Fo(\(just)k(as)h(it)g(w)m(as)g(in)g
+(the)f(\014rst)g(example\),)49 b(`)p Fg(C-x)1110 1932
y(C-r)p Fo(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f
Fn(re-read-init-file)p Fo(,)c(and)j(`)p Fn(ESC)h([)g(1)g(1)1110
-1663 y(~)p Fo(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
-Fn(Function)e(Key)g(1)p Fo('.)630 1822 y(The)g(follo)m(wing)i
+2041 y(~)p Fo(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
+Fn(Function)e(Key)g(1)p Fo('.)630 2200 y(The)g(follo)m(wing)i
Fh(gnu)f Fo(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5
-b(ailable)32 b(when)d(sp)s(ecifying)630 1932 y(k)m(ey)i(sequences:)630
-2091 y Fg(\\C-)336 b Fo(con)m(trol)32 b(pre\014x)630
-2250 y Fg(\\M-)336 b Fo(meta)31 b(pre\014x)630 2408 y
+b(ailable)32 b(when)d(sp)s(ecifying)630 2310 y(k)m(ey)i(sequences:)630
+2469 y Fg(\\C-)336 b Fo(con)m(trol)32 b(pre\014x)630
+2628 y Fg(\\M-)336 b Fo(meta)31 b(pre\014x)630 2787 y
Fg(\\e)384 b Fo(an)30 b(escap)s(e)h(c)m(haracter)630
-2567 y Fg(\\\\)384 b Fo(bac)m(kslash)630 2726 y Fg(\\)p
+2945 y Fg(\\\\)384 b Fo(bac)m(kslash)630 3104 y Fg(\\)p
Fn(")g(")p Fo(,)30 b(a)h(double)f(quotation)i(mark)630
-2885 y Fg(\\')384 b Fn(')p Fo(,)30 b(a)h(single)g(quote)g(or)f(ap)s
-(ostrophe)630 3044 y(In)d(addition)h(to)g(the)g Fh(gnu)f
+3263 y Fg(\\')384 b Fn(')p Fo(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe)630 3422 y(In)d(addition)h(to)g(the)g Fh(gnu)f
Fo(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g
-(bac)m(kslash)630 3154 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
-3313 y Fn(\\a)384 b Fo(alert)31 b(\(b)s(ell\))630 3471
-y Fn(\\b)384 b Fo(bac)m(kspace)630 3630 y Fn(\\d)g Fo(delete)630
-3789 y Fn(\\f)g Fo(form)30 b(feed)630 3948 y Fn(\\n)384
-b Fo(newline)630 4107 y Fn(\\r)g Fo(carriage)32 b(return)630
-4266 y Fn(\\t)384 b Fo(horizon)m(tal)32 b(tab)630 4425
-y Fn(\\v)384 b Fo(v)m(ertical)32 b(tab)630 4584 y Fn(\\)p
+(bac)m(kslash)630 3532 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
+3691 y Fn(\\a)384 b Fo(alert)31 b(\(b)s(ell\))630 3850
+y Fn(\\b)384 b Fo(bac)m(kspace)630 4008 y Fn(\\d)g Fo(delete)630
+4167 y Fn(\\f)g Fo(form)30 b(feed)630 4326 y Fn(\\n)384
+b Fo(newline)630 4485 y Fn(\\r)g Fo(carriage)32 b(return)630
+4644 y Fn(\\t)384 b Fo(horizon)m(tal)32 b(tab)630 4803
+y Fn(\\v)384 b Fo(v)m(ertical)32 b(tab)630 4962 y Fn(\\)p
Fg(nnn)288 b Fo(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5
b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fe(nnn)e
-Fo(\(one)i(to)1110 4693 y(three)c(digits\))630 4852 y
+Fo(\(one)i(to)1110 5071 y(three)c(digits\))630 5230 y
Fn(\\x)p Fg(HH)288 b Fo(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e
(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39
-b Fe(HH)1110 4962 y Fo(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630
-5121 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e
-(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630
-5230 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21
-b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f(name.)38
-b(In)630 5340 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23
-b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m(e)j
-(are)e(expanded.)37 b(Bac)m(kslash)p eop end
+b Fe(HH)1110 5340 y Fo(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))p
+eop end
%%Page: 12 15
TeXDict begin 12 14 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(12)630 299 y(will)40
-b(quote)h(an)m(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k
-(including)39 b(`)p Fn(")p Fo(')h(and)g(`)p Fn(')p Fo('.)69
-b(F)-8 b(or)630 408 y(example,)28 b(the)e(follo)m(wing)h(binding)d
-(will)i(mak)m(e)h(`)p Fg(C-x)j Fn(\\)p Fo(')c(insert)f(a)h(single)h(`)p
-Fn(\\)p Fo(')f(in)m(to)g(the)g(line:)870 536 y Fn("\\C-x\\\\":)45
-b("\\\\")150 721 y Fd(1.3.2)63 b(Conditional)41 b(Init)g(Constructs)150
-868 y Fo(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f(in)g
-(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150
-978 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g
-(bindings)d(and)h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s
-(erformed)f(as)i(the)150 1087 y(result)f(of)h(tests.)41
-b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150
-1233 y Fn($if)336 b Fo(The)31 b Fn($if)f Fo(construct)i(allo)m(ws)h
-(bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g
-(the)630 1342 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g
-(application)h(using)f(Readline.)64 b(The)38 b(text)h(of)f(the)g(test)
-630 1452 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m
-(haracters)i(are)f(required)e(to)i(isolate)i(it.)630
-1597 y Fn(mode)288 b Fo(The)30 b Fn(mode=)e Fo(form)i(of)g(the)h
-Fn($if)e Fo(directiv)m(e)j(is)e(used)f(to)i(test)g(whether)e(Read-)1110
-1707 y(line)44 b(is)f(in)g Fn(emacs)f Fo(or)h Fn(vi)g
-Fo(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g(conjunction)
-1110 1816 y(with)c(the)h(`)p Fn(set)29 b(keymap)p Fo(')38
-b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110
-1926 y(the)32 b Fn(emacs-standard)c Fo(and)j Fn(emacs-ctlx)d
-Fo(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 2036 y(starting)f(out)g
-(in)f Fn(emacs)f Fo(mo)s(de.)630 2181 y Fn(term)288 b
+b(Command)29 b(Line)i(Editing)2107 b(12)630 299 y(When)37
+b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e(or)f(double)g
+(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630 408 y(indicate)23
+b(a)e(macro)h(de\014nition.)38 b(Unquoted)21 b(text)i(is)e(assumed)g
+(to)h(b)s(e)f(a)h(function)f(name.)38 b(In)630 518 y(the)22
+b(macro)f(b)s(o)s(dy)-8 b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g
+(describ)s(ed)e(ab)s(o)m(v)m(e)j(are)e(expanded.)37 b(Bac)m(kslash)630
+628 y(will)j(quote)h(an)m(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f
+(text,)k(including)39 b(`)p Fn(")p Fo(')h(and)g(`)p Fn(')p
+Fo('.)69 b(F)-8 b(or)630 737 y(example,)28 b(the)e(follo)m(wing)h
+(binding)d(will)i(mak)m(e)h(`)p Fg(C-x)j Fn(\\)p Fo(')c(insert)f(a)h
+(single)h(`)p Fn(\\)p Fo(')f(in)m(to)g(the)g(line:)870
+873 y Fn("\\C-x\\\\":)45 b("\\\\")150 1073 y Fd(1.3.2)63
+b(Conditional)41 b(Init)g(Constructs)150 1220 y Fo(Readline)c(implemen)
+m(ts)g(a)h(facilit)m(y)g(similar)f(in)g(spirit)f(to)i(the)f
+(conditional)h(compilation)g(features)f(of)150 1330 y(the)31
+b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g(bindings)d(and)
+h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s(erformed)f(as)i(the)
+150 1440 y(result)f(of)h(tests.)41 b(There)30 b(are)h(four)f(parser)f
+(directiv)m(es)j(used.)150 1601 y Fn($if)336 b Fo(The)31
+b Fn($if)f Fo(construct)i(allo)m(ws)h(bindings)d(to)i(b)s(e)e(made)i
+(based)f(on)g(the)g(editing)h(mo)s(de,)g(the)630 1711
+y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h(application)g(using)f
+(Readline.)59 b(The)36 b(text)h(of)f(the)h(test,)630
+1821 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f(to)h
+(the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630
+1930 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i
+(it.)630 2091 y Fn(mode)288 b Fo(The)30 b Fn(mode=)e
+Fo(form)i(of)g(the)h Fn($if)e Fo(directiv)m(e)j(is)e(used)f(to)i(test)g
+(whether)e(Read-)1110 2201 y(line)44 b(is)f(in)g Fn(emacs)f
+Fo(or)h Fn(vi)g Fo(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g
+(conjunction)1110 2311 y(with)c(the)h(`)p Fn(set)29 b(keymap)p
+Fo(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110
+2420 y(the)32 b Fn(emacs-standard)c Fo(and)j Fn(emacs-ctlx)d
+Fo(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 2530 y(starting)f(out)g
+(in)f Fn(emacs)f Fo(mo)s(de.)630 2691 y Fn(term)288 b
Fo(The)26 b Fn(term=)g Fo(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f
-(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 2291 y(ings,)38
+(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 2800 y(ings,)38
b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g
-(the)g(terminal's)1110 2400 y(function)24 b(k)m(eys.)39
+(the)g(terminal's)1110 2910 y(function)24 b(k)m(eys.)39
b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p
-Fn(=)p Fo(')g(is)g(tested)h(against)1110 2510 y(b)s(oth)k(the)h(full)g
+Fn(=)p Fo(')g(is)g(tested)h(against)1110 3020 y(b)s(oth)k(the)h(full)g
(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g
-(terminal)1110 2619 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
+(terminal)1110 3129 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
Fn(-)p Fo('.)50 b(This)33 b(allo)m(ws)i Fn(sun)e Fo(to)h(matc)m(h)g(b)s
-(oth)f Fn(sun)g Fo(and)1110 2729 y Fn(sun-cmd)p Fo(,)c(for)h(instance.)
-630 2874 y Fn(application)1110 2984 y Fo(The)21 b Fe(application)j
+(oth)f Fn(sun)g Fo(and)1110 3239 y Fn(sun-cmd)p Fo(,)c(for)h(instance.)
+630 3400 y Fn(version)144 b Fo(The)44 b Fn(version)f
+Fo(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i
+(against)1110 3509 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74
+b(The)42 b Fn(version)d Fo(expands)i(to)h(the)g(curren)m(t)1110
+3619 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h
+(op)s(erators)f(includes)f(`)p Fn(=)p Fo(')h(\(and)1110
+3729 y(`)p Fn(==)p Fo('\),)33 b(`)p Fn(!=)p Fo(',)f(`)p
+Fn(<=)p Fo(',)h(`)p Fn(>=)p Fo(',)f(`)p Fn(<)p Fo(',)h(and)e(`)p
+Fn(>)p Fo('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h
+(on)1110 3838 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g
+(consists)h(of)f(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110
+3948 y(an)45 b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44
+b(an)i(optional)g(minor)f(v)m(ersion)h(\(e.g.,)1110 4057
+y(`)p Fn(7.1)p Fo('\).)40 b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g
+(omitted,)h(it)f(is)g(assumed)f(to)h(b)s(e)f(`)p Fn(0)p
+Fo('.)40 b(The)1110 4167 y(op)s(erator)34 b(ma)m(y)g(b)s(e)f(separated)
+g(from)g(the)h(string)f Fn(version)f Fo(and)h(from)g(the)1110
+4276 y(v)m(ersion)39 b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f
+(whitespace.)67 b(The)38 b(follo)m(wing)i(example)1110
+4386 y(sets)31 b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m
+(ersion)f(b)s(eing)g(used)g(is)g(7.0)i(or)e(new)m(er:)1350
+4521 y Fn($if)47 b(version)f(>=)h(7.0)1350 4631 y(set)g
+(show-mode-in-prompt)42 b(on)1350 4741 y($endif)630 4902
+y(application)1110 5011 y Fo(The)21 b Fe(application)j
Fo(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h
-(set-)1110 3093 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
+(set-)1110 5121 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
(Readline)g(library)g(sets)g(the)g Fe(application)1110
-3203 y(name)p Fo(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
+5230 y(name)p Fo(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110
-3313 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h
-(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 3422
-y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f
-(sequence)h(that)f(quotes)1110 3532 y(the)e(curren)m(t)f(or)g(previous)
-g(w)m(ord)g(in)g(Bash:)1350 3659 y Fn($if)47 b(Bash)1350
-3769 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350
-3878 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 3988 y($endif)150
-4133 y($endif)192 b Fo(This)29 b(command,)i(as)f(seen)h(in)f(the)g
-(previous)g(example,)h(terminates)g(an)g Fn($if)e Fo(command.)150
-4279 y Fn($else)240 b Fo(Commands)29 b(in)h(this)h(branc)m(h)e(of)i
+5340 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h
+(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)p eop end
+%%Page: 13 16
+TeXDict begin 13 15 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(13)1110 299 y(instance,)35
+b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f(sequence)h(that)f
+(quotes)1110 408 y(the)e(curren)m(t)f(or)g(previous)g(w)m(ord)g(in)g
+(Bash:)1350 543 y Fn($if)47 b(Bash)1350 653 y(#)g(Quote)g(the)g
+(current)f(or)h(previous)e(word)1350 762 y("\\C-xq":)h
+("\\eb\\"\\ef\\"")1350 872 y($endif)630 1031 y(variable)96
+b Fo(The)33 b Fe(v)-5 b(ariable)39 b Fo(construct)33
+b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g(Readline)1110
+1141 y(v)-5 b(ariables)32 b(and)f(v)-5 b(alues.)45 b(The)32
+b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i(`)p
+Fn(=)p Fo(',)1110 1250 y(`)p Fn(==)p Fo(',)49 b(and)44
+b(`)p Fn(!=)p Fo('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g
+(b)s(e)g(separated)g(from)g(the)1110 1360 y(comparison)25
+b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s
+(e)f(separated)1110 1469 y(from)33 b(the)h(v)-5 b(alue)35
+b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52
+b(Both)35 b(string)1110 1579 y(and)i(b)s(o)s(olean)g(v)-5
+b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39
+b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 1689 y(tested)46
+b(against)g(the)f(v)-5 b(alues)46 b Fe(on)f Fo(and)f
+Fe(o\013)p Fo(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110
+1798 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Fn(mode=emacs)e
+Fo(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 1933 y
+Fn($if)47 b(editing-mode)d(==)k(emacs)1350 2042 y(set)f
+(show-mode-in-prompt)42 b(on)1350 2152 y($endif)150 2311
+y($endif)192 b Fo(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous)
+g(example,)h(terminates)g(an)g Fn($if)e Fo(command.)150
+2471 y Fn($else)240 b Fo(Commands)29 b(in)h(this)h(branc)m(h)e(of)i
(the)f Fn($if)g Fo(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g
-(fails.)150 4424 y Fn($include)96 b Fo(This)43 b(directiv)m(e)i(tak)m
+(fails.)150 2630 y Fn($include)96 b Fo(This)43 b(directiv)m(e)i(tak)m
(es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g
-(commands)630 4534 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
+(commands)630 2740 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e
-(from)630 4643 y Fn(/etc/inputrc)p Fo(:)870 4771 y Fn($include)46
-b(/etc/inputrc)150 4956 y Fd(1.3.3)63 b(Sample)41 b(Init)g(File)150
-5103 y Fo(Here)27 b(is)f(an)h(example)g(of)f(an)h Fe(inputrc)k
+(from)630 2849 y Fn(/etc/inputrc)p Fo(:)870 2984 y Fn($include)46
+b(/etc/inputrc)150 3183 y Fd(1.3.3)63 b(Sample)41 b(Init)g(File)150
+3330 y Fo(Here)27 b(is)f(an)h(example)g(of)f(an)h Fe(inputrc)k
Fo(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5
-b(ariable)27 b(assignmen)m(t,)i(and)150 5212 y(conditional)j(syn)m
+b(ariable)27 b(assignmen)m(t,)i(and)150 3440 y(conditional)j(syn)m
(tax.)p eop end
-%%Page: 13 16
-TeXDict begin 13 15 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(13)p eop end
%%Page: 14 17
TeXDict begin 14 16 bop 150 -116 a Fo(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2107 b(14)390 408 y Fn(#)47
@@ -6145,497 +6223,520 @@ TeXDict begin 16 18 bop 150 -116 a Fo(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2107 b(16)390 299 y Fn(#)47
b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390
628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390
-847 y($endif)150 1085 y Fm(1.4)68 b(Bindable)45 b(Readline)i(Commands)
-150 1244 y Fo(This)25 b(section)i(describ)s(es)d(Readline)j(commands)e
+847 y($endif)150 1089 y Fm(1.4)68 b(Bindable)45 b(Readline)i(Commands)
+150 1248 y Fo(This)25 b(section)i(describ)s(es)d(Readline)j(commands)e
(that)h(ma)m(y)g(b)s(e)f(b)s(ound)f(to)i(k)m(ey)h(sequences.)39
-b(Command)150 1354 y(names)30 b(without)h(an)f(accompan)m(ying)i(k)m
+b(Command)150 1358 y(names)30 b(without)h(an)f(accompan)m(ying)i(k)m
(ey)f(sequence)g(are)g(un)m(b)s(ound)c(b)m(y)k(default.)275
-1487 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fe(p)s(oin)m(t)h
+1493 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fe(p)s(oin)m(t)h
Fo(refers)e(to)h(the)f(curren)m(t)g(cursor)g(p)s(osition,)h(and)f
-Fe(mark)31 b Fo(refers)150 1597 y(to)40 b(a)f(cursor)f(p)s(osition)h
+Fe(mark)31 b Fo(refers)150 1603 y(to)40 b(a)f(cursor)f(p)s(osition)h
(sa)m(v)m(ed)h(b)m(y)f(the)g Fn(set-mark)d Fo(command.)66
b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f(p)s(oin)m(t)g(and)150
-1706 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f Fe(region)p
-Fo(.)150 1903 y Fd(1.4.1)63 b(Commands)42 b(F)-10 b(or)41
-b(Mo)m(ving)150 2074 y Fn(beginning-of-line)26 b(\(C-a\))630
-2183 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(curren)m(t)g
-(line.)150 2340 y Fn(end-of-line)d(\(C-e\))630 2450 y
+1713 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f Fe(region)p
+Fo(.)150 1913 y Fd(1.4.1)63 b(Commands)42 b(F)-10 b(or)41
+b(Mo)m(ving)150 2085 y Fn(beginning-of-line)26 b(\(C-a\))630
+2195 y Fo(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(curren)m(t)g
+(line.)150 2355 y Fn(end-of-line)d(\(C-e\))630 2464 y
Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150
-2607 y Fn(forward-char)c(\(C-f\))630 2716 y Fo(Mo)m(v)m(e)32
-b(forw)m(ard)e(a)h(c)m(haracter.)150 2873 y Fn(backward-char)c(\(C-b\))
-630 2983 y Fo(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150
-3140 y Fn(forward-word)d(\(M-f\))630 3249 y Fo(Mo)m(v)m(e)32
+2625 y Fn(forward-char)c(\(C-f\))630 2734 y Fo(Mo)m(v)m(e)32
+b(forw)m(ard)e(a)h(c)m(haracter.)150 2895 y Fn(backward-char)c(\(C-b\))
+630 3004 y Fo(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150
+3165 y Fn(forward-word)d(\(M-f\))630 3274 y Fo(Mo)m(v)m(e)32
b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41
b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630
-3359 y(digits.)150 3516 y Fn(backward-word)27 b(\(M-b\))630
-3625 y Fo(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g
+3384 y(digits.)150 3544 y Fn(backward-word)27 b(\(M-b\))630
+3654 y Fo(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g
(curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34
-b(are)g(comp)s(osed)630 3735 y(of)d(letters)g(and)f(digits.)150
-3892 y Fn(clear-screen)d(\(C-l\))630 4001 y Fo(Clear)g(the)g(screen)f
-(and)h(redra)m(w)f(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f
-(curren)m(t)g(line)g(at)g(the)g(top)630 4111 y(of)k(the)f(screen.)150
-4268 y Fn(redraw-current-line)25 b(\(\))630 4377 y Fo(Refresh)30
+b(are)g(comp)s(osed)630 3763 y(of)d(letters)g(and)f(digits.)150
+3923 y Fn(previous-screen-line)25 b(\(\))630 4033 y Fo(A)m(ttempt)41
+b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e(to)h(the)f(same)h(ph)m(ysical)g
+(screen)f(column)g(on)g(the)g(previous)630 4143 y(ph)m(ysical)26
+b(screen)f(line.)39 b(This)24 b(will)i(not)f(ha)m(v)m(e)h(the)f
+(desired)g(e\013ect)h(if)f(the)h(curren)m(t)e(Readline)630
+4252 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d(more)i(than)f(one)g(ph)m
+(ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f(not)h(greater)g(than)630
+4362 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i(screen)f(width.)
+150 4522 y Fn(next-screen-line)c(\(\))630 4632 y Fo(A)m(ttempt)g(to)f
+(mo)m(v)m(e)i(p)s(oin)m(t)d(to)i(the)e(same)i(ph)m(ysical)f(screen)g
+(column)f(on)h(the)f(next)h(ph)m(ysical)630 4741 y(screen)e(line.)39
+b(This)23 b(will)g(not)h(ha)m(v)m(e)h(the)e(desired)g(e\013ect)i(if)e
+(the)g(curren)m(t)h(Readline)g(line)f(do)s(es)630 4851
+y(not)k(tak)m(e)i(up)e(more)g(than)g(one)g(ph)m(ysical)h(line)g(or)f
+(if)g(the)h(length)f(of)h(the)f(curren)m(t)g(Readline)630
+4960 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g(of)f(the)h
+(prompt)e(plus)h(the)g(screen)h(width.)150 5121 y Fn(clear-screen)c
+(\(C-l\))630 5230 y Fo(Clear)g(the)g(screen)f(and)h(redra)m(w)f(the)h
+(curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)g(line)g(at)g(the)g
+(top)630 5340 y(of)k(the)f(screen.)p eop end
+%%Page: 17 20
+TeXDict begin 17 19 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(17)150 299 y Fn
+(redraw-current-line)25 b(\(\))630 408 y Fo(Refresh)30
b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s
-(ound.)150 4574 y Fd(1.4.2)63 b(Commands)42 b(F)-10 b(or)41
-b(Manipulating)h(The)f(History)150 4745 y Fn(accept-line)27
-b(\(Newline)h(or)i(Return\))630 4854 y Fo(Accept)36 b(the)g(line)f
+(ound.)150 596 y Fd(1.4.2)63 b(Commands)42 b(F)-10 b(or)41
+b(Manipulating)h(The)f(History)150 761 y Fn(accept-line)27
+b(\(Newline)h(or)i(Return\))630 871 y Fo(Accept)36 b(the)g(line)f
(regardless)h(of)f(where)g(the)g(cursor)g(is.)55 b(If)34
b(this)h(line)h(is)f(non-empt)m(y)-8 b(,)37 b(it)630
-4964 y(ma)m(y)32 b(b)s(e)g(added)f(to)h(the)g(history)g(list)h(for)e
+981 y(ma)m(y)32 b(b)s(e)g(added)f(to)h(the)g(history)g(list)h(for)e
(future)g(recall)j(with)d Fn(add_history\(\))p Fo(.)42
-b(If)31 b(this)630 5074 y(line)g(is)f(a)h(mo)s(di\014ed)e(history)h
+b(If)31 b(this)630 1090 y(line)g(is)f(a)h(mo)s(di\014ed)e(history)h
(line,)h(the)g(history)f(line)h(is)f(restored)h(to)g(its)g(original)g
-(state.)150 5230 y Fn(previous-history)26 b(\(C-p\))630
-5340 y Fo(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g
-(fetc)m(hing)g(the)g(previous)f(command.)p eop end
-%%Page: 17 20
-TeXDict begin 17 19 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(17)150 299 y Fn(next-history)27
-b(\(C-n\))630 408 y Fo(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i
+(state.)150 1237 y Fn(previous-history)26 b(\(C-p\))630
+1347 y Fo(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g
+(fetc)m(hing)g(the)g(previous)f(command.)150 1494 y Fn(next-history)d
+(\(C-n\))630 1604 y Fo(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i
(history)f(list,)i(fetc)m(hing)f(the)g(next)f(command.)150
-558 y Fn(beginning-of-history)25 b(\(M-<\))630 667 y
-Fo(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8
-b(.)150 817 y Fn(end-of-history)26 b(\(M->\))630 927
+1751 y Fn(beginning-of-history)25 b(\(M-<\))630 1861
+y Fo(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8
+b(.)150 2008 y Fn(end-of-history)26 b(\(M->\))630 2117
y Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8
b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150
-1076 y Fn(reverse-search-history)24 b(\(C-r\))630 1186
+2265 y Fn(reverse-search-history)24 b(\(C-r\))630 2374
y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g
(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630
-1295 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 b(is)i(an)f(incremen)m
-(tal)i(searc)m(h.)150 1445 y Fn(forward-search-history)24
-b(\(C-s\))630 1554 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+2484 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 b(is)i(an)f(incremen)m
+(tal)i(searc)m(h.)150 2631 y Fn(forward-search-history)24
+b(\(C-s\))630 2741 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)
-630 1664 y(history)30 b(as)h(necessary)-8 b(.)41 b(This)30
-b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 1813 y Fn
+630 2850 y(history)30 b(as)h(necessary)-8 b(.)41 b(This)30
+b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 2998 y Fn
(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-p\))630 1923 y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
+b(\(M-p\))630 3107 y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g
-(his-)630 2032 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m
+(his-)630 3217 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m
(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630
-2142 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m
-(ywhere)g(in)f(a)h(history)f(line.)150 2291 y Fn
+3326 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m
+(ywhere)g(in)f(a)h(history)f(line.)150 3474 y Fn
(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-n\))630 2401 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+b(\(M-n\))630 3583 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)
-630 2511 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m
+630 3693 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m
(tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i(the)630
-2620 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)
-m(ywhere)g(in)f(a)h(history)f(line.)150 2770 y Fn
-(history-search-forward)24 b(\(\))630 2879 y Fo(Searc)m(h)42
+3802 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)
+m(ywhere)g(in)f(a)h(history)f(line.)150 3950 y Fn
+(history-search-forward)24 b(\(\))630 4059 y Fo(Searc)m(h)42
b(forw)m(ard)f(through)f(the)i(history)f(for)g(the)h(string)f(of)h(c)m
-(haracters)h(b)s(et)m(w)m(een)f(the)630 2989 y(start)36
+(haracters)h(b)s(et)m(w)m(een)f(the)630 4169 y(start)36
b(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)58
b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630
-3098 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
+4278 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48
-b(By)33 b(default,)g(this)630 3208 y(command)d(is)h(un)m(b)s(ound.)150
-3357 y Fn(history-search-backward)24 b(\(\))630 3467
+b(By)33 b(default,)g(this)630 4388 y(command)d(is)h(un)m(b)s(ound.)150
+4535 y Fn(history-search-backward)24 b(\(\))630 4645
y Fo(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g
(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630
-3577 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)
+4754 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)
58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630
-3686 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
+4864 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47
b(This)32 b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48
-b(By)33 b(default,)g(this)630 3796 y(command)d(is)h(un)m(b)s(ound.)150
-3945 y Fn(history-substr-search-fo)o(rwar)o(d)24 b(\(\))630
-4055 y Fo(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g
+b(By)33 b(default,)g(this)630 4974 y(command)d(is)h(un)m(b)s(ound.)150
+5121 y Fn(history-substring-search)o(-for)o(ward)24 b(\(\))630
+5230 y Fo(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g
(the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f(the)630
-4164 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
-(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere)
-630 4274 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h
-(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e
-(command)630 4384 y(is)e(un)m(b)s(ound.)150 4533 y Fn
-(history-substr-search-ba)o(ckwa)o(rd)24 b(\(\))630 4643
-y Fo(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g
-(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630
-4752 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
+5340 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere)
-630 4862 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h
-(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e
-(command)630 4971 y(is)e(un)m(b)s(ound.)150 5121 y Fn(yank-nth-arg)d
-(\(M-C-y\))630 5230 y Fo(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f
-(the)h(previous)e(command)h(\(usually)g(the)g(second)g(w)m(ord)630
-5340 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46
-b(With)32 b(an)g(argumen)m(t)g Fe(n)p Fo(,)g(insert)g(the)g
-Fe(n)p Fo(th)f(w)m(ord)g(from)p eop end
+p eop end
%%Page: 18 21
TeXDict begin 18 20 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(18)630 299 y(the)35
-b(previous)f(command)h(\(the)g(w)m(ords)g(in)f(the)h(previous)g
-(command)f(b)s(egin)h(with)f(w)m(ord)630 408 y(0\).)69
-b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f
+b(Command)29 b(Line)i(Editing)2107 b(18)630 299 y(in)32
+b(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h
+(searc)m(h.)47 b(By)33 b(default,)h(this)e(command)630
+408 y(is)e(un)m(b)s(ound.)150 573 y Fn(history-substring-search)o(-bac)
+o(kwar)o(d)24 b(\(\))630 683 y Fo(Searc)m(h)35 b(bac)m(kw)m(ard)g
+(through)f(the)h(history)g(for)g(the)f(string)h(of)g(c)m(haracters)h(b)
+s(et)m(w)m(een)g(the)630 793 y(start)29 b(of)g(the)g(curren)m(t)g(line)
+g(and)f(the)h(p)s(oin)m(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g
+(matc)m(h)h(an)m(ywhere)630 902 y(in)i(a)h(history)g(line.)47
+b(This)32 b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)47
+b(By)33 b(default,)h(this)e(command)630 1012 y(is)e(un)m(b)s(ound.)150
+1177 y Fn(yank-nth-arg)d(\(M-C-y\))630 1286 y Fo(Insert)37
+b(the)g(\014rst)f(argumen)m(t)i(to)f(the)h(previous)e(command)h
+(\(usually)g(the)g(second)g(w)m(ord)630 1396 y(on)32
+b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46 b(With)32
+b(an)g(argumen)m(t)g Fe(n)p Fo(,)g(insert)g(the)g Fe(n)p
+Fo(th)f(w)m(ord)g(from)630 1506 y(the)k(previous)f(command)h(\(the)g(w)
+m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f(w)m(ord)630
+1615 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f
Fe(n)p Fo(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630
-518 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fe(n)e
+1725 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fe(n)e
Fo(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630
-628 y(the)e(`)p Fn(!)p Fg(n)p Fo(')f(history)g(expansion)g(had)g(b)s
-(een)g(sp)s(eci\014ed.)150 775 y Fn(yank-last-arg)d(\(M-.)i(or)h(M-_\))
-630 885 y Fo(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous)f
-(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630
-994 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
+1834 y(the)e(`)p Fn(!)p Fg(n)p Fo(')f(history)g(expansion)g(had)g(b)s
+(een)g(sp)s(eci\014ed.)150 1999 y Fn(yank-last-arg)d(\(M-.)i(or)h
+(M-_\))630 2109 y Fo(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous)
+f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630
+2218 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
(t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Fn(yank-nth-arg)p
-Fo(.)630 1104 y(Successiv)m(e)26 b(calls)g(to)f Fn(yank-last-arg)c
+Fo(.)630 2328 y(Successiv)m(e)26 b(calls)g(to)f Fn(yank-last-arg)c
Fo(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i
-(inserting)630 1214 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
+(inserting)630 2438 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i
-(of)f(eac)m(h)h(line)630 1323 y(in)36 b(turn.)58 b(An)m(y)36
+(of)f(eac)m(h)h(line)630 2547 y(in)36 b(turn.)58 b(An)m(y)36
b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g
-(calls)h(determines)630 1433 y(the)d(direction)g(to)h(mo)m(v)m(e)g
+(calls)h(determines)630 2657 y(the)d(direction)g(to)h(mo)m(v)m(e)g
(through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e
-(switc)m(hes)h(the)630 1542 y(direction)23 b(through)g(the)g(history)f
+(switc)m(hes)h(the)630 2766 y(direction)23 b(through)g(the)g(history)f
(\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g
-(facilities)630 1652 y(are)28 b(used)f(to)h(extract)h(the)f(last)g
+(facilities)630 2876 y(are)28 b(used)f(to)h(extract)h(the)f(last)g
(argumen)m(t,)h(as)e(if)h(the)g(`)p Fn(!$)p Fo(')f(history)g(expansion)
-h(had)f(b)s(een)630 1762 y(sp)s(eci\014ed.)150 1949 y
+h(had)f(b)s(een)630 2986 y(sp)s(eci\014ed.)150 3190 y
Fd(1.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10
-b(ext)150 2115 y Fg(end-of-file)27 b Fn(\(usually)h(C-d\))630
-2225 y Fo(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
+b(ext)150 3365 y Fg(end-of-file)27 b Fn(\(usually)h(C-d\))630
+3475 y Fo(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
(for)f(example,)i(b)m(y)e Fn(stty)p Fo(.)39 b(If)25 b(this)h(c)m
-(harac-)630 2334 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
+(harac-)630 3584 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
(haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s
-(eginning)630 2444 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
+(eginning)630 3694 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
(it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fh(eof)p
-Fo(.)150 2591 y Fn(delete-char)e(\(C-d\))630 2701 y Fo(Delete)35
+Fo(.)150 3859 y Fn(delete-char)e(\(C-d\))630 3968 y Fo(Delete)35
b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g
-(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 2811
+(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 4078
y(as)e(the)f(tt)m(y)i Fh(eof)d Fo(c)m(haracter,)j(as)f
Fg(C-d)e Fo(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g
-(e\013ects.)150 2958 y Fn(backward-delete-char)25 b(\(Rubout\))630
-3068 y Fo(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40
+(e\013ects.)150 4243 y Fn(backward-delete-char)25 b(\(Rubout\))630
+4353 y Fo(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40
b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630
-3177 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
-3325 y Fn(forward-backward-delete-)o(char)24 b(\(\))630
-3434 y Fo(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
+4462 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
+4627 y Fn(forward-backward-delete-)o(char)24 b(\(\))630
+4737 y Fo(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
(unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630
-3544 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s
+4846 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s
(ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630
-3654 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
-3801 y Fn(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 3911
+4956 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
+5121 y Fn(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 5230
y Fo(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h
(v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630
-4020 y(sequences)d(lik)m(e)g Fg(C-q)p Fo(,)f(for)g(example.)150
-4168 y Fn(tab-insert)e(\(M-TAB\))630 4278 y Fo(Insert)i(a)h(tab)f(c)m
-(haracter.)150 4425 y Fn(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o
-(\))630 4535 y Fo(Insert)g(y)m(ourself.)150 4682 y Fn
-(bracketed-paste-begin)25 b(\(\))630 4792 y Fo(This)f(function)h(is)f
-(in)m(tended)h(to)h(b)s(e)e(b)s(ound)f(to)i(the)g Fn(")p
-Fo(brac)m(k)m(eted)h(paste)p Fn(")f Fo(escap)s(e)h(sequence)630
-4902 y(sen)m(t)38 b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h
-(binding)e(is)i(assigned)f(b)m(y)h(default.)62 b(It)38
-b(allo)m(ws)630 5011 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)
-g(as)g(a)g(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630
-5121 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k)
-m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630
-5230 y(as)i(if)g(eac)m(h)i(one)e(w)m(as)h(b)s(ound)d(to)i
-Fn(self-insert)p Fo(\))e(instead)i(of)h(executing)g(an)m(y)f(editing)
-630 5340 y(commands.)p eop end
+5340 y(sequences)d(lik)m(e)g Fg(C-q)p Fo(,)f(for)g(example.)p
+eop end
%%Page: 19 22
TeXDict begin 19 21 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(19)150 299 y Fn(transpose-chars)26
-b(\(C-t\))630 408 y Fo(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)g
-(cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g
-(cursor,)630 518 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m
-(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)
-g(of)h(the)630 628 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h
-(last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38
-b(Negativ)m(e)25 b(argumen)m(ts)630 737 y(ha)m(v)m(e)32
-b(no)e(e\013ect.)150 907 y Fn(transpose-words)c(\(M-t\))630
-1016 y Fo(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g
-(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)
-g(that)630 1126 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27
-b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f
-(line,)i(this)e(transp)s(oses)g(the)630 1236 y(last)j(t)m(w)m(o)h(w)m
-(ords)e(on)g(the)h(line.)150 1405 y Fn(upcase-word)c(\(M-u\))630
-1515 y Fo(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i
-(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630
-1624 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h
-(the)e(cursor.)150 1794 y Fn(downcase-word)d(\(M-l\))630
-1904 y Fo(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
+b(Command)29 b(Line)i(Editing)2107 b(19)150 299 y Fn(tab-insert)28
+b(\(M-TAB\))630 408 y Fo(Insert)i(a)h(tab)f(c)m(haracter.)150
+573 y Fn(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630
+683 y Fo(Insert)g(y)m(ourself.)150 848 y Fn(bracketed-paste-begin)25
+b(\(\))630 957 y Fo(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e
+(b)s(ound)f(to)i(the)g Fn(")p Fo(brac)m(k)m(eted)h(paste)p
+Fn(")f Fo(escap)s(e)h(sequence)630 1067 y(sen)m(t)38
+b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i
+(assigned)f(b)m(y)h(default.)62 b(It)38 b(allo)m(ws)630
+1177 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g
+(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630
+1286 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k)
+m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630
+1396 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j
+Fn(self-insert)c Fo(instead)j(of)h(executing)g(an)m(y)f(editing)630
+1505 y(commands.)150 1670 y Fn(transpose-chars)26 b(\(C-t\))630
+1780 y Fo(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)g(cursor)f
+(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g(cursor,)630
+1889 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m(ell.)57
+b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)g(of)h
+(the)630 1999 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h(last)h
+(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 b(Negativ)m(e)25
+b(argumen)m(ts)630 2109 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150
+2273 y Fn(transpose-words)c(\(M-t\))630 2383 y Fo(Drag)33
+b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f
+(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630
+2493 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m
+(t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g
+(the)630 2602 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150
+2767 y Fn(upcase-word)c(\(M-u\))630 2877 y Fo(Upp)s(ercase)32
+b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i(w)m(ord.)45
+b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630
+2986 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h
+(the)e(cursor.)150 3151 y Fn(downcase-word)d(\(M-l\))630
+3261 y Fo(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m
-(ercase)630 2013 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m
-(v)m(e)i(the)f(cursor.)150 2183 y Fn(capitalize-word)26
-b(\(M-c\))630 2292 y Fo(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
+(ercase)630 3370 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m
+(v)m(e)i(the)f(cursor.)150 3535 y Fn(capitalize-word)26
+b(\(M-c\))630 3645 y Fo(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
(wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h
-(capitalize)630 2402 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
-(mo)m(v)m(e)i(the)f(cursor.)150 2571 y Fn(overwrite-mode)26
-b(\(\))630 2681 y Fo(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
+(capitalize)630 3754 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
+(mo)m(v)m(e)i(the)f(cursor.)150 3919 y Fn(overwrite-mode)26
+b(\(\))630 4029 y Fo(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,)
-h(switc)m(hes)630 2791 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
+h(switc)m(hes)630 4138 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m
-(t,)i(switc)m(hes)e(to)630 2900 y(insert)30 b(mo)s(de.)41
+(t,)i(switc)m(hes)e(to)630 4248 y(insert)30 b(mo)s(de.)41
b(This)30 b(command)h(a\013ects)h(only)e Fn(emacs)f Fo(mo)s(de;)i
-Fn(vi)f Fo(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 3010
+Fn(vi)f Fo(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 4357
y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f
Fn(readline\(\))c Fo(starts)k(in)f(insert)g(mo)s(de.)630
-3149 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s
+4495 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s
(ound)c(to)j Fn(self-insert)c Fo(replace)k(the)g(text)g(at)630
-3259 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h
+4604 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h
(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630
-3369 y Fn(backward-delete-char)25 b Fo(replace)31 b(the)g(c)m(haracter)
-h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 3508
+4714 y Fn(backward-delete-char)25 b Fo(replace)31 b(the)g(c)m(haracter)
+h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 4851
y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150
-3718 y Fd(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
-3895 y Fn(kill-line)28 b(\(C-k\))630 4004 y Fo(Kill)j(the)f(text)i
-(from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f(line.)150
-4174 y Fn(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630
-4283 y Fo(Kill)h(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s
-(eginning)g(of)h(the)f(curren)m(t)g(line.)150 4453 y
-Fn(unix-line-discard)c(\(C-u\))630 4562 y Fo(Kill)31
-b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s(eginning)g(of)h
-(the)f(curren)m(t)g(line.)150 4732 y Fn(kill-whole-line)c(\(\))630
-4842 y Fo(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h
-(line,)h(no)f(matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36
-b(default,)630 4951 y(this)30 b(is)h(un)m(b)s(ound.)150
-5121 y Fn(kill-word)d(\(M-d\))630 5230 y Fo(Kill)i(from)f(p)s(oin)m(t)g
-(to)h(the)g(end)e(of)i(the)f(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m
-(w)m(een)g(w)m(ords,)f(to)h(the)g(end)630 5340 y(of)h(the)f(next)h(w)m
-(ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f
-Fn(forward-word)p Fo(.)p eop end
+5056 y Fd(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
+5230 y Fn(kill-line)28 b(\(C-k\))630 5340 y Fo(Kill)j(the)f(text)i
+(from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f(line.)p
+eop end
%%Page: 20 23
TeXDict begin 20 22 bop 150 -116 a Fo(Chapter)30 b(1:)41
b(Command)29 b(Line)i(Editing)2107 b(20)150 299 y Fn
-(backward-kill-word)25 b(\(M-DEL\))630 408 y Fo(Kill)k(the)g(w)m(ord)g
-(b)s(ehind)e(p)s(oin)m(t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h
-(the)g(same)g(as)g Fn(backward-word)p Fo(.)150 577 y
-Fn(unix-word-rubout)d(\(C-w\))630 686 y Fo(Kill)32 b(the)g(w)m(ord)f(b)
-s(ehind)f(p)s(oin)m(t,)i(using)f(white)h(space)g(as)g(a)g(w)m(ord)f(b)s
-(oundary)-8 b(.)43 b(The)31 b(killed)630 796 y(text)g(is)g(sa)m(v)m(ed)
-g(on)g(the)f(kill-ring.)150 964 y Fn(unix-filename-rubout)25
-b(\(\))630 1073 y Fo(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m
-(t,)j(using)e(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f
-(the)630 1183 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30
-b(killed)h(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150
-1351 y Fn(delete-horizontal-space)24 b(\(\))630 1461
-y Fo(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41
-b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 1629
-y Fn(kill-region)d(\(\))630 1738 y Fo(Kill)k(the)f(text)i(in)e(the)g
+(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 408
+y Fo(Kill)h(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s
+(eginning)g(of)h(the)f(curren)m(t)g(line.)150 566 y Fn
+(unix-line-discard)c(\(C-u\))630 675 y Fo(Kill)31 b(bac)m(kw)m(ard)g
+(from)e(the)i(cursor)f(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)
+g(line.)150 832 y Fn(kill-whole-line)c(\(\))630 942 y
+Fo(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f
+(matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630
+1052 y(this)30 b(is)h(un)m(b)s(ound.)150 1209 y Fn(kill-word)d(\(M-d\))
+630 1318 y Fo(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
+(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h
+(the)g(end)630 1428 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
+b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Fn(forward-word)p
+Fo(.)150 1585 y Fn(backward-kill-word)25 b(\(M-DEL\))630
+1695 y Fo(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40
+b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g
+Fn(backward-word)p Fo(.)150 1852 y Fn(unix-word-rubout)d(\(C-w\))630
+1961 y Fo(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m(t,)i(using)f
+(white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8 b(.)43
+b(The)31 b(killed)630 2071 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f
+(kill-ring.)150 2228 y Fn(unix-filename-rubout)25 b(\(\))630
+2338 y Fo(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e
+(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630
+2447 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g
+(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 2605 y Fn
+(delete-horizontal-space)24 b(\(\))630 2714 y Fo(Delete)33
+b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41
+b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 2871
+y Fn(kill-region)d(\(\))630 2981 y Fo(Kill)k(the)f(text)i(in)e(the)g
(curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un)
-m(b)s(ound.)150 1906 y Fn(copy-region-as-kill)25 b(\(\))630
-2016 y Fo(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f
+m(b)s(ound.)150 3138 y Fn(copy-region-as-kill)25 b(\(\))630
+3248 y Fo(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f
(kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f
-(a)m(w)m(a)m(y)-8 b(.)630 2125 y(By)31 b(default,)f(this)h(command)f
-(is)g(un)m(b)s(ound.)150 2293 y Fn(copy-backward-word)25
-b(\(\))630 2403 y Fo(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m
+(a)m(w)m(a)m(y)-8 b(.)630 3357 y(By)31 b(default,)f(this)h(command)f
+(is)g(un)m(b)s(ound.)150 3514 y Fn(copy-backward-word)25
+b(\(\))630 3624 y Fo(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m
(t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries)
-f(are)i(the)630 2513 y(same)31 b(as)f Fn(backward-word)p
+f(are)i(the)630 3734 y(same)31 b(as)f Fn(backward-word)p
Fo(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150
-2681 y Fn(copy-forward-word)26 b(\(\))630 2790 y Fo(Cop)m(y)31
+3891 y Fn(copy-forward-word)26 b(\(\))630 4000 y Fo(Cop)m(y)31
b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h
(bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630
-2900 y(same)f(as)f Fn(forward-word)p Fo(.)38 b(By)30
+4110 y(same)f(as)f Fn(forward-word)p Fo(.)38 b(By)30
b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150
-3068 y Fn(yank)f(\(C-y\))630 3177 y Fo(Y)-8 b(ank)31
+4267 y Fn(yank)f(\(C-y\))630 4377 y Fo(Y)-8 b(ank)31
b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h
-(p)s(oin)m(t.)150 3346 y Fn(yank-pop)d(\(M-y\))630 3455
+(p)s(oin)m(t.)150 4534 y Fn(yank-pop)d(\(M-y\))630 4643
y Fo(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54
b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630
-3565 y(command)30 b(is)h Fn(yank)e Fo(or)h Fn(yank-pop)p
-Fo(.)150 3773 y Fd(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
-(ts)150 3949 y Fn(digit-argument)26 b(\()p Fg(M-0)p Fn(,)j
-Fg(M-1)p Fn(,)h(...)f Fg(M--)p Fn(\))630 4058 y Fo(Add)d(this)h(digit)g
+4753 y(command)30 b(is)h Fn(yank)e Fo(or)h Fn(yank-pop)p
+Fo(.)150 4950 y Fd(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
+(ts)150 5121 y Fn(digit-argument)26 b(\()p Fg(M-0)p Fn(,)j
+Fg(M-1)p Fn(,)h(...)f Fg(M--)p Fn(\))630 5230 y Fo(Add)d(this)h(digit)g
(to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f
-(new)f(argumen)m(t.)630 4168 y Fg(M--)j Fo(starts)i(a)g(negativ)m(e)i
-(argumen)m(t.)150 4336 y Fn(universal-argument)25 b(\(\))630
-4446 y Fo(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g
-(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m
-(y)f(one)630 4555 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h
-(leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630
-4665 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)
-m(y)f(digits,)i(executing)f Fn(universal-argument)630
-4774 y Fo(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
+(new)f(argumen)m(t.)630 5340 y Fg(M--)j Fo(starts)i(a)g(negativ)m(e)i
+(argumen)m(t.)p eop end
+%%Page: 21 24
+TeXDict begin 21 23 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fn
+(universal-argument)25 b(\(\))630 408 y Fo(This)g(is)g(another)h(w)m(a)
+m(y)g(to)h(sp)s(ecify)e(an)g(argumen)m(t.)40 b(If)25
+b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m(y)f(one)630
+518 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h(leading)h(min)m(us)
+e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 628
+y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)m(y)f
+(digits,)i(executing)f Fn(universal-argument)630 737
+y Fo(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
(otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630
-4884 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)
-d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630
-4994 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
+847 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)d
+(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630
+956 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
(the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630
-5103 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
+1066 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630
-5213 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
+1176 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
(second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630
-5322 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g
-(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)p eop end
-%%Page: 21 24
-TeXDict begin 21 23 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(21)150 299 y Fd(1.4.6)63
+1285 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g
+(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 1498 y Fd(1.4.6)63
b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42
-b(Y)-10 b(ou)150 483 y Fn(complete)28 b(\(TAB\))630 593
-y Fo(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g(b)s
-(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630
-702 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42
+b(Y)-10 b(ou)150 1676 y Fn(complete)28 b(\(TAB\))630
+1785 y Fo(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g
+(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630
+1895 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42
b(The)30 b(default)h(is)f(\014lename)h(completion.)150
-886 y Fn(possible-completions)25 b(\(M-?\))630 996 y
-Fo(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s
+2068 y Fn(possible-completions)25 b(\(M-?\))630 2177
+y Fo(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s
(efore)e(p)s(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630
-1105 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i
+2287 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i
(columns)f(used)f(for)i(displa)m(y)f(to)h(the)g(v)-5
-b(alue)33 b(of)630 1215 y Fn(completion-display-width)o
+b(alue)33 b(of)630 2396 y Fn(completion-display-width)o
Fo(,)g(the)j(v)-5 b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5
-b(ariable)38 b Fn(COLUMNS)p Fo(,)630 1325 y(or)30 b(the)h(screen)f
-(width,)g(in)g(that)h(order.)150 1509 y Fn(insert-completions)25
-b(\(M-*\))630 1618 y Fo(Insert)30 b(all)h(completions)h(of)f(the)g
+b(ariable)38 b Fn(COLUMNS)p Fo(,)630 2506 y(or)30 b(the)h(screen)f
+(width,)g(in)g(that)h(order.)150 2678 y Fn(insert-completions)25
+b(\(M-*\))630 2788 y Fo(Insert)30 b(all)h(completions)h(of)f(the)g
(text)g(b)s(efore)f(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s
-(een)e(generated)630 1728 y(b)m(y)g Fn(possible-completions)p
-Fo(.)150 1912 y Fn(menu-complete)d(\(\))630 2021 y Fo(Similar)d(to)g
+(een)e(generated)630 2898 y(b)m(y)g Fn(possible-completions)p
+Fo(.)150 3070 y Fn(menu-complete)d(\(\))630 3180 y Fo(Similar)d(to)g
Fn(complete)p Fo(,)f(but)h(replaces)g(the)g(w)m(ord)g(to)g(b)s(e)f
-(completed)i(with)e(a)i(single)f(matc)m(h)630 2131 y(from)37
+(completed)i(with)e(a)i(single)f(matc)m(h)630 3289 y(from)37
b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39
-b(execution)g(of)f Fn(menu-complete)630 2241 y Fo(steps)i(through)g
+b(execution)g(of)f Fn(menu-complete)630 3399 y Fo(steps)i(through)g
(the)g(list)h(of)f(p)s(ossible)g(completions,)k(inserting)c(eac)m(h)i
-(matc)m(h)f(in)f(turn.)630 2350 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g
+(matc)m(h)f(in)f(turn.)630 3508 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g
(of)g(completions,)i(the)e(b)s(ell)g(is)g(rung)f(\(sub)5
-b(ject)36 b(to)i(the)f(setting)630 2460 y(of)f Fn(bell-style)p
+b(ject)36 b(to)i(the)f(setting)630 3618 y(of)f Fn(bell-style)p
Fo(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57
b(An)36 b(argumen)m(t)h(of)f Fe(n)f Fo(mo)m(v)m(es)i
-Fe(n)630 2569 y Fo(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
+Fe(n)630 3728 y Fo(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
(matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f
-(used)g(to)630 2679 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
+(used)g(to)630 3837 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
(list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s
-(ound)e(to)630 2789 y Fn(TAB)p Fo(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
-(y)i(default.)150 2973 y Fn(menu-complete-backward)24
-b(\(\))630 3082 y Fo(Iden)m(tical)36 b(to)g Fn(menu-complete)p
+(ound)e(to)630 3947 y Fn(TAB)p Fo(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
+(y)i(default.)150 4119 y Fn(menu-complete-backward)24
+b(\(\))630 4229 y Fo(Iden)m(tical)36 b(to)g Fn(menu-complete)p
Fo(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g
-(p)s(ossible)630 3192 y(completions,)d(as)e(if)h Fn(menu-complete)26
+(p)s(ossible)630 4338 y(completions,)d(as)e(if)h Fn(menu-complete)26
b Fo(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150
-3376 y Fn(delete-char-or-list)25 b(\(\))630 3485 y Fo(Deletes)41
+4511 y Fn(delete-char-or-list)25 b(\(\))630 4620 y Fo(Deletes)41
b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s
-(eginning)e(or)h(end)f(of)h(the)630 3595 y(line)50 b(\(lik)m(e)h
+(eginning)e(or)h(end)f(of)h(the)630 4730 y(line)50 b(\(lik)m(e)h
Fn(delete-char)p Fo(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,)
-55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 3705
+55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 4840
y Fn(possible-completions)p Fo(.)35 b(This)30 b(command)g(is)g(un)m(b)s
-(ound)e(b)m(y)i(default.)150 3928 y Fd(1.4.7)63 b(Keyb)s(oard)41
-b(Macros)150 4113 y Fn(start-kbd-macro)26 b(\(C-x)j(\(\))630
-4222 y Fo(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m
-(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)150
-4406 y Fn(end-kbd-macro)d(\(C-x)i(\)\))630 4516 y Fo(Stop)e(sa)m(ving)h
-(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m
-(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 4625
-y(de\014nition.)150 4809 y Fn(call-last-kbd-macro)c(\(C-x)k(e\))630
-4919 y Fo(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h
-(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the)630
-5029 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s
-(oard.)150 5213 y Fn(print-last-kbd-macro)25 b(\(\))630
-5322 y Fo(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)
-e(in)i(a)f(format)h(suitable)g(for)f(the)h Fe(inputrc)k
-Fo(\014le.)p eop end
+(ound)e(b)m(y)i(default.)150 5052 y Fd(1.4.7)63 b(Keyb)s(oard)41
+b(Macros)150 5230 y Fn(start-kbd-macro)26 b(\(C-x)j(\(\))630
+5340 y Fo(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m
+(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)p eop
+end
%%Page: 22 25
TeXDict begin 22 24 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fd(1.4.8)63
-b(Some)41 b(Miscellaneous)i(Commands)150 466 y Fn(re-read-init-file)26
-b(\(C-x)j(C-r\))630 576 y Fo(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f
-(the)g Fe(inputrc)27 b Fo(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h
-(bindings)d(or)i(v)-5 b(ariable)630 685 y(assignmen)m(ts)31
-b(found)e(there.)150 836 y Fn(abort)g(\(C-g\))630 945
-y Fo(Ab)s(ort)d(the)h(curren)m(t)f(editing)h(command)f(and)g(ring)h
-(the)f(terminal's)h(b)s(ell)g(\(sub)5 b(ject)26 b(to)i(the)630
-1055 y(setting)j(of)g Fn(bell-style)p Fo(\).)150 1205
-y Fn(do-uppercase-version)25 b(\(M-a,)k(M-b,)g(M-)p Fg(x)p
-Fn(,)g(...)o(\))630 1315 y Fo(If)e(the)h(meta\014ed)g(c)m(haracter)h
-Fe(x)34 b Fo(is)28 b(lo)m(w)m(ercase,)i(run)d(the)g(command)h(that)g
-(is)g(b)s(ound)d(to)k(the)630 1425 y(corresp)s(onding)g(upp)s(ercase)h
-(c)m(haracter.)150 1575 y Fn(prefix-meta)d(\(ESC\))630
-1685 y Fo(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62
-b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g(k)m(ey)-8
-b(.)630 1794 y(T)m(yping)30 b(`)p Fn(ESC)g(f)p Fo(')g(is)h(equiv)-5
-b(alen)m(t)31 b(to)g(t)m(yping)g Fg(M-f)p Fo(.)150 1945
-y Fn(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 2054 y Fo(Incremen)m(tal)h
-(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150
-2205 y Fn(revert-line)27 b(\(M-r\))630 2314 y Fo(Undo)33
-b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32
-b(is)h(lik)m(e)i(executing)f(the)f Fn(undo)f Fo(command)630
-2424 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.)
-150 2574 y Fn(tilde-expand)d(\(M-~\))630 2684 y Fo(P)m(erform)j(tilde)h
-(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 2834
-y Fn(set-mark)d(\(C-@\))630 2944 y Fo(Set)33 b(the)g(mark)f(to)i(the)f
-(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g
-(supplied,)f(the)h(mark)g(is)f(set)630 3054 y(to)f(that)g(p)s(osition.)
-150 3204 y Fn(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
-3314 y Fo(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43
-b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h
-(sa)m(v)m(ed)630 3423 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s
-(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 3574
-y Fn(character-search)26 b(\(C-]\))630 3683 y Fo(A)f(c)m(haracter)h(is)
-f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s
-(ccurrence)g(of)g(that)g(c)m(haracter.)630 3793 y(A)30
+b(Command)29 b(Line)i(Editing)2107 b(22)150 299 y Fn(end-kbd-macro)27
+b(\(C-x)i(\)\))630 408 y Fo(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)
+m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f
+(sa)m(v)m(e)i(the)630 518 y(de\014nition.)150 671 y Fn
+(call-last-kbd-macro)c(\(C-x)k(e\))630 780 y Fo(Re-execute)37
+b(the)e(last)h(k)m(eyb)s(oard)f(macro)h(de\014ned,)f(b)m(y)h(making)f
+(the)g(c)m(haracters)i(in)e(the)630 890 y(macro)c(app)s(ear)f(as)g(if)h
+(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s(oard.)150 1042 y
+Fn(print-last-kbd-macro)25 b(\(\))630 1152 y Fo(Prin)m(t)30
+b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)e(in)i(a)f(format)h
+(suitable)g(for)f(the)h Fe(inputrc)k Fo(\014le.)150 1344
+y Fd(1.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)150
+1513 y Fn(re-read-init-file)26 b(\(C-x)j(C-r\))630 1622
+y Fo(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g
+Fe(inputrc)27 b Fo(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d
+(or)i(v)-5 b(ariable)630 1732 y(assignmen)m(ts)31 b(found)e(there.)150
+1885 y Fn(abort)g(\(C-g\))630 1994 y Fo(Ab)s(ort)d(the)h(curren)m(t)f
+(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5
+b(ject)26 b(to)i(the)630 2104 y(setting)j(of)g Fn(bell-style)p
+Fo(\).)150 2256 y Fn(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p
+Fg(x)p Fn(,)g(...)o(\))630 2366 y Fo(If)35 b(the)g(meta\014ed)g(c)m
+(haracter)i Fe(x)k Fo(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g
+(that)g(is)g(b)s(ound)e(to)630 2476 y(the)g(corresp)s(onding)f
+(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32
+b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 2585 y Fe(x)37
+b Fo(is)30 b(already)h(lo)m(w)m(er)h(case.)150 2738 y
+Fn(prefix-meta)27 b(\(ESC\))630 2847 y Fo(Metafy)39 b(the)e(next)h(c)m
+(haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f
+(without)g(a)h(meta)g(k)m(ey)-8 b(.)630 2957 y(T)m(yping)30
+b(`)p Fn(ESC)g(f)p Fo(')g(is)h(equiv)-5 b(alen)m(t)31
+b(to)g(t)m(yping)g Fg(M-f)p Fo(.)150 3109 y Fn(undo)e(\(C-_)g(or)h(C-x)
+g(C-u\))630 3219 y Fo(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s
+(ered)f(for)g(eac)m(h)i(line.)150 3372 y Fn(revert-line)27
+b(\(M-r\))630 3481 y Fo(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f
+(line.)49 b(This)32 b(is)h(lik)m(e)i(executing)f(the)f
+Fn(undo)f Fo(command)630 3591 y(enough)e(times)h(to)g(get)h(bac)m(k)f
+(to)g(the)f(b)s(eginning.)150 3743 y Fn(tilde-expand)d(\(M-~\))630
+3853 y Fo(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m
+(ord.)150 4006 y Fn(set-mark)d(\(C-@\))630 4115 y Fo(Set)33
+b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g
+(argumen)m(t)g(is)g(supplied,)f(the)h(mark)g(is)f(set)630
+4225 y(to)f(that)g(p)s(osition.)150 4377 y Fn(exchange-point-and-mark)
+24 b(\(C-x)29 b(C-x\))630 4487 y Fo(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)
+g(the)g(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f
+(set)h(to)f(the)h(sa)m(v)m(ed)630 4596 y(p)s(osition,)f(and)e(the)i
+(old)g(cursor)e(p)s(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150
+4749 y Fn(character-search)26 b(\(C-]\))630 4859 y Fo(A)f(c)m(haracter)
+h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g
+(o)s(ccurrence)g(of)g(that)g(c)m(haracter.)630 4968 y(A)30
b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s
-(ccurrences.)150 3943 y Fn(character-search-backwar)o(d)24
-b(\(M-C-]\))630 4053 y Fo(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s
+(ccurrences.)150 5121 y Fn(character-search-backwar)o(d)24
+b(\(M-C-]\))630 5230 y Fo(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s
(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of)
-g(that)630 4162 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f
-(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150
-4313 y Fn(skip-csi-sequence)d(\(\))630 4422 y Fo(Read)i(enough)f(c)m
-(haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f
-(as)g(those)h(de\014ned)630 4532 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g
-(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m
-(trol)g(Sequence)630 4642 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59
+g(that)630 5340 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f
+(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)p
+eop end
+%%Page: 23 26
+TeXDict begin 23 25 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fn(skip-csi-sequence)
+26 b(\(\))630 408 y Fo(Read)i(enough)f(c)m(haracters)h(to)g(consume)f
+(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f(as)g(those)h(de\014ned)630
+518 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g(and)f(End.)60
+b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m(trol)g(Sequence)
+630 628 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59
b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Fn("\\)p
-Fo(e[)p Fn(")p Fo(,)g(k)m(eys)f(pro-)630 4751 y(ducing)31
+Fo(e[)p Fn(")p Fo(,)g(k)m(eys)f(pro-)630 737 y(ducing)31
b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e
-(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 4861 y(command,)f
+(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 847 y(command,)f
(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f
-(editing)h(bu\013er.)44 b(This)31 b(is)630 4970 y(un)m(b)s(ound)d(b)m
-(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150
-5121 y Fn(insert-comment)26 b(\(M-#\))630 5230 y Fo(Without)36
+(editing)h(bu\013er.)44 b(This)31 b(is)630 956 y(un)m(b)s(ound)d(b)m(y)
+i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150
+1116 y Fn(insert-comment)26 b(\(M-#\))630 1225 y Fo(Without)36
b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36
b(of)g(the)g Fn(comment-begin)c Fo(v)-5 b(ariable)36
-b(is)g(in-)630 5340 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f
+b(is)g(in-)630 1335 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f
(curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g
-(supplied,)p eop end
-%%Page: 23 26
-TeXDict begin 23 25 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(23)630 299 y(this)36
-b(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 b(the)f(c)m(haracters)i
-(at)g(the)e(b)s(eginning)g(of)h(the)g(line)630 408 y(do)30
-b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f Fn(comment-begin)p
-Fo(,)e(the)i(v)-5 b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630
-518 y(c)m(haracters)42 b(in)d Fn(comment-begin)e Fo(are)j(deleted)h
-(from)f(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630
-628 y(either)31 b(case,)h(the)e(line)h(is)f(accepted)i(as)f(if)f(a)h
-(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 787 y Fn(dump-functions)d
-(\(\))630 897 y Fo(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g(their)
-g(k)m(ey)h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630
-1006 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
+(supplied,)630 1444 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55
+b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g
+(line)630 1554 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5
+b(alue)31 b(of)f Fn(comment-begin)p Fo(,)e(the)i(v)-5
+b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 1664
+y(c)m(haracters)42 b(in)d Fn(comment-begin)e Fo(are)j(deleted)h(from)f
+(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 1773
+y(either)31 b(case,)h(the)e(line)h(is)f(accepted)i(as)f(if)f(a)h
+(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 1932 y Fn(dump-functions)d
+(\(\))630 2042 y Fo(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g
+(their)g(k)m(ey)h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630
+2151 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630
-1116 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fe(inputrc)k
+2261 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fe(inputrc)k
Fo(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k
-(default.)150 1275 y Fn(dump-variables)26 b(\(\))630
-1385 y Fo(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5
+(default.)150 2420 y Fn(dump-variables)26 b(\(\))630
+2530 y Fo(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5
b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h
-(output)f(stream.)630 1494 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)
+(output)f(stream.)630 2639 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)
g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)
-m(y)g(that)630 1604 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h
+m(y)g(that)630 2749 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h
Fe(inputrc)k Fo(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c
-(b)m(y)k(default.)150 1763 y Fn(dump-macros)c(\(\))630
-1873 y Fo(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)
+(b)m(y)k(default.)150 2908 y Fn(dump-macros)c(\(\))630
+3018 y Fo(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)
f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630
-1983 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e
+3127 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e
(supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630
-2092 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e
+3237 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e
Fe(inputrc)35 b Fo(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound)
-d(b)m(y)630 2202 y(default.)150 2361 y Fn(emacs-editing-mode)e(\(C-e\))
-630 2471 y Fo(When)30 b(in)g Fn(vi)g Fo(command)g(mo)s(de,)g(this)h
+d(b)m(y)630 3346 y(default.)150 3506 y Fn(emacs-editing-mode)e(\(C-e\))
+630 3615 y Fo(When)30 b(in)g Fn(vi)g Fo(command)g(mo)s(de,)g(this)h
(causes)f(a)h(switc)m(h)g(to)g Fn(emacs)e Fo(editing)i(mo)s(de.)150
-2630 y Fn(vi-editing-mode)26 b(\(M-C-j\))630 2740 y Fo(When)k(in)g
+3774 y Fn(vi-editing-mode)26 b(\(M-C-j\))630 3884 y Fo(When)k(in)g
Fn(emacs)f Fo(editing)i(mo)s(de,)f(this)h(causes)f(a)h(switc)m(h)g(to)g
-Fn(vi)f Fo(editing)h(mo)s(de.)150 2980 y Fm(1.5)68 b(Readline)47
-b(vi)e(Mo)t(de)150 3140 y Fo(While)32 b(the)g(Readline)g(library)f(do)s
+Fn(vi)f Fo(editing)h(mo)s(de.)150 4124 y Fm(1.5)68 b(Readline)47
+b(vi)e(Mo)t(de)150 4284 y Fo(While)32 b(the)g(Readline)g(library)f(do)s
(es)g(not)h(ha)m(v)m(e)h(a)f(full)f(set)h(of)g Fn(vi)f
Fo(editing)h(functions,)f(it)h(do)s(es)g(con)m(tain)150
-3249 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52
+4393 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52
b(The)34 b(Readline)g Fn(vi)g Fo(mo)s(de)f(b)s(eha)m(v)m(es)i(as)f(sp)s
-(eci\014ed)f(in)150 3359 y(the)e Fh(posix)e Fo(standard.)275
-3494 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m
+(eci\014ed)f(in)150 4503 y(the)e Fh(posix)e Fo(standard.)275
+4637 y(In)f(order)g(to)i(switc)m(h)g(in)m(teractiv)m(ely)i(b)s(et)m(w)m
(een)d Fn(emacs)f Fo(and)g Fn(vi)h Fo(editing)g(mo)s(des,)g(use)g(the)g
-(command)150 3603 y Fg(M-C-j)36 b Fo(\(b)s(ound)h(to)h
+(command)150 4747 y Fg(M-C-j)36 b Fo(\(b)s(ound)h(to)h
(emacs-editing-mo)s(de)i(when)d(in)g Fn(vi)h Fo(mo)s(de)f(and)g(to)i
-(vi-editing-mo)s(de)g(in)e Fn(emacs)150 3713 y Fo(mo)s(de\).)k(The)30
+(vi-editing-mo)s(de)g(in)e Fn(emacs)150 4857 y Fo(mo)s(de\).)k(The)30
b(Readline)h(default)f(is)g Fn(emacs)f Fo(mo)s(de.)275
-3847 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fn(vi)f
+4991 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Fn(vi)f
Fo(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s
-(de,)g(as)h(if)f(y)m(ou)150 3957 y(had)f(t)m(yp)s(ed)g(an)g(`)p
+(de,)g(as)h(if)f(y)m(ou)150 5101 y(had)f(t)m(yp)s(ed)g(an)g(`)p
Fn(i)p Fo('.)41 b(Pressing)29 b Fn(ESC)f Fo(switc)m(hes)i(y)m(ou)g(in)m
(to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150
-4066 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f
+5210 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f
Fn(vi)g Fo(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g
-(history)f(lines)h(with)150 4176 y(`)p Fn(k)p Fo(')d(and)e(subsequen)m
+(history)f(lines)h(with)150 5320 y(`)p Fn(k)p Fo(')d(and)e(subsequen)m
(t)h(lines)h(with)f(`)p Fn(j)p Fo(',)g(and)g(so)h(forth.)p
eop end
%%Page: 24 27
diff --git a/doc/version.texi b/doc/version.texi
index 9dc2998..576c35c 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,10 +1,10 @@
@ignore
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2018 Free Software Foundation, Inc.
@end ignore
-@set EDITION 7.0
-@set VERSION 7.0
-@set UPDATED 16 July 2016
-@set UPDATED-MONTH July 2016
+@set EDITION 8.0
+@set VERSION 8.0
+@set UPDATED 30 November 2018
+@set UPDATED-MONTH November 2018
-@set LASTCHANGE Sat Jul 16 13:43:15 EDT 2016
+@set LASTCHANGE Fri Nov 30 22:50:53 EST 2018
diff --git a/emacs_keymap.c b/emacs_keymap.c
index cb6e140..b5e53f4 100644
--- a/emacs_keymap.c
+++ b/emacs_keymap.c
@@ -1,6 +1,6 @@
/* emacs_keymap.c -- the keymap for emacs_mode in readline (). */
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 5094c6c..4a7c39e 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -53,8 +53,12 @@ CPPFLAGS = @CPPFLAGS@
INCLUDES = -I$(srcdir) -I$(top_srcdir) -I..
-CCFLAGS = $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LDFLAGS = -g -L.. @LDFLAGS@
+CCFLAGS = $(ASAN_CFLAGS) $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) $(CPPFLAGS) \
+ $(CFLAGS)
+LDFLAGS = -g -L.. @LDFLAGS@ $(ASAN_LDFLAGS)
+
+ASAN_XCFLAGS = -fsanitize=address -fno-omit-frame-pointer
+ASAN_XLDFLAGS = -fsanitize=address
READLINE_LIB = ../libreadline.a
HISTORY_LIB = ../libhistory.a
@@ -67,15 +71,18 @@ TERMCAP_LIB = @TERMCAP_LIB@
SOURCES = excallback.c fileman.c histexamp.c manexamp.c rl-fgets.c rl.c \
rlbasic.c rlcat.c rlevent.c rlptytest.c rltest.c rlversion.c \
- rl-callbacktest.c hist_erasedups.c hist_purgecmd.c
+ rltest2.c rl-callbacktest.c hist_erasedups.c hist_purgecmd.c \
+ rlkeymaps.c
EXECUTABLES = fileman$(EXEEXT) rltest$(EXEEXT) rl$(EXEEXT) rlcat$(EXEEXT) \
rlevent$(EXEEXT) rlversion$(EXEEXT) histexamp$(EXEEXT) \
rl-callbacktest$(EXEEXT) rlbasic$(EXEEXT) \
- hist_erasedups$(EXEEXT) hist_purgecmd$(EXEEXT)
+ hist_erasedups$(EXEEXT) hist_purgecmd$(EXEEXT) \
+ rlkeymaps$(EXEEXT)
OBJECTS = fileman.o rltest.o rl.o rlevent.o rlcat.o rlversion.o histexamp.o \
- rl-callbacktest.o rlbasic.o hist_erasedups.o hist_purgecmd.o
+ rltest2.o rl-callbacktest.o rlbasic.o hist_erasedups.o hist_purgecmd.o \
+ rlkeymaps.o
OTHEREXE = rlptytest$(EXEEXT)
OTHEROBJ = rlptytest.o
@@ -83,6 +90,9 @@ OTHEROBJ = rlptytest.o
all: $(EXECUTABLES)
everything: all
+asan:
+ ${MAKE} ${MFLAGS} ASAN_CFLAGS='${ASAN_XCFLAGS}' ASAN_LDFLAGS='${ASAN_XLDFLAGS}' all
+
check: rlversion$(EXEEXT)
@echo Readline version: `rlversion$(EXEEXT)`
@@ -113,12 +123,18 @@ rlcat$(EXEEXT): rlcat.o $(READLINE_LIB)
rlevent$(EXEEXT): rlevent.o $(READLINE_LIB)
$(CC) $(LDFLAGS) -o $@ rlevent.o $(READLINE_LIB) $(TERMCAP_LIB)
+rlkeymaps$(EXEEXT): rlkeymaps.o $(READLINE_LIB)
+ $(CC) $(LDFLAGS) -o $@ rlkeymaps.o $(READLINE_LIB) $(TERMCAP_LIB)
+
fileman$(EXEEXT): fileman.o $(READLINE_LIB)
$(CC) $(LDFLAGS) -o $@ fileman.o $(READLINE_LIB) $(TERMCAP_LIB)
rltest$(EXEEXT): rltest.o $(READLINE_LIB)
$(CC) $(LDFLAGS) -o $@ rltest.o $(READLINE_LIB) $(TERMCAP_LIB)
+rltest2$(EXEEXT): rltest2.o $(READLINE_LIB)
+ $(CC) $(LDFLAGS) -o $@ rltest2.o $(READLINE_LIB) $(TERMCAP_LIB)
+
rl-callbacktest$(EXEEXT): rl-callbacktest.o $(READLINE_LIB)
$(CC) $(LDFLAGS) -o $@ rl-callbacktest.o $(READLINE_LIB) $(TERMCAP_LIB)
@@ -146,18 +162,21 @@ distclean maintainer-clean: clean
fileman.o: fileman.c
rltest.o: rltest.c
+rltest2.o: rltest2.c
rl.o: rl.c
rlversion.o: rlversion.c
histexamp.o: histexamp.c
hist_erasedups.o: hist_erasedups.c
hist_purgecmd.o: hist_purgecmd.c
rlbasic.o: rlbasic.c
+rlkeymaps.o: rlkeymaps.c
rlcat.o: rlcat.c
rlptytest.o: rlptytest.c
rl-callbacktest.o: rl-callbacktest.c
fileman.o: $(top_srcdir)/readline.h
rltest.o: $(top_srcdir)/readline.h
+rltest2.o: $(top_srcdir)/readline.h $(top_srcdir)/history.h
rl.o: $(top_srcdir)/readline.h
rlversion.o: $(top_srcdir)/readline.h
histexamp.o: $(top_srcdir)/history.h
diff --git a/examples/hist_erasedups.c b/examples/hist_erasedups.c
index 2ecee89..f820eba 100644
--- a/examples/hist_erasedups.c
+++ b/examples/hist_erasedups.c
@@ -38,6 +38,8 @@
#define STREQN(a, b, n) ((n == 0) ? (1) \
: ((a)[0] == (b)[0] && strncmp(a, b, n) == 0))
+int hist_erasedups (void);
+
static void
usage()
{
diff --git a/examples/hist_purgecmd.c b/examples/hist_purgecmd.c
index d836d14..7992d81 100644
--- a/examples/hist_purgecmd.c
+++ b/examples/hist_purgecmd.c
@@ -43,6 +43,8 @@
#define PURGE_REGEXP 0x01
+int hist_purgecmd (char *, int);
+
static void
usage()
{
diff --git a/examples/histexamp.c b/examples/histexamp.c
index 3b43674..309d769 100644
--- a/examples/histexamp.c
+++ b/examples/histexamp.c
@@ -27,8 +27,11 @@
# include <readline/history.h>
#endif
+#include <unistd.h>
+#include <stdlib.h>
#include <string.h>
+int
main (argc, argv)
int argc;
char **argv;
diff --git a/examples/rlcat.c b/examples/rlcat.c
index fa9e06f..b494241 100644
--- a/examples/rlcat.c
+++ b/examples/rlcat.c
@@ -137,7 +137,7 @@ fcopy(fp)
if (vflag && isascii ((unsigned char)c) && isprint((unsigned char)c) == 0)
{
x = rl_untranslate_keyseq (c);
- if (fputs (x, stdout) != 0)
+ if (fputs (x, stdout) == EOF)
return 1;
}
else if (putchar (c) == EOF)
diff --git a/examples/rlevent.c b/examples/rlevent.c
index 77f1887..8143cb0 100644
--- a/examples/rlevent.c
+++ b/examples/rlevent.c
@@ -28,6 +28,13 @@
# include <config.h>
#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#else
+extern int getopt();
+extern int sleep();
+#endif
+
#include <stdio.h>
#include <sys/types.h>
diff --git a/examples/rlkeymaps.c b/examples/rlkeymaps.c
new file mode 100644
index 0000000..fef77b3
--- /dev/null
+++ b/examples/rlkeymaps.c
@@ -0,0 +1,61 @@
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <string.h>
+
+#if defined (READLINE_LIBRARY)
+# include "readline.h"
+# include "history.h"
+#else
+# include <readline/readline.h>
+# include <readline/history.h>
+#endif
+
+int
+main (int c, char **v)
+{
+ Keymap nmap, emacsmap, newemacs;
+ int r, errs;
+
+ errs = 0;
+ nmap = rl_make_keymap ();
+
+ r = rl_set_keymap_name ("emacs", nmap);
+ if (r >= 0)
+ {
+ fprintf (stderr, "rlkeymaps: error: able to rename `emacs' keymap\n");
+ errs++;
+ }
+
+ emacsmap = rl_get_keymap_by_name ("emacs");
+ r = rl_set_keymap_name ("newemacs", emacsmap);
+ if (r >= 0)
+ {
+ fprintf (stderr, "rlkeymaps: error: able to set new name for emacs keymap\n");
+ errs++;
+ }
+
+ r = rl_set_keymap_name ("newemacs", nmap);
+ if (r < 0)
+ {
+ fprintf (stderr, "rlkeymaps: error: newemacs: could not set keymap name\n");
+ errs++;
+ }
+
+ newemacs = rl_copy_keymap (emacsmap);
+ r = rl_set_keymap_name ("newemacs", newemacs);
+ if (r < 0)
+ {
+ fprintf (stderr, "rlkeymaps: error: newemacs: could not set `newemacs' keymap to new map\n");
+ errs++;
+ }
+
+ r = rl_set_keymap_name ("emacscopy", newemacs);
+ if (r < 0)
+ {
+ fprintf (stderr, "rlkeymaps: error: emacscopy: could not rename created keymap\n");
+ errs++;
+ }
+
+ exit (errs);
+}
diff --git a/examples/rltest.c b/examples/rltest.c
index 78e2608..65abe87 100644
--- a/examples/rltest.c
+++ b/examples/rltest.c
@@ -46,6 +46,7 @@ extern void exit();
extern HIST_ENTRY **history_list ();
+int
main ()
{
char *temp, *prompt;
diff --git a/funmap.c b/funmap.c
index 34b1d6b..aaf144d 100644
--- a/funmap.c
+++ b/funmap.c
@@ -1,6 +1,6 @@
/* funmap.c -- attach names to functions. */
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -110,6 +110,7 @@ static const FUNMAP default_funmap[] = {
{ "menu-complete", rl_menu_complete },
{ "menu-complete-backward", rl_backward_menu_complete },
{ "next-history", rl_get_next_history },
+ { "next-screen-line", rl_next_screen_line },
{ "non-incremental-forward-search-history", rl_noninc_forward_search },
{ "non-incremental-reverse-search-history", rl_noninc_reverse_search },
{ "non-incremental-forward-search-history-again", rl_noninc_forward_search_again },
@@ -121,6 +122,7 @@ static const FUNMAP default_funmap[] = {
#endif
{ "possible-completions", rl_possible_completions },
{ "previous-history", rl_get_previous_history },
+ { "previous-screen-line", rl_previous_screen_line },
{ "print-last-kbd-macro", rl_print_last_kbd_macro },
{ "quoted-insert", rl_quoted_insert },
{ "re-read-init-file", rl_re_read_init_file },
@@ -204,9 +206,7 @@ static const FUNMAP default_funmap[] = {
};
int
-rl_add_funmap_entry (name, function)
- const char *name;
- rl_command_func_t *function;
+rl_add_funmap_entry (const char *name, rl_command_func_t *function)
{
if (funmap_entry + 2 >= funmap_size)
{
@@ -226,7 +226,7 @@ static int funmap_initialized;
/* Make the funmap contain all of the default entries. */
void
-rl_initialize_funmap ()
+rl_initialize_funmap (void)
{
register int i;
@@ -244,7 +244,7 @@ rl_initialize_funmap ()
is sorted. The array itself is allocated, but not the strings inside.
You should free () the array when you done, but not the pointers. */
const char **
-rl_funmap_names ()
+rl_funmap_names (void)
{
const char **result;
int result_size, result_index;
diff --git a/histexpand.c b/histexpand.c
index b84a6b8..adcf5dc 100644
--- a/histexpand.c
+++ b/histexpand.c
@@ -1,6 +1,6 @@
/* histexpand.c -- history expansion. */
-/* Copyright (C) 1989-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
This file contains the GNU History Library (History), a set of
routines for managing the text of previously typed lines.
@@ -55,6 +55,8 @@
#define slashify_in_quotes "\\`\"$"
+#define fielddelim(c) (whitespace(c) || (c) == '\n')
+
typedef int _hist_search_func_t PARAMS((const char *, int));
static char error_pointer;
@@ -107,6 +109,8 @@ char *history_word_delimiters = HISTORY_WORD_DELIMITERS;
particular history expansion should be performed. */
rl_linebuf_func_t *history_inhibit_expansion_function;
+int history_quoting_state = 0;
+
/* **************************************************************** */
/* */
/* History Expansion */
@@ -132,10 +136,7 @@ static char *search_match;
So you might call this function like:
line = get_history_event ("!echo:p", &index, 0); */
char *
-get_history_event (string, caller_index, delimiting_quote)
- const char *string;
- int *caller_index;
- int delimiting_quote;
+get_history_event (const char *string, int *caller_index, int delimiting_quote)
{
register int i;
register char c;
@@ -316,9 +317,7 @@ get_history_event (string, caller_index, delimiting_quote)
to the closing single quote. FLAGS currently used to allow backslash
to escape a single quote (e.g., for bash $'...'). */
static void
-hist_string_extract_single_quoted (string, sindex, flags)
- char *string;
- int *sindex, flags;
+hist_string_extract_single_quoted (char *string, int *sindex, int flags)
{
register int i;
@@ -332,8 +331,7 @@ hist_string_extract_single_quoted (string, sindex, flags)
}
static char *
-quote_breaks (s)
- char *s;
+quote_breaks (char *s)
{
register char *p, *r;
char *ret;
@@ -374,9 +372,7 @@ quote_breaks (s)
}
static char *
-hist_error(s, start, current, errtype)
- char *s;
- int start, current, errtype;
+hist_error(char *s, int start, int current, int errtype)
{
char *temp;
const char *emsg;
@@ -433,9 +429,7 @@ hist_error(s, start, current, errtype)
subst_rhs is allowed to be set to the empty string. */
static char *
-get_subst_pattern (str, iptr, delimiter, is_rhs, lenptr)
- char *str;
- int *iptr, delimiter, is_rhs, *lenptr;
+get_subst_pattern (char *str, int *iptr, int delimiter, int is_rhs, int *lenptr)
{
register int si, i, j, k;
char *s;
@@ -490,7 +484,7 @@ get_subst_pattern (str, iptr, delimiter, is_rhs, lenptr)
}
static void
-postproc_subst_rhs ()
+postproc_subst_rhs (void)
{
char *new;
int i, j, new_size;
@@ -526,12 +520,9 @@ postproc_subst_rhs ()
if the `p' modifier was supplied and the caller should just print
the returned string. Returns the new index into string in
*END_INDEX_PTR, and the expanded specifier in *RET_STRING. */
+/* need current line for !# */
static int
-history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_line)
- char *string;
- int start, qc, *end_index_ptr;
- char **ret_string;
- char *current_line; /* for !# */
+history_expand_internal (char *string, int start, int qc, int *end_index_ptr, char **ret_string, char *current_line)
{
int i, n, starting_index;
int substitute_globally, subst_bywords, want_quotes, print_only;
@@ -780,7 +771,7 @@ history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_l
the last time. */
if (subst_bywords && si > we)
{
- for (; temp[si] && whitespace (temp[si]); si++)
+ for (; temp[si] && fielddelim (temp[si]); si++)
;
ws = si;
we = history_tokenize_word (temp, si);
@@ -908,9 +899,7 @@ history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_l
while (0)
int
-history_expand (hstring, output)
- char *hstring;
- char **output;
+history_expand (char *hstring, char **output)
{
register int j;
int i, r, l, passc, cc, modified, eindex, only_printing, dquote, squote, flag;
@@ -976,7 +965,22 @@ history_expand (hstring, output)
/* `!' followed by one of the characters in history_no_expand_chars
is NOT an expansion. */
- for (i = dquote = squote = 0; string[i]; i++)
+ dquote = history_quoting_state == '"';
+ squote = history_quoting_state == '\'';
+
+ /* If the calling application tells us we are already reading a
+ single-quoted string, consume the rest of the string right now
+ and then go on. */
+ i = 0;
+ if (squote && history_quotes_inhibit_expansion)
+ {
+ hist_string_extract_single_quoted (string, &i, 0);
+ squote = 0;
+ if (string[i])
+ i++;
+ }
+
+ for ( ; string[i]; i++)
{
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
@@ -1064,7 +1068,29 @@ history_expand (hstring, output)
}
/* Extract and perform the substitution. */
- for (passc = dquote = squote = i = j = 0; i < l; i++)
+ dquote = history_quoting_state == '"';
+ squote = history_quoting_state == '\'';
+
+ /* If the calling application tells us we are already reading a
+ single-quoted string, consume the rest of the string right now
+ and then go on. */
+ i = j = 0;
+ if (squote && history_quotes_inhibit_expansion)
+ {
+ int c;
+
+ hist_string_extract_single_quoted (string, &i, 0);
+ squote = 0;
+ for (c = 0; c < i; c++)
+ ADD_CHAR (string[c]);
+ if (string[i])
+ {
+ ADD_CHAR (string[i]);
+ i++;
+ }
+ }
+
+ for (passc = 0; i < l; i++)
{
int qc, tchar = string[i];
@@ -1249,9 +1275,7 @@ history_expand (hstring, output)
CALLER_INDEX is the offset in SPEC to start looking; it is updated
to point to just after the last character parsed. */
static char *
-get_history_word_specifier (spec, from, caller_index)
- char *spec, *from;
- int *caller_index;
+get_history_word_specifier (char *spec, char *from, int *caller_index)
{
register int i = *caller_index;
int first, last;
@@ -1357,9 +1381,7 @@ get_history_word_specifier (spec, from, caller_index)
tokens, so that FIRST = -1 means the next to last token on the line).
If LAST is `$' the last arg from STRING is used. */
char *
-history_arg_extract (first, last, string)
- int first, last;
- const char *string;
+history_arg_extract (int first, int last, const char *string)
{
register int i, len;
char *result;
@@ -1418,9 +1440,7 @@ history_arg_extract (first, last, string)
}
static int
-history_tokenize_word (string, ind)
- const char *string;
- int ind;
+history_tokenize_word (const char *string, int ind)
{
register int i, j;
int delimiter, nestdelim, delimopen;
@@ -1428,7 +1448,7 @@ history_tokenize_word (string, ind)
i = ind;
delimiter = nestdelim = 0;
- if (member (string[i], "()\n"))
+ if (member (string[i], "()\n")) /* XXX - included \n, but why? been here forever */
{
i++;
return i;
@@ -1450,11 +1470,11 @@ history_tokenize_word (string, ind)
}
}
- if (member (string[i], "<>;&|$"))
+ if (member (string[i], "<>;&|"))
{
int peek = string[i + 1];
- if (peek == string[i] && peek != '$')
+ if (peek == string[i])
{
if (peek == '<' && string[i + 2] == '-')
i++;
@@ -1477,9 +1497,8 @@ history_tokenize_word (string, ind)
i += 2;
return i;
}
- /* XXX - separated out for later -- bash-4.2 */
- else if ((peek == '(' && (string[i] == '>' || string[i] == '<')) || /* ) */
- (peek == '(' && string[i] == '$')) /*)*/
+ /* XXX - process substitution -- separated out for later -- bash-4.2 */
+ else if (peek == '(' && (string[i] == '>' || string[i] == '<')) /*)*/
{
i += 2;
delimopen = '(';
@@ -1487,34 +1506,9 @@ history_tokenize_word (string, ind)
nestdelim = 1;
goto get_word;
}
-#if 0
- else if (peek == '\'' && string[i] == '$')
- {
- i += 2; /* XXX */
- return i;
- }
-#endif
- if (string[i] != '$')
- {
- i++;
- return i;
- }
- }
-
- /* same code also used for $(...)/<(...)/>(...) above */
- if (member (string[i], "!@?+*"))
- {
- int peek = string[i + 1];
-
- if (peek == '(') /*)*/
- {
- /* Shell extended globbing patterns */
- i += 2;
- delimopen = '(';
- delimiter = ')'; /* XXX - not perfect */
- nestdelim = 1;
- }
+ i++;
+ return i;
}
get_word:
@@ -1559,6 +1553,16 @@ get_word:
continue;
}
+ /* Command and process substitution; shell extended globbing patterns */
+ if (nestdelim == 0 && delimiter == 0 && member (string[i], "<>$!@?+*") && string[i+1] == '(') /*)*/
+ {
+ i += 2;
+ delimopen = '(';
+ delimiter = ')';
+ nestdelim = 1;
+ continue;
+ }
+
if (delimiter == 0 && (member (string[i], history_word_delimiters)))
break;
@@ -1570,9 +1574,7 @@ get_word:
}
static char *
-history_substring (string, start, end)
- const char *string;
- int start, end;
+history_substring (const char *string, int start, int end)
{
register int len;
register char *result;
@@ -1589,9 +1591,7 @@ history_substring (string, start, end)
WIND. The position in the returned array of strings is returned in
*INDP. */
static char **
-history_tokenize_internal (string, wind, indp)
- const char *string;
- int wind, *indp;
+history_tokenize_internal (const char *string, int wind, int *indp)
{
char **result;
register int i, start, result_index, size;
@@ -1606,7 +1606,7 @@ history_tokenize_internal (string, wind, indp)
for (i = result_index = size = 0, result = (char **)NULL; string[i]; )
{
/* Skip leading whitespace. */
- for (; string[i] && whitespace (string[i]); i++)
+ for (; string[i] && fielddelim (string[i]); i++)
;
if (string[i] == 0 || string[i] == history_comment_char)
return (result);
@@ -1644,17 +1644,14 @@ history_tokenize_internal (string, wind, indp)
/* Return an array of tokens, much as the shell might. The tokens are
parsed out of STRING. */
char **
-history_tokenize (string)
- const char *string;
+history_tokenize (const char *string)
{
return (history_tokenize_internal (string, -1, (int *)NULL));
}
/* Free members of WORDS from START to an empty string */
static void
-freewords (words, start)
- char **words;
- int start;
+freewords (char **words, int start)
{
register int i;
@@ -1666,9 +1663,7 @@ freewords (words, start)
in the history line LINE. Used to save the word matched by the
last history !?string? search. */
static char *
-history_find_word (line, ind)
- char *line;
- int ind;
+history_find_word (char *line, int ind)
{
char **words, *s;
int i, wind;
diff --git a/histfile.c b/histfile.c
index 5b057cd..dc64bde 100644
--- a/histfile.c
+++ b/histfile.c
@@ -1,6 +1,6 @@
/* histfile.c - functions to manipulate the history file. */
-/* Copyright (C) 1989-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
This file contains the GNU History Library (History), a set of
routines for managing the text of previously typed lines.
@@ -143,8 +143,7 @@ static int histfile_restore PARAMS((const char *, const char *));
filename. This only matters when you don't specify the
filename to read_history (), or write_history (). */
static char *
-history_filename (filename)
- const char *filename;
+history_filename (const char *filename)
{
char *return_val;
const char *home;
@@ -179,8 +178,7 @@ history_filename (filename)
}
static char *
-history_backupfile (filename)
- const char *filename;
+history_backupfile (const char *filename)
{
const char *fn;
char *ret, linkbuf[PATH_MAX+1];
@@ -208,8 +206,7 @@ history_backupfile (filename)
}
static char *
-history_tempfile (filename)
- const char *filename;
+history_tempfile (const char *filename)
{
const char *fn;
char *ret, linkbuf[PATH_MAX+1];
@@ -251,8 +248,7 @@ history_tempfile (filename)
If FILENAME is NULL, then read from ~/.history. Returns 0 if
successful, or errno if not. */
int
-read_history (filename)
- const char *filename;
+read_history (const char *filename)
{
return (read_history_range (filename, 0, -1));
}
@@ -263,9 +259,7 @@ read_history (filename)
until the end of the file. If FILENAME is NULL, then read from
~/.history. Returns 0 if successful, or errno if not. */
int
-read_history_range (filename, from, to)
- const char *filename;
- int from, to;
+read_history_range (const char *filename, int from, int to)
{
register char *line_start, *line_end, *p;
char *input, *buffer, *bufend, *last_ts;
@@ -289,6 +283,16 @@ read_history_range (filename, from, to)
if ((file < 0) || (fstat (file, &finfo) == -1))
goto error_and_exit;
+ if (S_ISREG (finfo.st_mode) == 0)
+ {
+#ifdef EFTYPE
+ errno = EFTYPE;
+#else
+ errno = EINVAL;
+#endif
+ goto error_and_exit;
+ }
+
file_size = (size_t)finfo.st_size;
/* check for overflow on very large files */
@@ -298,6 +302,12 @@ read_history_range (filename, from, to)
goto error_and_exit;
}
+ if (file_size == 0)
+ {
+ free (input);
+ return 0; /* don't waste time if we don't have to */
+ }
+
#ifdef HISTORY_USE_MMAP
/* We map read/write and private so we can change newlines to NULs without
affecting the underlying object. */
@@ -344,6 +354,7 @@ read_history_range (filename, from, to)
/* Start at beginning of file, work to end. */
bufend = buffer + chars_read;
+ *bufend = '\0'; /* null-terminate buffer for timestamp checks */
current_line = 0;
/* Heuristic: the history comment character rarely changes, so assume we
@@ -385,7 +396,7 @@ read_history_range (filename, from, to)
{
if (HIST_TIMESTAMP_START(line_start) == 0)
{
- if (last_ts == NULL && history_multiline_entries)
+ if (last_ts == NULL && history_length > 0 && history_multiline_entries)
_hs_append_history_line (history_length - 1, line_start);
else
add_history (line_start);
@@ -427,9 +438,7 @@ read_history_range (filename, from, to)
/* Save FILENAME to BACK, handling case where FILENAME is a symlink
(e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */
static int
-histfile_backup (filename, back)
- const char *filename;
- const char *back;
+histfile_backup (const char *filename, const char *back)
{
#if defined (HAVE_READLINK)
char linkbuf[PATH_MAX+1];
@@ -448,9 +457,7 @@ histfile_backup (filename, back)
/* Restore ORIG from BACKUP handling case where ORIG is a symlink
(e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */
static int
-histfile_restore (backup, orig)
- const char *backup;
- const char *orig;
+histfile_restore (const char *backup, const char *orig)
{
#if defined (HAVE_READLINK)
char linkbuf[PATH_MAX+1];
@@ -470,9 +477,7 @@ histfile_restore (backup, orig)
If FNAME is NULL, then use ~/.history. Writes a new file and renames
it to the original name. Returns 0 on success, errno on failure. */
int
-history_truncate_file (fname, lines)
- const char *fname;
- int lines;
+history_truncate_file (const char *fname, int lines)
{
char *buffer, *filename, *tempname, *bp, *bp1; /* bp1 == bp+1 */
int file, chars_read, rv, orig_lines, exists, r;
@@ -606,12 +611,14 @@ history_truncate_file (fname, lines)
history_lines_written_to_file = 0;
}
+#if defined (HAVE_CHOWN)
/* Make sure the new filename is owned by the same user as the old. If one
user is running this, it's a no-op. If the shell is running after sudo
with a shared history file, we don't want to leave the history file
owned by root. */
if (rv == 0 && exists)
r = chown (filename, finfo.st_uid, finfo.st_gid);
+#endif
xfree (filename);
FREE (tempname);
@@ -623,9 +630,7 @@ history_truncate_file (fname, lines)
from the history list to FILENAME. OVERWRITE is non-zero if you
wish to replace FILENAME with the entries. */
static int
-history_do_write (filename, nelements, overwrite)
- const char *filename;
- int nelements, overwrite;
+history_do_write (const char *filename, int nelements, int overwrite)
{
register int i;
char *output, *tempname, *histname;
@@ -753,12 +758,14 @@ mmap_error:
history_lines_written_to_file = 0;
}
+#if defined (HAVE_CHOWN)
/* Make sure the new filename is owned by the same user as the old. If one
user is running this, it's a no-op. If the shell is running after sudo
with a shared history file, we don't want to leave the history file
owned by root. */
if (rv == 0 && exists)
mode = chown (histname, finfo.st_uid, finfo.st_gid);
+#endif
FREE (histname);
FREE (tempname);
@@ -769,9 +776,7 @@ mmap_error:
/* Append NELEMENT entries to FILENAME. The entries appended are from
the end of the list minus NELEMENTs up to the end of the list. */
int
-append_history (nelements, filename)
- int nelements;
- const char *filename;
+append_history (int nelements, const char *filename)
{
return (history_do_write (filename, nelements, HISTORY_APPEND));
}
@@ -780,8 +785,7 @@ append_history (nelements, filename)
then write the history list to ~/.history. Values returned
are as in read_history ().*/
int
-write_history (filename)
- const char *filename;
+write_history (const char *filename)
{
return (history_do_write (filename, history_length, HISTORY_OVERWRITE));
}
diff --git a/histlib.h b/histlib.h
index 28cad14..9627b24 100644
--- a/histlib.h
+++ b/histlib.h
@@ -51,9 +51,9 @@
#endif
#ifndef member
-# ifndef strchr
+# if !defined (strchr) && !defined (__STDC__)
extern char *strchr ();
-# endif
+# endif /* !strchr && !__STDC__ */
#define member(c, s) ((c) ? ((char *)strchr ((s), (c)) != (char *)NULL) : 0)
#endif
@@ -69,11 +69,17 @@ extern char *strchr ();
#define NO_PREV_SUBST 4
/* Possible definitions for history starting point specification. */
-#define ANCHORED_SEARCH 1
-#define NON_ANCHORED_SEARCH 0
+#define NON_ANCHORED_SEARCH 0
+#define ANCHORED_SEARCH 0x01
+#define PATTERN_SEARCH 0x02
/* Possible definitions for what style of writing the history file we want. */
#define HISTORY_APPEND 0
#define HISTORY_OVERWRITE 1
+/* internal extern function declarations used by other parts of the library */
+
+/* histsearch.c */
+extern int _hs_history_patsearch PARAMS((const char *, int, int));
+
#endif /* !_HISTLIB_H_ */
diff --git a/history.c b/history.c
index 129c57a..67158b1 100644
--- a/history.c
+++ b/history.c
@@ -1,6 +1,6 @@
/* history.c -- standalone history library */
-/* Copyright (C) 1989-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2017 Free Software Foundation, Inc.
This file contains the GNU History Library (History), a set of
routines for managing the text of previously typed lines.
@@ -97,7 +97,7 @@ int history_base = 1;
/* Return the current HISTORY_STATE of the history. */
HISTORY_STATE *
-history_get_history_state ()
+history_get_history_state (void)
{
HISTORY_STATE *state;
@@ -115,8 +115,7 @@ history_get_history_state ()
/* Set the state of the current history array to STATE. */
void
-history_set_history_state (state)
- HISTORY_STATE *state;
+history_set_history_state (HISTORY_STATE *state)
{
the_history = state->entries;
history_offset = state->offset;
@@ -129,7 +128,7 @@ history_set_history_state (state)
/* Begin a session in which the history functions might be used. This
initializes interactive variables. */
void
-using_history ()
+using_history (void)
{
history_offset = history_length;
}
@@ -138,7 +137,7 @@ using_history ()
This just adds up the lengths of the_history->lines and the associated
timestamps. */
int
-history_total_bytes ()
+history_total_bytes (void)
{
register int i, result;
@@ -151,7 +150,7 @@ history_total_bytes ()
/* Returns the magic number which says what history element we are
looking at now. In this implementation, it returns history_offset. */
int
-where_history ()
+where_history (void)
{
return (history_offset);
}
@@ -159,8 +158,7 @@ where_history ()
/* Make the current history item be the one at POS, an absolute index.
Returns zero if POS is out of range, else non-zero. */
int
-history_set_pos (pos)
- int pos;
+history_set_pos (int pos)
{
if (pos > history_length || pos < 0 || !the_history)
return (0);
@@ -172,7 +170,7 @@ history_set_pos (pos)
is the actual array of data, and could be bashed or made corrupt easily.
The array is terminated with a NULL pointer. */
HIST_ENTRY **
-history_list ()
+history_list (void)
{
return (the_history);
}
@@ -180,7 +178,7 @@ history_list ()
/* Return the history entry at the current position, as determined by
history_offset. If there is no entry there, return a NULL pointer. */
HIST_ENTRY *
-current_history ()
+current_history (void)
{
return ((history_offset == history_length) || the_history == 0)
? (HIST_ENTRY *)NULL
@@ -191,7 +189,7 @@ current_history ()
a pointer to that entry. If there is no previous entry then return
a NULL pointer. */
HIST_ENTRY *
-previous_history ()
+previous_history (void)
{
return history_offset ? the_history[--history_offset] : (HIST_ENTRY *)NULL;
}
@@ -200,7 +198,7 @@ previous_history ()
a pointer to that entry. If there is no next entry then return a
NULL pointer. */
HIST_ENTRY *
-next_history ()
+next_history (void)
{
return (history_offset == history_length) ? (HIST_ENTRY *)NULL : the_history[++history_offset];
}
@@ -208,8 +206,7 @@ next_history ()
/* Return the history entry which is logically at OFFSET in the history array.
OFFSET is relative to history_base. */
HIST_ENTRY *
-history_get (offset)
- int offset;
+history_get (int offset)
{
int local_index;
@@ -220,9 +217,7 @@ history_get (offset)
}
HIST_ENTRY *
-alloc_history_entry (string, ts)
- char *string;
- char *ts;
+alloc_history_entry (char *string, char *ts)
{
HIST_ENTRY *temp;
@@ -236,8 +231,7 @@ alloc_history_entry (string, ts)
}
time_t
-history_get_time (hist)
- HIST_ENTRY *hist;
+history_get_time (HIST_ENTRY *hist)
{
char *ts;
time_t t;
@@ -255,7 +249,7 @@ history_get_time (hist)
}
static char *
-hist_inittime ()
+hist_inittime (void)
{
time_t t;
char ts[64], *ret;
@@ -275,8 +269,7 @@ hist_inittime ()
/* Place STRING at the end of the history list. The data field
is set to NULL. */
void
-add_history (string)
- const char *string;
+add_history (const char *string)
{
HIST_ENTRY *temp;
int new_length;
@@ -335,8 +328,7 @@ add_history (string)
/* Change the time stamp of the most recent history entry to STRING. */
void
-add_history_time (string)
- const char *string;
+add_history_time (const char *string)
{
HIST_ENTRY *hs;
@@ -350,8 +342,7 @@ add_history_time (string)
/* Free HIST and return the data so the calling application can free it
if necessary and desired. */
histdata_t
-free_history_entry (hist)
- HIST_ENTRY *hist;
+free_history_entry (HIST_ENTRY *hist)
{
histdata_t x;
@@ -365,8 +356,7 @@ free_history_entry (hist)
}
HIST_ENTRY *
-copy_history_entry (hist)
- HIST_ENTRY *hist;
+copy_history_entry (HIST_ENTRY *hist)
{
HIST_ENTRY *ret;
char *ts;
@@ -388,10 +378,7 @@ copy_history_entry (hist)
the old entry so you can dispose of the data. In the case of an
invalid WHICH, a NULL pointer is returned. */
HIST_ENTRY *
-replace_history_entry (which, line, data)
- int which;
- const char *line;
- histdata_t data;
+replace_history_entry (int which, const char *line, histdata_t data)
{
HIST_ENTRY *temp, *old_value;
@@ -413,17 +400,26 @@ replace_history_entry (which, line, data)
end of the current line first. This can be used to construct multi-line
history entries while reading lines from the history file. */
void
-_hs_append_history_line (which, line)
- int which;
- const char *line;
+_hs_append_history_line (int which, const char *line)
{
HIST_ENTRY *hent;
- size_t newlen, curlen;
+ size_t newlen, curlen, minlen;
char *newline;
hent = the_history[which];
curlen = strlen (hent->line);
- newlen = curlen + strlen (line) + 2;
+ minlen = curlen + strlen (line) + 2; /* min space needed */
+ if (curlen > 256) /* XXX - for now */
+ {
+ newlen = 512; /* now realloc in powers of 2 */
+ /* we recalcluate every time; the operations are cheap */
+ while (newlen < minlen)
+ newlen <<= 1;
+ }
+ else
+ newlen = minlen;
+ /* Assume that realloc returns the same pointer and doesn't try a new
+ alloc/copy if the new size is the same as the one last passed. */
newline = realloc (hent->line, newlen);
if (newline)
{
@@ -440,9 +436,7 @@ _hs_append_history_line (which, line)
WHICH >= 0 means to replace that particular history entry's data, as
long as it matches OLD. */
void
-_hs_replace_history_data (which, old, new)
- int which;
- histdata_t *old, *new;
+_hs_replace_history_data (int which, histdata_t *old, histdata_t *new)
{
HIST_ENTRY *entry;
register int i, last;
@@ -482,29 +476,76 @@ _hs_replace_history_data (which, old, new)
element is returned to you so you can free the line, data,
and containing structure. */
HIST_ENTRY *
-remove_history (which)
- int which;
+remove_history (int which)
{
HIST_ENTRY *return_value;
register int i;
+#if 1
+ int nentries;
+ HIST_ENTRY **start, **end;
+#endif
if (which < 0 || which >= history_length || history_length == 0 || the_history == 0)
return ((HIST_ENTRY *)NULL);
return_value = the_history[which];
+#if 1
+ /* Copy the rest of the entries, moving down one slot. Copy includes
+ trailing NULL. */
+ nentries = history_length - which;
+ start = the_history + which;
+ end = start + 1;
+ memmove (start, end, nentries * sizeof (HIST_ENTRY *));
+#else
for (i = which; i < history_length; i++)
the_history[i] = the_history[i + 1];
+#endif
history_length--;
return (return_value);
}
+HIST_ENTRY **
+remove_history_range (int first, int last)
+{
+ HIST_ENTRY **return_value;
+ register int i;
+ int nentries;
+ HIST_ENTRY **start, **end;
+
+ if (the_history == 0 || history_length == 0)
+ return ((HIST_ENTRY **)NULL);
+ if (first < 0 || first >= history_length || last < 0 || last >= history_length)
+ return ((HIST_ENTRY **)NULL);
+ if (first > last)
+ return (HIST_ENTRY **)NULL;
+
+ nentries = last - first + 1;
+ return_value = (HIST_ENTRY **)malloc ((nentries + 1) * sizeof (HIST_ENTRY *));
+ if (return_value == 0)
+ return return_value;
+
+ /* Return all the deleted entries in a list */
+ for (i = first ; i <= last; i++)
+ return_value[i - first] = the_history[i];
+ return_value[i - first] = (HIST_ENTRY *)NULL;
+
+ /* Copy the rest of the entries, moving down NENTRIES slots. Copy includes
+ trailing NULL. */
+ start = the_history + first;
+ end = the_history + last + 1;
+ memmove (start, end, (history_length - last) * sizeof (HIST_ENTRY *));
+
+ history_length -= nentries;
+
+ return (return_value);
+}
+
/* Stifle the history list, remembering only MAX number of lines. */
void
-stifle_history (max)
- int max;
+stifle_history (int max)
{
register int i, j;
@@ -532,7 +573,7 @@ stifle_history (max)
number of history entries. The value is positive if the history
was stifled, negative if it wasn't. */
int
-unstifle_history ()
+unstifle_history (void)
{
if (history_stifled)
{
@@ -544,13 +585,13 @@ unstifle_history ()
}
int
-history_is_stifled ()
+history_is_stifled (void)
{
return (history_stifled);
}
void
-clear_history ()
+clear_history (void)
{
register int i;
@@ -562,4 +603,5 @@ clear_history ()
}
history_offset = history_length = 0;
+ history_base = 1; /* reset history base to default */
}
diff --git a/history.h b/history.h
index 8ce7c80..cc3de29 100644
--- a/history.h
+++ b/history.h
@@ -86,11 +86,13 @@ extern void add_history PARAMS((const char *));
STRING. */
extern void add_history_time PARAMS((const char *));
-/* A reasonably useless function, only here for completeness. WHICH
- is the magic number that tells us which element to delete. The
- elements are numbered from 0. */
+/* Remove an entry from the history list. WHICH is the magic number that
+ tells us which element to delete. The elements are numbered from 0. */
extern HIST_ENTRY *remove_history PARAMS((int));
+/* Remove a set of entries from the history list: FIRST to LAST, inclusive */
+extern HIST_ENTRY **remove_history_range PARAMS((int, int));
+
/* Allocate a history entry consisting of STRING and TIMESTAMP and return
a pointer to it. */
extern HIST_ENTRY *alloc_history_entry PARAMS((char *, char *));
@@ -259,7 +261,9 @@ extern char *history_word_delimiters;
extern char history_comment_char;
extern char *history_no_expand_chars;
extern char *history_search_delimiter_chars;
+
extern int history_quotes_inhibit_expansion;
+extern int history_quoting_state;
extern int history_write_timestamps;
diff --git a/histsearch.c b/histsearch.c
index 1ad55d2..7a426c9 100644
--- a/histsearch.c
+++ b/histsearch.c
@@ -1,6 +1,6 @@
/* histsearch.c -- searching the history list. */
-/* Copyright (C) 1989, 1992-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1989, 1992-2009,2017 Free Software Foundation, Inc.
This file contains the GNU History Library (History), a set of
routines for managing the text of previously typed lines.
@@ -39,8 +39,13 @@
# include <unistd.h>
#endif
+#if defined (HAVE_FNMATCH)
+# include <fnmatch.h>
+#endif
+
#include "history.h"
#include "histlib.h"
+#include "xmalloc.h"
/* The list of alternate characters that can delimit a history search
string. */
@@ -59,18 +64,22 @@ static int history_search_internal PARAMS((const char *, int, int));
returned. */
static int
-history_search_internal (string, direction, anchored)
- const char *string;
- int direction, anchored;
+history_search_internal (const char *string, int direction, int flags)
{
register int i, reverse;
register char *line;
register int line_index;
- int string_len;
+ int string_len, anchored, patsearch;
HIST_ENTRY **the_history; /* local */
i = history_offset;
reverse = (direction < 0);
+ anchored = (flags & ANCHORED_SEARCH);
+#if defined (HAVE_FNMATCH)
+ patsearch = (flags & PATTERN_SEARCH);
+#else
+ patsearch = 0;
+#endif
/* Take care of trivial cases first. */
if (string == 0 || *string == '\0')
@@ -98,7 +107,7 @@ history_search_internal (string, direction, anchored)
line_index = strlen (line);
/* If STRING is longer than line, no match. */
- if (string_len > line_index)
+ if (patsearch == 0 && (string_len > line_index))
{
NEXT_LINE ();
continue;
@@ -107,6 +116,17 @@ history_search_internal (string, direction, anchored)
/* Handle anchored searches first. */
if (anchored == ANCHORED_SEARCH)
{
+#if defined (HAVE_FNMATCH)
+ if (patsearch)
+ {
+ if (fnmatch (string, line, 0) == 0)
+ {
+ history_offset = i;
+ return (0);
+ }
+ }
+ else
+#endif
if (STREQN (string, line, string_len))
{
history_offset = i;
@@ -120,10 +140,21 @@ history_search_internal (string, direction, anchored)
/* Do substring search. */
if (reverse)
{
- line_index -= string_len;
+ line_index -= (patsearch == 0) ? string_len : 1;
while (line_index >= 0)
{
+#if defined (HAVE_FNMATCH)
+ if (patsearch)
+ {
+ if (fnmatch (string, line + line_index, 0) == 0)
+ {
+ history_offset = i;
+ return (line_index);
+ }
+ }
+ else
+#endif
if (STREQN (string, line + line_index, string_len))
{
history_offset = i;
@@ -141,6 +172,17 @@ history_search_internal (string, direction, anchored)
while (line_index < limit)
{
+#if defined (HAVE_FNMATCH)
+ if (patsearch)
+ {
+ if (fnmatch (string, line + line_index, 0) == 0)
+ {
+ history_offset = i;
+ return (line_index);
+ }
+ }
+ else
+#endif
if (STREQN (string, line + line_index, string_len))
{
history_offset = i;
@@ -153,20 +195,73 @@ history_search_internal (string, direction, anchored)
}
}
+int
+_hs_history_patsearch (const char *string, int direction, int flags)
+{
+ char *pat;
+ size_t len, start;
+ int ret, unescaped_backslash;
+
+#if defined (HAVE_FNMATCH)
+ /* Assume that the string passed does not have a leading `^' and any
+ anchored search request is captured in FLAGS */
+ len = strlen (string);
+ ret = len - 1;
+ /* fnmatch is required to reject a pattern that ends with an unescaped
+ backslash */
+ if (unescaped_backslash = (string[ret] == '\\'))
+ {
+ while (ret > 0 && string[--ret] == '\\')
+ unescaped_backslash = 1 - unescaped_backslash;
+ }
+ if (unescaped_backslash)
+ return -1;
+ pat = (char *)xmalloc (len + 3);
+ /* If the search string is not anchored, we'll be calling fnmatch (assuming
+ we have it). Prefix a `*' to the front of the search string so we search
+ anywhere in the line. */
+ if ((flags & ANCHORED_SEARCH) == 0 && string[0] != '*')
+ {
+ pat[0] = '*';
+ start = 1;
+ len++;
+ }
+ else
+ {
+ start = 0;
+ }
+
+ /* Attempt to reduce the number of searches by tacking a `*' onto the end
+ of a pattern that doesn't have one. Assume a pattern that ends in a
+ backslash contains an even number of trailing backslashes; we check
+ above */
+ strcpy (pat + start, string);
+ if (pat[len - 1] != '*')
+ {
+ pat[len] = '*'; /* XXX */
+ pat[len+1] = '\0';
+ }
+#else
+ pat = string;
+#endif
+
+ ret = history_search_internal (pat, direction, flags|PATTERN_SEARCH);
+
+ if (pat != string)
+ free (pat);
+ return ret;
+}
+
/* Do a non-anchored search for STRING through the history in DIRECTION. */
int
-history_search (string, direction)
- const char *string;
- int direction;
+history_search (const char *string, int direction)
{
return (history_search_internal (string, direction, NON_ANCHORED_SEARCH));
}
/* Do an anchored search for string through the history in DIRECTION. */
int
-history_search_prefix (string, direction)
- const char *string;
- int direction;
+history_search_prefix (const char *string, int direction)
{
return (history_search_internal (string, direction, ANCHORED_SEARCH));
}
@@ -175,9 +270,7 @@ history_search_prefix (string, direction)
backwards. POS is an absolute index into the history list at
which point to begin searching. */
int
-history_search_pos (string, dir, pos)
- const char *string;
- int dir, pos;
+history_search_pos (const char *string, int dir, int pos)
{
int ret, old;
diff --git a/input.c b/input.c
index 24126ea..d4d57a8 100644
--- a/input.c
+++ b/input.c
@@ -1,6 +1,6 @@
/* input.c -- character input functions for readline. */
-/* Copyright (C) 1994-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -76,6 +76,10 @@ extern int errno;
# define O_NDELAY O_NONBLOCK /* Posix style */
#endif
+#if defined (HAVE_PSELECT)
+extern sigset_t _rl_orig_sigset;
+#endif
+
/* Non-null means it is a pointer to a function to run while waiting for
character input. */
rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL;
@@ -99,13 +103,28 @@ static int rl_gather_tyi PARAMS((void));
device, so we need to perform additional checks. */
#if defined (_WIN32) && !defined (__CYGWIN__)
#include <io.h>
+#include <conio.h>
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>
int
win32_isatty (int fd)
{
- return (_isatty (fd) ? ((((long) (HANDLE) _get_osfhandle (fd)) & 3) == 3) : 0);
+ if (_isatty(fd))
+ {
+ HANDLE h;
+ DWORD ignored;
+
+ if ((h = (HANDLE) _get_osfhandle (fd)) == INVALID_HANDLE_VALUE)
+ {
+ errno = EBADF;
+ return 0;
+ }
+ if (GetConsoleMode (h, &ignored) != 0)
+ return 1;
+ }
+ errno = ENOTTY;
+ return 0;
}
#define isatty(x) win32_isatty(x)
@@ -124,13 +143,13 @@ static int ibuffer_len = sizeof (ibuffer) - 1;
#define any_typein (push_index != pop_index)
int
-_rl_any_typein ()
+_rl_any_typein (void)
{
return any_typein;
}
int
-_rl_pushed_input_available ()
+_rl_pushed_input_available (void)
{
return (push_index != pop_index);
}
@@ -138,7 +157,7 @@ _rl_pushed_input_available ()
/* Return the amount of space available in the buffer for stuffing
characters. */
static int
-ibuffer_space ()
+ibuffer_space (void)
{
if (pop_index > push_index)
return (pop_index - push_index - 1);
@@ -150,8 +169,7 @@ ibuffer_space ()
Return the key in KEY.
Result is non-zero if there was a key, or 0 if there wasn't. */
static int
-rl_get_char (key)
- int *key;
+rl_get_char (int *key)
{
if (push_index == pop_index)
return (0);
@@ -171,8 +189,7 @@ rl_get_char (key)
Returns non-zero if successful, zero if there is
no space left in the buffer. */
int
-_rl_unget_char (key)
- int key;
+_rl_unget_char (int key)
{
if (ibuffer_space ())
{
@@ -189,7 +206,7 @@ _rl_unget_char (key)
IBUFFER. Otherwise, just return. Returns number of characters read
(0 if none available) and -1 on error (EIO). */
static int
-rl_gather_tyi ()
+rl_gather_tyi (void)
{
int tty;
register int tem, result;
@@ -292,8 +309,7 @@ rl_gather_tyi ()
}
int
-rl_set_keyboard_input_timeout (u)
- int u;
+rl_set_keyboard_input_timeout (int u)
{
int o;
@@ -310,7 +326,7 @@ rl_set_keyboard_input_timeout (u)
the user, it should use _rl_input_queued(timeout_value_in_microseconds)
instead. */
int
-_rl_input_available ()
+_rl_input_available (void)
{
#if defined(HAVE_SELECT)
fd_set readfds, exceptfds;
@@ -352,8 +368,7 @@ _rl_input_available ()
}
int
-_rl_input_queued (t)
- int t;
+_rl_input_queued (int t)
{
int old_timeout, r;
@@ -364,8 +379,7 @@ _rl_input_queued (t)
}
void
-_rl_insert_typein (c)
- int c;
+_rl_insert_typein (int c)
{
int key, t, i;
char *string;
@@ -390,8 +404,7 @@ _rl_insert_typein (c)
/* Add KEY to the buffer of characters to be read. Returns 1 if the
character was stuffed correctly; 0 otherwise. */
int
-rl_stuff_char (key)
- int key;
+rl_stuff_char (int key)
{
if (ibuffer_space () == 0)
return 0;
@@ -415,8 +428,7 @@ rl_stuff_char (key)
/* Make C be the next command to be executed. */
int
-rl_execute_next (c)
- int c;
+rl_execute_next (int c)
{
rl_pending_input = c;
RL_SETSTATE (RL_STATE_INPUTPENDING);
@@ -425,7 +437,7 @@ rl_execute_next (c)
/* Clear any pending input pushed with rl_execute_next() */
int
-rl_clear_pending_input ()
+rl_clear_pending_input (void)
{
rl_pending_input = 0;
RL_UNSETSTATE (RL_STATE_INPUTPENDING);
@@ -440,20 +452,20 @@ rl_clear_pending_input ()
/* Read a key, including pending input. */
int
-rl_read_key ()
+rl_read_key (void)
{
int c, r;
if (rl_pending_input)
{
- c = rl_pending_input;
+ c = rl_pending_input; /* XXX - cast to unsigned char if > 0? */
rl_clear_pending_input ();
}
else
{
/* If input is coming from a macro, then use that. */
if (c = _rl_next_macro_key ())
- return (c);
+ return ((unsigned char)c);
/* If the user has an event function, then call it periodically. */
if (rl_event_hook)
@@ -490,8 +502,7 @@ rl_read_key ()
}
int
-rl_getc (stream)
- FILE *stream;
+rl_getc (FILE *stream)
{
int result;
unsigned char c;
@@ -512,11 +523,15 @@ rl_getc (stream)
#endif
result = 0;
#if defined (HAVE_PSELECT)
- sigemptyset (&empty_set);
- sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set);
FD_ZERO (&readfds);
FD_SET (fileno (stream), &readfds);
+# if defined (HANDLE_SIGNALS)
+ result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset);
+# else
+ sigemptyset (&empty_set);
+ sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set);
result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &empty_set);
+# endif /* HANDLE_SIGNALS */
#endif
if (result >= 0)
result = read (fileno (stream), &c, sizeof (unsigned char));
@@ -603,9 +618,7 @@ handle_error:
#if defined (HANDLE_MULTIBYTE)
/* read multibyte char */
int
-_rl_read_mbchar (mbchar, size)
- char *mbchar;
- int size;
+_rl_read_mbchar (char *mbchar, int size)
{
int mb_len, c;
size_t mbchar_bytes_length;
@@ -654,12 +667,9 @@ _rl_read_mbchar (mbchar, size)
may be FIRST. Used by the search functions, among others. Very similar
to _rl_read_mbchar. */
int
-_rl_read_mbstring (first, mb, mlen)
- int first;
- char *mb;
- int mlen;
+_rl_read_mbstring (int first, char *mb, int mlen)
{
- int i, c;
+ int i, c, n;
mbstate_t ps;
c = first;
@@ -668,7 +678,8 @@ _rl_read_mbstring (first, mb, mlen)
{
mb[i] = (char)c;
memset (&ps, 0, sizeof (mbstate_t));
- if (_rl_get_char_len (mb, &ps) == -2)
+ n = _rl_get_char_len (mb, &ps);
+ if (n == -2)
{
/* Read more for multibyte character */
RL_SETSTATE (RL_STATE_MOREINPUT);
diff --git a/isearch.c b/isearch.c
index 819fcbc..d6c5904 100644
--- a/isearch.c
+++ b/isearch.c
@@ -6,7 +6,7 @@
/* */
/* **************************************************************** */
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -78,8 +78,7 @@ static int last_isearch_string_len;
static char * const default_isearch_terminators = "\033\012";
_rl_search_cxt *
-_rl_scxt_alloc (type, flags)
- int type, flags;
+_rl_scxt_alloc (int type, int flags)
{
_rl_search_cxt *cxt;
@@ -120,9 +119,7 @@ _rl_scxt_alloc (type, flags)
}
void
-_rl_scxt_dispose (cxt, flags)
- _rl_search_cxt *cxt;
- int flags;
+_rl_scxt_dispose (_rl_search_cxt *cxt, int flags)
{
FREE (cxt->search_string);
FREE (cxt->allocated_line);
@@ -134,8 +131,7 @@ _rl_scxt_dispose (cxt, flags)
/* Search backwards through the history looking for a string which is typed
interactively. Start with the current line. */
int
-rl_reverse_search_history (sign, key)
- int sign, key;
+rl_reverse_search_history (int sign, int key)
{
return (rl_search_history (-sign, key));
}
@@ -143,8 +139,7 @@ rl_reverse_search_history (sign, key)
/* Search forwards through the history looking for a string which is typed
interactively. Start with the current line. */
int
-rl_forward_search_history (sign, key)
- int sign, key;
+rl_forward_search_history (int sign, int key)
{
return (rl_search_history (sign, key));
}
@@ -155,9 +150,7 @@ rl_forward_search_history (sign, key)
WHERE is the history list number of the current line. If it is
-1, then this line is the starting one. */
static void
-rl_display_search (search_string, flags, where)
- char *search_string;
- int flags, where;
+rl_display_search (char *search_string, int flags, int where)
{
char *message;
int msglen, searchlen;
@@ -206,8 +199,7 @@ rl_display_search (search_string, flags, where)
}
static _rl_search_cxt *
-_rl_isearch_init (direction)
- int direction;
+_rl_isearch_init (int direction)
{
_rl_search_cxt *cxt;
register int i;
@@ -267,11 +259,10 @@ _rl_isearch_init (direction)
}
static void
-_rl_isearch_fini (cxt)
- _rl_search_cxt *cxt;
+_rl_isearch_fini (_rl_search_cxt *cxt)
{
/* First put back the original state. */
- strcpy (rl_line_buffer, cxt->lines[cxt->save_line]);
+ rl_replace_line (cxt->lines[cxt->save_line], 0);
rl_restore_prompt ();
@@ -301,13 +292,13 @@ _rl_isearch_fini (cxt)
rl_point = cxt->sline_index;
/* Don't worry about where to put the mark here; rl_get_previous_history
and rl_get_next_history take care of it. */
+ _rl_fix_point (0);
rl_clear_message ();
}
int
-_rl_search_getchar (cxt)
- _rl_search_cxt *cxt;
+_rl_search_getchar (_rl_search_cxt *cxt)
{
int c;
@@ -334,11 +325,12 @@ _rl_search_getchar (cxt)
-1 if the caller should just free the context and return, 0 if we should
break out of the loop, and 1 if we should continue to read characters. */
int
-_rl_isearch_dispatch (cxt, c)
- _rl_search_cxt *cxt;
- int c;
+_rl_isearch_dispatch (_rl_search_cxt *cxt, int c)
{
- int n, wstart, wlen, limit, cval;
+ int n, wstart, wlen, limit, cval, incr;
+ char *paste;
+ size_t pastelen;
+ int j;
rl_command_func_t *f;
f = (rl_command_func_t *)NULL;
@@ -409,6 +401,8 @@ add_character:
cxt->lastc = -5;
else if (c == CTRL ('Y') || f == rl_yank) /* XXX */
cxt->lastc = -6;
+ else if (f == rl_bracketed_paste_begin)
+ cxt->lastc = -7;
}
/* If we changed the keymap earlier while translating a key sequence into
@@ -527,7 +521,7 @@ add_character:
}
return (1);
}
- else if (cxt->sflags & SF_REVERSE)
+ else if ((cxt->sflags & SF_REVERSE) && cxt->sline_index >= 0)
cxt->sline_index--;
else if (cxt->sline_index != cxt->sline_len)
cxt->sline_index++;
@@ -631,22 +625,44 @@ add_character:
cxt->search_string[cxt->search_string_index] = '\0';
break;
+ case -7: /* bracketed paste */
+ paste = _rl_bracketed_text (&pastelen);
+ if (paste == 0 || *paste == 0)
+ {
+ free (paste);
+ break;
+ }
+ if (cxt->search_string_index + pastelen + 1 >= cxt->search_string_size)
+ {
+ cxt->search_string_size += pastelen + 2;
+ cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size);
+ }
+ strcpy (cxt->search_string + cxt->search_string_index, paste);
+ cxt->search_string_index += pastelen;
+ free (paste);
+ break;
+
/* Add character to search string and continue search. */
default:
- if (cxt->search_string_index + 2 >= cxt->search_string_size)
+#if defined (HANDLE_MULTIBYTE)
+ wlen = (cxt->mb[0] == 0 || cxt->mb[1] == 0) ? 1 : RL_STRLEN (cxt->mb);
+#else
+ wlen = 1;
+#endif
+ if (cxt->search_string_index + wlen + 1 >= cxt->search_string_size)
{
- cxt->search_string_size += 128;
+ cxt->search_string_size += 128; /* 128 much greater than MB_CUR_MAX */
cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size);
}
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
- int j, l;
+ int j;
if (cxt->mb[0] == 0 || cxt->mb[1] == 0)
cxt->search_string[cxt->search_string_index++] = cxt->mb[0];
else
- for (j = 0, l = RL_STRLEN (cxt->mb); j < l; )
+ for (j = 0; j < wlen; )
cxt->search_string[cxt->search_string_index++] = cxt->mb[j++];
}
else
@@ -676,6 +692,12 @@ add_character:
}
else
cxt->sline_index += cxt->direction;
+
+ if (cxt->sline_index < 0)
+ {
+ cxt->sline_index = 0;
+ break;
+ }
}
if (cxt->sflags & SF_FOUND)
break;
@@ -703,7 +725,12 @@ add_character:
(cxt->search_string_index > cxt->sline_len));
if (cxt->sflags & SF_FAILED)
- break;
+ {
+ /* XXX - reset sline_index if < 0 */
+ if (cxt->sline_index < 0)
+ cxt->sline_index = 0;
+ break;
+ }
/* Now set up the line for searching... */
cxt->sline_index = (cxt->sflags & SF_REVERSE) ? cxt->sline_len - cxt->search_string_index : 0;
@@ -734,9 +761,7 @@ add_character:
}
int
-_rl_isearch_cleanup (cxt, r)
- _rl_search_cxt *cxt;
- int r;
+_rl_isearch_cleanup (_rl_search_cxt *cxt, int r)
{
if (r >= 0)
_rl_isearch_fini (cxt);
@@ -753,8 +778,7 @@ _rl_isearch_cleanup (cxt, r)
DIRECTION is which direction to search; >= 0 means forward, < 0 means
backwards. */
static int
-rl_search_history (direction, invoking_key)
- int direction, invoking_key;
+rl_search_history (int direction, int invoking_key)
{
_rl_search_cxt *cxt; /* local for now, but saved globally */
int c, r;
@@ -792,8 +816,7 @@ rl_search_history (direction, invoking_key)
If _rl_isearch_dispatch finishes searching, this function is responsible
for turning off RL_STATE_ISEARCH, which it does using _rl_isearch_cleanup. */
int
-_rl_isearch_callback (cxt)
- _rl_search_cxt *cxt;
+_rl_isearch_callback (_rl_search_cxt *cxt)
{
int c, r;
diff --git a/keymaps.c b/keymaps.c
index 58661e2..4ade30b 100644
--- a/keymaps.c
+++ b/keymaps.c
@@ -1,6 +1,6 @@
/* keymaps.c -- Functions and keymaps for the GNU Readline library. */
-/* Copyright (C) 1988,1989-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1988,1989-2009,2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -54,7 +54,7 @@
/* Return a new, empty keymap.
Free it with free() when you are done. */
Keymap
-rl_make_bare_keymap ()
+rl_make_bare_keymap (void)
{
register int i;
Keymap keymap;
@@ -77,11 +77,25 @@ rl_make_bare_keymap ()
return (keymap);
}
+/* A convenience function that returns 1 if there are no keys bound to
+ functions in KEYMAP */
+int
+rl_empty_keymap (Keymap keymap)
+{
+ int i;
+
+ for (i = 0; i < ANYOTHERKEY; i++)
+ {
+ if (keymap[i].type != ISFUNC || keymap[i].function)
+ return 0;
+ }
+ return 1;
+}
+
/* Return a new keymap which is a copy of MAP. Just copies pointers, does
not copy text of macros or descend into child keymaps. */
Keymap
-rl_copy_keymap (map)
- Keymap map;
+rl_copy_keymap (Keymap map)
{
register int i;
Keymap temp;
@@ -99,7 +113,7 @@ rl_copy_keymap (map)
the uppercase Meta characters bound to run their lowercase equivalents,
and the Meta digits bound to produce numeric arguments. */
Keymap
-rl_make_keymap ()
+rl_make_keymap (void)
{
register int i;
Keymap newmap;
@@ -125,8 +139,7 @@ rl_make_keymap ()
/* Free the storage associated with MAP. */
void
-rl_discard_keymap (map)
- Keymap map;
+rl_discard_keymap (Keymap map)
{
int i;
@@ -154,8 +167,7 @@ rl_discard_keymap (map)
/* Convenience function that discards, then frees, MAP. */
void
-rl_free_keymap (map)
- Keymap map;
+rl_free_keymap (Keymap map)
{
rl_discard_keymap (map);
xfree ((char *)map);
diff --git a/keymaps.h b/keymaps.h
index af8d5d9..1fa853d 100644
--- a/keymaps.h
+++ b/keymaps.h
@@ -90,6 +90,9 @@ extern Keymap rl_get_keymap PARAMS((void));
/* Set the current keymap to MAP. */
extern void rl_set_keymap PARAMS((Keymap));
+/* Set the name of MAP to NAME */
+extern int rl_set_keymap_name PARAMS((const char *, Keymap));
+
#ifdef __cplusplus
}
#endif
diff --git a/kill.c b/kill.c
index 696f193..cf8ca93 100644
--- a/kill.c
+++ b/kill.c
@@ -1,6 +1,6 @@
/* kill.c -- kill ring management. */
-/* Copyright (C) 1994-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -78,8 +78,7 @@ static int rl_yank_nth_arg_internal PARAMS((int, int, int));
/* How to say that you only want to save a certain amount
of kill material. */
int
-rl_set_retained_kills (num)
- int num;
+rl_set_retained_kills (int num)
{
return 0;
}
@@ -89,9 +88,7 @@ rl_set_retained_kills (num)
non-zero, and the last command was a kill, the text is appended to the
current kill ring slot, otherwise prepended. */
static int
-_rl_copy_to_kill_ring (text, append)
- char *text;
- int append;
+_rl_copy_to_kill_ring (char *text, int append)
{
char *old, *new;
int slot;
@@ -122,7 +119,7 @@ _rl_copy_to_kill_ring (text, append)
else
{
slot = rl_kill_ring_length += 1;
- rl_kill_ring = (char **)xrealloc (rl_kill_ring, slot * sizeof (char *));
+ rl_kill_ring = (char **)xrealloc (rl_kill_ring, (slot + 1) * sizeof (char *));
}
rl_kill_ring[--slot] = (char *)NULL;
}
@@ -131,7 +128,7 @@ _rl_copy_to_kill_ring (text, append)
slot = rl_kill_ring_length - 1;
/* If the last command was a kill, prepend or append. */
- if (_rl_last_command_was_kill && rl_editing_mode != vi_mode)
+ if (_rl_last_command_was_kill && rl_kill_ring[slot] && rl_editing_mode != vi_mode)
{
old = rl_kill_ring[slot];
new = (char *)xmalloc (1 + strlen (old) + strlen (text));
@@ -163,8 +160,7 @@ _rl_copy_to_kill_ring (text, append)
last command was not a kill command, then a new slot is made for
this kill. */
int
-rl_kill_text (from, to)
- int from, to;
+rl_kill_text (int from, int to)
{
char *text;
@@ -198,8 +194,7 @@ rl_kill_text (from, to)
/* Delete the word at point, saving the text in the kill ring. */
int
-rl_kill_word (count, key)
- int count, key;
+rl_kill_word (int count, int key)
{
int orig_point;
@@ -222,17 +217,16 @@ rl_kill_word (count, key)
/* Rubout the word before point, placing it on the kill ring. */
int
-rl_backward_kill_word (count, ignore)
- int count, ignore;
+rl_backward_kill_word (int count, int key)
{
int orig_point;
if (count < 0)
- return (rl_kill_word (-count, ignore));
+ return (rl_kill_word (-count, key));
else
{
orig_point = rl_point;
- rl_backward_word (count, ignore);
+ rl_backward_word (count, key);
if (rl_point != orig_point)
rl_kill_text (orig_point, rl_point);
@@ -246,17 +240,16 @@ rl_backward_kill_word (count, ignore)
/* Kill from here to the end of the line. If DIRECTION is negative, kill
back to the line start instead. */
int
-rl_kill_line (direction, ignore)
- int direction, ignore;
+rl_kill_line (int direction, int key)
{
int orig_point;
if (direction < 0)
- return (rl_backward_kill_line (1, ignore));
+ return (rl_backward_kill_line (1, key));
else
{
orig_point = rl_point;
- rl_end_of_line (1, ignore);
+ rl_end_of_line (1, key);
if (orig_point != rl_point)
rl_kill_text (orig_point, rl_point);
rl_point = orig_point;
@@ -269,13 +262,12 @@ rl_kill_line (direction, ignore)
/* Kill backwards to the start of the line. If DIRECTION is negative, kill
forwards to the line end instead. */
int
-rl_backward_kill_line (direction, ignore)
- int direction, ignore;
+rl_backward_kill_line (int direction, int key)
{
int orig_point;
if (direction < 0)
- return (rl_kill_line (1, ignore));
+ return (rl_kill_line (1, key));
else
{
if (rl_point == 0)
@@ -283,7 +275,7 @@ rl_backward_kill_line (direction, ignore)
else
{
orig_point = rl_point;
- rl_beg_of_line (1, ignore);
+ rl_beg_of_line (1, key);
if (rl_point != orig_point)
rl_kill_text (orig_point, rl_point);
if (rl_editing_mode == emacs_mode)
@@ -295,8 +287,7 @@ rl_backward_kill_line (direction, ignore)
/* Kill the whole line, no matter where point is. */
int
-rl_kill_full_line (count, ignore)
- int count, ignore;
+rl_kill_full_line (int count, int key)
{
rl_begin_undo_group ();
rl_point = 0;
@@ -313,8 +304,7 @@ rl_kill_full_line (count, ignore)
/* This does what C-w does in Unix. We can't prevent people from
using behaviour that they expect. */
int
-rl_unix_word_rubout (count, key)
- int count, key;
+rl_unix_word_rubout (int count, int key)
{
int orig_point;
@@ -332,7 +322,7 @@ rl_unix_word_rubout (count, key)
rl_point--;
while (rl_point && (whitespace (rl_line_buffer[rl_point - 1]) == 0))
- rl_point--;
+ rl_point--; /* XXX - multibyte? */
}
rl_kill_text (orig_point, rl_point);
@@ -346,8 +336,7 @@ rl_unix_word_rubout (count, key)
/* This deletes one filename component in a Unix pathname. That is, it
deletes backward to directory separator (`/') or whitespace. */
int
-rl_unix_filename_rubout (count, key)
- int count, key;
+rl_unix_filename_rubout (int count, int key)
{
int orig_point, c;
@@ -370,7 +359,7 @@ rl_unix_filename_rubout (count, key)
while (rl_point && (whitespace (c) == 0) && c != '/')
{
- rl_point--;
+ rl_point--; /* XXX - multibyte? */
c = rl_line_buffer[rl_point - 1];
}
}
@@ -390,8 +379,7 @@ rl_unix_filename_rubout (count, key)
into the line at all, and if you aren't, then you know what you are
doing. */
int
-rl_unix_line_discard (count, key)
- int count, key;
+rl_unix_line_discard (int count, int key)
{
if (rl_point == 0)
rl_ding ();
@@ -408,8 +396,7 @@ rl_unix_line_discard (count, key)
/* Copy the text in the `region' to the kill ring. If DELETE is non-zero,
delete the text from the line as well. */
static int
-region_kill_internal (delete)
- int delete;
+region_kill_internal (int delete)
{
char *text;
@@ -427,16 +414,14 @@ region_kill_internal (delete)
/* Copy the text in the region to the kill ring. */
int
-rl_copy_region_to_kill (count, ignore)
- int count, ignore;
+rl_copy_region_to_kill (int count, int key)
{
return (region_kill_internal (0));
}
/* Kill the text between the point and mark. */
int
-rl_kill_region (count, ignore)
- int count, ignore;
+rl_kill_region (int count, int key)
{
int r, npoint;
@@ -450,8 +435,7 @@ rl_kill_region (count, ignore)
/* Copy COUNT words to the kill ring. DIR says which direction we look
to find the words. */
static int
-_rl_copy_word_as_kill (count, dir)
- int count, dir;
+_rl_copy_word_as_kill (int count, int dir)
{
int om, op, r;
@@ -479,8 +463,7 @@ _rl_copy_word_as_kill (count, dir)
}
int
-rl_copy_forward_word (count, key)
- int count, key;
+rl_copy_forward_word (int count, int key)
{
if (count < 0)
return (rl_copy_backward_word (-count, key));
@@ -489,8 +472,7 @@ rl_copy_forward_word (count, key)
}
int
-rl_copy_backward_word (count, key)
- int count, key;
+rl_copy_backward_word (int count, int key)
{
if (count < 0)
return (rl_copy_forward_word (-count, key));
@@ -500,8 +482,7 @@ rl_copy_backward_word (count, key)
/* Yank back the last killed text. This ignores arguments. */
int
-rl_yank (count, ignore)
- int count, ignore;
+rl_yank (int count, int key)
{
if (rl_kill_ring == 0)
{
@@ -519,8 +500,7 @@ rl_yank (count, ignore)
delete that text from the line, rotate the index down, and
yank back some other text. */
int
-rl_yank_pop (count, key)
- int count, key;
+rl_yank_pop (int count, int key)
{
int l, n;
@@ -552,8 +532,7 @@ rl_yank_pop (count, key)
#if defined (VI_MODE)
int
-rl_vi_yank_pop (count, key)
- int count, key;
+rl_vi_yank_pop (int count, int key)
{
int l, n;
@@ -587,8 +566,7 @@ rl_vi_yank_pop (count, key)
/* Yank the COUNTh argument from the previous history line, skipping
HISTORY_SKIP lines before looking for the `previous line'. */
static int
-rl_yank_nth_arg_internal (count, ignore, history_skip)
- int count, ignore, history_skip;
+rl_yank_nth_arg_internal (int count, int key, int history_skip)
{
register HIST_ENTRY *entry;
char *arg;
@@ -629,7 +607,7 @@ rl_yank_nth_arg_internal (count, ignore, history_skip)
inserts it right *after* rl_point. */
if (rl_editing_mode == vi_mode)
{
- rl_vi_append_mode (1, ignore);
+ rl_vi_append_mode (1, key);
rl_insert_text (" ");
}
#endif /* VI_MODE */
@@ -643,18 +621,16 @@ rl_yank_nth_arg_internal (count, ignore, history_skip)
/* Yank the COUNTth argument from the previous history line. */
int
-rl_yank_nth_arg (count, ignore)
- int count, ignore;
+rl_yank_nth_arg (int count, int key)
{
- return (rl_yank_nth_arg_internal (count, ignore, 0));
+ return (rl_yank_nth_arg_internal (count, key, 0));
}
/* Yank the last argument from the previous history line. This `knows'
how rl_yank_nth_arg treats a count of `$'. With an argument, this
behaves the same as rl_yank_nth_arg. */
int
-rl_yank_last_arg (count, key)
- int count, key;
+rl_yank_last_arg (int count, int key)
{
static int history_skip = 0;
static int explicit_arg_p = 0;
@@ -694,17 +670,16 @@ rl_yank_last_arg (count, key)
`bracketed paste' sequence, read the rest of the pasted input until the
closing sequence and insert the pasted text as a single unit without
interpretation. */
-int
-rl_bracketed_paste_begin (count, key)
- int count, key;
+char *
+_rl_bracketed_text (size_t *lenp)
{
- int retval, c;
+ int c;
size_t len, cap;
char *buf;
- retval = 1;
len = 0;
buf = xmalloc (cap = 64);
+ buf[0] = '\0';
RL_SETSTATE (RL_STATE_MOREINPUT);
while ((c = rl_read_key ()) >= 0)
@@ -733,20 +708,33 @@ rl_bracketed_paste_begin (count, key)
if (len == cap)
buf = xrealloc (buf, cap + 1);
buf[len] = '\0';
- retval = rl_insert_text (buf);
}
+ if (lenp)
+ *lenp = len;
+ return (buf);
+}
+
+int
+rl_bracketed_paste_begin (int count, int key)
+{
+ int retval, c;
+ size_t len, cap;
+ char *buf;
+
+ buf = _rl_bracketed_text (&len);
+ retval = rl_insert_text (buf) == len ? 0 : 1;
+
xfree (buf);
return (retval);
}
-/* A special paste command for Windows users.. */
+/* A special paste command for Windows users. */
#if defined (_WIN32)
#include <windows.h>
int
-rl_paste_from_clipboard (count, key)
- int count, key;
+rl_paste_from_clipboard (int count, int key)
{
char *data, *ptr;
int len;
diff --git a/macro.c b/macro.c
index c7017cc..92cc55c 100644
--- a/macro.c
+++ b/macro.c
@@ -1,6 +1,6 @@
/* macro.c -- keyboard macros for readline. */
-/* Copyright (C) 1994-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2009,2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -49,6 +49,8 @@
#include "rlprivate.h"
#include "xmalloc.h"
+#define MAX_MACRO_LEVEL 16
+
/* **************************************************************** */
/* */
/* Hacking Keyboard Macros */
@@ -83,13 +85,24 @@ struct saved_macro {
/* The list of saved macros. */
static struct saved_macro *macro_list = (struct saved_macro *)NULL;
+static int macro_level = 0;
+
/* Set up to read subsequent input from STRING.
STRING is free ()'ed when we are done with it. */
void
-_rl_with_macro_input (string)
- char *string;
+_rl_with_macro_input (char *string)
{
- _rl_push_executing_macro ();
+ if (macro_level > MAX_MACRO_LEVEL)
+ {
+ _rl_errmsg ("maximum macro execution nesting level exceeded");
+ _rl_abort_internal ();
+ return;
+ }
+
+#if 0
+ if (rl_executing_macro) /* XXX - later */
+#endif
+ _rl_push_executing_macro ();
rl_executing_macro = string;
executing_macro_index = 0;
RL_SETSTATE(RL_STATE_MACROINPUT);
@@ -98,7 +111,7 @@ _rl_with_macro_input (string)
/* Return the next character available from a macro, or 0 if
there are no macro characters. */
int
-_rl_next_macro_key ()
+_rl_next_macro_key (void)
{
int c;
@@ -117,12 +130,26 @@ _rl_next_macro_key ()
_rl_pop_executing_macro ();
return c;
#else
+ /* XXX - consider doing the same as the callback code, just not testing
+ whether we're running in callback mode */
return (rl_executing_macro[executing_macro_index++]);
#endif
}
int
-_rl_prev_macro_key ()
+_rl_peek_macro_key (void)
+{
+ if (rl_executing_macro == 0)
+ return (0);
+ if (rl_executing_macro[executing_macro_index] == 0 && (macro_list == 0 || macro_list->string == 0))
+ return (0);
+ if (rl_executing_macro[executing_macro_index] == 0 && macro_list && macro_list->string)
+ return (macro_list->string[0]);
+ return (rl_executing_macro[executing_macro_index]);
+}
+
+int
+_rl_prev_macro_key (void)
{
if (rl_executing_macro == 0)
return (0);
@@ -136,7 +163,7 @@ _rl_prev_macro_key ()
/* Save the currently executing macro on a stack of saved macros. */
void
-_rl_push_executing_macro ()
+_rl_push_executing_macro (void)
{
struct saved_macro *saver;
@@ -146,12 +173,14 @@ _rl_push_executing_macro ()
saver->string = rl_executing_macro;
macro_list = saver;
+
+ macro_level++;
}
/* Discard the current macro, replacing it with the one
on the top of the stack of saved macros. */
void
-_rl_pop_executing_macro ()
+_rl_pop_executing_macro (void)
{
struct saved_macro *macro;
@@ -168,14 +197,15 @@ _rl_pop_executing_macro ()
xfree (macro);
}
+ macro_level--;
+
if (rl_executing_macro == 0)
RL_UNSETSTATE(RL_STATE_MACROINPUT);
}
/* Add a character to the macro being built. */
void
-_rl_add_macro_char (c)
- int c;
+_rl_add_macro_char (int c)
{
if (current_macro_index + 1 >= current_macro_size)
{
@@ -190,7 +220,7 @@ _rl_add_macro_char (c)
}
void
-_rl_kill_kbd_macro ()
+_rl_kill_kbd_macro (void)
{
if (current_macro)
{
@@ -213,8 +243,7 @@ _rl_kill_kbd_macro ()
definition to the end of the existing macro, and start by
re-executing the existing macro. */
int
-rl_start_kbd_macro (ignore1, ignore2)
- int ignore1, ignore2;
+rl_start_kbd_macro (int ignore1, int ignore2)
{
if (RL_ISSTATE (RL_STATE_MACRODEF))
{
@@ -238,8 +267,7 @@ rl_start_kbd_macro (ignore1, ignore2)
A numeric argument says to execute the macro right now,
that many times, counting the definition as the first time. */
int
-rl_end_kbd_macro (count, ignore)
- int count, ignore;
+rl_end_kbd_macro (int count, int ignore)
{
if (RL_ISSTATE (RL_STATE_MACRODEF) == 0)
{
@@ -258,8 +286,7 @@ rl_end_kbd_macro (count, ignore)
/* Execute the most recently defined keyboard macro.
COUNT says how many times to execute it. */
int
-rl_call_last_kbd_macro (count, ignore)
- int count, ignore;
+rl_call_last_kbd_macro (int count, int ignore)
{
if (current_macro == 0)
_rl_abort_internal ();
@@ -277,8 +304,7 @@ rl_call_last_kbd_macro (count, ignore)
}
int
-rl_print_last_kbd_macro (count, ignore)
- int count, ignore;
+rl_print_last_kbd_macro (int count, int ignore)
{
char *m;
@@ -300,8 +326,7 @@ rl_print_last_kbd_macro (count, ignore)
}
void
-rl_push_macro_input (macro)
- char *macro;
+rl_push_macro_input (char *macro)
{
_rl_with_macro_input (macro);
}
diff --git a/mbutil.c b/mbutil.c
index 314a49b..1771635 100644
--- a/mbutil.c
+++ b/mbutil.c
@@ -1,6 +1,6 @@
/* mbutil.c -- readline multibyte character utility functions */
-/* Copyright (C) 2001-2015 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -75,10 +75,59 @@ int _rl_utf8locale = 0;
#if defined(HANDLE_MULTIBYTE)
+/* **************************************************************** */
+/* */
+/* UTF-8 specific Character Utility Functions */
+/* */
+/* **************************************************************** */
+
+/* Return the length in bytes of the possibly-multibyte character beginning
+ at S. Encoding is UTF-8. */
+static int
+_rl_utf8_mblen (const char *s, size_t n)
+{
+ unsigned char c, c1;
+
+ if (s == 0)
+ return (0); /* no shift states */
+ if (n <= 0)
+ return (-1);
+
+ c = (unsigned char)*s;
+ if (c < 0x80)
+ return (c != 0);
+ if (c >= 0xc2)
+ {
+ c1 = (unsigned char)s[1];
+ if (c < 0xe0)
+ {
+ if (n >= 2 && (s[1] ^ 0x80) < 0x40)
+ return 2;
+ }
+ else if (c < 0xf0)
+ {
+ if (n >= 3
+ && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || c1 >= 0xa0)
+ && (c != 0xed || c1 < 0xa0))
+ return 3;
+ }
+ else if (c < 0xf8)
+ {
+ if (n >= 4
+ && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || c1 >= 0x90)
+ && (c < 0xf4 || (c == 0xf4 && c1 < 0x90)))
+ return 4;
+ }
+ }
+ /* invalid or incomplete multibyte character */
+ return -1;
+}
+
static int
-_rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
- char *string;
- int seed, count, find_non_zero;
+_rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_zero)
{
size_t tmp, len;
mbstate_t ps;
@@ -94,6 +143,11 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
return seed;
point = seed + _rl_adjust_point (string, seed, &ps);
+ /* if _rl_adjust_point returns -1, the character or string is invalid.
+ treat as a byte. */
+ if (point == seed - 1) /* invalid */
+ return seed + 1;
+
/* if this is true, means that seed was not pointing to a byte indicating
the beginning of a multibyte character. Correct the point and consume
one char. */
@@ -105,7 +159,14 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
len = strlen (string + point);
if (len == 0)
break;
- tmp = mbrtowc (&wc, string+point, len, &ps);
+ if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point]))
+ {
+ tmp = 1;
+ wc = (wchar_t) string[point];
+ memset(&ps, 0, sizeof(mbstate_t));
+ }
+ else
+ tmp = mbrtowc (&wc, string+point, len, &ps);
if (MB_INVALIDCH ((size_t)tmp))
{
/* invalid bytes. assume a byte represents a character */
@@ -146,9 +207,7 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero)
}
/*static*/ int
-_rl_find_prev_mbchar_internal (string, seed, find_non_zero)
- char *string;
- int seed, find_non_zero;
+_rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero)
{
mbstate_t ps;
int prev, non_zero_prev, point, length;
@@ -166,10 +225,17 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero)
prev = non_zero_prev = point = 0;
while (point < seed)
{
- tmp = mbrtowc (&wc, string + point, length - point, &ps);
+ if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point]))
+ {
+ tmp = 1;
+ wc = (wchar_t) string[point];
+ memset(&ps, 0, sizeof(mbstate_t));
+ }
+ else
+ tmp = mbrtowc (&wc, string + point, length - point, &ps);
if (MB_INVALIDCH ((size_t)tmp))
{
- /* in this case, bytes are invalid or shorted to compose
+ /* in this case, bytes are invalid or too short to compose
multibyte char, so assume that the first byte represents
a single character anyway. */
tmp = 1;
@@ -206,16 +272,23 @@ _rl_find_prev_mbchar_internal (string, seed, find_non_zero)
if an invalid multibyte sequence was encountered. It returns (size_t)(-2)
if it couldn't parse a complete multibyte character. */
int
-_rl_get_char_len (src, ps)
- char *src;
- mbstate_t *ps;
+_rl_get_char_len (char *src, mbstate_t *ps)
{
- size_t tmp;
+ size_t tmp, l;
+ int mb_cur_max;
- tmp = mbrlen((const char *)src, (size_t)strlen (src), ps);
+ /* Look at no more than MB_CUR_MAX characters */
+ l = (size_t)strlen (src);
+ if (_rl_utf8locale && l > 0 && UTF8_SINGLEBYTE(*src))
+ tmp = (*src != 0) ? 1 : 0;
+ else
+ {
+ mb_cur_max = MB_CUR_MAX;
+ tmp = mbrlen((const char *)src, (l < mb_cur_max) ? l : mb_cur_max, ps);
+ }
if (tmp == (size_t)(-2))
{
- /* shorted to compose multibyte char */
+ /* too short to compose multibyte char */
if (ps)
memset (ps, 0, sizeof(mbstate_t));
return -2;
@@ -237,13 +310,7 @@ _rl_get_char_len (src, ps)
/* compare the specified two characters. If the characters matched,
return 1. Otherwise return 0. */
int
-_rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2)
- char *buf1;
- int pos1;
- mbstate_t *ps1;
- char *buf2;
- int pos2;
- mbstate_t *ps2;
+_rl_compare_chars (char *buf1, int pos1, mbstate_t *ps1, char *buf2, int pos2, mbstate_t *ps2)
{
int i, w1, w2;
@@ -263,18 +330,16 @@ _rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2)
/* adjust pointed byte and find mbstate of the point of string.
adjusted point will be point <= adjusted_point, and returns
differences of the byte(adjusted_point - point).
- if point is invalied (point < 0 || more than string length),
+ if point is invalid (point < 0 || more than string length),
it returns -1 */
int
-_rl_adjust_point (string, point, ps)
- char *string;
- int point;
- mbstate_t *ps;
+_rl_adjust_point (char *string, int point, mbstate_t *ps)
{
- size_t tmp = 0;
- int length;
- int pos = 0;
+ size_t tmp;
+ int length, pos;
+ tmp = 0;
+ pos = 0;
length = strlen(string);
if (point < 0)
return -1;
@@ -283,10 +348,13 @@ _rl_adjust_point (string, point, ps)
while (pos < point)
{
- tmp = mbrlen (string + pos, length - pos, ps);
+ if (_rl_utf8locale && UTF8_SINGLEBYTE(string[pos]))
+ tmp = 1;
+ else
+ tmp = mbrlen (string + pos, length - pos, ps);
if (MB_INVALIDCH ((size_t)tmp))
{
- /* in this case, bytes are invalid or shorted to compose
+ /* in this case, bytes are invalid or too short to compose
multibyte char, so assume that the first byte represents
a single character anyway. */
pos++;
@@ -305,11 +373,7 @@ _rl_adjust_point (string, point, ps)
}
int
-_rl_is_mbchar_matched (string, seed, end, mbchar, length)
- char *string;
- int seed, end;
- char *mbchar;
- int length;
+_rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length)
{
int i;
@@ -323,9 +387,7 @@ _rl_is_mbchar_matched (string, seed, end, mbchar, length)
}
wchar_t
-_rl_char_value (buf, ind)
- char *buf;
- int ind;
+_rl_char_value (char *buf, int ind)
{
size_t tmp;
wchar_t wc;
@@ -334,9 +396,13 @@ _rl_char_value (buf, ind)
if (MB_LEN_MAX == 1 || rl_byte_oriented)
return ((wchar_t) buf[ind]);
+ if (_rl_utf8locale && UTF8_SINGLEBYTE(buf[ind]))
+ return ((wchar_t) buf[ind]);
l = strlen (buf);
if (ind >= l - 1)
return ((wchar_t) buf[ind]);
+ if (l < ind) /* Sanity check */
+ l = strlen (buf+ind);
memset (&ps, 0, sizeof (mbstate_t));
tmp = mbrtowc (&wc, buf + ind, l - ind, &ps);
if (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp))
@@ -350,9 +416,7 @@ _rl_char_value (buf, ind)
characters. */
#undef _rl_find_next_mbchar
int
-_rl_find_next_mbchar (string, seed, count, flags)
- char *string;
- int seed, count, flags;
+_rl_find_next_mbchar (char *string, int seed, int count, int flags)
{
#if defined (HANDLE_MULTIBYTE)
return _rl_find_next_mbchar_internal (string, seed, count, flags);
@@ -366,9 +430,7 @@ _rl_find_next_mbchar (string, seed, count, flags)
we look for non-zero-width multibyte characters. */
#undef _rl_find_prev_mbchar
int
-_rl_find_prev_mbchar (string, seed, flags)
- char *string;
- int seed, flags;
+_rl_find_prev_mbchar (char *string, int seed, int flags)
{
#if defined (HANDLE_MULTIBYTE)
return _rl_find_prev_mbchar_internal (string, seed, flags);
diff --git a/misc.c b/misc.c
index f7acdee..64b1457 100644
--- a/misc.c
+++ b/misc.c
@@ -1,6 +1,6 @@
/* misc.c -- miscellaneous bindable readline functions. */
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -76,7 +76,7 @@ int _rl_history_saved_point = -1;
/* **************************************************************** */
int
-_rl_arg_overflow ()
+_rl_arg_overflow (void)
{
if (rl_numeric_arg > 1000000)
{
@@ -92,7 +92,7 @@ _rl_arg_overflow ()
}
void
-_rl_arg_init ()
+_rl_arg_init (void)
{
rl_save_prompt ();
_rl_argcxt = 0;
@@ -100,7 +100,7 @@ _rl_arg_init ()
}
int
-_rl_arg_getchar ()
+_rl_arg_getchar (void)
{
int c;
@@ -116,9 +116,7 @@ _rl_arg_getchar ()
argument should be aborted, 0 if we should not read any more chars, and
1 if we should continue to read chars. */
int
-_rl_arg_dispatch (cxt, c)
- _rl_arg_cxt cxt;
- int c;
+_rl_arg_dispatch (_rl_arg_cxt cxt, int c)
{
int key, r;
@@ -193,7 +191,7 @@ _rl_arg_dispatch (cxt, c)
/* Handle C-u style numeric args, as well as M--, and M-digits. */
static int
-rl_digit_loop ()
+rl_digit_loop (void)
{
int c, r;
@@ -220,7 +218,7 @@ rl_digit_loop ()
/* Create a default argument. */
void
-_rl_reset_argument ()
+_rl_reset_argument (void)
{
rl_numeric_arg = rl_arg_sign = 1;
rl_explicit_arg = 0;
@@ -229,8 +227,7 @@ _rl_reset_argument ()
/* Start a numeric argument with initial value KEY */
int
-rl_digit_argument (ignore, key)
- int ignore, key;
+rl_digit_argument (int ignore, int key)
{
_rl_arg_init ();
if (RL_ISSTATE (RL_STATE_CALLBACK))
@@ -250,8 +247,7 @@ rl_digit_argument (ignore, key)
Read a key. If the key has nothing to do with arguments, then
dispatch on it. If the key is the abort character then abort. */
int
-rl_universal_argument (count, key)
- int count, key;
+rl_universal_argument (int count, int key)
{
_rl_arg_init ();
rl_numeric_arg *= 4;
@@ -260,8 +256,7 @@ rl_universal_argument (count, key)
}
int
-_rl_arg_callback (cxt)
- _rl_arg_cxt cxt;
+_rl_arg_callback (_rl_arg_cxt cxt)
{
int c, r;
@@ -280,12 +275,14 @@ _rl_arg_callback (cxt)
}
r = _rl_arg_dispatch (cxt, c);
+ if (r > 0)
+ rl_message ("(arg: %d) ", rl_arg_sign * rl_numeric_arg);
return (r != 1);
}
/* What to do when you abort reading an argument. */
int
-rl_discard_argument ()
+rl_discard_argument (void)
{
rl_ding ();
rl_clear_message ();
@@ -310,7 +307,7 @@ HIST_ENTRY *_rl_saved_line_for_history = (HIST_ENTRY *)NULL;
/* Set the history pointer back to the last entry in the history. */
void
-_rl_start_using_history ()
+_rl_start_using_history (void)
{
using_history ();
if (_rl_saved_line_for_history)
@@ -321,8 +318,7 @@ _rl_start_using_history ()
/* Free the contents (and containing structure) of a HIST_ENTRY. */
void
-_rl_free_history_entry (entry)
- HIST_ENTRY *entry;
+_rl_free_history_entry (HIST_ENTRY *entry)
{
if (entry == 0)
return;
@@ -335,7 +331,7 @@ _rl_free_history_entry (entry)
/* Perhaps put back the current line if it has changed. */
int
-rl_maybe_replace_line ()
+rl_maybe_replace_line (void)
{
HIST_ENTRY *temp;
@@ -353,7 +349,7 @@ rl_maybe_replace_line ()
/* Restore the _rl_saved_line_for_history if there is one. */
int
-rl_maybe_unsave_line ()
+rl_maybe_unsave_line (void)
{
if (_rl_saved_line_for_history)
{
@@ -372,7 +368,7 @@ rl_maybe_unsave_line ()
/* Save the current line in _rl_saved_line_for_history. */
int
-rl_maybe_save_line ()
+rl_maybe_save_line (void)
{
if (_rl_saved_line_for_history == 0)
{
@@ -386,7 +382,7 @@ rl_maybe_save_line ()
}
int
-_rl_free_saved_history_line ()
+_rl_free_saved_history_line (void)
{
if (_rl_saved_line_for_history)
{
@@ -397,7 +393,7 @@ _rl_free_saved_history_line ()
}
static void
-_rl_history_set_point ()
+_rl_history_set_point (void)
{
rl_point = (_rl_history_preserve_point && _rl_history_saved_point != -1)
? _rl_history_saved_point
@@ -415,9 +411,7 @@ _rl_history_set_point ()
}
void
-rl_replace_from_history (entry, flags)
- HIST_ENTRY *entry;
- int flags; /* currently unused */
+rl_replace_from_history (HIST_ENTRY *entry, int flags)
{
/* Can't call with `1' because rl_undo_list might point to an undo list
from a history entry, just like we're setting up here. */
@@ -441,7 +435,7 @@ rl_replace_from_history (entry, flags)
intended to be called while actively editing, and the current line is
not assumed to have been added to the history list. */
void
-_rl_revert_all_lines ()
+_rl_revert_all_lines (void)
{
int hpos;
HIST_ENTRY *entry;
@@ -490,7 +484,7 @@ _rl_revert_all_lines ()
to an UNDO_LIST * saved as some history entry's data member. This
should not be called while editing is active. */
void
-rl_clear_history ()
+rl_clear_history (void)
{
HIST_ENTRY **hlist, *hent;
register int i;
@@ -524,16 +518,14 @@ rl_clear_history ()
/* Meta-< goes to the start of the history. */
int
-rl_beginning_of_history (count, key)
- int count, key;
+rl_beginning_of_history (int count, int key)
{
return (rl_get_previous_history (1 + where_history (), key));
}
/* Meta-> goes to the end of the history. (The current line). */
int
-rl_end_of_history (count, key)
- int count, key;
+rl_end_of_history (int count, int key)
{
rl_maybe_replace_line ();
using_history ();
@@ -543,8 +535,7 @@ rl_end_of_history (count, key)
/* Move down to the next history line. */
int
-rl_get_next_history (count, key)
- int count, key;
+rl_get_next_history (int count, int key)
{
HIST_ENTRY *temp;
@@ -582,15 +573,14 @@ rl_get_next_history (count, key)
/* Get the previous item out of our interactive history, making it the current
line. If there is no previous history, just ding. */
int
-rl_get_previous_history (count, key)
- int count, key;
+rl_get_previous_history (int count, int key)
{
HIST_ENTRY *old_temp, *temp;
if (count < 0)
return (rl_get_next_history (-count, key));
- if (count == 0)
+ if (count == 0 || history_list () == 0)
return 0;
/* either not saved by rl_newline or at end of line, so set appropriately. */
@@ -620,7 +610,10 @@ rl_get_previous_history (count, key)
temp = old_temp;
if (temp == 0)
- rl_ding ();
+ {
+ rl_maybe_unsave_line ();
+ rl_ding ();
+ }
else
{
rl_replace_from_history (temp, 0);
@@ -637,8 +630,7 @@ rl_get_previous_history (count, key)
/* **************************************************************** */
/* How to toggle back and forth between editing modes. */
int
-rl_vi_editing_mode (count, key)
- int count, key;
+rl_vi_editing_mode (int count, int key)
{
#if defined (VI_MODE)
_rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */
@@ -650,8 +642,7 @@ rl_vi_editing_mode (count, key)
}
int
-rl_emacs_editing_mode (count, key)
- int count, key;
+rl_emacs_editing_mode (int count, int key)
{
rl_editing_mode = emacs_mode;
_rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */
@@ -665,8 +656,7 @@ rl_emacs_editing_mode (count, key)
/* Function for the rest of the library to use to set insert/overwrite mode. */
void
-_rl_set_insert_mode (im, force)
- int im, force;
+_rl_set_insert_mode (int im, int force)
{
#ifdef CURSOR_MODE
_rl_set_cursor (im, force);
@@ -678,8 +668,7 @@ _rl_set_insert_mode (im, force)
/* Toggle overwrite mode. A positive explicit argument selects overwrite
mode. A negative or zero explicit argument selects insert mode. */
int
-rl_overwrite_mode (count, key)
- int count, key;
+rl_overwrite_mode (int count, int key)
{
if (rl_explicit_arg == 0)
_rl_set_insert_mode (rl_insert_mode ^ 1, 0);
diff --git a/nls.c b/nls.c
index d3b3634..d2f67e0 100644
--- a/nls.c
+++ b/nls.c
@@ -1,6 +1,6 @@
/* nls.c -- skeletal internationalization code. */
-/* Copyright (C) 1996-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -74,6 +74,7 @@ static char *legal_lang_values[] =
"iso88599",
"iso885910",
"koi8r",
+ "utf8",
0
};
@@ -85,8 +86,7 @@ static char *find_codeset PARAMS((char *, size_t *));
static char *_rl_get_locale_var PARAMS((const char *));
static char *
-_rl_get_locale_var (v)
- const char *v;
+_rl_get_locale_var (const char *v)
{
char *lspec;
@@ -100,8 +100,7 @@ _rl_get_locale_var (v)
}
static int
-utf8locale (lspec)
- char *lspec;
+utf8locale (char *lspec)
{
char *cp;
size_t len;
@@ -118,16 +117,12 @@ utf8locale (lspec)
#endif
}
-/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value
- to decide the defaults for 8-bit character input and output. Returns
- 1 if we set eight-bit mode. */
-int
-_rl_init_eightbit ()
+/* Query the right environment variables and call setlocale() to initialize
+ the C library locale settings. */
+char *
+_rl_init_locale (void)
{
-/* If we have setlocale(3), just check the current LC_CTYPE category
- value, and go into eight-bit mode if it's not C or POSIX. */
-#if defined (HAVE_SETLOCALE)
- char *lspec, *t;
+ char *ret, *lspec;
/* Set the LC_CTYPE locale category from environment variables. */
lspec = _rl_get_locale_var ("LC_CTYPE");
@@ -140,10 +135,25 @@ _rl_init_eightbit ()
lspec = setlocale (LC_CTYPE, (char *)NULL);
if (lspec == 0)
lspec = "";
- t = setlocale (LC_CTYPE, lspec);
+ ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */
+
+ _rl_utf8locale = (ret && *ret) ? utf8locale (ret) : 0;
+
+ return ret;
+}
+
+/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value
+ to decide the defaults for 8-bit character input and output. Returns
+ 1 if we set eight-bit mode. */
+int
+_rl_init_eightbit (void)
+{
+/* If we have setlocale(3), just check the current LC_CTYPE category
+ value, and go into eight-bit mode if it's not C or POSIX. */
+#if defined (HAVE_SETLOCALE)
+ char *lspec, *t;
- if (t && *t)
- _rl_utf8locale = utf8locale (t);
+ t = _rl_init_locale (); /* returns static pointer */
if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0))
{
@@ -174,16 +184,17 @@ _rl_init_eightbit ()
_rl_output_meta_chars = 1;
break;
}
+
+ _rl_utf8locale = *t ? STREQ (t, "utf8") : 0;
+
xfree (t);
return (legal_lang_values[i] ? 1 : 0);
-
#endif /* !HAVE_SETLOCALE */
}
#if !defined (HAVE_SETLOCALE)
static char *
-normalize_codeset (codeset)
- char *codeset;
+normalize_codeset (char *codeset)
{
size_t namelen, i;
int len, all_digits;
@@ -230,9 +241,7 @@ normalize_codeset (codeset)
/* Isolate codeset portion of locale specification. */
static char *
-find_codeset (name, lenp)
- char *name;
- size_t *lenp;
+find_codeset (char *name, size_t *lenp)
{
char *cp, *language, *result;
diff --git a/parens.c b/parens.c
index ecc465c..af47977 100644
--- a/parens.c
+++ b/parens.c
@@ -1,6 +1,6 @@
/* parens.c -- implementation of matching parentheses feature. */
-/* Copyright (C) 1987, 1989, 1992-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987, 1989, 1992-2015, 2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -64,8 +64,7 @@ static int _paren_blink_usec = 500000;
/* Change emacs_standard_keymap to have bindings for paren matching when
ON_OR_OFF is 1, change them back to self_insert when ON_OR_OFF == 0. */
void
-_rl_enable_paren_matching (on_or_off)
- int on_or_off;
+_rl_enable_paren_matching (int on_or_off)
{
if (on_or_off)
{
@@ -98,8 +97,7 @@ _rl_enable_paren_matching (on_or_off)
}
int
-rl_set_paren_blink_timeout (u)
- int u;
+rl_set_paren_blink_timeout (int u)
{
int o;
@@ -110,8 +108,7 @@ rl_set_paren_blink_timeout (u)
}
int
-rl_insert_close (count, invoking_key)
- int count, invoking_key;
+rl_insert_close (int count, int invoking_key)
{
if (rl_explicit_arg || !rl_blink_matching_paren)
_rl_insert_char (count, invoking_key);
@@ -148,9 +145,7 @@ rl_insert_close (count, invoking_key)
}
static int
-find_matching_open (string, from, closer)
- char *string;
- int from, closer;
+find_matching_open (char *string, int from, int closer)
{
register int i;
int opener, level, delimiter;
diff --git a/parse-colors.c b/parse-colors.c
index 98b2e9d..05ec9bc 100644
--- a/parse-colors.c
+++ b/parse-colors.c
@@ -2,8 +2,8 @@
Modified by Chet Ramey for Readline.
- Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012 Free Software Foundation,
- Inc.
+ Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2017
+ 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
@@ -297,7 +297,7 @@ get_funky_string (char **dest, const char **src, bool equals_end, size_t *output
}
#endif /* COLOR_SUPPORT */
-void _rl_parse_colors()
+void _rl_parse_colors(void)
{
#if defined (COLOR_SUPPORT)
const char *p; /* Pointer to character being parsed */
diff --git a/patchlevel b/patchlevel
index e0ba09d..d8c9df7 100644
--- a/patchlevel
+++ b/patchlevel
@@ -1,3 +1,3 @@
# Do not edit -- exists only for use by patch
-5
+0
diff --git a/readline.c b/readline.c
index a05b35e..678f989 100644
--- a/readline.c
+++ b/readline.c
@@ -1,7 +1,7 @@
/* readline.c -- a general facility for reading lines of input
with emacs style editing and completion. */
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -214,6 +214,9 @@ int _rl_eof_char = CTRL ('D');
/* Non-zero makes this the next keystroke to read. */
int rl_pending_input = 0;
+/* If non-zero when readline_internal returns, it means we found EOF */
+int _rl_eof_found = 0;
+
/* Pointer to a useful terminal name. */
const char *rl_terminal_name = (const char *)NULL;
@@ -222,7 +225,7 @@ int _rl_horizontal_scroll_mode = 0;
/* Non-zero means to display an asterisk at the starts of history lines
which have been modified. */
-int _rl_mark_modified_lines = 0;
+int _rl_mark_modified_lines = 0;
/* The style of `bell' notification preferred. This can be set to NO_BELL,
AUDIBLE_BELL, or VISIBLE_BELL. */
@@ -242,7 +245,7 @@ int rl_erase_empty_line = 0;
/* Non-zero means to read only this many characters rather than up to a
character bound to accept-line. */
-int rl_num_chars_to_read;
+int rl_num_chars_to_read = 0;
/* Line buffer and maintenance. */
char *rl_line_buffer = (char *)NULL;
@@ -325,8 +328,7 @@ int _rl_meta_flag = 0; /* Forward declaration */
/* Set up the prompt and expand it. Called from readline() and
rl_callback_handler_install (). */
int
-rl_set_prompt (prompt)
- const char *prompt;
+rl_set_prompt (const char *prompt)
{
FREE (rl_prompt);
rl_prompt = prompt ? savestring (prompt) : (char *)NULL;
@@ -339,8 +341,7 @@ rl_set_prompt (prompt)
/* Read a line of input. Prompt with PROMPT. An empty PROMPT means
none. A return value of NULL means that EOF was encountered. */
char *
-readline (prompt)
- const char *prompt;
+readline (const char *prompt)
{
char *value;
#if 0
@@ -401,7 +402,7 @@ readline (prompt)
#endif
STATIC_CALLBACK void
-readline_internal_setup ()
+readline_internal_setup (void)
{
char *nprompt;
@@ -419,7 +420,10 @@ readline_internal_setup ()
#if defined (VI_MODE)
if (rl_editing_mode == vi_mode)
rl_vi_insertion_mode (1, 'i'); /* don't want to reset last */
+ else
#endif /* VI_MODE */
+ if (_rl_show_mode_in_prompt)
+ _rl_reset_prompt ();
/* If we're not echoing, we still want to at least print a prompt, because
rl_redisplay will not do it for us. If the calling application has a
@@ -450,8 +454,7 @@ readline_internal_setup ()
}
STATIC_CALLBACK char *
-readline_internal_teardown (eof)
- int eof;
+readline_internal_teardown (int eof)
{
char *temp;
HIST_ENTRY *entry;
@@ -493,7 +496,7 @@ readline_internal_teardown (eof)
}
void
-_rl_internal_char_cleanup ()
+_rl_internal_char_cleanup (void)
{
#if defined (VI_MODE)
/* In vi mode, when you exit insert mode, the cursor moves back
@@ -524,13 +527,13 @@ _rl_internal_char_cleanup ()
STATIC_CALLBACK int
#if defined (READLINE_CALLBACKS)
-readline_internal_char ()
+readline_internal_char (void)
#else
-readline_internal_charloop ()
+readline_internal_charloop (void)
#endif
{
static int lastc, eof_found;
- int c, code, lk;
+ int c, code, lk, r;
lastc = EOF;
@@ -626,7 +629,7 @@ readline_internal_charloop ()
}
lastc = c;
- _rl_dispatch ((unsigned char)c, _rl_keymap);
+ r = _rl_dispatch ((unsigned char)c, _rl_keymap);
RL_CHECK_SIGNALS ();
/* If there was no change in _rl_last_command_was_kill, then no kill
@@ -648,7 +651,7 @@ readline_internal_charloop ()
#if defined (READLINE_CALLBACKS)
static int
-readline_internal_charloop ()
+readline_internal_charloop (void)
{
int eof = 1;
@@ -662,17 +665,15 @@ readline_internal_charloop ()
the global rl_outstream.
If rl_prompt is non-null, then that is our prompt. */
static char *
-readline_internal ()
+readline_internal (void)
{
- int eof;
-
readline_internal_setup ();
- eof = readline_internal_charloop ();
- return (readline_internal_teardown (eof));
+ _rl_eof_found = readline_internal_charloop ();
+ return (readline_internal_teardown (_rl_eof_found));
}
void
-_rl_init_line_state ()
+_rl_init_line_state (void)
{
rl_point = rl_end = rl_mark = 0;
the_line = rl_line_buffer;
@@ -680,14 +681,14 @@ _rl_init_line_state ()
}
void
-_rl_set_the_line ()
+_rl_set_the_line (void)
{
the_line = rl_line_buffer;
}
#if defined (READLINE_CALLBACKS)
_rl_keyseq_cxt *
-_rl_keyseq_cxt_alloc ()
+_rl_keyseq_cxt_alloc (void)
{
_rl_keyseq_cxt *cxt;
@@ -703,14 +704,13 @@ _rl_keyseq_cxt_alloc ()
}
void
-_rl_keyseq_cxt_dispose (cxt)
- _rl_keyseq_cxt *cxt;
+_rl_keyseq_cxt_dispose (_rl_keyseq_cxt *cxt)
{
xfree (cxt);
}
void
-_rl_keyseq_chain_dispose ()
+_rl_keyseq_chain_dispose (void)
{
_rl_keyseq_cxt *cxt;
@@ -724,8 +724,7 @@ _rl_keyseq_chain_dispose ()
#endif
static int
-_rl_subseq_getchar (key)
- int key;
+_rl_subseq_getchar (int key)
{
int k;
@@ -742,8 +741,7 @@ _rl_subseq_getchar (key)
#if defined (READLINE_CALLBACKS)
int
-_rl_dispatch_callback (cxt)
- _rl_keyseq_cxt *cxt;
+_rl_dispatch_callback (_rl_keyseq_cxt *cxt)
{
int nkey, r;
@@ -794,19 +792,14 @@ _rl_dispatch_callback (cxt)
If the associated command is really a keymap, then read
another key, and dispatch into that map. */
int
-_rl_dispatch (key, map)
- register int key;
- Keymap map;
+_rl_dispatch (register int key, Keymap map)
{
_rl_dispatching_keymap = map;
return _rl_dispatch_subseq (key, map, 0);
}
int
-_rl_dispatch_subseq (key, map, got_subseq)
- register int key;
- Keymap map;
- int got_subseq;
+_rl_dispatch_subseq (register int key, Keymap map, int got_subseq)
{
int r, newkey;
char *macro;
@@ -920,6 +913,15 @@ _rl_dispatch_subseq (key, map, got_subseq)
_rl_pushed_input_available () == 0 &&
_rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0)
return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key)));
+ /* This is a very specific test. It can possibly be generalized in
+ the future, but for now it handles a specific case of ESC being
+ the last character in a keyboard macro. */
+ if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap &&
+ (RL_ISSTATE (RL_STATE_INPUTPENDING) == 0) &&
+ (RL_ISSTATE (RL_STATE_MACROINPUT) && _rl_peek_macro_key () == 0) &&
+ _rl_pushed_input_available () == 0 &&
+ _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0)
+ return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key)));
#endif
RESIZE_KEYSEQ_BUFFER ();
@@ -1014,10 +1016,7 @@ _rl_dispatch_subseq (key, map, got_subseq)
}
static int
-_rl_subseq_result (r, map, key, got_subseq)
- int r;
- Keymap map;
- int key, got_subseq;
+_rl_subseq_result (int r, Keymap map, int key, int got_subseq)
{
Keymap m;
int type, nt;
@@ -1091,11 +1090,11 @@ _rl_subseq_result (r, map, key, got_subseq)
/* Initialize readline (and terminal if not already). */
int
-rl_initialize ()
+rl_initialize (void)
{
/* If we have never been called before, initialize the
terminal and data structures. */
- if (!rl_initialized)
+ if (rl_initialized == 0)
{
RL_SETSTATE(RL_STATE_INITIALIZING);
readline_initialize_everything ();
@@ -1103,6 +1102,8 @@ rl_initialize ()
rl_initialized++;
RL_SETSTATE(RL_STATE_INITIALIZED);
}
+ else
+ (void)_rl_init_locale (); /* check current locale */
/* Initialize the current line information. */
_rl_init_line_state ();
@@ -1137,7 +1138,7 @@ rl_initialize ()
#if 0
#if defined (__EMX__)
static void
-_emx_build_environ ()
+_emx_build_environ (void)
{
TIB *tibp;
PIB *pibp;
@@ -1162,7 +1163,7 @@ _emx_build_environ ()
/* Initialize the entire state of the world. */
static void
-readline_initialize_everything ()
+readline_initialize_everything (void)
{
#if 0
#if defined (__EMX__)
@@ -1247,7 +1248,7 @@ readline_initialize_everything ()
input editing characters, then bind them to their readline
equivalents, iff the characters are not bound to keymaps. */
static void
-readline_default_bindings ()
+readline_default_bindings (void)
{
if (_rl_bind_stty_chars)
rl_tty_set_default_bindings (_rl_keymap);
@@ -1256,7 +1257,7 @@ readline_default_bindings ()
/* Reset the default bindings for the terminal special characters we're
interested in back to rl_insert and read the new ones. */
static void
-reset_default_bindings ()
+reset_default_bindings (void)
{
if (_rl_bind_stty_chars)
{
@@ -1267,8 +1268,7 @@ reset_default_bindings ()
/* Bind some common arrow key sequences in MAP. */
static void
-bind_arrow_keys_internal (map)
- Keymap map;
+bind_arrow_keys_internal (Keymap map)
{
Keymap xkeymap;
@@ -1296,6 +1296,15 @@ bind_arrow_keys_internal (map)
rl_bind_keyseq_if_unbound ("\033OH", rl_beg_of_line);
rl_bind_keyseq_if_unbound ("\033OF", rl_end_of_line);
+ /* Key bindings for control-arrow keys */
+ rl_bind_keyseq_if_unbound ("\033[1;5C", rl_forward_word);
+ rl_bind_keyseq_if_unbound ("\033[1;5D", rl_backward_word);
+ rl_bind_keyseq_if_unbound ("\033[3;5~", rl_kill_word);
+
+ /* Key bindings for alt-arrow keys */
+ rl_bind_keyseq_if_unbound ("\033[1;3C", rl_forward_word);
+ rl_bind_keyseq_if_unbound ("\033[1;3D", rl_backward_word);
+
#if defined (__MINGW32__)
rl_bind_keyseq_if_unbound ("\340H", rl_get_previous_history);
rl_bind_keyseq_if_unbound ("\340P", rl_get_next_history);
@@ -1324,7 +1333,7 @@ bind_arrow_keys_internal (map)
the inputrc file a chance to bind them and create `real' keymaps
for the arrow key prefix. */
static void
-bind_arrow_keys ()
+bind_arrow_keys (void)
{
bind_arrow_keys_internal (emacs_standard_keymap);
@@ -1339,7 +1348,7 @@ bind_arrow_keys ()
}
static void
-bind_bracketed_paste_prefix ()
+bind_bracketed_paste_prefix (void)
{
Keymap xkeymap;
@@ -1361,8 +1370,7 @@ bind_bracketed_paste_prefix ()
/* **************************************************************** */
int
-rl_save_state (sp)
- struct readline_state *sp;
+rl_save_state (struct readline_state *sp)
{
if (sp == 0)
return -1;
@@ -1402,8 +1410,7 @@ rl_save_state (sp)
}
int
-rl_restore_state (sp)
- struct readline_state *sp;
+rl_restore_state (struct readline_state *sp)
{
if (sp == 0)
return -1;
diff --git a/readline.h b/readline.h
index 924bbfb..da78271 100644
--- a/readline.h
+++ b/readline.h
@@ -39,8 +39,8 @@ extern "C" {
#endif
/* Hex-encoded Readline version number. */
-#define RL_READLINE_VERSION 0x0700 /* Readline 7.0 */
-#define RL_VERSION_MAJOR 7
+#define RL_READLINE_VERSION 0x0800 /* Readline 8.0 */
+#define RL_VERSION_MAJOR 8
#define RL_VERSION_MINOR 0
/* Readline data structures. */
@@ -98,6 +98,9 @@ extern int rl_clear_screen PARAMS((int, int));
extern int rl_skip_csi_sequence PARAMS((int, int));
extern int rl_arrow_keys PARAMS((int, int));
+extern int rl_previous_screen_line PARAMS((int, int));
+extern int rl_next_screen_line PARAMS((int, int));
+
/* Bindable commands for inserting and deleting text. */
extern int rl_insert PARAMS((int, int));
extern int rl_quoted_insert PARAMS((int, int));
@@ -329,6 +332,7 @@ extern char *rl_untranslate_keyseq PARAMS((int));
extern rl_command_func_t *rl_named_function PARAMS((const char *));
extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *));
+extern rl_command_func_t *rl_function_of_keyseq_len PARAMS((const char *, size_t, Keymap, int *));
extern void rl_list_funmap_names PARAMS((void));
extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap));
@@ -343,6 +347,7 @@ extern int rl_parse_and_bind PARAMS((char *));
/* Functions for manipulating keymaps. */
extern Keymap rl_make_bare_keymap PARAMS((void));
+extern int rl_empty_keymap PARAMS((Keymap));
extern Keymap rl_copy_keymap PARAMS((Keymap));
extern Keymap rl_make_keymap PARAMS((void));
extern void rl_discard_keymap PARAMS((Keymap));
@@ -352,6 +357,9 @@ extern Keymap rl_get_keymap_by_name PARAMS((const char *));
extern char *rl_get_keymap_name PARAMS((Keymap));
extern void rl_set_keymap PARAMS((Keymap));
extern Keymap rl_get_keymap PARAMS((void));
+
+extern int rl_set_keymap_name PARAMS((const char *, Keymap));
+
/* Undocumented; used internally only. */
extern void rl_set_keymap_from_edit_mode PARAMS((void));
extern char *rl_get_keymap_name_from_edit_mode PARAMS((void));
@@ -413,6 +421,7 @@ extern void rl_deprep_terminal PARAMS((void));
extern void rl_tty_set_default_bindings PARAMS((Keymap));
extern void rl_tty_unset_default_bindings PARAMS((Keymap));
+extern int rl_tty_set_echoing PARAMS((int));
extern int rl_reset_terminal PARAMS((const char *));
extern void rl_resize_terminal PARAMS((void));
extern void rl_set_screen_size PARAMS((int, int));
@@ -443,6 +452,7 @@ extern void rl_reset_after_signal PARAMS((void));
extern void rl_free_line_state PARAMS((void));
extern int rl_pending_signal PARAMS((void));
+extern void rl_check_signals PARAMS((void));
extern void rl_echo_signal_char PARAMS((int));
diff --git a/readline.pc.in b/readline.pc.in
index fbfca8a..a7f2cf3 100644
--- a/readline.pc.in
+++ b/readline.pc.in
@@ -7,6 +7,6 @@ Name: Readline
Description: Gnu Readline library for command line editing
URL: http://tiswww.cwru.edu/php/chet/readline/rltop.html
Version: @LIBVERSION@
-Requires.private: tinfo
+Requires.private: @TERMCAP_PKG_CONFIG_LIB@
Libs: -L${libdir} -lreadline
Cflags: -I${includedir}/readline
diff --git a/rlconf.h b/rlconf.h
index 98c970a..b6d6a2f 100644
--- a/rlconf.h
+++ b/rlconf.h
@@ -42,7 +42,7 @@
/* The next-to-last-ditch effort file name for a user-specific init file. */
#define DEFAULT_INPUTRC "~/.inputrc"
-/* The ultimate last-ditch filenname for an init file -- system-wide. */
+/* The ultimate last-ditch filename for an init file -- system-wide. */
#define SYS_INPUTRC "/etc/inputrc"
/* If defined, expand tabs to spaces. */
diff --git a/rlmbutil.h b/rlmbutil.h
index 4748a61..6fd03f6 100644
--- a/rlmbutil.h
+++ b/rlmbutil.h
@@ -172,6 +172,10 @@ _rl_wcwidth (wc)
# define IS_COMBINING_CHAR(x) (WCWIDTH(x) == 0)
#endif
+#define UTF8_SINGLEBYTE(c) (((c) & 0x80) == 0)
+#define UTF8_MBFIRSTCHAR(c) (((c) & 0xc0) == 0xc0)
+#define UTF8_MBCHAR(c) (((c) & 0xc0) == 0x80)
+
#else /* !HANDLE_MULTIBYTE */
#undef MB_LEN_MAX
@@ -196,6 +200,12 @@ _rl_wcwidth (wc)
#define MB_INVALIDCH(x) (0)
#define MB_NULLWCH(x) (0)
+#define UTF8_SINGLEBYTE(c) (1)
+
+#if !defined (HAVE_WCHAR_T) && !defined (wchar_t)
+# define wchar_t int
+#endif
+
#endif /* !HANDLE_MULTIBYTE */
extern int rl_byte_oriented;
diff --git a/rlprivate.h b/rlprivate.h
index fc3856a..e85e4d8 100644
--- a/rlprivate.h
+++ b/rlprivate.h
@@ -26,6 +26,7 @@
#include "rlconf.h" /* for VISIBLE_STATS */
#include "rlstdc.h"
#include "posixjmp.h" /* defines procenv_t */
+#include "rlmbutil.h" /* for HANDLE_MULTIBYTE */
/*************************************************************************
* *
@@ -64,6 +65,7 @@
#define SF_FOUND 0x02
#define SF_FAILED 0x04
#define SF_CHGKMAP 0x08
+#define SF_PATTERN 0x10 /* unused so far */
typedef struct __rl_search_context
{
@@ -305,10 +307,13 @@ extern int _rl_search_getchar PARAMS((_rl_search_cxt *));
#define BRACK_PASTE_SLEN 6
#define BRACK_PASTE_INIT "\033[?2004h"
-#define BRACK_PASTE_FINI "\033[?2004l"
+#define BRACK_PASTE_FINI "\033[?2004l\r"
+
+extern char *_rl_bracketed_text PARAMS((size_t *));
/* macro.c */
extern void _rl_with_macro_input PARAMS((char *));
+extern int _rl_peek_macro_key PARAMS((void));
extern int _rl_next_macro_key PARAMS((void));
extern int _rl_prev_macro_key PARAMS((void));
extern void _rl_push_executing_macro PARAMS((void));
@@ -330,6 +335,7 @@ extern void _rl_set_insert_mode PARAMS((int, int));
extern void _rl_revert_all_lines PARAMS((void));
/* nls.c */
+extern char *_rl_init_locale PARAMS((void));
extern int _rl_init_eightbit PARAMS((void));
/* parens.c */
@@ -378,6 +384,7 @@ extern void _rl_set_cursor PARAMS((int, int));
extern void _rl_fix_point PARAMS((int));
extern int _rl_replace_text PARAMS((const char *, int, int));
extern int _rl_forward_char_internal PARAMS((int));
+extern int _rl_backward_char_internal PARAMS((int));
extern int _rl_insert_char PARAMS((int, int));
extern int _rl_overwrite_char PARAMS((int, int));
extern int _rl_overwrite_rubout PARAMS((int, int));
@@ -507,6 +514,7 @@ extern FILE *_rl_in_stream;
extern FILE *_rl_out_stream;
extern int _rl_last_command_was_kill;
extern int _rl_eof_char;
+extern int _rl_eof_found;
extern procenv_t _rl_top_level;
extern _rl_keyseq_cxt *_rl_kscxt;
extern int _rl_keyseq_timeout;
@@ -534,6 +542,7 @@ extern int _rl_enable_keypad;
extern int _rl_enable_meta;
extern char *_rl_term_clreol;
extern char *_rl_term_clrpag;
+extern char *_rl_term_clrscroll;
extern char *_rl_term_im;
extern char *_rl_term_ic;
extern char *_rl_term_ei;
diff --git a/rltty.c b/rltty.c
index b1c7929..d0cd572 100644
--- a/rltty.c
+++ b/rltty.c
@@ -1,7 +1,7 @@
/* rltty.c -- functions to prepare and restore the terminal for readline's
use. */
-/* Copyright (C) 1992-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -130,8 +130,7 @@ static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *));
static void
-save_tty_chars (tiop)
- TIOTYPE *tiop;
+save_tty_chars (TIOTYPE *tiop)
{
_rl_last_tty_chars = _rl_tty_chars;
@@ -168,9 +167,7 @@ save_tty_chars (tiop)
}
static int
-get_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
+get_tty_settings (int tty, TIOTYPE *tiop)
{
set_winsize (tty);
@@ -200,9 +197,7 @@ get_tty_settings (tty, tiop)
}
static int
-set_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
+set_tty_settings (int tty, TIOTYPE *tiop)
{
if (tiop->flags & SGTTY_SET)
{
@@ -239,9 +234,7 @@ set_tty_settings (tty, tiop)
}
static void
-prepare_terminal_settings (meta_flag, oldtio, tiop)
- int meta_flag;
- TIOTYPE oldtio, *tiop;
+prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop)
{
_rl_echoing_p = (oldtio.sgttyb.sg_flags & ECHO);
_rl_echoctl = (oldtio.sgttyb.sg_flags & ECHOCTL);
@@ -357,8 +350,7 @@ static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE));
#endif
static void
-save_tty_chars (tiop)
- TIOTYPE *tiop;
+save_tty_chars (TIOTYPE *tiop)
{
_rl_last_tty_chars = _rl_tty_chars;
@@ -403,8 +395,7 @@ save_tty_chars (tiop)
#if defined (_AIX) || defined (_AIX41)
/* Currently this is only used on AIX */
static void
-rltty_warning (msg)
- char *msg;
+rltty_warning (char *msg)
{
_rl_errmsg ("warning: %s", msg);
}
@@ -412,8 +403,7 @@ rltty_warning (msg)
#if defined (_AIX)
void
-setopost(tp)
-TIOTYPE *tp;
+setopost (TIOTYPE *tp)
{
if ((tp->c_oflag & OPOST) == 0)
{
@@ -424,9 +414,7 @@ TIOTYPE *tp;
#endif
static int
-_get_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
+_get_tty_settings (int tty, TIOTYPE *tiop)
{
int ioctl_ret;
@@ -457,9 +445,7 @@ _get_tty_settings (tty, tiop)
}
static int
-get_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
+get_tty_settings (int tty, TIOTYPE *tiop)
{
set_winsize (tty);
@@ -475,9 +461,7 @@ get_tty_settings (tty, tiop)
}
static int
-_set_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
+_set_tty_settings (int tty, TIOTYPE *tiop)
{
while (SETATTR (tty, tiop) < 0)
{
@@ -489,9 +473,7 @@ _set_tty_settings (tty, tiop)
}
static int
-set_tty_settings (tty, tiop)
- int tty;
- TIOTYPE *tiop;
+set_tty_settings (int tty, TIOTYPE *tiop)
{
if (_set_tty_settings (tty, tiop) < 0)
return -1;
@@ -518,10 +500,11 @@ set_tty_settings (tty, tiop)
}
static void
-prepare_terminal_settings (meta_flag, oldtio, tiop)
- int meta_flag;
- TIOTYPE oldtio, *tiop;
+prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop)
{
+ int sc;
+ Keymap kmap;
+
_rl_echoing_p = (oldtio.c_lflag & ECHO);
#if defined (ECHOCTL)
_rl_echoctl = (oldtio.c_lflag & ECHOCTL);
@@ -578,6 +561,20 @@ prepare_terminal_settings (meta_flag, oldtio, tiop)
tiop->c_cc[VDSUSP] = _POSIX_VDISABLE;
#endif
+ /* Conditionally disable some other tty special characters if there is a
+ key binding for them in the current keymap. Readline ordinarily doesn't
+ bind these characters, but an application or user might. */
+#if defined (VI_MODE)
+ kmap = (rl_editing_mode == vi_mode) ? vi_insertion_keymap : _rl_keymap;
+#else
+ kmap = _rl_keymap;
+#endif
+#if defined (VDISCARD)
+ sc = tiop->c_cc[VDISCARD];
+ if (sc != _POSIX_VDISABLE && kmap[(unsigned char)sc].type == ISFUNC)
+ tiop->c_cc[VDISCARD] = _POSIX_VDISABLE;
+#endif /* VDISCARD */
+
#endif /* TERMIOS_TTY_DRIVER && _POSIX_VDISABLE */
}
#endif /* !NEW_TTY_DRIVER */
@@ -585,21 +582,19 @@ prepare_terminal_settings (meta_flag, oldtio, tiop)
/* Put the terminal in CBREAK mode so that we can detect key presses. */
#if defined (NO_TTY_DRIVER)
void
-rl_prep_terminal (meta_flag)
- int meta_flag;
+rl_prep_terminal (int meta_flag)
{
_rl_echoing_p = 1;
}
void
-rl_deprep_terminal ()
+rl_deprep_terminal (void)
{
}
#else /* ! NO_TTY_DRIVER */
void
-rl_prep_terminal (meta_flag)
- int meta_flag;
+rl_prep_terminal (int meta_flag)
{
int tty, nprep;
TIOTYPE tio;
@@ -682,7 +677,7 @@ rl_prep_terminal (meta_flag)
/* Restore the terminal's normal settings and modes. */
void
-rl_deprep_terminal ()
+rl_deprep_terminal (void)
{
int tty;
@@ -695,7 +690,11 @@ rl_deprep_terminal ()
tty = rl_instream ? fileno (rl_instream) : fileno (stdin);
if (terminal_prepped & TPX_BRACKPASTE)
- fprintf (rl_outstream, BRACK_PASTE_FINI);
+ {
+ fprintf (rl_outstream, BRACK_PASTE_FINI);
+ if (_rl_eof_found)
+ fprintf (rl_outstream, "\n");
+ }
if (_rl_enable_keypad)
_rl_control_keypad (0);
@@ -718,8 +717,7 @@ rl_deprep_terminal ()
/* Set readline's idea of whether or not it is echoing output to the terminal,
returning the old value. */
int
-rl_tty_set_echoing (u)
- int u;
+rl_tty_set_echoing (int u)
{
int o;
@@ -735,8 +733,7 @@ rl_tty_set_echoing (u)
/* **************************************************************** */
int
-rl_restart_output (count, key)
- int count, key;
+rl_restart_output (int count, int key)
{
#if defined (__MINGW32__)
return 0;
@@ -773,8 +770,7 @@ rl_restart_output (count, key)
}
int
-rl_stop_output (count, key)
- int count, key;
+rl_stop_output (int count, int key)
{
#if defined (__MINGW32__)
return 0;
@@ -822,11 +818,7 @@ rl_stop_output (count, key)
#elif defined (NEW_TTY_DRIVER)
static void
-set_special_char (kmap, tiop, sc, func)
- Keymap kmap;
- TIOTYPE *tiop;
- int sc;
- rl_command_func_t *func;
+set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func)
{
if (sc != -1 && kmap[(unsigned char)sc].type == ISFUNC)
kmap[(unsigned char)sc].function = func;
@@ -837,9 +829,7 @@ set_special_char (kmap, tiop, sc, func)
kmap[(unsigned char)c].function = rl_insert;
static void
-_rl_bind_tty_special_chars (kmap, ttybuff)
- Keymap kmap;
- TIOTYPE ttybuff;
+_rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff)
{
if (ttybuff.flags & SGTTY_SET)
{
@@ -858,11 +848,7 @@ _rl_bind_tty_special_chars (kmap, ttybuff)
#else /* !NEW_TTY_DRIVER */
static void
-set_special_char (kmap, tiop, sc, func)
- Keymap kmap;
- TIOTYPE *tiop;
- int sc;
- rl_command_func_t *func;
+set_special_char (Keymap kmap, TIOTYPE *tiop, int sc, rl_command_func_t *func)
{
unsigned char uc;
@@ -877,9 +863,7 @@ set_special_char (kmap, tiop, sc, func)
kmap[uc].function = rl_insert;
static void
-_rl_bind_tty_special_chars (kmap, ttybuff)
- Keymap kmap;
- TIOTYPE ttybuff;
+_rl_bind_tty_special_chars (Keymap kmap, TIOTYPE ttybuff)
{
SET_SPECIAL (VERASE, rl_rubout);
SET_SPECIAL (VKILL, rl_unix_line_discard);
@@ -903,8 +887,7 @@ _rl_bind_tty_special_chars (kmap, ttybuff)
/* Set the system's default editing characters to their readline equivalents
in KMAP. Should be static, now that we have rl_tty_set_default_bindings. */
void
-rltty_set_default_bindings (kmap)
- Keymap kmap;
+rltty_set_default_bindings (Keymap kmap)
{
#if !defined (NO_TTY_DRIVER)
TIOTYPE ttybuff;
@@ -920,8 +903,7 @@ rltty_set_default_bindings (kmap)
/* New public way to set the system default editing chars to their readline
equivalents. */
void
-rl_tty_set_default_bindings (kmap)
- Keymap kmap;
+rl_tty_set_default_bindings (Keymap kmap)
{
rltty_set_default_bindings (kmap);
}
@@ -931,8 +913,7 @@ rl_tty_set_default_bindings (kmap)
chars with save_tty_chars(). This only works on POSIX termios or termio
systems. */
void
-rl_tty_unset_default_bindings (kmap)
- Keymap kmap;
+rl_tty_unset_default_bindings (Keymap kmap)
{
/* Don't bother before we've saved the tty special chars at least once. */
if (RL_ISSTATE(RL_STATE_TTYCSAVED) == 0)
@@ -954,13 +935,13 @@ rl_tty_unset_default_bindings (kmap)
#if defined (NEW_TTY_DRIVER) || defined (NO_TTY_DRIVER)
int
-_rl_disable_tty_signals ()
+_rl_disable_tty_signals (void)
{
return 0;
}
int
-_rl_restore_tty_signals ()
+_rl_restore_tty_signals (void)
{
return 0;
}
@@ -970,7 +951,7 @@ static TIOTYPE sigstty, nosigstty;
static int tty_sigs_disabled = 0;
int
-_rl_disable_tty_signals ()
+_rl_disable_tty_signals (void)
{
if (tty_sigs_disabled)
return 0;
@@ -991,7 +972,7 @@ _rl_disable_tty_signals ()
}
int
-_rl_restore_tty_signals ()
+_rl_restore_tty_signals (void)
{
int r;
diff --git a/savestring.c b/savestring.c
index af98538..f4bb6aa 100644
--- a/savestring.c
+++ b/savestring.c
@@ -1,6 +1,6 @@
/* savestring.c - function version of savestring for backwards compatibility */
-/* Copyright (C) 1998,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998,2003,2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -30,8 +30,7 @@
/* Backwards compatibility, now that savestring has been removed from
all `public' readline header files. */
char *
-savestring (s)
- const char *s;
+savestring (const char *s)
{
char *ret;
diff --git a/search.c b/search.c
index 45d95d2..c9c1f5d 100644
--- a/search.c
+++ b/search.c
@@ -1,6 +1,6 @@
/* search.c - code for non-incremental searching in emacs and vi modes. */
-/* Copyright (C) 1992-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -73,8 +73,8 @@ static char *history_search_string;
static int history_string_size;
static void make_history_line_current PARAMS((HIST_ENTRY *));
-static int noninc_search_from_pos PARAMS((char *, int, int));
-static int noninc_dosearch PARAMS((char *, int));
+static int noninc_search_from_pos PARAMS((char *, int, int, int, int *));
+static int noninc_dosearch PARAMS((char *, int, int));
static int noninc_search PARAMS((int, int));
static int rl_history_search_internal PARAMS((int, int));
static void rl_history_search_reinit PARAMS((int));
@@ -87,8 +87,7 @@ static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int));
current line. This doesn't do anything with rl_point; the caller
must set it. */
static void
-make_history_line_current (entry)
- HIST_ENTRY *entry;
+make_history_line_current (HIST_ENTRY *entry)
{
_rl_replace_text (entry->line, 0, rl_end);
_rl_fix_point (1);
@@ -112,11 +111,10 @@ make_history_line_current (entry)
for STRING. DIR < 0 means to search backwards through the history list,
DIR >= 0 means to search forward. */
static int
-noninc_search_from_pos (string, pos, dir)
- char *string;
- int pos, dir;
+noninc_search_from_pos (char *string, int pos, int dir, int flags, int *ncp)
{
- int ret, old;
+ int ret, old, sflags;
+ char *s;
if (pos < 0)
return -1;
@@ -126,12 +124,28 @@ noninc_search_from_pos (string, pos, dir)
return -1;
RL_SETSTATE(RL_STATE_SEARCH);
- if (*string == '^')
+ /* These functions return the match offset in the line; history_offset gives
+ the matching line in the history list */
+ if (flags & SF_PATTERN)
+ {
+ s = string;
+ sflags = 0; /* Non-anchored search */
+ if (*s == '^')
+ {
+ sflags |= ANCHORED_SEARCH;
+ s++;
+ }
+ ret = _hs_history_patsearch (s, dir, sflags);
+ }
+ else if (*string == '^')
ret = history_search_prefix (string + 1, dir);
else
ret = history_search (string, dir);
RL_UNSETSTATE(RL_STATE_SEARCH);
+ if (ncp)
+ *ncp = ret; /* caller will catch -1 to indicate no-op */
+
if (ret != -1)
ret = where_history ();
@@ -143,9 +157,7 @@ noninc_search_from_pos (string, pos, dir)
search is backwards through previous entries, else through subsequent
entries. Returns 1 if the search was successful, 0 otherwise. */
static int
-noninc_dosearch (string, dir)
- char *string;
- int dir;
+noninc_dosearch (char *string, int dir, int flags)
{
int oldpos, pos;
HIST_ENTRY *entry;
@@ -156,7 +168,7 @@ noninc_dosearch (string, dir)
return 0;
}
- pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir);
+ pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir, flags, (int *)0);
if (pos == -1)
{
/* Search failed, current history position unchanged. */
@@ -188,8 +200,7 @@ noninc_dosearch (string, dir)
}
static _rl_search_cxt *
-_rl_nsearch_init (dir, pchar)
- int dir, pchar;
+_rl_nsearch_init (int dir, int pchar)
{
_rl_search_cxt *cxt;
char *p;
@@ -197,6 +208,10 @@ _rl_nsearch_init (dir, pchar)
cxt = _rl_scxt_alloc (RL_SEARCH_NSEARCH, 0);
if (dir < 0)
cxt->sflags |= SF_REVERSE; /* not strictly needed */
+#if defined (VI_MODE)
+ if (VI_COMMAND_MODE() && (pchar == '?' || pchar == '/'))
+ cxt->sflags |= SF_PATTERN;
+#endif
cxt->direction = dir;
cxt->history_pos = cxt->save_line;
@@ -224,9 +239,7 @@ _rl_nsearch_init (dir, pchar)
}
int
-_rl_nsearch_cleanup (cxt, r)
- _rl_search_cxt *cxt;
- int r;
+_rl_nsearch_cleanup (_rl_search_cxt *cxt, int r)
{
_rl_scxt_dispose (cxt, 0);
_rl_nscxt = 0;
@@ -237,8 +250,7 @@ _rl_nsearch_cleanup (cxt, r)
}
static void
-_rl_nsearch_abort (cxt)
- _rl_search_cxt *cxt;
+_rl_nsearch_abort (_rl_search_cxt *cxt)
{
rl_maybe_unsave_line ();
rl_clear_message ();
@@ -253,10 +265,11 @@ _rl_nsearch_abort (cxt)
if the caller should abort the search, 0 if we should break out of the
loop, and 1 if we should continue to read characters. */
static int
-_rl_nsearch_dispatch (cxt, c)
- _rl_search_cxt *cxt;
- int c;
+_rl_nsearch_dispatch (_rl_search_cxt *cxt, int c)
{
+ if (c < 0)
+ c = CTRL ('C');
+
switch (c)
{
case CTRL('W'):
@@ -306,8 +319,7 @@ _rl_nsearch_dispatch (cxt, c)
using _rl_nsearch_cleanup (). Returns 1 if the search was successful,
0 otherwise. */
static int
-_rl_nsearch_dosearch (cxt)
- _rl_search_cxt *cxt;
+_rl_nsearch_dosearch (_rl_search_cxt *cxt)
{
rl_mark = cxt->save_mark;
@@ -340,7 +352,7 @@ _rl_nsearch_dosearch (cxt)
}
rl_restore_prompt ();
- return (noninc_dosearch (noninc_search_string, cxt->direction));
+ return (noninc_dosearch (noninc_search_string, cxt->direction, cxt->sflags&SF_PATTERN));
}
/* Search non-interactively through the history list. DIR < 0 means to
@@ -349,9 +361,7 @@ _rl_nsearch_dosearch (cxt)
history list. PCHAR is the character to use for prompting when reading
the search string; if not specified (0), it defaults to `:'. */
static int
-noninc_search (dir, pchar)
- int dir;
- int pchar;
+noninc_search (int dir, int pchar)
{
_rl_search_cxt *cxt;
int c, r;
@@ -367,6 +377,12 @@ noninc_search (dir, pchar)
{
c = _rl_search_getchar (cxt);
+ if (c < 0)
+ {
+ _rl_nsearch_abort (cxt);
+ return 1;
+ }
+
if (c == 0)
break;
@@ -384,8 +400,7 @@ noninc_search (dir, pchar)
/* Search forward through the history list for a string. If the vi-mode
code calls this, KEY will be `?'. */
int
-rl_noninc_forward_search (count, key)
- int count, key;
+rl_noninc_forward_search (int count, int key)
{
return noninc_search (1, (key == '?') ? '?' : 0);
}
@@ -393,17 +408,16 @@ rl_noninc_forward_search (count, key)
/* Reverse search the history list for a string. If the vi-mode code
calls this, KEY will be `/'. */
int
-rl_noninc_reverse_search (count, key)
- int count, key;
+rl_noninc_reverse_search (int count, int key)
{
return noninc_search (-1, (key == '/') ? '/' : 0);
}
/* Search forward through the history list for the last string searched
- for. If there is no saved search string, abort. */
+ for. If there is no saved search string, abort. If the vi-mode code
+ calls this, KEY will be `N'. */
int
-rl_noninc_forward_search_again (count, key)
- int count, key;
+rl_noninc_forward_search_again (int count, int key)
{
int r;
@@ -412,15 +426,20 @@ rl_noninc_forward_search_again (count, key)
rl_ding ();
return (1);
}
- r = noninc_dosearch (noninc_search_string, 1);
+#if defined (VI_MODE)
+ if (VI_COMMAND_MODE() && key == 'N')
+ r = noninc_dosearch (noninc_search_string, 1, SF_PATTERN);
+ else
+#endif
+ r = noninc_dosearch (noninc_search_string, 1, 0);
return (r != 1);
}
/* Reverse search in the history list for the last string searched
- for. If there is no saved search string, abort. */
+ for. If there is no saved search string, abort. If the vi-mode code
+ calls this, KEY will be `n'. */
int
-rl_noninc_reverse_search_again (count, key)
- int count, key;
+rl_noninc_reverse_search_again (int count, int key)
{
int r;
@@ -429,18 +448,28 @@ rl_noninc_reverse_search_again (count, key)
rl_ding ();
return (1);
}
- r = noninc_dosearch (noninc_search_string, -1);
+#if defined (VI_MODE)
+ if (VI_COMMAND_MODE() && key == 'n')
+ r = noninc_dosearch (noninc_search_string, -1, SF_PATTERN);
+ else
+#endif
+ r = noninc_dosearch (noninc_search_string, -1, 0);
return (r != 1);
}
#if defined (READLINE_CALLBACKS)
int
-_rl_nsearch_callback (cxt)
- _rl_search_cxt *cxt;
+_rl_nsearch_callback (_rl_search_cxt *cxt)
{
int c, r;
c = _rl_search_getchar (cxt);
+ if (c <= 0)
+ {
+ if (c < 0)
+ _rl_nsearch_abort (cxt);
+ return 1;
+ }
r = _rl_nsearch_dispatch (cxt, c);
if (r != 0)
return 1;
@@ -451,11 +480,10 @@ _rl_nsearch_callback (cxt)
#endif
static int
-rl_history_search_internal (count, dir)
- int count, dir;
+rl_history_search_internal (int count, int dir)
{
HIST_ENTRY *temp;
- int ret, oldpos;
+ int ret, oldpos, newcol;
char *t;
rl_maybe_save_line ();
@@ -469,7 +497,7 @@ rl_history_search_internal (count, dir)
while (count)
{
RL_CHECK_SIGNALS ();
- ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir);
+ ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir, 0, &newcol);
if (ret == -1)
break;
@@ -512,12 +540,17 @@ rl_history_search_internal (count, dir)
/* Copy the line we found into the current line buffer. */
make_history_line_current (temp);
+ /* decide where to put rl_point -- need to change this for pattern search */
if (rl_history_search_flags & ANCHORED_SEARCH)
rl_point = rl_history_search_len; /* easy case */
else
{
- t = strstr (rl_line_buffer, history_search_string);
+#if 0
+ t = strstr (rl_line_buffer, history_search_string); /* XXX */
rl_point = t ? (int)(t - rl_line_buffer) + rl_history_search_len : rl_end;
+#else
+ rl_point = (newcol >= 0) ? newcol : rl_end;
+#endif
}
rl_mark = rl_end;
@@ -525,8 +558,7 @@ rl_history_search_internal (count, dir)
}
static void
-rl_history_search_reinit (flags)
- int flags;
+rl_history_search_reinit (int flags)
{
int sind;
@@ -556,8 +588,7 @@ rl_history_search_reinit (flags)
from the start of the line to rl_point. This is a non-incremental
search. The search is anchored to the beginning of the history line. */
int
-rl_history_search_forward (count, ignore)
- int count, ignore;
+rl_history_search_forward (int count, int ignore)
{
if (count == 0)
return (0);
@@ -575,8 +606,7 @@ rl_history_search_forward (count, ignore)
from the start of the line to rl_point. This is a non-incremental
search. */
int
-rl_history_search_backward (count, ignore)
- int count, ignore;
+rl_history_search_backward (int count, int ignore)
{
if (count == 0)
return (0);
@@ -595,8 +625,7 @@ rl_history_search_backward (count, ignore)
search. The search succeeds if the search string is present anywhere
in the history line. */
int
-rl_history_substr_search_forward (count, ignore)
- int count, ignore;
+rl_history_substr_search_forward (int count, int ignore)
{
if (count == 0)
return (0);
@@ -614,8 +643,7 @@ rl_history_substr_search_forward (count, ignore)
from the start of the line to rl_point. This is a non-incremental
search. */
int
-rl_history_substr_search_backward (count, ignore)
- int count, ignore;
+rl_history_substr_search_backward (int count, int ignore)
{
if (count == 0)
return (0);
diff --git a/shell.c b/shell.c
index 6947295..7fe2e97 100644
--- a/shell.c
+++ b/shell.c
@@ -1,7 +1,7 @@
/* shell.c -- readline utility functions that are normally provided by
bash when readline is linked as part of the shell. */
-/* Copyright (C) 1997-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2009,2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -92,8 +92,7 @@ extern struct passwd *getpwuid PARAMS((uid_t));
/* Does shell-like quoting using single quotes. */
char *
-sh_single_quote (string)
- char *string;
+sh_single_quote (char *string)
{
register int c;
char *result, *r, *s;
@@ -127,8 +126,7 @@ static char putenv_buf1[INT_STRLEN_BOUND (int) + 6 + 1]; /* sizeof("LINES=") ==
static char putenv_buf2[INT_STRLEN_BOUND (int) + 8 + 1]; /* sizeof("COLUMNS=") == 8 */
void
-sh_set_lines_and_columns (lines, cols)
- int lines, cols;
+sh_set_lines_and_columns (int lines, int cols)
{
#if defined (HAVE_SETENV)
sprintf (setenv_buf, "%d", lines);
@@ -148,14 +146,13 @@ sh_set_lines_and_columns (lines, cols)
}
char *
-sh_get_env_value (varname)
- const char *varname;
+sh_get_env_value (const char *varname)
{
return ((char *)getenv (varname));
}
char *
-sh_get_home_dir ()
+sh_get_home_dir (void)
{
static char *home_dir = (char *)NULL;
struct passwd *entry;
@@ -188,8 +185,7 @@ sh_get_home_dir ()
#endif
int
-sh_unset_nodelay_mode (fd)
- int fd;
+sh_unset_nodelay_mode (int fd)
{
#if defined (HAVE_FCNTL)
int flags, bflags;
diff --git a/signals.c b/signals.c
index 927f532..76c5c47 100644
--- a/signals.c
+++ b/signals.c
@@ -1,6 +1,6 @@
/* signals.c -- signal handling support for readline. */
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -113,6 +113,10 @@ int _rl_susp_char = 0;
static int signals_set_flag;
static int sigwinch_set_flag;
+#if defined (HAVE_POSIX_SIGNALS)
+sigset_t _rl_orig_sigset;
+#endif /* !HAVE_POSIX_SIGNALS */
+
/* **************************************************************** */
/* */
/* Signal Handling */
@@ -134,8 +138,7 @@ void *_rl_sigcleanarg;
/* Called from RL_CHECK_SIGNALS() macro */
RETSIGTYPE
-_rl_signal_handler (sig)
- int sig;
+_rl_signal_handler (int sig)
{
_rl_caught_signal = 0; /* XXX */
@@ -158,8 +161,7 @@ _rl_signal_handler (sig)
}
static RETSIGTYPE
-rl_signal_handler (sig)
- int sig;
+rl_signal_handler (int sig)
{
if (_rl_interrupt_immediately)
{
@@ -173,8 +175,7 @@ rl_signal_handler (sig)
}
static RETSIGTYPE
-_rl_handle_signal (sig)
- int sig;
+_rl_handle_signal (int sig)
{
#if defined (HAVE_POSIX_SIGNALS)
sigset_t set;
@@ -248,9 +249,11 @@ _rl_handle_signal (sig)
rl_cleanup_after_signal ();
#if defined (HAVE_POSIX_SIGNALS)
+# if defined (SIGTSTP)
/* Unblock SIGTTOU blocked above */
if (sig == SIGTTIN || sig == SIGTSTP)
sigprocmask (SIG_UNBLOCK, &set, (sigset_t *)NULL);
+# endif
sigemptyset (&set);
sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set);
@@ -289,8 +292,7 @@ _rl_handle_signal (sig)
#if defined (SIGWINCH)
static RETSIGTYPE
-rl_sigwinch_handler (sig)
- int sig;
+rl_sigwinch_handler (int sig)
{
SigHandler *oh;
@@ -321,9 +323,7 @@ rl_sigwinch_handler (sig)
#if !defined (HAVE_POSIX_SIGNALS)
static int
-rl_sigaction (sig, nh, oh)
- int sig;
- sighandler_cxt *nh, *oh;
+rl_sigaction (int sig, sighandler_cxt *nh, sighandler_cxt *oh)
{
oh->sa_handler = signal (sig, nh->sa_handler);
return 0;
@@ -334,10 +334,7 @@ rl_sigaction (sig, nh, oh)
information in OHANDLER. Return the old signal handler, like
signal(). */
static SigHandler *
-rl_set_sighandler (sig, handler, ohandler)
- int sig;
- SigHandler *handler;
- sighandler_cxt *ohandler;
+rl_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler)
{
sighandler_cxt old_handler;
#if defined (HAVE_POSIX_SIGNALS)
@@ -368,10 +365,7 @@ rl_set_sighandler (sig, handler, ohandler)
/* Set disposition of SIG to HANDLER, returning old state in OHANDLER. Don't
change disposition if OHANDLER indicates the signal was ignored. */
static void
-rl_maybe_set_sighandler (sig, handler, ohandler)
- int sig;
- SigHandler *handler;
- sighandler_cxt *ohandler;
+rl_maybe_set_sighandler (int sig, SigHandler *handler, sighandler_cxt *ohandler)
{
sighandler_cxt dummy;
SigHandler *oh;
@@ -388,9 +382,7 @@ rl_maybe_set_sighandler (sig, handler, ohandler)
disposition was changed using rl_maybe_set_sighandler or for which the
SIG_IGN check was performed inline (e.g., SIGALRM below). */
static void
-rl_maybe_restore_sighandler (sig, handler)
- int sig;
- sighandler_cxt *handler;
+rl_maybe_restore_sighandler (int sig, sighandler_cxt *handler)
{
sighandler_cxt dummy;
@@ -401,7 +393,7 @@ rl_maybe_restore_sighandler (sig, handler)
}
int
-rl_set_signals ()
+rl_set_signals (void)
{
sighandler_cxt dummy;
SigHandler *oh;
@@ -442,8 +434,8 @@ rl_set_signals ()
if (rl_catch_signals && signals_set_flag == 0)
{
#if defined (HAVE_POSIX_SIGNALS)
- sigemptyset (&oset);
- sigprocmask (SIG_BLOCK, &bset, &oset);
+ sigemptyset (&_rl_orig_sigset);
+ sigprocmask (SIG_BLOCK, &bset, &_rl_orig_sigset);
#endif
rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int);
@@ -484,7 +476,14 @@ rl_set_signals ()
signals_set_flag = 1;
#if defined (HAVE_POSIX_SIGNALS)
- sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
+ sigprocmask (SIG_SETMASK, &_rl_orig_sigset, (sigset_t *)NULL);
+#endif
+ }
+ else if (rl_catch_signals == 0)
+ {
+#if defined (HAVE_POSIX_SIGNALS)
+ sigemptyset (&_rl_orig_sigset);
+ sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &_rl_orig_sigset);
#endif
}
@@ -500,14 +499,12 @@ rl_set_signals ()
}
int
-rl_clear_signals ()
+rl_clear_signals (void)
{
sighandler_cxt dummy;
if (rl_catch_signals && signals_set_flag == 1)
{
- sigemptyset (&dummy.sa_mask);
-
/* Since rl_maybe_set_sighandler doesn't override a SIG_IGN handler,
we should in theory not have to restore a handler where
old_xxx.sa_handler == SIG_IGN. That's what rl_maybe_restore_sighandler
@@ -555,7 +552,7 @@ rl_clear_signals ()
/* Clean up the terminal and readline state after catching a signal, before
resending it to the calling application. */
void
-rl_cleanup_after_signal ()
+rl_cleanup_after_signal (void)
{
_rl_clean_up_for_exit ();
if (rl_deprep_term_function)
@@ -566,7 +563,7 @@ rl_cleanup_after_signal ()
/* Reset the terminal and readline state after a signal handler returns. */
void
-rl_reset_after_signal ()
+rl_reset_after_signal (void)
{
if (rl_prep_term_function)
(*rl_prep_term_function) (_rl_meta_flag);
@@ -578,7 +575,7 @@ rl_reset_after_signal ()
numeric arguments in process) after catching a signal, before calling
rl_cleanup_after_signal(). */
void
-rl_free_line_state ()
+rl_free_line_state (void)
{
register HIST_ENTRY *entry;
@@ -594,10 +591,16 @@ rl_free_line_state ()
}
int
-rl_pending_signal ()
+rl_pending_signal (void)
{
return (_rl_caught_signal);
}
+
+void
+rl_check_signals (void)
+{
+ RL_CHECK_SIGNALS ();
+}
#endif /* HANDLE_SIGNALS */
/* **************************************************************** */
@@ -622,7 +625,7 @@ static int sigwinch_blocked;
/* Cause SIGINT to not be delivered until the corresponding call to
release_sigint(). */
void
-_rl_block_sigint ()
+_rl_block_sigint (void)
{
if (sigint_blocked)
return;
@@ -632,7 +635,7 @@ _rl_block_sigint ()
/* Allow SIGINT to be delivered. */
void
-_rl_release_sigint ()
+_rl_release_sigint (void)
{
if (sigint_blocked == 0)
return;
@@ -644,7 +647,7 @@ _rl_release_sigint ()
/* Cause SIGWINCH to not be delivered until the corresponding call to
release_sigwinch(). */
void
-_rl_block_sigwinch ()
+_rl_block_sigwinch (void)
{
if (sigwinch_blocked)
return;
@@ -673,7 +676,7 @@ _rl_block_sigwinch ()
/* Allow SIGWINCH to be delivered. */
void
-_rl_release_sigwinch ()
+_rl_release_sigwinch (void)
{
if (sigwinch_blocked == 0)
return;
@@ -703,8 +706,7 @@ _rl_release_sigwinch ()
/* */
/* **************************************************************** */
void
-rl_echo_signal_char (sig)
- int sig;
+rl_echo_signal_char (int sig)
{
char cstr[3];
int cslen, c;
diff --git a/support/config.guess b/support/config.guess
index 9afd676..18f8edc 100644..100755
--- a/support/config.guess
+++ b/support/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2013 Free Software Foundation, Inc.
+# Copyright 1992-2018 Free Software Foundation, Inc.
-timestamp='2013-11-29'
+timestamp='2018-08-29'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ timestamp='2013-11-29'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -24,12 +24,12 @@ timestamp='2013-11-29'
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
-# Originally written by Per Bothner.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
#
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -39,7 +39,7 @@ Usage: $0 [OPTION]
Output the configuration name of the system \`$me' is run on.
-Operation modes:
+Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -84,8 +84,6 @@ if test $# != 0; then
exit 1
fi
-trap 'exit 1' 1 2 15
-
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
@@ -96,34 +94,39 @@ trap 'exit 1' 1 2 15
# Portable tmp directory creation inspired by the Autoconf team.
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15
+trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0
+
+set_cc_for_build() {
+ : "${TMPDIR=/tmp}"
+ # shellcheck disable=SC2039
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+ dummy=$tmp/dummy
+ case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+ ,,) echo "int x;" > "$dummy.c"
+ for driver in cc gcc c89 c99 ; do
+ if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$driver"
+ break
+ fi
+ done
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+ esac
+}
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+if test -f /.attbin/uname ; then
PATH=$PATH:/.attbin ; export PATH
fi
@@ -132,14 +135,14 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-case "${UNAME_SYSTEM}" in
+case "$UNAME_SYSTEM" in
Linux|GNU|GNU/*)
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
LIBC=gnu
- eval $set_cc_for_build
- cat <<-EOF > $dummy.c
+ set_cc_for_build
+ cat <<-EOF > "$dummy.c"
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
@@ -149,13 +152,20 @@ Linux|GNU|GNU/*)
LIBC=gnu
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+
+ # If ldd exists, use it to detect musl libc.
+ if command -v ldd >/dev/null && \
+ ldd --version 2>&1 | grep -q ^musl
+ then
+ LIBC=musl
+ fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -168,21 +178,31 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+ "/sbin/$sysctl" 2>/dev/null || \
+ "/usr/sbin/$sysctl" 2>/dev/null || \
+ echo unknown)`
+ case "$UNAME_MACHINE_ARCH" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ earmv*)
+ arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+ machine="${arch}${endian}"-unknown
+ ;;
+ *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
esac
# The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
+ # to ELF recently (or will in the future) and ABI.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ os=netbsdelf
+ ;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
+ set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
@@ -197,44 +217,67 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
os=netbsd
;;
esac
+ # Determine ABI tags.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+ abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+ ;;
+ esac
# The OS release
# Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
+ case "$UNAME_VERSION" in
Debian*)
release='-gnu'
;;
*)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
+ echo "$machine-${os}${release}${abi-}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
+ exit ;;
+ *:LibertyBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+ echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
+ exit ;;
+ *:MidnightBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
exit ;;
*:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
exit ;;
*:SolidBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
exit ;;
macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
exit ;;
*:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
+ exit ;;
+ *:Sortix:*:*)
+ echo "$UNAME_MACHINE"-unknown-sortix
+ exit ;;
+ *:Redox:*:*)
+ echo "$UNAME_MACHINE"-unknown-redox
exit ;;
+ mips:OSF1:*.*)
+ echo mips-dec-osf1
+ exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
@@ -251,63 +294,54 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
case "$ALPHA_CPU_TYPE" in
"EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
+ UNAME_MACHINE=alphaev5 ;;
"EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
+ UNAME_MACHINE=alphaev56 ;;
"EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
+ UNAME_MACHINE=alphapca56 ;;
"EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
+ UNAME_MACHINE=alphapca57 ;;
"EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
+ UNAME_MACHINE=alphaev6 ;;
"EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
+ UNAME_MACHINE=alphaev67 ;;
"EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
+ UNAME_MACHINE=alphaev69 ;;
"EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
+ UNAME_MACHINE=alphaev7 ;;
"EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
+ UNAME_MACHINE=alphaev79 ;;
esac
# A Pn.n version is a patched version.
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
exit $exitcode ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
+ echo "$UNAME_MACHINE"-unknown-amigaos
exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
+ echo "$UNAME_MACHINE"-unknown-morphos
exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
@@ -319,7 +353,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
+ echo arm-acorn-riscix"$UNAME_RELEASE"
exit ;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
@@ -346,38 +380,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
s390x:SunOS:*:*)
- echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
exit ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
exit ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux${UNAME_RELEASE}
+ echo i386-pc-auroraux"$UNAME_RELEASE"
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval $set_cc_for_build
- SUN_ARCH="i386"
- # If there is a compiler, see if it is configured for 64-bit objects.
- # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
- # This test works for both compilers.
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- SUN_ARCH="x86_64"
- fi
- fi
- echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+ case `isainfo -b` in
+ 32)
+ echo i386-pc-solaris2"$UNAME_REL"
+ ;;
+ 64)
+ echo x86_64-pc-solaris2"$UNAME_REL"
+ ;;
+ esac
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
@@ -386,25 +415,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
exit ;;
sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
+ echo m68k-sun-sunos"$UNAME_RELEASE"
exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
+ echo m68k-sun-sunos"$UNAME_RELEASE"
;;
sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
+ echo sparc-sun-sunos"$UNAME_RELEASE"
;;
esac
exit ;;
aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
+ echo sparc-auspex-sunos"$UNAME_RELEASE"
exit ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
@@ -415,44 +444,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
+ echo m68k-milan-mint"$UNAME_RELEASE"
exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
+ echo m68k-hades-mint"$UNAME_RELEASE"
exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
+ echo m68k-unknown-mint"$UNAME_RELEASE"
exit ;;
m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
+ echo m68k-apple-machten"$UNAME_RELEASE"
exit ;;
powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
+ echo powerpc-apple-machten"$UNAME_RELEASE"
exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit ;;
RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
+ echo mips-dec-ultrix"$UNAME_RELEASE"
exit ;;
VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
+ echo vax-dec-ultrix"$UNAME_RELEASE"
exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
+ echo clipper-intergraph-clix"$UNAME_RELEASE"
exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */
int main (int argc, char *argv[]) {
@@ -461,23 +490,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
#endif
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
#endif
#endif
exit (-1);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+ dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
+ echo mips-mips-riscos"$UNAME_RELEASE"
exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
@@ -503,17 +532,17 @@ EOF
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
+ if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
+ [ "$TARGET_BINARY_INTERFACE"x = x ]
then
- echo m88k-dg-dgux${UNAME_RELEASE}
+ echo m88k-dg-dgux"$UNAME_RELEASE"
else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ echo m88k-dg-dguxbcs"$UNAME_RELEASE"
fi
else
- echo i586-dg-dgux${UNAME_RELEASE}
+ echo i586-dg-dgux"$UNAME_RELEASE"
fi
exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
@@ -530,7 +559,7 @@ EOF
echo m68k-tektronix-bsd
exit ;;
*:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
exit ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
@@ -542,14 +571,14 @@ EOF
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#include <sys/systemcfg.h>
main()
@@ -560,7 +589,7 @@ EOF
exit(0);
}
EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
then
echo "$SYSTEM_NAME"
else
@@ -574,26 +603,27 @@ EOF
exit ;;
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
+ if [ -x /usr/bin/lslpp ] ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
echo romp-ibm-bsd4.4
exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
@@ -608,28 +638,28 @@ EOF
echo m68k-hp-bsd4.4
exit ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
+ HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ case "$UNAME_MACHINE" in
+ 9000/31?) HP_ARCH=m68000 ;;
+ 9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ case "$sc_cpu_version" in
+ 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ case "$sc_kernel_bits" in
+ 32) HP_ARCH=hppa2.0n ;;
+ 64) HP_ARCH=hppa2.0w ;;
+ '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
esac ;;
esac
fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ if [ "$HP_ARCH" = "" ]; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
#include <stdlib.h>
@@ -662,13 +692,13 @@ EOF
exit (0);
}
EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
+ if [ "$HP_ARCH" = hppa2.0w ]
then
- eval $set_cc_for_build
+ set_cc_for_build
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
@@ -679,23 +709,23 @@ EOF
# $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
# => hppa64-hp-hpux11.23
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
grep -q __LP64__
then
- HP_ARCH="hppa2.0w"
+ HP_ARCH=hppa2.0w
else
- HP_ARCH="hppa64"
+ HP_ARCH=hppa64
fi
fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
exit ;;
ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
+ HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux"$HPUX_REV"
exit ;;
3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#include <unistd.h>
int
main ()
@@ -720,11 +750,11 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
echo hppa1.1-hp-bsd
exit ;;
9000/8??:4.3bsd:*:*)
@@ -733,7 +763,7 @@ EOF
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
echo hppa1.1-hp-osf
exit ;;
hp8??:OSF1:*:*)
@@ -741,9 +771,9 @@ EOF
exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
+ echo "$UNAME_MACHINE"-unknown-osf1mk
else
- echo ${UNAME_MACHINE}-unknown-osf1
+ echo "$UNAME_MACHINE"-unknown-osf1
fi
exit ;;
parisc*:Lites*:*:*)
@@ -768,127 +798,120 @@ EOF
echo c4-convex-bsd
exit ;;
CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
*:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
exit ;;
sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
+ echo sparc-unknown-bsdi"$UNAME_RELEASE"
exit ;;
*:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
+ exit ;;
+ arm:FreeBSD:*:*)
+ UNAME_PROCESSOR=`uname -p`
+ set_cc_for_build
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+ else
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+ fi
exit ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
- case ${UNAME_PROCESSOR} in
+ case "$UNAME_PROCESSOR" in
amd64)
- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- *)
- echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ UNAME_PROCESSOR=x86_64 ;;
+ i386)
+ UNAME_PROCESSOR=i586 ;;
esac
+ echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
exit ;;
i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
+ echo "$UNAME_MACHINE"-pc-cygwin
exit ;;
*:MINGW64*:*)
- echo ${UNAME_MACHINE}-pc-mingw64
+ echo "$UNAME_MACHINE"-pc-mingw64
exit ;;
*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
+ echo "$UNAME_MACHINE"-pc-mingw32
exit ;;
- i*:MSYS*:*)
- echo ${UNAME_MACHINE}-pc-msys
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
+ *:MSYS*:*)
+ echo "$UNAME_MACHINE"-pc-msys
exit ;;
i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
+ echo "$UNAME_MACHINE"-pc-pw32
exit ;;
*:Interix*:*)
- case ${UNAME_MACHINE} in
+ case "$UNAME_MACHINE" in
x86)
- echo i586-pc-interix${UNAME_RELEASE}
+ echo i586-pc-interix"$UNAME_RELEASE"
exit ;;
authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix${UNAME_RELEASE}
+ echo x86_64-unknown-interix"$UNAME_RELEASE"
exit ;;
IA64)
- echo ia64-unknown-interix${UNAME_RELEASE}
+ echo ia64-unknown-interix"$UNAME_RELEASE"
exit ;;
esac ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- 8664:Windows_NT:*)
- echo x86_64-pc-mks
- exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
+ echo "$UNAME_MACHINE"-pc-uwin
exit ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
+ echo x86_64-pc-cygwin
exit ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
+ *:Minix:*:*)
+ echo "$UNAME_MACHINE"-unknown-minix
exit ;;
aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -901,58 +924,64 @@ EOF
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arm*:Linux:*:*)
- eval $set_cc_for_build
+ set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
else
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
exit ;;
crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
+ exit ;;
+ e2k:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
i*86:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ k1om:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
#undef ${UNAME_MACHINE}
#undef ${UNAME_MACHINE}el
@@ -966,64 +995,70 @@ EOF
#endif
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
+ test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
;;
- or1k:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ mips64el:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ openrisc*:Linux:*:*)
+ echo or1k-unknown-linux-"$LIBC"
exit ;;
- or32:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ or32:Linux:*:* | or1k*:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-${LIBC}
+ echo sparc-unknown-linux-"$LIBC"
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-${LIBC}
+ echo hppa64-unknown-linux-"$LIBC"
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
- PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
- *) echo hppa-unknown-linux-${LIBC} ;;
+ PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
+ PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
+ *) echo hppa-unknown-linux-"$LIBC" ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-${LIBC}
+ echo powerpc64-unknown-linux-"$LIBC"
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-${LIBC}
+ echo powerpc-unknown-linux-"$LIBC"
exit ;;
ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-${LIBC}
+ echo powerpc64le-unknown-linux-"$LIBC"
exit ;;
ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-${LIBC}
+ echo powerpcle-unknown-linux-"$LIBC"
+ exit ;;
+ riscv32:Linux:*:* | riscv64:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
exit ;;
x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1037,34 +1072,34 @@ EOF
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
exit ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
+ echo "$UNAME_MACHINE"-pc-os2-emx
exit ;;
i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
+ echo "$UNAME_MACHINE"-unknown-stop
exit ;;
i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
+ echo "$UNAME_MACHINE"-unknown-atheos
exit ;;
i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
+ echo "$UNAME_MACHINE"-pc-syllable
exit ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
+ echo i386-unknown-lynxos"$UNAME_RELEASE"
exit ;;
i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ echo "$UNAME_MACHINE"-pc-msdosdjgpp
exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ i*86:*:4.*:*)
+ UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
fi
exit ;;
i*86:*:5:[678]*)
@@ -1074,12 +1109,12 @@ EOF
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
elif /bin/uname -X 2>/dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1089,9 +1124,9 @@ EOF
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
else
- echo ${UNAME_MACHINE}-pc-sysv32
+ echo "$UNAME_MACHINE"-pc-sysv32
fi
exit ;;
pc:*:*:*)
@@ -1099,7 +1134,7 @@ EOF
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
- # prints for the "djgpp" host, or else GDB configury will decide that
+ # prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
exit ;;
@@ -1111,9 +1146,9 @@ EOF
exit ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4
fi
exit ;;
mini*:CTIX:SYS*5:*)
@@ -1133,9 +1168,9 @@ EOF
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
@@ -1144,28 +1179,28 @@ EOF
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
+ echo m68k-unknown-lynxos"$UNAME_RELEASE"
exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit ;;
TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
+ echo sparc-unknown-lynxos"$UNAME_RELEASE"
exit ;;
rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ echo rs6000-unknown-lynxos"$UNAME_RELEASE"
exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ echo powerpc-unknown-lynxos"$UNAME_RELEASE"
exit ;;
SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
+ echo mips-dde-sysv"$UNAME_RELEASE"
exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
@@ -1176,7 +1211,7 @@ EOF
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
+ echo "$UNAME_MACHINE"-sni-sysv4
else
echo ns32k-sni-sysv
fi
@@ -1196,23 +1231,23 @@ EOF
exit ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
+ echo "$UNAME_MACHINE"-stratus-vos
exit ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
echo hppa1.1-stratus-vos
exit ;;
mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
+ echo m68k-apple-aux"$UNAME_RELEASE"
exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv"$UNAME_RELEASE"
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv"$UNAME_RELEASE"
fi
exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
@@ -1231,46 +1266,56 @@ EOF
echo x86_64-unknown-haiku
exit ;;
SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
+ echo sx4-nec-superux"$UNAME_RELEASE"
exit ;;
SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
+ echo sx5-nec-superux"$UNAME_RELEASE"
exit ;;
SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
+ echo sx6-nec-superux"$UNAME_RELEASE"
exit ;;
SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux${UNAME_RELEASE}
+ echo sx7-nec-superux"$UNAME_RELEASE"
exit ;;
SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux${UNAME_RELEASE}
+ echo sx8-nec-superux"$UNAME_RELEASE"
exit ;;
SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux${UNAME_RELEASE}
+ echo sx8r-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-ACE:SUPER-UX:*:*)
+ echo sxace-nec-superux"$UNAME_RELEASE"
exit ;;
Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ echo powerpc-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- eval $set_cc_for_build
+ set_cc_for_build
if test "$UNAME_PROCESSOR" = unknown ; then
UNAME_PROCESSOR=powerpc
fi
- if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
then
case $UNAME_PROCESSOR in
i386) UNAME_PROCESSOR=x86_64 ;;
powerpc) UNAME_PROCESSOR=powerpc64 ;;
esac
fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
+ fi
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
# Avoid executing cc on OS X 10.9, as it ships with a stub
@@ -1281,27 +1326,33 @@ EOF
# that Apple uses in portable devices.
UNAME_PROCESSOR=x86_64
fi
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
+ if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
- NEO-?:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk${UNAME_RELEASE}
+ NEO-*:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk"$UNAME_RELEASE"
exit ;;
NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
+ echo nse-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSR-*:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk"$UNAME_RELEASE"
exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
+ NSV-*:NONSTOP_KERNEL:*:*)
+ echo nsv-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSX-*:NONSTOP_KERNEL:*:*)
+ echo nsx-tandem-nsk"$UNAME_RELEASE"
exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
@@ -1310,18 +1361,19 @@ EOF
echo bs2000-siemens-sysv
exit ;;
DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
- if test "$cputype" = "386"; then
+ # shellcheck disable=SC2154
+ if test "$cputype" = 386; then
UNAME_MACHINE=i386
else
UNAME_MACHINE="$cputype"
fi
- echo ${UNAME_MACHINE}-unknown-plan9
+ echo "$UNAME_MACHINE"-unknown-plan9
exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
@@ -1342,14 +1394,14 @@ EOF
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux"$UNAME_RELEASE"
exit ;;
*:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
exit ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
+ case "$UNAME_MACHINE" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
V*) echo vax-dec-vms ; exit ;;
@@ -1358,182 +1410,48 @@ EOF
echo i386-pc-xenix
exit ;;
i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
exit ;;
i*86:rdos:*:*)
- echo ${UNAME_MACHINE}-pc-rdos
+ echo "$UNAME_MACHINE"-pc-rdos
exit ;;
i*86:AROS:*:*)
- echo ${UNAME_MACHINE}-pc-aros
+ echo "$UNAME_MACHINE"-pc-aros
exit ;;
x86_64:VMkernel:*:*)
- echo ${UNAME_MACHINE}-unknown-esx
+ echo "$UNAME_MACHINE"-unknown-esx
+ exit ;;
+ amd64:Isilon\ OneFS:*:*)
+ echo x86_64-unknown-onefs
exit ;;
esac
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- if (version < 4)
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- else
- printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-# include <sys/param.h>
-# if defined (BSD)
-# if BSD == 43
- printf ("vax-dec-bsd4.3\n"); exit (0);
-# else
-# if BSD == 199006
- printf ("vax-dec-bsd4.3reno\n"); exit (0);
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# endif
-# else
- printf ("vax-dec-bsd\n"); exit (0);
-# endif
-# else
- printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
+echo "$0: unable to guess system type" >&2
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
+case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+ mips:Linux | mips64:Linux)
+ # If we got here on MIPS GNU/Linux, output extra information.
+ cat >&2 <<EOF
- exit (1);
-}
+NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+the system type. Please install a C compiler and try again.
EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- c34*)
- echo c34-convex-bsd
- exit ;;
- c38*)
- echo c38-convex-bsd
- exit ;;
- c4*)
- echo c4-convex-bsd
- exit ;;
- esac
-fi
+ ;;
+esac
cat >&2 <<EOF
-$0: unable to guess system type
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+ https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
and
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+ https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
config.guess timestamp = $timestamp
@@ -1552,16 +1470,16 @@ hostinfo = `(hostinfo) 2>/dev/null`
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
EOF
exit 1
# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
diff --git a/support/config.rpath b/support/config.rpath
index b6c4d8f..fc5913d 100644..100755
--- a/support/config.rpath
+++ b/support/config.rpath
@@ -2,27 +2,13 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
-# Copyright 1996-2003 Free Software Foundation, Inc.
+# Copyright 1996-2018 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
-# 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
#
# The first argument passed to this file is the canonical host specification,
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
@@ -39,7 +25,7 @@
# known workaround is to choose shorter directory names for the build
# directory and/or the installation directory.
-# All known linkers require a `.a' archive for static linking (except M$VC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
shrext=.so
@@ -49,7 +35,19 @@ host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's _LT_COMPILER_PIC.
wl=
if test "$GCC" = yes; then
@@ -59,7 +57,7 @@ else
aix*)
wl='-Wl,'
;;
- mingw* | pw32* | os2*)
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
;;
hpux9* | hpux10* | hpux11*)
wl='-Wl,'
@@ -67,40 +65,83 @@ else
irix5* | irix6* | nonstopux*)
wl='-Wl,'
;;
- newsos6)
- ;;
- linux*)
- case $CC in
- icc|ecc)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ ecc*)
+ wl='-Wl,'
+ ;;
+ icc* | ifort*)
+ wl='-Wl,'
+ ;;
+ lf95*)
+ wl='-Wl,'
+ ;;
+ nagfor*)
+ wl='-Wl,-Wl,,'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ wl='-Wl,'
+ ;;
+ ccc*)
wl='-Wl,'
;;
- ccc)
+ xl* | bgxl* | bgf* | mpixl*)
wl='-Wl,'
;;
+ como)
+ wl='-lopt='
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ F* | *Sun*Fortran*)
+ wl=
+ ;;
+ *Sun\ C*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
esac
;;
+ newsos6)
+ ;;
+ *nto* | *qnx*)
+ ;;
osf3* | osf4* | osf5*)
wl='-Wl,'
;;
- sco3.2v5*)
+ rdos*)
;;
solaris*)
- wl='-Wl,'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ wl='-Qoption ld '
+ ;;
+ *)
+ wl='-Wl,'
+ ;;
+ esac
;;
sunos4*)
wl='-Qoption ld '
;;
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ sysv4 | sysv4.2uw2* | sysv4.3*)
wl='-Wl,'
;;
sysv4*MP*)
;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ wl='-Wl,'
+ ;;
+ unicos*)
+ wl='-Wl,'
+ ;;
uts4*)
;;
esac
fi
-# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
+# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
hardcode_libdir_flag_spec=
hardcode_libdir_separator=
@@ -108,7 +149,7 @@ hardcode_direct=no
hardcode_minus_L=no
case "$host_os" in
- cygwin* | mingw* | pw32*)
+ cygwin* | mingw* | pw32* | cegcc*)
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
@@ -116,6 +157,10 @@ case "$host_os" in
with_gnu_ld=no
fi
;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
openbsd*)
with_gnu_ld=no
;;
@@ -123,32 +168,37 @@ esac
ld_shlibs=yes
if test "$with_gnu_ld" = yes; then
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ # Unlike libtool, we use -rpath here, not --rpath, since the documented
+ # option of GNU ld is called -rpath, not --rpath.
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
case "$host_os" in
- aix3* | aix4* | aix5*)
+ aix[3-9]*)
# On AIX/PPC, the GNU linker is very broken
if test "$host_cpu" != ia64; then
ld_shlibs=no
fi
;;
amigaos*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
- # that the semantics of dynamic libraries on AmigaOS, at least up
- # to version 4, is to share data among multiple programs linked
- # with the same dynamic library. Since this doesn't match the
- # behavior of shared libraries on other platforms, we can use
- # them.
- ld_shlibs=no
+ case "$host_cpu" in
+ powerpc)
+ ;;
+ m68k)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
;;
beos*)
- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
- cygwin* | mingw* | pw32*)
+ cygwin* | mingw* | pw32* | cegcc*)
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
hardcode_libdir_flag_spec='-L$libdir'
@@ -158,32 +208,57 @@ if test "$with_gnu_ld" = yes; then
ld_shlibs=no
fi
;;
+ haiku*)
+ ;;
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
netbsd*)
;;
- solaris* | sysv5*)
- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
ld_shlibs=no
- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
sunos4*)
hardcode_direct=yes
;;
*)
- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
esac
- if test "$ld_shlibs" = yes; then
- # Unlike libtool, we use -rpath here, not --rpath, since the documented
- # option of GNU ld is called -rpath, not --rpath.
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ if test "$ld_shlibs" = no; then
+ hardcode_libdir_flag_spec=
fi
else
case "$host_os" in
@@ -197,7 +272,7 @@ else
hardcode_direct=unsupported
fi
;;
- aix4* | aix5*)
+ aix[4-9]*)
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
@@ -207,13 +282,14 @@ else
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking.
- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
for ld_flag in $LDFLAGS; do
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aix_use_runtimelinking=yes
break
fi
done
+ ;;
esac
fi
hardcode_direct=yes
@@ -225,7 +301,7 @@ else
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
- hardcode_direct=yes
+ :
else
# We have old collect2
hardcode_direct=unsupported
@@ -233,6 +309,7 @@ else
hardcode_libdir_flag_spec='-L$libdir'
hardcode_libdir_separator=
fi
+ ;;
esac
fi
# Begin _LT_AC_SYS_LIBPATH_AIX.
@@ -260,14 +337,18 @@ else
fi
;;
amigaos*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # see comment about different semantics on the GNU ld section
- ld_shlibs=no
+ case "$host_cpu" in
+ powerpc)
+ ;;
+ m68k)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
;;
- bsdi4*)
+ bsdi[45]*)
;;
- cygwin* | mingw* | pw32*)
+ cygwin* | mingw* | pw32* | cegcc*)
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
@@ -276,25 +357,21 @@ else
libext=lib
;;
darwin* | rhapsody*)
- if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
- hardcode_direct=no
+ hardcode_direct=no
+ if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then
+ :
+ else
+ ld_shlibs=no
fi
;;
dgux*)
hardcode_libdir_flag_spec='-L$libdir'
;;
- freebsd1*)
- ld_shlibs=no
- ;;
- freebsd2.2*)
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- ;;
- freebsd2*)
+ freebsd2.[01]*)
hardcode_direct=yes
hardcode_minus_L=yes
;;
- freebsd*)
+ freebsd* | dragonfly*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
@@ -306,24 +383,25 @@ else
# but as the default location of the library.
hardcode_minus_L=yes
;;
- hpux10* | hpux11*)
+ hpux10*)
if test "$with_gnu_ld" = no; then
- case "$host_cpu" in
- hppa*64*)
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_direct=no
- ;;
- ia64*)
- hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+ hpux11*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ case $host_cpu in
+ hppa*64*|ia64*)
hardcode_direct=no
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L=yes
;;
*)
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
@@ -345,19 +423,25 @@ else
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
+ *nto* | *qnx*)
+ ;;
openbsd*)
- hardcode_direct=yes
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ else
+ case "$host_os" in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
else
- case "$host_os" in
- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
- hardcode_libdir_flag_spec='-R$libdir'
- ;;
- *)
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- ;;
- esac
+ ld_shlibs=no
fi
;;
os2*)
@@ -377,8 +461,6 @@ else
fi
hardcode_libdir_separator=:
;;
- sco3.2v5*)
- ;;
solaris*)
hardcode_libdir_flag_spec='-R$libdir'
;;
@@ -407,14 +489,11 @@ else
ld_shlibs=yes
fi
;;
- sysv4.2uw2*)
- hardcode_direct=yes
- hardcode_minus_L=no
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
;;
- sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
- ;;
- sysv5*)
- hardcode_libdir_flag_spec=
+ sysv5* | sco3.2v5* | sco5v6*)
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
;;
uts4*)
hardcode_libdir_flag_spec='-L$libdir'
@@ -426,35 +505,59 @@ else
fi
# Check dynamic linker characteristics
-# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
+# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec= # the last element of library_names_spec in libtool.m4
libname_spec='lib$name'
case "$host_os" in
aix3*)
+ library_names_spec='$libname.a'
;;
- aix4* | aix5*)
+ aix[4-9]*)
+ library_names_spec='$libname$shrext'
;;
amigaos*)
+ case "$host_cpu" in
+ powerpc*)
+ library_names_spec='$libname$shrext' ;;
+ m68k)
+ library_names_spec='$libname.a' ;;
+ esac
;;
beos*)
+ library_names_spec='$libname$shrext'
;;
- bsdi4*)
+ bsdi[45]*)
+ library_names_spec='$libname$shrext'
;;
- cygwin* | mingw* | pw32*)
+ cygwin* | mingw* | pw32* | cegcc*)
shrext=.dll
+ library_names_spec='$libname.dll.a $libname.lib'
;;
darwin* | rhapsody*)
shrext=.dylib
+ library_names_spec='$libname$shrext'
;;
dgux*)
+ library_names_spec='$libname$shrext'
;;
- freebsd1*)
+ freebsd[23].*)
+ library_names_spec='$libname$shrext$versuffix'
;;
- freebsd*)
+ freebsd* | dragonfly*)
+ library_names_spec='$libname$shrext'
;;
gnu*)
+ library_names_spec='$libname$shrext'
+ ;;
+ haiku*)
+ library_names_spec='$libname$shrext'
;;
hpux9* | hpux10* | hpux11*)
- case "$host_cpu" in
+ case $host_cpu in
ia64*)
shrext=.so
;;
@@ -465,8 +568,13 @@ case "$host_os" in
shrext=.sl
;;
esac
+ library_names_spec='$libname$shrext'
+ ;;
+ interix[3-9]*)
+ library_names_spec='$libname$shrext'
;;
irix5* | irix6* | nonstopux*)
+ library_names_spec='$libname$shrext'
case "$host_os" in
irix5* | nonstopux*)
libsuff= shlibsuff=
@@ -483,42 +591,65 @@ case "$host_os" in
;;
linux*oldld* | linux*aout* | linux*coff*)
;;
- linux*)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ library_names_spec='$libname$shrext'
+ ;;
+ knetbsd*-gnu)
+ library_names_spec='$libname$shrext'
;;
netbsd*)
+ library_names_spec='$libname$shrext'
;;
newsos6)
+ library_names_spec='$libname$shrext'
;;
- nto-qnx)
+ *nto* | *qnx*)
+ library_names_spec='$libname$shrext'
;;
openbsd*)
+ library_names_spec='$libname$shrext$versuffix'
;;
os2*)
libname_spec='$name'
shrext=.dll
+ library_names_spec='$libname.a'
;;
osf3* | osf4* | osf5*)
+ library_names_spec='$libname$shrext'
;;
- sco3.2v5*)
+ rdos*)
;;
solaris*)
+ library_names_spec='$libname$shrext'
;;
sunos4*)
+ library_names_spec='$libname$shrext$versuffix'
;;
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ sysv4 | sysv4.3*)
+ library_names_spec='$libname$shrext'
;;
sysv4*MP*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ library_names_spec='$libname$shrext'
+ ;;
+ tpf*)
+ library_names_spec='$libname$shrext'
;;
uts4*)
+ library_names_spec='$libname$shrext'
;;
esac
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
-sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
# How to pass a linker flag through the compiler.
wl="$escaped_wl"
@@ -529,6 +660,12 @@ libext="$libext"
# Shared library suffix (normally "so").
shlibext="$shlibext"
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
# Flag to hardcode \$libdir into a binary during linking.
# This must work even if \$libdir does not exist.
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
diff --git a/support/config.sub b/support/config.sub
index 61cb4bc..f208558 100644..100755
--- a/support/config.sub
+++ b/support/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2013 Free Software Foundation, Inc.
+# Copyright 1992-2018 Free Software Foundation, Inc.
-timestamp='2013-10-01'
+timestamp='2018-08-29'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ timestamp='2013-10-01'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -25,7 +25,7 @@ timestamp='2013-10-01'
# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -33,7 +33,7 @@ timestamp='2013-10-01'
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -53,12 +53,11 @@ timestamp='2013-10-01'
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
-Operation modes:
+Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
@@ -68,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -90,12 +89,12 @@ while test $# -gt 0 ; do
- ) # Use stdin as input.
break ;;
-* )
- echo "$me: invalid option $1$help"
+ echo "$me: invalid option $1$help" >&2
exit 1 ;;
*local*)
# First pass through any local machine types.
- echo $1
+ echo "$1"
exit ;;
* )
@@ -111,1211 +110,1159 @@ case $# in
exit 1;;
esac
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | \
- kopensolaris*-gnu* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- android-linux)
- os=-linux-android
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
+# Split fields of configuration type
+IFS="-" read -r field1 field2 field3 field4 <<EOF
+$1
+EOF
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze*)
- os=
- basic_machine=$1
- ;;
- -bluegene*)
- os=-cnk
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco6)
- os=-sco5v6
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*178)
- os=-lynxos178
- ;;
- -lynx*5)
- os=-lynxos5
- ;;
- -lynx*)
- os=-lynxos
+# Separate into logical components for further validation
+case $1 in
+ *-*-*-*-*)
+ echo Invalid configuration \`"$1"\': more than four components >&2
+ exit 1
;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ *-*-*-*)
+ basic_machine=$field1-$field2
+ os=$field3-$field4
;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ *-*-*)
+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+ # parts
+ maybe_os=$field2-$field3
+ case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
+ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+ | storm-chaos* | os2-emx* | rtmk-nova*)
+ basic_machine=$field1
+ os=$maybe_os
+ ;;
+ android-linux)
+ basic_machine=$field1-unknown
+ os=linux-android
+ ;;
+ *)
+ basic_machine=$field1-$field2
+ os=$field3
+ ;;
+ esac
;;
- -psos*)
- os=-psos
+ *-*)
+ # A lone config we happen to match not fitting any pattern
+ case $field1-$field2 in
+ decstation-3100)
+ basic_machine=mips-dec
+ os=
+ ;;
+ *-*)
+ # Second component is usually, but not always the OS
+ case $field2 in
+ # Prevent following clause from handling this valid os
+ sun*os*)
+ basic_machine=$field1
+ os=$field2
+ ;;
+ # Manufacturers
+ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+ | unicom* | ibm* | next | hp | isi* | apollo | altos* \
+ | convergent* | ncr* | news | 32* | 3600* | 3100* \
+ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+ | ultra | tti* | harris | dolphin | highlevel | gould \
+ | cbm | ns | masscomp | apple | axis | knuth | cray \
+ | microblaze* | sim | cisco \
+ | oki | wec | wrs | winbond)
+ basic_machine=$field1-$field2
+ os=
+ ;;
+ *)
+ basic_machine=$field1
+ os=$field2
+ ;;
+ esac
+ ;;
+ esac
;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
+ *)
+ # Convert single-component short-hands not valid as part of
+ # multi-component configurations.
+ case $field1 in
+ 386bsd)
+ basic_machine=i386-pc
+ os=bsd
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=scout
+ ;;
+ alliant)
+ basic_machine=fx80-alliant
+ os=
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ os=
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=bsd
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=sysv
+ ;;
+ amiga)
+ basic_machine=m68k-unknown
+ os=
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=linux
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=bsd
+ ;;
+ cray)
+ basic_machine=j90-cray
+ os=unicos
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ os=
+ ;;
+ da30)
+ basic_machine=m68k-da30
+ os=
+ ;;
+ decstation | pmax | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ os=
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=msdosdjgpp
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=ebmon
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=ose
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=go32
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=sysv3
+ ;;
+ hp300)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=hpux
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=proelf
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=mach
+ ;;
+ vsta)
+ basic_machine=i386-pc
+ os=vsta
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=linux
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=sysv
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ os=mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=mingw32ce
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=morphos
+ ;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ os=moxiebox
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=msdos
+ ;;
+ msys)
+ basic_machine=i686-pc
+ os=msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ os=nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-pc
+ os=netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=sysv
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=nonstopux
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=os68k
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=linux
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=pw32
+ ;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ os=rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=coff
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ os=
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=sysv2
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ os=
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ os=
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=sunos4
+ ;;
+ sun3)
+ basic_machine=m68k-sun
+ os=
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=sunos4
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ os=
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=solaris2
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ os=
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=unicos
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=tops20
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=vms
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=vxworks
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=mingw32
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=unicos
+ ;;
+ *)
+ basic_machine=$1
+ os=
+ ;;
+ esac
;;
esac
-# Decode aliases for certain CPU-COMPANY combinations.
+# Decode 1-component or ad-hoc basic machines
case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | aarch64 | aarch64_be \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arceb \
- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
- | avr | avr32 \
- | be32 | be64 \
- | bfin \
- | c4x | c8051 | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | epiphany \
- | fido | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | hexagon \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | k1om \
- | le32 | le64 \
- | lm32 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64octeon | mips64octeonel \
- | mips64orion | mips64orionel \
- | mips64r5900 | mips64r5900el \
- | mips64vr | mips64vrel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipsr5900 | mipsr5900el \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | moxie \
- | mt \
- | msp430 \
- | nds32 | nds32le | nds32be \
- | nios | nios2 | nios2eb | nios2el \
- | ns16k | ns32k \
- | open8 \
- | or1k | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle \
- | pyramid \
- | rl78 | rx \
- | score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu \
- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
- | ubicom32 \
- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- | we32k \
- | x86 | xc16x | xstormy16 | xtensa \
- | z8k | z80)
- basic_machine=$basic_machine-unknown
- ;;
- c54x)
- basic_machine=tic54x-unknown
- ;;
- c55x)
- basic_machine=tic55x-unknown
- ;;
- c6x)
- basic_machine=tic6x-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
- ms1)
- basic_machine=mt-unknown
+ # Here we handle the default manufacturer of certain CPU types. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ cpu=hppa1.1
+ vendor=winbond
;;
-
- strongarm | thumb | xscale)
- basic_machine=arm-unknown
+ op50n)
+ cpu=hppa1.1
+ vendor=oki
;;
- xgate)
- basic_machine=$basic_machine-unknown
- os=-none
+ op60c)
+ cpu=hppa1.1
+ vendor=oki
;;
- xscaleeb)
- basic_machine=armeb-unknown
+ ibm*)
+ cpu=i370
+ vendor=ibm
;;
-
- xscaleel)
- basic_machine=armel-unknown
+ orion105)
+ cpu=clipper
+ vendor=highlevel
;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
+ mac | mpw | mac-mpw)
+ cpu=m68k
+ vendor=apple
;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | aarch64-* | aarch64_be-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
- | be32-* | be64-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* \
- | c8051-* | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | hexagon-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | k1om-* \
- | le32-* | le64-* \
- | lm32-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
- | microblaze-* | microblazeel-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64octeon-* | mips64octeonel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64r5900-* | mips64r5900el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipsr5900-* | mipsr5900el-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* | nios2eb-* | nios2el-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | open8-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
- | pyramid-* \
- | rl78-* | romp-* | rs6000-* | rx-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
- | tahoe-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tile*-* \
- | tron-* \
- | ubicom32-* \
- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
- | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* \
- | xstormy16-* | xtensa*-* \
- | ymp-* \
- | z8k-* | z80-*)
- ;;
- # Recognize the basic CPU types without company name, with glob match.
- xtensa*)
- basic_machine=$basic_machine-unknown
+ pmac | pmac-mpw)
+ cpu=powerpc
+ vendor=apple
;;
+
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
+ cpu=m68000
+ vendor=att
;;
3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aros)
- basic_machine=i386-pc
- os=-aros
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- blackfin)
- basic_machine=bfin-unknown
- os=-linux
- ;;
- blackfin-*)
- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
+ cpu=we32k
+ vendor=att
;;
bluegene*)
- basic_machine=powerpc-ibm
- os=-cnk
- ;;
- c54x-*)
- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c55x-*)
- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c6x-*)
- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- cegcc)
- basic_machine=arm-unknown
- os=-cegcc
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16 | cr16-*)
- basic_machine=cr16-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
+ cpu=powerpc
+ vendor=ibm
+ os=cnk
;;
decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
+ cpu=pdp10
+ vendor=dec
+ os=tops10
;;
decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
+ cpu=pdp10
+ vendor=dec
+ os=tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dicos)
- basic_machine=i686-pc
- os=-dicos
+ cpu=m68k
+ vendor=motorola
;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
+ dpx2*)
+ cpu=m68k
+ vendor=bull
+ os=sysv3
;;
encore | umax | mmax)
- basic_machine=ns32k-encore
+ cpu=ns32k
+ vendor=encore
;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
+ elxsi)
+ cpu=elxsi
+ vendor=elxsi
+ os=${os:-bsd}
;;
fx2800)
- basic_machine=i860-alliant
+ cpu=i860
+ vendor=alliant
;;
genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
+ cpu=ns32k
+ vendor=ns
;;
h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
+ cpu=hppa1.1
+ vendor=hitachi
+ os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
+ cpu=hppa1.0
+ vendor=hp
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
+ cpu=m68000
+ vendor=hp
;;
hp9k3[2-9][0-9])
- basic_machine=m68k-hp
+ cpu=m68k
+ vendor=hp
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
+ cpu=hppa1.0
+ vendor=hp
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
# FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
+ cpu=hppa1.0
+ vendor=hp
;;
i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv32
;;
i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv4
;;
i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv
;;
i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=solaris2
;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
+ j90 | j90-cray)
+ cpu=j90
+ vendor=cray
+ os=${os:-unicos}
;;
iris | iris4d)
- basic_machine=mips-sgi
+ cpu=mips
+ vendor=sgi
case $os in
- -irix*)
+ irix*)
;;
*)
- os=-irix4
+ os=irix4
;;
esac
;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- os=-linux
- ;;
- m68knommu-*)
- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- microblaze*)
- basic_machine=microblaze-xilinx
- ;;
- mingw64)
- basic_machine=x86_64-pc
- os=-mingw64
- ;;
- mingw32)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- os=-mingw32ce
- ;;
miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
- msys)
- basic_machine=i686-pc
- os=-msys
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- nacl)
- basic_machine=le32-unknown
- os=-nacl
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
+ cpu=m68000
+ vendor=convergent
;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
+ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ cpu=m68k
+ vendor=atari
+ os=mint
;;
news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
+ cpu=mips
+ vendor=sony
+ os=newsos
;;
- next | m*-next )
- basic_machine=m68k-next
+ next | m*-next)
+ cpu=m68k
+ vendor=next
case $os in
- -nextstep* )
+ nextstep* )
;;
- -ns2*)
- os=-nextstep2
+ ns2*)
+ os=nextstep2
;;
*)
- os=-nextstep3
+ os=nextstep3
;;
esac
;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
np1)
- basic_machine=np1-gould
- ;;
- neo-tandem)
- basic_machine=neo-tandem
- ;;
- nse-tandem)
- basic_machine=nse-tandem
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
+ cpu=np1
+ vendor=gould
;;
op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
+ cpu=hppa1.1
+ vendor=oki
+ os=proelf
;;
pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- parisc)
- basic_machine=hppa-unknown
- os=-linux
- ;;
- parisc-*)
- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
+ cpu=hppa1.1
+ vendor=hitachi
+ os=hiuxwe2
;;
pbd)
- basic_machine=sparc-tti
+ cpu=sparc
+ vendor=tti
;;
pbb)
- basic_machine=m68k-tti
+ cpu=m68k
+ vendor=tti
;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pc98)
- basic_machine=i386-pc
- ;;
- pc98-*)
- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ pc532)
+ cpu=ns32k
+ vendor=pc532
;;
pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
+ cpu=pn
+ vendor=gould
;;
- ppc | ppcbe) basic_machine=powerpc-unknown
- ;;
- ppc-* | ppcbe-*)
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ power)
+ cpu=power
+ vendor=ibm
;;
ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- os=-rdos
- ;;
- rdos32)
- basic_machine=i386-pc
- os=-rdos
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
+ cpu=i386
+ vendor=ibm
;;
rm[46]00)
- basic_machine=mips-siemens
+ cpu=mips
+ vendor=siemens
;;
rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
+ cpu=romp
+ vendor=ibm
;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
+ sde)
+ cpu=mipsisa32
+ vendor=sde
+ os=${os:-elf}
;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
+ simso-wrs)
+ cpu=sparclite
+ vendor=wrs
+ os=vxworks
;;
- sde)
- basic_machine=mipsisa32-sde
- os=-elf
+ tower | tower-32)
+ cpu=m68k
+ vendor=ncr
;;
- sei)
- basic_machine=mips-sei
- os=-seiux
+ vpp*|vx|vx-*)
+ cpu=f301
+ vendor=fujitsu
;;
- sequent)
- basic_machine=i386-sequent
+ w65)
+ cpu=w65
+ vendor=wdc
;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
+ w89k-*)
+ cpu=hppa1.1
+ vendor=winbond
+ os=proelf
;;
- sh5el)
- basic_machine=sh5le-unknown
+ none)
+ cpu=none
+ vendor=none
;;
- sh64)
- basic_machine=sh64-unknown
+ leon|leon[3-9])
+ cpu=sparc
+ vendor=$basic_machine
;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
+ leon-*|leon[3-9]-*)
+ cpu=sparc
+ vendor=`echo "$basic_machine" | sed 's/-.*//'`
;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
+
+ *-*)
+ IFS="-" read -r cpu vendor <<EOF
+$basic_machine
+EOF
;;
- spur)
- basic_machine=spur-unknown
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ cpu=$basic_machine
+ vendor=pc
;;
- st2000)
- basic_machine=m68k-tandem
+ # These rules are duplicated from below for sake of the special case above;
+ # i.e. things that normalized to x86 arches should also default to "pc"
+ pc98)
+ cpu=i386
+ vendor=pc
;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
+ x64 | amd64)
+ cpu=x86_64
+ vendor=pc
;;
- strongarm-* | thumb-*)
- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ # Recognize the basic CPU types without company name.
+ *)
+ cpu=$basic_machine
+ vendor=unknown
;;
- sun2)
- basic_machine=m68000-sun
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+ # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ craynv-unknown)
+ vendor=cray
+ os=${os:-unicosmp}
;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
+ c90-unknown | c90-cray)
+ vendor=cray
+ os=${os:-unicos}
;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
+ fx80-unknown)
+ vendor=alliant
;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
+ romp-unknown)
+ vendor=ibm
;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
+ mmix-unknown)
+ vendor=knuth
;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
+ microblaze-unknown | microblazeel-unknown)
+ vendor=xilinx
;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
+ rs6000-unknown)
+ vendor=ibm
;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
+ vax-unknown)
+ vendor=dec
;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
+ pdp11-unknown)
+ vendor=dec
;;
- sun4)
- basic_machine=sparc-sun
+ we32k-unknown)
+ vendor=att
;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
+ cydra-unknown)
+ vendor=cydrome
;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
+ i370-ibm*)
+ vendor=ibm
;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
+ orion-unknown)
+ vendor=highlevel
;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
+ xps-unknown | xps100-unknown)
+ cpu=xps100
+ vendor=honeywell
;;
- t90)
- basic_machine=t90-cray
- os=-unicos
+
+ # Here we normalize CPU types with a missing or matching vendor
+ dpx20-unknown | dpx20-bull)
+ cpu=rs6000
+ vendor=bull
+ os=${os:-bosx}
;;
- tile*)
- basic_machine=$basic_machine-unknown
- os=-linux-gnu
+
+ # Here we normalize CPU types irrespective of the vendor
+ amd64-*)
+ cpu=x86_64
;;
- tx39)
- basic_machine=mipstx39-unknown
+ blackfin-*)
+ cpu=bfin
+ os=linux
;;
- tx39el)
- basic_machine=mipstx39el-unknown
+ c54x-*)
+ cpu=tic54x
;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
+ c55x-*)
+ cpu=tic55x
;;
- tower | tower-32)
- basic_machine=m68k-ncr
+ c6x-*)
+ cpu=tic6x
;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
+ e500v[12]-*)
+ cpu=powerpc
+ os=$os"spe"
;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
+ mips3*-*)
+ cpu=mips64
;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
+ ms1-*)
+ cpu=mt
;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
+ m68knommu-*)
+ cpu=m68k
+ os=linux
;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
+ m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+ cpu=s12z
;;
- vms)
- basic_machine=vax-dec
- os=-vms
+ openrisc-*)
+ cpu=or32
;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
+ parisc-*)
+ cpu=hppa
+ os=linux
;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ cpu=i586
;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ cpu=i686
;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ cpu=i686
;;
- w65*)
- basic_machine=w65-wdc
- os=-none
+ pentium4-*)
+ cpu=i786
;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
+ pc98-*)
+ cpu=i386
;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
+ ppc-* | ppcbe-*)
+ cpu=powerpc
;;
- xps | xps100)
- basic_machine=xps100-honeywell
+ ppcle-* | powerpclittle-*)
+ cpu=powerpcle
;;
- xscale-* | xscalee[bl]-*)
- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ppc64-*)
+ cpu=powerpc64
;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
+ ppc64le-* | powerpc64little-*)
+ cpu=powerpc64le
;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
+ sb1-*)
+ cpu=mipsisa64sb1
;;
- z80-*-coff)
- basic_machine=z80-unknown
- os=-sim
+ sb1el-*)
+ cpu=mipsisa64sb1el
;;
- none)
- basic_machine=none-none
- os=-none
+ sh5e[lb]-*)
+ cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
+ spur-*)
+ cpu=spur
;;
- op50n)
- basic_machine=hppa1.1-oki
+ strongarm-* | thumb-*)
+ cpu=arm
;;
- op60c)
- basic_machine=hppa1.1-oki
+ tx39-*)
+ cpu=mipstx39
;;
- romp)
- basic_machine=romp-ibm
+ tx39el-*)
+ cpu=mipstx39el
;;
- mmix)
- basic_machine=mmix-knuth
+ x64-*)
+ cpu=x86_64
;;
- rs6000)
- basic_machine=rs6000-ibm
+ xscale-* | xscalee[bl]-*)
+ cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
;;
- vax)
- basic_machine=vax-dec
+
+ # Recognize the canonical CPU Types that limit and/or modify the
+ # company names they are paired with.
+ cr16-*)
+ os=${os:-elf}
;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
+ crisv32-* | etraxfs*-*)
+ cpu=crisv32
+ vendor=axis
;;
- pdp11)
- basic_machine=pdp11-dec
+ cris-* | etrax*-*)
+ cpu=cris
+ vendor=axis
;;
- we32k)
- basic_machine=we32k-att
+ crx-*)
+ os=${os:-elf}
;;
- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
+ neo-tandem)
+ cpu=neo
+ vendor=tandem
;;
- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
- basic_machine=sparc-sun
+ nse-tandem)
+ cpu=nse
+ vendor=tandem
;;
- cydra)
- basic_machine=cydra-cydrome
+ nsr-tandem)
+ cpu=nsr
+ vendor=tandem
;;
- orion)
- basic_machine=orion-highlevel
+ nsv-tandem)
+ cpu=nsv
+ vendor=tandem
;;
- orion105)
- basic_machine=clipper-highlevel
+ nsx-tandem)
+ cpu=nsx
+ vendor=tandem
;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
+ s390-*)
+ cpu=s390
+ vendor=ibm
;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
+ s390x-*)
+ cpu=s390x
+ vendor=ibm
;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
+ tile*-*)
+ os=${os:-linux-gnu}
;;
+
*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
+ # Recognize the canonical CPU types that are allowed with any
+ # company name.
+ case $cpu in
+ 1750a | 580 \
+ | a29k \
+ | aarch64 | aarch64_be \
+ | abacus \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+ | alphapca5[67] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arceb \
+ | arm | arm[lb]e | arme[lb] | armv* \
+ | avr | avr32 \
+ | asmjs \
+ | ba \
+ | be32 | be64 \
+ | bfin | bs2000 \
+ | c[123]* | c30 | [cjt]90 | c4x \
+ | c8051 | clipper | craynv | csky | cydra \
+ | d10v | d30v | dlx | dsp16xx \
+ | e2k | elxsi | epiphany \
+ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+ | h8300 | h8500 \
+ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i*86 | i860 | i960 | ia16 | ia64 \
+ | ip2k | iq2000 \
+ | k1om \
+ | le32 | le64 \
+ | lm32 \
+ | m32c | m32r | m32rle \
+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k | v70 | w65 \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r6 | mipsisa32r6el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r6 | mipsisa64r6el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+ | mipstx39 | mipstx39el \
+ | mmix \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nfp \
+ | nios | nios2 | nios2eb | nios2el \
+ | none | np1 | ns16k | ns32k \
+ | open8 \
+ | or1k* \
+ | or32 \
+ | orion \
+ | pdp10 | pdp11 | pj | pjl | pn | power \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+ | pru \
+ | pyramid \
+ | riscv | riscv32 | riscv64 \
+ | rl78 | romp | rs6000 | rx \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+ | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+ | spu \
+ | tahoe \
+ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+ | tron \
+ | ubicom32 \
+ | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+ | vax \
+ | visium \
+ | wasm32 \
+ | we32k \
+ | x86 | x86_64 | xc16x | xgate | xps100 \
+ | xstormy16 | xtensa* \
+ | ymp \
+ | z8k | z80)
+ ;;
+
+ *)
+ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+ exit 1
+ ;;
+ esac
;;
esac
# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+case $vendor in
+ digital*)
+ vendor=dec
;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ commodore*)
+ vendor=cbm
;;
*)
;;
@@ -1323,197 +1270,246 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
-if [ x"$os" != x"" ]
+if [ x$os != x ]
then
case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
+ # First match some system type aliases that might get confused
+ # with valid system types.
+ # solaris* is a basic system type, with this one exception.
+ auroraux)
+ os=auroraux
;;
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ bluegene*)
+ os=cnk
;;
- -solaris)
- os=-solaris2
+ solaris1 | solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
- -svr4*)
- os=-sysv4
+ solaris)
+ os=solaris2
;;
- -unixware*)
- os=-sysv4.2uw
+ unixware*)
+ os=sysv4.2uw
;;
- -gnu/linux*)
+ gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
- # First accept the basic system types.
+ # es1800 is here to avoid being matched by es* (a different OS)
+ es1800*)
+ os=ose
+ ;;
+ # Some version numbers need modification
+ chorusos*)
+ os=chorusos
+ ;;
+ isc)
+ os=isc2.2
+ ;;
+ sco6)
+ os=sco5v6
+ ;;
+ sco5)
+ os=sco3.2v5
+ ;;
+ sco4)
+ os=sco3.2v4
+ ;;
+ sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ ;;
+ sco3.2v[4-9]* | sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ ;;
+ scout)
+ # Don't match below
+ ;;
+ sco*)
+ os=sco3.2v2
+ ;;
+ psos*)
+ os=psos
+ ;;
+ # Now accept the basic system types.
# The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* | -plan9* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -bitrig* | -openbsd* | -solidbsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+ # Each alternative MUST end in a * to match a version number.
+ # sysv* is not here because it comes later, after sysvr4.
+ gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ | sym* | kopensolaris* | plan9* \
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ | aos* | aros* | cloudabi* | sortix* \
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ | knetbsd* | mirbsd* | netbsd* \
+ | bitrig* | openbsd* | solidbsd* | libertybsd* \
+ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
+ | chorusrdb* | cegcc* | glidix* \
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
+ | linux-newlib* | linux-musl* | linux-uclibc* \
+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+ | interix* | uwin* | mks* | rhapsody* | darwin* \
+ | openstep* | oskit* | conix* | pw32* | nonstopux* \
+ | storm-chaos* | tops10* | tenex* | tops20* | its* \
+ | os2* | vos* | palmos* | uclinux* | nucleus* \
+ | morphos* | superux* | rtmk* | windiss* \
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+ | midnightbsd*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
+ qnx*)
+ case $cpu in
+ x86 | i*86)
;;
*)
- os=-nto$os
+ os=nto-$os
;;
esac
;;
- -nto-qnx*)
+ hiux*)
+ os=hiuxwe2
;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ nto-qnx*)
;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
+ sim | xray | os68k* | v88r* \
+ | windows* | osx | abug | netware* | os9* \
+ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
;;
- -linux-dietlibc)
- os=-linux-dietlibc
+ linux-dietlibc)
+ os=linux-dietlibc
;;
- -linux*)
+ linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ lynx*178)
+ os=lynxos178
;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ lynx*5)
+ os=lynxos5
;;
- -opened*)
- os=-openedition
+ lynx*)
+ os=lynxos
;;
- -os400*)
- os=-os400
+ mac*)
+ os=`echo "$os" | sed -e 's|mac|macos|'`
;;
- -wince*)
- os=-wince
+ opened*)
+ os=openedition
;;
- -osfrose*)
- os=-osfrose
+ os400*)
+ os=os400
;;
- -osf*)
- os=-osf
+ sunos5*)
+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
;;
- -utek*)
- os=-bsd
+ sunos6*)
+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
;;
- -dynix*)
- os=-bsd
+ wince*)
+ os=wince
;;
- -acis*)
- os=-aos
+ utek*)
+ os=bsd
;;
- -atheos*)
- os=-atheos
+ dynix*)
+ os=bsd
;;
- -syllable*)
- os=-syllable
+ acis*)
+ os=aos
;;
- -386bsd)
- os=-bsd
+ atheos*)
+ os=atheos
;;
- -ctix* | -uts*)
- os=-sysv
+ syllable*)
+ os=syllable
;;
- -nova*)
- os=-rtmk-nova
+ 386bsd)
+ os=bsd
;;
- -ns2 )
- os=-nextstep2
+ ctix* | uts*)
+ os=sysv
;;
- -nsk*)
- os=-nsk
+ nova*)
+ os=rtmk-nova
+ ;;
+ ns2)
+ os=nextstep2
+ ;;
+ nsk*)
+ os=nsk
;;
# Preserve the version number of sinix5.
- -sinix5.*)
+ sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
;;
- -sinix*)
- os=-sysv4
+ sinix*)
+ os=sysv4
;;
- -tpf*)
- os=-tpf
+ tpf*)
+ os=tpf
;;
- -triton*)
- os=-sysv3
+ triton*)
+ os=sysv3
;;
- -oss*)
- os=-sysv3
+ oss*)
+ os=sysv3
;;
- -svr4)
- os=-sysv4
+ svr4*)
+ os=sysv4
;;
- -svr3)
- os=-sysv3
+ svr3)
+ os=sysv3
;;
- -sysvr4)
- os=-sysv4
+ sysvr4)
+ os=sysv4
;;
- # This must come after -sysvr4.
- -sysv*)
+ # This must come after sysvr4.
+ sysv*)
;;
- -ose*)
- os=-ose
+ ose*)
+ os=ose
;;
- -es1800*)
- os=-ose
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ os=mint
;;
- -xenix)
- os=-xenix
+ zvmoe)
+ os=zvmoe
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
+ dicos*)
+ os=dicos
;;
- -aros*)
- os=-aros
+ pikeos*)
+ # Until real need of OS specific support for
+ # particular features comes up, bare metal
+ # configurations are quite functional.
+ case $cpu in
+ arm*)
+ os=eabi
+ ;;
+ *)
+ os=elf
+ ;;
+ esac
;;
- -zvmoe)
- os=-zvmoe
+ nacl*)
;;
- -dicos*)
- os=-dicos
+ ios)
;;
- -nacl*)
+ none)
;;
- -none)
+ *-eabi)
;;
*)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
exit 1
;;
esac
@@ -1529,264 +1525,265 @@ else
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
-case $basic_machine in
+case $cpu-$vendor in
score-*)
- os=-elf
+ os=elf
;;
spu-*)
- os=-elf
+ os=elf
;;
*-acorn)
- os=-riscix1.2
+ os=riscix1.2
;;
arm*-rebel)
- os=-linux
+ os=linux
;;
arm*-semi)
- os=-aout
+ os=aout
;;
c4x-* | tic4x-*)
- os=-coff
+ os=coff
;;
c8051-*)
- os=-elf
+ os=elf
+ ;;
+ clipper-intergraph)
+ os=clix
;;
hexagon-*)
- os=-elf
+ os=elf
;;
tic54x-*)
- os=-coff
+ os=coff
;;
tic55x-*)
- os=-coff
+ os=coff
;;
tic6x-*)
- os=-coff
+ os=coff
;;
# This must come before the *-dec entry.
pdp10-*)
- os=-tops20
+ os=tops20
;;
pdp11-*)
- os=-none
+ os=none
;;
*-dec | vax-*)
- os=-ultrix4.2
+ os=ultrix4.2
;;
m68*-apollo)
- os=-domain
+ os=domain
;;
i386-sun)
- os=-sunos4.0.2
+ os=sunos4.0.2
;;
m68000-sun)
- os=-sunos3
+ os=sunos3
;;
m68*-cisco)
- os=-aout
+ os=aout
;;
mep-*)
- os=-elf
+ os=elf
;;
mips*-cisco)
- os=-elf
+ os=elf
;;
mips*-*)
- os=-elf
- ;;
- or1k-*)
- os=-elf
+ os=elf
;;
or32-*)
- os=-coff
+ os=coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
+ os=sysv3
;;
sparc-* | *-sun)
- os=-sunos4.1.1
+ os=sunos4.1.1
;;
- *-be)
- os=-beos
+ pru-*)
+ os=elf
;;
- *-haiku)
- os=-haiku
+ *-be)
+ os=beos
;;
*-ibm)
- os=-aix
+ os=aix
;;
*-knuth)
- os=-mmixware
+ os=mmixware
;;
*-wec)
- os=-proelf
+ os=proelf
;;
*-winbond)
- os=-proelf
+ os=proelf
;;
*-oki)
- os=-proelf
+ os=proelf
;;
*-hp)
- os=-hpux
+ os=hpux
;;
*-hitachi)
- os=-hiux
+ os=hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
+ os=sysv
;;
*-cbm)
- os=-amigaos
+ os=amigaos
;;
*-dg)
- os=-dgux
+ os=dgux
;;
*-dolphin)
- os=-sysv3
+ os=sysv3
;;
m68k-ccur)
- os=-rtu
+ os=rtu
;;
m88k-omron*)
- os=-luna
+ os=luna
;;
- *-next )
- os=-nextstep
+ *-next)
+ os=nextstep
;;
*-sequent)
- os=-ptx
+ os=ptx
;;
*-crds)
- os=-unos
+ os=unos
;;
*-ns)
- os=-genix
+ os=genix
;;
i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
+ os=mvs
;;
*-gould)
- os=-sysv
+ os=sysv
;;
*-highlevel)
- os=-bsd
+ os=bsd
;;
*-encore)
- os=-bsd
+ os=bsd
;;
*-sgi)
- os=-irix
+ os=irix
;;
*-siemens)
- os=-sysv4
+ os=sysv4
;;
*-masscomp)
- os=-rtu
+ os=rtu
;;
f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
+ os=uxpv
;;
*-rom68k)
- os=-coff
+ os=coff
;;
*-*bug)
- os=-coff
+ os=coff
;;
*-apple)
- os=-macos
+ os=macos
;;
*-atari*)
- os=-mint
+ os=mint
+ ;;
+ *-wrs)
+ os=vxworks
;;
*)
- os=-none
+ os=none
;;
esac
fi
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
+case $vendor in
+ unknown)
case $os in
- -riscix*)
+ riscix*)
vendor=acorn
;;
- -sunos*)
+ sunos*)
vendor=sun
;;
- -cnk*|-aix*)
+ cnk*|-aix*)
vendor=ibm
;;
- -beos*)
+ beos*)
vendor=be
;;
- -hpux*)
+ hpux*)
vendor=hp
;;
- -mpeix*)
+ mpeix*)
vendor=hp
;;
- -hiux*)
+ hiux*)
vendor=hitachi
;;
- -unos*)
+ unos*)
vendor=crds
;;
- -dgux*)
+ dgux*)
vendor=dg
;;
- -luna*)
+ luna*)
vendor=omron
;;
- -genix*)
+ genix*)
vendor=ns
;;
- -mvs* | -opened*)
+ clix*)
+ vendor=intergraph
+ ;;
+ mvs* | opened*)
vendor=ibm
;;
- -os400*)
+ os400*)
vendor=ibm
;;
- -ptx*)
+ ptx*)
vendor=sequent
;;
- -tpf*)
+ tpf*)
vendor=ibm
;;
- -vxsim* | -vxworks* | -windiss*)
+ vxsim* | vxworks* | windiss*)
vendor=wrs
;;
- -aux*)
+ aux*)
vendor=apple
;;
- -hms*)
+ hms*)
vendor=hitachi
;;
- -mpw* | -macos*)
+ mpw* | macos*)
vendor=apple
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
vendor=atari
;;
- -vos*)
+ vos*)
vendor=stratus
;;
esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
esac
-echo $basic_machine$os
+echo "$cpu-$vendor-$os"
exit
# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
diff --git a/support/shlib-install b/support/shlib-install
index cfec3bd..f4eea27 100755
--- a/support/shlib-install
+++ b/support/shlib-install
@@ -73,7 +73,7 @@ fi
case "$host_os" in
hpux*|darwin*|macosx*|linux*|solaris2*)
if [ -z "$uninstall" ]; then
- chmod 555 ${INSTALLDIR}/${LIBNAME}
+ chmod 755 ${INSTALLDIR}/${LIBNAME}
fi ;;
cygwin*|mingw*)
IMPLIBNAME=`echo ${LIBNAME} \
diff --git a/support/shobj-conf b/support/shobj-conf
index 1f64433..7920f1b 100644
--- a/support/shobj-conf
+++ b/support/shobj-conf
@@ -189,7 +189,7 @@ darwin*)
darwin[1-7].*)
SHOBJ_STATUS=unsupported
SHOBJ_LDFLAGS='-dynamic'
- SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+ SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v'
;;
# Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4
*)
@@ -205,7 +205,7 @@ darwin*)
;;
esac
SHOBJ_LDFLAGS="-dynamiclib -dynamic -undefined dynamic_lookup ${SHOBJ_ARCHFLAGS}"
- SHLIB_XLDFLAGS="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+ SHLIB_XLDFLAGS="-dynamiclib ${SHOBJ_ARCHFLAGS}"' -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v'
;;
esac
diff --git a/terminal.c b/terminal.c
index ef2884e..e557389 100644
--- a/terminal.c
+++ b/terminal.c
@@ -1,6 +1,6 @@
/* terminal.c -- controlling the terminal with termcap. */
-/* Copyright (C) 1996-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -112,6 +112,7 @@ char PC, *BC, *UP;
/* Some strings to control terminal actions. These are output by tputs (). */
char *_rl_term_clreol;
char *_rl_term_clrpag;
+char *_rl_term_clrscroll;
char *_rl_term_cr;
char *_rl_term_backspace;
char *_rl_term_goto;
@@ -131,6 +132,7 @@ char *_rl_term_IC;
char *_rl_term_dc;
char *_rl_term_DC;
+/* How to move forward a char, non-destructively */
char *_rl_term_forward_char;
/* How to go up a line. */
@@ -188,8 +190,7 @@ int _rl_enable_meta = 1;
#if defined (__EMX__)
static void
-_emx_get_screensize (swp, shp)
- int *swp, *shp;
+_emx_get_screensize (int *swp, int *shp)
{
int sz[2];
@@ -204,8 +205,7 @@ _emx_get_screensize (swp, shp)
#if defined (__MINGW32__)
static void
-_win_get_screensize (swp, shp)
- int *swp, *shp;
+_win_get_screensize (int *swp, int *shp)
{
HANDLE hConOut;
CONSOLE_SCREEN_BUFFER_INFO scr;
@@ -227,8 +227,7 @@ _win_get_screensize (swp, shp)
values of $LINES and $COLUMNS. The tests for TERM_STRING_BUFFER being
non-null serve to check whether or not we have initialized termcap. */
void
-_rl_get_screen_size (tty, ignore_env)
- int tty, ignore_env;
+_rl_get_screen_size (int tty, int ignore_env)
{
char *ss;
#if defined (TIOCGWINSZ)
@@ -318,8 +317,7 @@ _rl_get_screen_size (tty, ignore_env)
}
void
-_rl_set_screen_size (rows, cols)
- int rows, cols;
+_rl_set_screen_size (int rows, int cols)
{
if (_rl_term_autowrap == -1)
_rl_init_terminal_io (rl_terminal_name);
@@ -338,15 +336,13 @@ _rl_set_screen_size (rows, cols)
}
void
-rl_set_screen_size (rows, cols)
- int rows, cols;
+rl_set_screen_size (int rows, int cols)
{
_rl_set_screen_size (rows, cols);
}
void
-rl_get_screen_size (rows, cols)
- int *rows, *cols;
+rl_get_screen_size (int *rows, int *cols)
{
if (rows)
*rows = _rl_screenheight;
@@ -355,19 +351,19 @@ rl_get_screen_size (rows, cols)
}
void
-rl_reset_screen_size ()
+rl_reset_screen_size (void)
{
_rl_get_screen_size (fileno (rl_instream), 0);
}
void
-_rl_sigwinch_resize_terminal ()
+_rl_sigwinch_resize_terminal (void)
{
_rl_get_screen_size (fileno (rl_instream), 1);
}
void
-rl_resize_terminal ()
+rl_resize_terminal (void)
{
_rl_get_screen_size (fileno (rl_instream), 1);
if (_rl_echoing_p)
@@ -390,6 +386,7 @@ static const struct _tc_string tc_strings[] =
{
{ "@7", &_rl_term_at7 },
{ "DC", &_rl_term_DC },
+ { "E3", &_rl_term_clrscroll },
{ "IC", &_rl_term_IC },
{ "ce", &_rl_term_clreol },
{ "cl", &_rl_term_clrpag },
@@ -424,8 +421,7 @@ static const struct _tc_string tc_strings[] =
/* Read the desired terminal capability strings into BP. The capabilities
are described in the TC_STRINGS table. */
static void
-get_term_capabilities (bp)
- char **bp;
+get_term_capabilities (char **bp)
{
#if !defined (__DJGPP__) /* XXX - doesn't DJGPP have a termcap library? */
register int i;
@@ -437,15 +433,14 @@ get_term_capabilities (bp)
}
int
-_rl_init_terminal_io (terminal_name)
- const char *terminal_name;
+_rl_init_terminal_io (const char *terminal_name)
{
const char *term;
char *buffer;
int tty, tgetent_ret;
term = terminal_name ? terminal_name : sh_get_env_value ("TERM");
- _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = (char *)NULL;
+ _rl_term_clrpag = _rl_term_cr = _rl_term_clreol = _rl_term_clrscroll = (char *)NULL;
tty = rl_instream ? fileno (rl_instream) : 0;
if (term == 0)
@@ -458,7 +453,7 @@ _rl_init_terminal_io (terminal_name)
_rl_term_mm = _rl_term_mo = (char *)NULL;
_rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0;
_rl_term_cr = "\r";
- _rl_term_clreol = _rl_term_clrpag = _rl_term_backspace = (char *)NULL;
+ _rl_term_backspace = (char *)NULL;
_rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL;
_rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL;
_rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL;
@@ -584,8 +579,7 @@ _rl_init_terminal_io (terminal_name)
/* Bind the arrow key sequences from the termcap description in MAP. */
static void
-bind_termcap_arrow_keys (map)
- Keymap map;
+bind_termcap_arrow_keys (Keymap map)
{
Keymap xkeymap;
@@ -601,13 +595,13 @@ bind_termcap_arrow_keys (map)
rl_bind_keyseq_if_unbound (_rl_term_at7, rl_end_of_line); /* End */
rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete);
+ rl_bind_keyseq_if_unbound (_rl_term_kI, rl_overwrite_mode); /* Insert */
_rl_keymap = xkeymap;
}
char *
-rl_get_termcap (cap)
- const char *cap;
+rl_get_termcap (const char *cap)
{
register int i;
@@ -624,8 +618,7 @@ rl_get_termcap (cap)
/* Re-initialize the terminal considering that the TERM/TERMCAP variable
has changed. */
int
-rl_reset_terminal (terminal_name)
- const char *terminal_name;
+rl_reset_terminal (const char *terminal_name)
{
_rl_screenwidth = _rl_screenheight = 0;
_rl_init_terminal_io (terminal_name);
@@ -635,15 +628,13 @@ rl_reset_terminal (terminal_name)
/* A function for the use of tputs () */
#ifdef _MINIX
void
-_rl_output_character_function (c)
- int c;
+_rl_output_character_function (int c)
{
putc (c, _rl_out_stream);
}
#else /* !_MINIX */
int
-_rl_output_character_function (c)
- int c;
+_rl_output_character_function (int c)
{
return putc (c, _rl_out_stream);
}
@@ -651,17 +642,14 @@ _rl_output_character_function (c)
/* Write COUNT characters from STRING to the output stream. */
void
-_rl_output_some_chars (string, count)
- const char *string;
- int count;
+_rl_output_some_chars (const char *string, int count)
{
fwrite (string, 1, count, _rl_out_stream);
}
/* Move the cursor back. */
int
-_rl_backspace (count)
- int count;
+_rl_backspace (int count)
{
register int i;
@@ -678,7 +666,7 @@ _rl_backspace (count)
/* Move to the start of the next line. */
int
-rl_crlf ()
+rl_crlf (void)
{
#if defined (NEW_TTY_DRIVER) || defined (__MINT__)
if (_rl_term_cr)
@@ -690,7 +678,7 @@ rl_crlf ()
/* Ring the terminal bell. */
int
-rl_ding ()
+rl_ding (void)
{
if (_rl_echoing_p)
{
@@ -729,7 +717,7 @@ rl_ding ()
static int enabled_meta = 0; /* flag indicating we enabled meta mode */
void
-_rl_enable_meta_key ()
+_rl_enable_meta_key (void)
{
#if !defined (__DJGPP__)
if (term_has_meta && _rl_term_mm)
@@ -741,7 +729,7 @@ _rl_enable_meta_key ()
}
void
-_rl_disable_meta_key ()
+_rl_disable_meta_key (void)
{
#if !defined (__DJGPP__)
if (term_has_meta && _rl_term_mo && enabled_meta)
@@ -753,8 +741,7 @@ _rl_disable_meta_key ()
}
void
-_rl_control_keypad (on)
- int on;
+_rl_control_keypad (int on)
{
#if !defined (__DJGPP__)
if (on && _rl_term_ks)
@@ -775,8 +762,7 @@ _rl_control_keypad (on)
cursor. Overwrite mode gets a very visible cursor. Only does
anything if we have both capabilities. */
void
-_rl_set_cursor (im, force)
- int im, force;
+_rl_set_cursor (int im, int force)
{
#ifndef __MSDOS__
if (_rl_term_ve && _rl_term_vs)
diff --git a/text.c b/text.c
index c353252..cddaeeb 100644
--- a/text.c
+++ b/text.c
@@ -1,6 +1,6 @@
/* text.c -- text handling commands for readline. */
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -83,8 +83,7 @@ int _rl_optimize_typeahead = 1; /* rl_insert tries to read typeahead */
way that you should do insertion. _rl_insert_char () calls this
function. Returns the number of characters inserted. */
int
-rl_insert_text (string)
- const char *string;
+rl_insert_text (const char *string)
{
register int i, l;
@@ -121,8 +120,7 @@ rl_insert_text (string)
/* Delete the string between FROM and TO. FROM is inclusive, TO is not.
Returns the number of characters deleted. */
int
-rl_delete_text (from, to)
- int from, to;
+rl_delete_text (int from, int to)
{
register char *text;
register int diff, i;
@@ -172,8 +170,7 @@ rl_delete_text (from, to)
} while (0)
void
-_rl_fix_point (fix_mark_too)
- int fix_mark_too;
+_rl_fix_point (int fix_mark_too)
{
_RL_FIX_POINT (rl_point);
if (fix_mark_too)
@@ -185,9 +182,7 @@ _rl_fix_point (fix_mark_too)
TEXT. The operation is undoable. To replace the entire line in an
undoable mode, use _rl_replace_text(text, 0, rl_end); */
int
-_rl_replace_text (text, start, end)
- const char *text;
- int start, end;
+_rl_replace_text (const char *text, int start, int end)
{
int n;
@@ -206,9 +201,7 @@ _rl_replace_text (text, start, end)
/* Replace the current line buffer contents with TEXT. If CLEAR_UNDO is
non-zero, we free the current undo list. */
void
-rl_replace_line (text, clear_undo)
- const char *text;
- int clear_undo;
+rl_replace_line (const char *text, int clear_undo)
{
int len;
@@ -259,8 +252,7 @@ rl_replace_line (text, clear_undo)
/* Move forward COUNT bytes. */
int
-rl_forward_byte (count, key)
- int count, key;
+rl_forward_byte (int count, int key)
{
if (count < 0)
return (rl_backward_byte (-count, key));
@@ -292,8 +284,7 @@ rl_forward_byte (count, key)
}
int
-_rl_forward_char_internal (count)
- int count;
+_rl_forward_char_internal (int count)
{
int point;
@@ -306,21 +297,47 @@ _rl_forward_char_internal (count)
#endif
if (rl_end < 0)
- rl_end = 0;
+ rl_end = 0;
#else
point = rl_point + count;
+#endif
+
if (point > rl_end)
point = rl_end;
+ return (point);
+}
+
+int
+_rl_backward_char_internal (int count)
+{
+ int point;
+
+ point = rl_point;
+#if defined (HANDLE_MULTIBYTE)
+ if (count > 0)
+ {
+ while (count > 0 && point > 0)
+ {
+ point = _rl_find_prev_mbchar (rl_line_buffer, point, MB_FIND_NONZERO);
+ count--;
+ }
+ if (count > 0)
+ return 0; /* XXX - rl_ding() here? */
+ }
+#else
+ if (count > 0)
+ point -= count;
#endif
+ if (point < 0)
+ point = 0;
return (point);
}
#if defined (HANDLE_MULTIBYTE)
/* Move forward COUNT characters. */
int
-rl_forward_char (count, key)
- int count, key;
+rl_forward_char (int count, int key)
{
int point;
@@ -350,8 +367,7 @@ rl_forward_char (count, key)
}
#else /* !HANDLE_MULTIBYTE */
int
-rl_forward_char (count, key)
- int count, key;
+rl_forward_char (int count, int key)
{
return (rl_forward_byte (count, key));
}
@@ -359,16 +375,14 @@ rl_forward_char (count, key)
/* Backwards compatibility. */
int
-rl_forward (count, key)
- int count, key;
+rl_forward (int count, int key)
{
return (rl_forward_char (count, key));
}
/* Move backward COUNT bytes. */
int
-rl_backward_byte (count, key)
- int count, key;
+rl_backward_byte (int count, int key)
{
if (count < 0)
return (rl_forward_byte (-count, key));
@@ -393,8 +407,7 @@ rl_backward_byte (count, key)
#if defined (HANDLE_MULTIBYTE)
/* Move backward COUNT characters. */
int
-rl_backward_char (count, key)
- int count, key;
+rl_backward_char (int count, int key)
{
int point;
@@ -426,8 +439,7 @@ rl_backward_char (count, key)
}
#else
int
-rl_backward_char (count, key)
- int count, key;
+rl_backward_char (int count, int key)
{
return (rl_backward_byte (count, key));
}
@@ -435,16 +447,14 @@ rl_backward_char (count, key)
/* Backwards compatibility. */
int
-rl_backward (count, key)
- int count, key;
+rl_backward (int count, int key)
{
return (rl_backward_char (count, key));
}
/* Move to the beginning of the line. */
int
-rl_beg_of_line (count, key)
- int count, key;
+rl_beg_of_line (int count, int key)
{
rl_point = 0;
return 0;
@@ -452,8 +462,7 @@ rl_beg_of_line (count, key)
/* Move to the end of the line. */
int
-rl_end_of_line (count, key)
- int count, key;
+rl_end_of_line (int count, int key)
{
rl_point = rl_end;
return 0;
@@ -461,8 +470,7 @@ rl_end_of_line (count, key)
/* Move forward a word. We do what Emacs does. Handles multibyte chars. */
int
-rl_forward_word (count, key)
- int count, key;
+rl_forward_word (int count, int key)
{
int c;
@@ -510,8 +518,7 @@ rl_forward_word (count, key)
/* Move backward a word. We do what Emacs does. Handles multibyte chars. */
int
-rl_backward_word (count, key)
- int count, key;
+rl_backward_word (int count, int key)
{
int c, p;
@@ -560,8 +567,7 @@ rl_backward_word (count, key)
/* Clear the current line. Numeric argument to C-l does this. */
int
-rl_refresh_line (ignore1, ignore2)
- int ignore1, ignore2;
+rl_refresh_line (int ignore1, int ignore2)
{
int curr_line;
@@ -582,8 +588,7 @@ rl_refresh_line (ignore1, ignore2)
the prompt and the current input line. Given a numeric arg, redraw only
the current line. */
int
-rl_clear_screen (count, key)
- int count, key;
+rl_clear_screen (int count, int key)
{
if (rl_explicit_arg)
{
@@ -599,8 +604,25 @@ rl_clear_screen (count, key)
}
int
-rl_skip_csi_sequence (count, key)
- int count, key;
+rl_previous_screen_line (int count, int key)
+{
+ int c;
+
+ c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1);
+ return (rl_backward_char (c, key));
+}
+
+int
+rl_next_screen_line (int count, int key)
+{
+ int c;
+
+ c = _rl_term_autowrap ? _rl_screenwidth : (_rl_screenwidth + 1);
+ return (rl_forward_char (c, key));
+}
+
+int
+rl_skip_csi_sequence (int count, int key)
{
int ch;
@@ -614,8 +636,7 @@ rl_skip_csi_sequence (count, key)
}
int
-rl_arrow_keys (count, c)
- int count, c;
+rl_arrow_keys (int count, int key)
{
int ch;
@@ -672,8 +693,7 @@ static mbstate_t ps = {0};
If C introduces a multibyte sequence, we read the whole sequence and
then insert the multibyte char into the line buffer. */
int
-_rl_insert_char (count, c)
- int count, c;
+_rl_insert_char (int count, int c)
{
register int i;
char *string;
@@ -695,6 +715,12 @@ _rl_insert_char (count, c)
incoming[1] = '\0';
incoming_length = 1;
}
+ else if (_rl_utf8locale && (c & 0x80) == 0)
+ {
+ incoming[0] = c;
+ incoming[1] = '\0';
+ incoming_length = 1;
+ }
else
{
wchar_t wc;
@@ -739,6 +765,12 @@ _rl_insert_char (count, c)
effect of mbstate is undefined. */
memset (&ps, 0, sizeof (mbstate_t));
}
+ else if (ret == 1)
+ {
+ incoming[0] = pending_bytes[0];
+ incoming[incoming_length = 1] = '\0';
+ pending_bytes_length = 0;
+ }
else
{
/* We successfully read a single multibyte character. */
@@ -761,8 +793,13 @@ _rl_insert_char (count, c)
i = 0;
while (i < string_size)
{
- strncpy (string + i, incoming, incoming_length);
- i += incoming_length;
+ if (incoming_length == 1)
+ string[i++] = *incoming;
+ else
+ {
+ strncpy (string + i, incoming, incoming_length);
+ i += incoming_length;
+ }
}
incoming_length = 0;
stored_count = 0;
@@ -790,8 +827,13 @@ _rl_insert_char (count, c)
i = 0;
while (i < string_size)
{
- strncpy (string + i, incoming, incoming_length);
- i += incoming_length;
+ if (incoming_length == 1)
+ string[i++] = *incoming;
+ else
+ {
+ strncpy (string + i, incoming, incoming_length);
+ i += incoming_length;
+ }
}
while (count)
@@ -857,8 +899,7 @@ _rl_insert_char (count, c)
If C introduces a multibyte character sequence, read the entire sequence
before starting the overwrite loop. */
int
-_rl_overwrite_char (count, c)
- int count, c;
+_rl_overwrite_char (int count, int c)
{
int i;
#if defined (HANDLE_MULTIBYTE)
@@ -891,8 +932,7 @@ _rl_overwrite_char (count, c)
}
int
-rl_insert (count, c)
- int count, c;
+rl_insert (int count, int c)
{
int r, n, x;
@@ -902,6 +942,7 @@ rl_insert (count, c)
x = 0;
n = (unsigned short)-2;
while (_rl_optimize_typeahead &&
+ rl_num_chars_to_read == 0 &&
(RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) &&
_rl_pushed_input_available () == 0 &&
_rl_input_queued (0) &&
@@ -941,8 +982,7 @@ rl_insert (count, c)
/* Insert the next typed character verbatim. */
static int
-_rl_insert_next (count)
- int count;
+_rl_insert_next (int count)
{
int c;
@@ -966,24 +1006,37 @@ _rl_insert_next (count)
#if defined (READLINE_CALLBACKS)
static int
-_rl_insert_next_callback (data)
- _rl_callback_generic_arg *data;
+_rl_insert_next_callback (_rl_callback_generic_arg *data)
{
- int count;
+ int count, r;
count = data->count;
+ r = 0;
+
+ if (count < 0)
+ {
+ data->count++;
+ r = _rl_insert_next (1);
+ _rl_want_redisplay = 1;
+ /* If we should keep going, leave the callback function installed */
+ if (data->count < 0 && r == 0)
+ return r;
+ count = 0; /* data->count == 0 || r != 0; force break below */
+ }
/* Deregister function, let rl_callback_read_char deallocate data */
_rl_callback_func = 0;
_rl_want_redisplay = 1;
-
+
+ if (count == 0)
+ return r;
+
return _rl_insert_next (count);
}
#endif
int
-rl_quoted_insert (count, key)
- int count, key;
+rl_quoted_insert (int count, int key)
{
/* Let's see...should the callback interface futz with signal handling? */
#if defined (HANDLE_SIGNALS)
@@ -999,14 +1052,24 @@ rl_quoted_insert (count, key)
return (0);
}
#endif
-
+
+ /* A negative count means to quote the next -COUNT characters. */
+ if (count < 0)
+ {
+ int r;
+
+ do
+ r = _rl_insert_next (1);
+ while (r == 0 && ++count < 0);
+ return r;
+ }
+
return _rl_insert_next (count);
}
/* Insert a tab character. */
int
-rl_tab_insert (count, key)
- int count, key;
+rl_tab_insert (int count, int key)
{
return (_rl_insert_char (count, '\t'));
}
@@ -1015,8 +1078,7 @@ rl_tab_insert (count, key)
KEY is the key that invoked this command. I guess it could have
meaning in the future. */
int
-rl_newline (count, key)
- int count, key;
+rl_newline (int count, int key)
{
rl_done = 1;
@@ -1049,8 +1111,7 @@ rl_newline (count, key)
is just a stub, you bind keys to it and the code in _rl_dispatch ()
is special cased. */
int
-rl_do_lowercase_version (ignore1, ignore2)
- int ignore1, ignore2;
+rl_do_lowercase_version (int ignore1, int ignore2)
{
return 0;
}
@@ -1059,8 +1120,7 @@ rl_do_lowercase_version (ignore1, ignore2)
rubout in overwrite mode has one oddity: it replaces a control
character that's displayed as two characters (^X) with two spaces. */
int
-_rl_overwrite_rubout (count, key)
- int count, key;
+_rl_overwrite_rubout (int count, int key)
{
int opoint;
int i, l;
@@ -1102,8 +1162,7 @@ _rl_overwrite_rubout (count, key)
/* Rubout the character behind point. */
int
-rl_rubout (count, key)
- int count, key;
+rl_rubout (int count, int key)
{
if (count < 0)
return (rl_delete (-count, key));
@@ -1121,8 +1180,7 @@ rl_rubout (count, key)
}
int
-_rl_rubout_char (count, key)
- int count, key;
+_rl_rubout_char (int count, int key)
{
int orig_point;
unsigned char c;
@@ -1167,8 +1225,7 @@ _rl_rubout_char (count, key)
/* Delete the character under the cursor. Given a numeric argument,
kill that many characters instead. */
int
-rl_delete (count, key)
- int count, key;
+rl_delete (int count, int key)
{
int xpoint;
@@ -1205,8 +1262,7 @@ rl_delete (count, key)
behind the cursor is deleted. COUNT is obeyed and may be used
to delete forward or backward that many characters. */
int
-rl_rubout_or_delete (count, key)
- int count, key;
+rl_rubout_or_delete (int count, int key)
{
if (rl_end != 0 && rl_point == rl_end)
return (_rl_rubout_char (count, key));
@@ -1216,8 +1272,7 @@ rl_rubout_or_delete (count, key)
/* Delete all spaces and tabs around point. */
int
-rl_delete_horizontal_space (count, ignore)
- int count, ignore;
+rl_delete_horizontal_space (int count, int ignore)
{
int start;
@@ -1245,8 +1300,7 @@ rl_delete_horizontal_space (count, ignore)
is caught before this is invoked, so this really does the same thing as
delete-char-or-list-or-eof, as long as it's bound to the eof character. */
int
-rl_delete_or_show_completions (count, key)
- int count, key;
+rl_delete_or_show_completions (int count, int key)
{
if (rl_end != 0 && rl_point == rl_end)
return (rl_possible_completions (count, key));
@@ -1261,8 +1315,7 @@ rl_delete_or_show_completions (count, key)
/* Turn the current line into a comment in shell history.
A K*rn shell style function. */
int
-rl_insert_comment (count, key)
- int count, key;
+rl_insert_comment (int count, int key)
{
char *rl_comment_text;
int rl_comment_len;
@@ -1300,24 +1353,21 @@ rl_insert_comment (count, key)
/* Uppercase the word at point. */
int
-rl_upcase_word (count, key)
- int count, key;
+rl_upcase_word (int count, int key)
{
return (rl_change_case (count, UpCase));
}
/* Lowercase the word at point. */
int
-rl_downcase_word (count, key)
- int count, key;
+rl_downcase_word (int count, int key)
{
return (rl_change_case (count, DownCase));
}
/* Upcase the first letter, downcase the rest. */
int
-rl_capitalize_word (count, key)
- int count, key;
+rl_capitalize_word (int count, int key)
{
return (rl_change_case (count, CapCase));
}
@@ -1328,11 +1378,11 @@ rl_capitalize_word (count, key)
If a negative argument is given, leave point where it started,
otherwise, leave it where it moves to. */
static int
-rl_change_case (count, op)
- int count, op;
+rl_change_case (int count, int op)
{
int start, next, end;
- int inword, c, nc, nop;
+ int inword, nc, nop;
+ wchar_t c;
#if defined (HANDLE_MULTIBYTE)
wchar_t wc, nwc;
char mb[MB_LEN_MAX+1];
@@ -1382,7 +1432,10 @@ rl_change_case (count, op)
}
else
nop = op;
- if (MB_CUR_MAX == 1 || rl_byte_oriented || isascii ((unsigned char)c))
+ /* Can't check isascii here; some languages (e.g, Turkish) have
+ multibyte upper and lower case equivalents of single-byte ascii
+ characters */
+ if (MB_CUR_MAX == 1 || rl_byte_oriented)
{
nc = (nop == UpCase) ? _rl_to_upper (c) : _rl_to_lower (c);
rl_line_buffer[start] = nc;
@@ -1398,11 +1451,35 @@ rl_change_case (count, op)
nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc);
if (nwc != wc) /* just skip unchanged characters */
{
+ char *s, *e;
mlen = wcrtomb (mb, nwc, &mps);
if (mlen > 0)
mb[mlen] = '\0';
- /* Assume the same width */
- strncpy (rl_line_buffer + start, mb, mlen);
+ /* what to do if m != mlen? adjust below */
+ /* m == length of old char, mlen == length of new char */
+ s = rl_line_buffer + start;
+ e = rl_line_buffer + rl_end;
+ if (m == mlen)
+ memcpy (s, mb, mlen);
+ else if (m > mlen)
+ {
+ memcpy (s, mb, mlen);
+ memmove (s + mlen, s + m, (e - s) - m);
+ next -= m - mlen; /* next char changes */
+ end -= m - mlen; /* end of word changes */
+ rl_end -= m - mlen; /* end of line changes */
+ rl_line_buffer[rl_end] = 0;
+ }
+ else if (m < mlen)
+ {
+ rl_extend_line_buffer (mlen - m + 1);
+ memmove (s + mlen, s + m, (e - s) - m);
+ memcpy (s, mb, mlen);
+ next += mlen - m; /* next char changes */
+ end += mlen - m; /* end of word changes */
+ rl_end += mlen - m; /* end of line changes */
+ rl_line_buffer[rl_end] = 0;
+ }
}
}
#endif
@@ -1423,8 +1500,7 @@ rl_change_case (count, op)
/* Transpose the words at point. If point is at the end of the line,
transpose the two words before point. */
int
-rl_transpose_words (count, key)
- int count, key;
+rl_transpose_words (int count, int key)
{
char *word1, *word2;
int w1_beg, w1_end, w2_beg, w2_end;
@@ -1484,8 +1560,7 @@ rl_transpose_words (count, key)
/* Transpose the characters at point. If point is at the end of the line,
then transpose the characters before point. */
int
-rl_transpose_chars (count, key)
- int count, key;
+rl_transpose_chars (int count, int key)
{
#if defined (HANDLE_MULTIBYTE)
char *dummy;
@@ -1549,13 +1624,9 @@ rl_transpose_chars (count, key)
int
#if defined (HANDLE_MULTIBYTE)
-_rl_char_search_internal (count, dir, smbchar, len)
- int count, dir;
- char *smbchar;
- int len;
+_rl_char_search_internal (int count, int dir, char *smbchar, int len)
#else
-_rl_char_search_internal (count, dir, schar)
- int count, dir, schar;
+_rl_char_search_internal (int count, int dir, int schar)
#endif
{
int pos, inc;
@@ -1619,8 +1690,7 @@ _rl_char_search_internal (count, dir, schar)
that there are two separate versions of this function. */
#if defined (HANDLE_MULTIBYTE)
static int
-_rl_char_search (count, fdir, bdir)
- int count, fdir, bdir;
+_rl_char_search (int count, int fdir, int bdir)
{
char mbchar[MB_LEN_MAX];
int mb_len;
@@ -1637,8 +1707,7 @@ _rl_char_search (count, fdir, bdir)
}
#else /* !HANDLE_MULTIBYTE */
static int
-_rl_char_search (count, fdir, bdir)
- int count, fdir, bdir;
+_rl_char_search (int count, int fdir, int bdir)
{
int c;
@@ -1669,8 +1738,7 @@ _rl_char_search_callback (data)
#endif
int
-rl_char_search (count, key)
- int count, key;
+rl_char_search (int count, int key)
{
#if defined (READLINE_CALLBACKS)
if (RL_ISSTATE (RL_STATE_CALLBACK))
@@ -1687,8 +1755,7 @@ rl_char_search (count, key)
}
int
-rl_backward_char_search (count, key)
- int count, key;
+rl_backward_char_search (int count, int key)
{
#if defined (READLINE_CALLBACKS)
if (RL_ISSTATE (RL_STATE_CALLBACK))
@@ -1712,10 +1779,9 @@ rl_backward_char_search (count, key)
/* Set the mark at POSITION. */
int
-_rl_set_mark_at_pos (position)
- int position;
+_rl_set_mark_at_pos (int position)
{
- if (position > rl_end)
+ if (position < 0 || position > rl_end)
return 1;
rl_mark = position;
@@ -1724,23 +1790,22 @@ _rl_set_mark_at_pos (position)
/* A bindable command to set the mark. */
int
-rl_set_mark (count, key)
- int count, key;
+rl_set_mark (int count, int key)
{
return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point));
}
/* Exchange the position of mark and point. */
int
-rl_exchange_point_and_mark (count, key)
- int count, key;
+rl_exchange_point_and_mark (int count, int key)
{
if (rl_mark > rl_end)
rl_mark = -1;
- if (rl_mark == -1)
+ if (rl_mark < 0)
{
rl_ding ();
+ rl_mark = 0; /* like _RL_FIX_POINT */
return 1;
}
else
diff --git a/tilde.c b/tilde.c
index 95bc421..9d0f296 100644
--- a/tilde.c
+++ b/tilde.c
@@ -1,6 +1,6 @@
/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
-/* Copyright (C) 1988-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1988-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -125,9 +125,7 @@ static char *glue_prefix_and_suffix PARAMS((char *, const char *, int));
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;
+tilde_find_prefix (const char *string, int *len)
{
register int i, j, string_len;
register char **prefixes;
@@ -160,8 +158,7 @@ tilde_find_prefix (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;
+tilde_find_suffix (const char *string)
{
register int i, j, string_len;
register char **suffixes;
@@ -189,8 +186,7 @@ tilde_find_suffix (string)
/* Return a new string which is the result of tilde expanding STRING. */
char *
-tilde_expand (string)
- const char *string;
+tilde_expand (const char *string)
{
char *result;
int result_size, result_index;
@@ -267,9 +263,7 @@ tilde_expand (string)
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;
+isolate_tilde_prefix (const char *fname, int *lenp)
{
char *ret;
int i;
@@ -293,9 +287,7 @@ isolate_tilde_prefix (fname, lenp)
function. Right now, it just calls tilde_find_suffix and allocates new
memory, but it can be expanded to do different things later. */
char *
-tilde_find_word (fname, flags, lenp)
- const char *fname;
- int flags, *lenp;
+tilde_find_word (const char *fname, int flags, int *lenp)
{
int x;
char *r;
@@ -323,10 +315,7 @@ tilde_find_word (fname, flags, lenp)
/* 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;
+glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind)
{
char *ret;
int plen, slen;
@@ -344,8 +333,7 @@ glue_prefix_and_suffix (prefix, suffix, suffind)
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;
+tilde_expand_word (const char *filename)
{
char *dirname, *expansion, *username;
int user_len;
@@ -434,9 +422,7 @@ tilde_expand_word (filename)
#undef NULL
#include <stdio.h>
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
char *result, line[512];
int done = 0;
@@ -464,11 +450,10 @@ main (argc, argv)
exit (0);
}
-static void memory_error_and_abort ();
+static void memory_error_and_abort (void);
static void *
-xmalloc (bytes)
- size_t bytes;
+xmalloc (size_t bytes)
{
void *temp = (char *)malloc (bytes);
@@ -478,9 +463,7 @@ xmalloc (bytes)
}
static void *
-xrealloc (pointer, bytes)
- void *pointer;
- int bytes;
+xrealloc (void *pointer, int bytes)
{
void *temp;
@@ -496,7 +479,7 @@ xrealloc (pointer, bytes)
}
static void
-memory_error_and_abort ()
+memory_error_and_abort (void)
{
fprintf (stderr, "readline: out of virtual memory\n");
abort ();
diff --git a/undo.c b/undo.c
index 5836304..ae65d38 100644
--- a/undo.c
+++ b/undo.c
@@ -1,6 +1,6 @@
/* undo.c - manage list of changes to lines, offering opportunity to undo them */
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -51,6 +51,8 @@
extern void _hs_replace_history_data PARAMS((int, histdata_t *, histdata_t *));
+extern HIST_ENTRY *_rl_saved_line_for_history;
+
/* Non-zero tells rl_delete_text and rl_insert_text to not add to
the undo list. */
int _rl_doing_an_undo = 0;
@@ -68,10 +70,7 @@ UNDO_LIST *rl_undo_list = (UNDO_LIST *)NULL;
/* **************************************************************** */
static UNDO_LIST *
-alloc_undo_entry (what, start, end, text)
- enum undo_code what;
- int start, end;
- char *text;
+alloc_undo_entry (enum undo_code what, int start, int end, char *text)
{
UNDO_LIST *temp;
@@ -88,10 +87,7 @@ alloc_undo_entry (what, start, end, text)
/* Remember how to undo something. Concatenate some undos if that
seems right. */
void
-rl_add_undo (what, start, end, text)
- enum undo_code what;
- int start, end;
- char *text;
+rl_add_undo (enum undo_code what, int start, int end, char *text)
{
UNDO_LIST *temp;
@@ -102,8 +98,7 @@ rl_add_undo (what, start, end, text)
/* Free an UNDO_LIST */
void
-_rl_free_undo_list (ul)
- UNDO_LIST *ul;
+_rl_free_undo_list (UNDO_LIST *ul)
{
UNDO_LIST *release;
@@ -121,7 +116,7 @@ _rl_free_undo_list (ul)
/* Free the existing undo list. */
void
-rl_free_undo_list ()
+rl_free_undo_list (void)
{
UNDO_LIST *release, *orig_list;
@@ -132,8 +127,7 @@ rl_free_undo_list ()
}
UNDO_LIST *
-_rl_copy_undo_entry (entry)
- UNDO_LIST *entry;
+_rl_copy_undo_entry (UNDO_LIST *entry)
{
UNDO_LIST *new;
@@ -143,8 +137,7 @@ _rl_copy_undo_entry (entry)
}
UNDO_LIST *
-_rl_copy_undo_list (head)
- UNDO_LIST *head;
+_rl_copy_undo_list (UNDO_LIST *head)
{
UNDO_LIST *list, *new, *roving, *c;
@@ -173,9 +166,9 @@ _rl_copy_undo_list (head)
/* Undo the next thing in the list. Return 0 if there
is nothing to undo, or non-zero if there was. */
int
-rl_do_undo ()
+rl_do_undo (void)
{
- UNDO_LIST *release;
+ UNDO_LIST *release, *search;
int waiting_for_begin, start, end;
HIST_ENTRY *cur, *temp;
@@ -232,6 +225,7 @@ rl_do_undo ()
release = rl_undo_list;
rl_undo_list = rl_undo_list->next;
+ release->next = 0; /* XXX */
/* If we are editing a history entry, make sure the change is replicated
in the history entry's line */
@@ -244,8 +238,30 @@ rl_do_undo ()
xfree (temp);
}
+ /* Make sure there aren't any history entries with that undo list */
_hs_replace_history_data (-1, (histdata_t *)release, (histdata_t *)rl_undo_list);
+ /* And make sure this list isn't anywhere in the saved line for history */
+ if (_rl_saved_line_for_history && _rl_saved_line_for_history->data)
+ {
+ /* Brute force; no finesse here */
+ search = (UNDO_LIST *)_rl_saved_line_for_history->data;
+ if (search == release)
+ _rl_saved_line_for_history->data = rl_undo_list;
+ else
+ {
+ while (search->next)
+ {
+ if (search->next == release)
+ {
+ search->next = rl_undo_list;
+ break;
+ }
+ search = search->next;
+ }
+ }
+ }
+
xfree (release);
}
while (waiting_for_begin);
@@ -255,8 +271,7 @@ rl_do_undo ()
#undef TRANS
int
-_rl_fix_last_undo_of_type (type, start, end)
- int type, start, end;
+_rl_fix_last_undo_of_type (int type, int start, int end)
{
UNDO_LIST *rl;
@@ -274,7 +289,7 @@ _rl_fix_last_undo_of_type (type, start, end)
/* Begin a group. Subsequent undos are undone as an atomic operation. */
int
-rl_begin_undo_group ()
+rl_begin_undo_group (void)
{
rl_add_undo (UNDO_BEGIN, 0, 0, 0);
_rl_undo_group_level++;
@@ -283,7 +298,7 @@ rl_begin_undo_group ()
/* End an undo group started with rl_begin_undo_group (). */
int
-rl_end_undo_group ()
+rl_end_undo_group (void)
{
rl_add_undo (UNDO_END, 0, 0, 0);
_rl_undo_group_level--;
@@ -292,8 +307,7 @@ rl_end_undo_group ()
/* Save an undo entry for the text from START to END. */
int
-rl_modifying (start, end)
- int start, end;
+rl_modifying (int start, int end)
{
if (start > end)
{
@@ -313,8 +327,7 @@ rl_modifying (start, end)
/* Revert the current line to its previous state. */
int
-rl_revert_line (count, key)
- int count, key;
+rl_revert_line (int count, int key)
{
if (rl_undo_list == 0)
rl_ding ();
@@ -333,8 +346,7 @@ rl_revert_line (count, key)
/* Do some undoing of things that were done. */
int
-rl_undo_command (count, key)
- int count, key;
+rl_undo_command (int count, int key)
{
if (count < 0)
return 0; /* Nothing to do. */
diff --git a/util.c b/util.c
index 4589c61..e009b23 100644
--- a/util.c
+++ b/util.c
@@ -1,6 +1,6 @@
/* util.c -- readline utility functions */
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -70,8 +70,7 @@ int _rl_allow_pathname_alphabetic_chars = 0;
static const char * const pathname_alphabetic_chars = "/-_=~.#$";
int
-rl_alphabetic (c)
- int c;
+rl_alphabetic (int c)
{
if (ALPHABETIC (c))
return (1);
@@ -97,7 +96,7 @@ _rl_walphabetic (wchar_t wc)
/* How to abort things. */
int
-_rl_abort_internal ()
+_rl_abort_internal (void)
{
rl_ding ();
rl_clear_message ();
@@ -117,22 +116,19 @@ _rl_abort_internal ()
}
int
-rl_abort (count, key)
- int count, key;
+rl_abort (int count, int key)
{
return (_rl_abort_internal ());
}
int
-_rl_null_function (count, key)
- int count, key;
+_rl_null_function (int count, int key)
{
return 0;
}
int
-rl_tty_status (count, key)
- int count, key;
+rl_tty_status (int count, int key)
{
#if defined (TIOCSTAT)
ioctl (1, TIOCSTAT, (char *)0);
@@ -146,8 +142,7 @@ rl_tty_status (count, key)
/* Return a copy of the string between FROM and TO.
FROM is inclusive, TO is not. */
char *
-rl_copy_text (from, to)
- int from, to;
+rl_copy_text (int from, int to)
{
register int length;
char *copy;
@@ -166,8 +161,7 @@ rl_copy_text (from, to)
/* Increase the size of RL_LINE_BUFFER until it has enough space to hold
LEN characters. */
void
-rl_extend_line_buffer (len)
- int len;
+rl_extend_line_buffer (int len)
{
while (len >= rl_line_buffer_len)
{
@@ -181,8 +175,7 @@ rl_extend_line_buffer (len)
/* A function for simple tilde expansion. */
int
-rl_tilde_expand (ignore, key)
- int ignore, key;
+rl_tilde_expand (int ignore, int key)
{
register int start, end;
char *homedir, *temp;
@@ -200,7 +193,7 @@ rl_tilde_expand (ignore, key)
}
else if (start >= 0 && rl_line_buffer[start] != '~')
{
- for (; !whitespace (rl_line_buffer[start]) && start >= 0; start--)
+ for (; start >= 0 && !whitespace (rl_line_buffer[start]); start--)
;
start++;
}
@@ -324,8 +317,7 @@ _rl_errmsg (format, arg1, arg2)
/* Determine if s2 occurs in s1. If so, return a pointer to the
match in s1. The compare is case insensitive. */
char *
-_rl_strindex (s1, s2)
- register const char *s1, *s2;
+_rl_strindex (const char *s1, const char *s2)
{
register int i, l, len;
@@ -339,8 +331,7 @@ _rl_strindex (s1, s2)
/* Find the first occurrence in STRING1 of any character from STRING2.
Return a pointer to the character in STRING1. */
char *
-_rl_strpbrk (string1, string2)
- const char *string1, *string2;
+_rl_strpbrk (const char *string1, const char *string2)
{
register const char *scan;
#if defined (HANDLE_MULTIBYTE)
@@ -374,10 +365,7 @@ _rl_strpbrk (string1, string2)
/* Compare at most COUNT characters from string1 to string2. Case
doesn't matter (strncasecmp). */
int
-_rl_strnicmp (string1, string2, count)
- const char *string1;
- const char *string2;
- int count;
+_rl_strnicmp (const char *string1, const char *string2, int count)
{
register const char *s1;
register const char *s2;
@@ -404,9 +392,7 @@ _rl_strnicmp (string1, string2, count)
/* strcmp (), but caseless (strcasecmp). */
int
-_rl_stricmp (string1, string2)
- const char *string1;
- const char *string2;
+_rl_stricmp (const char *string1, const char *string2)
{
register const char *s1;
register const char *s2;
@@ -431,8 +417,7 @@ _rl_stricmp (string1, string2)
/* Stupid comparison routine for qsort () ing strings. */
int
-_rl_qsort_string_compare (s1, s2)
- char **s1, **s2;
+_rl_qsort_string_compare (char **s1, char **s2)
{
#if defined (HAVE_STRCOLL)
return (strcoll (*s1, *s2));
@@ -448,7 +433,7 @@ _rl_qsort_string_compare (s1, s2)
}
/* Function equivalents for the macros defined in chardefs.h. */
-#define FUNCTION_FOR_MACRO(f) int (f) (c) int c; { return f (c); }
+#define FUNCTION_FOR_MACRO(f) int (f) (int c) { return f (c); }
FUNCTION_FOR_MACRO (_rl_digit_p)
FUNCTION_FOR_MACRO (_rl_digit_value)
@@ -461,8 +446,7 @@ FUNCTION_FOR_MACRO (_rl_uppercase_p)
/* A convenience function, to force memory deallocation to be performed
by readline. DLLs on Windows apparently require this. */
void
-rl_free (mem)
- void *mem;
+rl_free (void *mem)
{
if (mem)
free (mem);
@@ -472,8 +456,7 @@ rl_free (mem)
all `public' readline header files. */
#undef _rl_savestring
char *
-_rl_savestring (s)
- const char *s;
+_rl_savestring (const char *s)
{
return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s)));
}
@@ -512,7 +495,7 @@ _rl_trace (va_alist)
}
int
-_rl_tropen ()
+_rl_tropen (void)
{
char fnbuf[128], *x;
@@ -525,14 +508,14 @@ _rl_tropen ()
#else
x = "/var/tmp";
#endif
- sprintf (fnbuf, "%s/rltrace.%ld", x, (long)getpid());
+ snprintf (fnbuf, sizeof (fnbuf), "%s/rltrace.%ld", x, (long)getpid());
unlink(fnbuf);
_rl_tracefp = fopen (fnbuf, "w+");
return _rl_tracefp != 0;
}
int
-_rl_trclose ()
+_rl_trclose (void)
{
int r;
@@ -542,8 +525,7 @@ _rl_trclose ()
}
void
-_rl_settracefp (fp)
- FILE *fp;
+_rl_settracefp (FILE *fp)
{
_rl_tracefp = fp;
}
@@ -559,8 +541,7 @@ _rl_settracefp (fp)
/* Report STRING to the audit system. */
void
-_rl_audit_tty (string)
- char *string;
+_rl_audit_tty (char *string)
{
struct audit_message req;
struct sockaddr_nl addr;
diff --git a/vi_keymap.c b/vi_keymap.c
index e5da2e0..045258b 100644
--- a/vi_keymap.c
+++ b/vi_keymap.c
@@ -1,6 +1,6 @@
/* vi_keymap.c -- the keymap for vi_mode in readline (). */
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
diff --git a/vi_mode.c b/vi_mode.c
index 56d2e72..836371c 100644
--- a/vi_mode.c
+++ b/vi_mode.c
@@ -1,7 +1,7 @@
/* vi_mode.c -- A vi emulation mode for Bash.
Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -63,6 +63,21 @@
#define member(c, s) ((c) ? (char *)strchr ((s), (c)) != (char *)NULL : 0)
#endif
+/* Increment START to the next character in RL_LINE_BUFFER, handling multibyte chars */
+#if defined (HANDLE_MULTIBYTE)
+#define INCREMENT_POS(start) \
+ do { \
+ if (MB_CUR_MAX == 1 || rl_byte_oriented) \
+ start++; \
+ else \
+ start = _rl_find_next_mbchar (rl_line_buffer, start, 1, MB_FIND_ANY); \
+ } while (0)
+#else /* !HANDLE_MULTIBYTE */
+#define INCREMENT_POS(start) (start)++
+#endif /* !HANDLE_MULTIBYTE */
+
+/* This is global so other parts of the code can check whether the last
+ command was a text modification command. */
int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */
_rl_vimotion_cxt *_rl_vimvcxt = 0;
@@ -99,7 +114,7 @@ static int _rl_vi_last_search_mblen;
#else
static int _rl_vi_last_search_char;
#endif
-static int _rl_vi_last_replacement;
+static char _rl_vi_last_replacement[MB_LEN_MAX+1]; /* reserve for trailing NULL */
static int _rl_vi_last_key_before_insert;
@@ -116,7 +131,7 @@ static void _rl_vi_save_insert PARAMS((UNDO_LIST *));
static void vi_save_insert_buffer PARAMS ((int, int));
-static void _rl_vi_backup PARAMS((void));
+static inline void _rl_vi_backup PARAMS((void));
static int _rl_vi_arg_dispatch PARAMS((int));
static int rl_digit_loop1 PARAMS((void));
@@ -124,6 +139,9 @@ static int rl_digit_loop1 PARAMS((void));
static int _rl_vi_set_mark PARAMS((void));
static int _rl_vi_goto_mark PARAMS((void));
+static inline int _rl_vi_advance_point PARAMS((void));
+static inline int _rl_vi_backup_point PARAMS((void));
+
static void _rl_vi_append_forward PARAMS((int));
static int _rl_vi_callback_getchar PARAMS((char *, int));
@@ -146,7 +164,7 @@ static int vi_yank_dispatch PARAMS((_rl_vimotion_cxt *));
static int vidomove_dispatch PARAMS((_rl_vimotion_cxt *));
void
-_rl_vi_initialize_line ()
+_rl_vi_initialize_line (void)
{
register int i, n;
@@ -158,7 +176,7 @@ _rl_vi_initialize_line ()
}
void
-_rl_vi_reset_last ()
+_rl_vi_reset_last (void)
{
_rl_vi_last_command = 'i';
_rl_vi_last_repeat = 1;
@@ -167,8 +185,7 @@ _rl_vi_reset_last ()
}
void
-_rl_vi_set_last (key, repeat, sign)
- int key, repeat, sign;
+_rl_vi_set_last (int key, int repeat, int sign)
{
_rl_vi_last_command = key;
_rl_vi_last_repeat = repeat;
@@ -178,31 +195,28 @@ _rl_vi_set_last (key, repeat, sign)
/* A convenience function that calls _rl_vi_set_last to save the last command
information and enters insertion mode. */
void
-rl_vi_start_inserting (key, repeat, sign)
- int key, repeat, sign;
+rl_vi_start_inserting (int key, int repeat, int sign)
{
_rl_vi_set_last (key, repeat, sign);
+ rl_begin_undo_group (); /* ensure inserts aren't concatenated */
rl_vi_insertion_mode (1, key);
}
/* Is the command C a VI mode text modification command? */
int
-_rl_vi_textmod_command (c)
- int c;
+_rl_vi_textmod_command (int c)
{
return (member (c, vi_textmod));
}
int
-_rl_vi_motion_command (c)
- int c;
+_rl_vi_motion_command (int c)
{
return (member (c, vi_motion));
}
static void
-_rl_vi_replace_insert (count)
- int count;
+_rl_vi_replace_insert (int count)
{
int nchars;
@@ -217,8 +231,7 @@ _rl_vi_replace_insert (count)
}
static void
-_rl_vi_stuff_insert (count)
- int count;
+_rl_vi_stuff_insert (int count)
{
rl_begin_undo_group ();
while (count--)
@@ -230,8 +243,7 @@ _rl_vi_stuff_insert (count)
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;
+rl_vi_redo (int count, int c)
{
int r;
@@ -296,16 +308,14 @@ rl_vi_redo (count, c)
/* A placeholder for further expansion. */
int
-rl_vi_undo (count, key)
- int count, key;
+rl_vi_undo (int count, int 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;
+rl_vi_yank_arg (int count, int 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. */
@@ -320,8 +330,7 @@ rl_vi_yank_arg (count, key)
/* 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;
+rl_vi_fetch_history (int count, int c)
{
int wanted;
@@ -345,8 +354,7 @@ rl_vi_fetch_history (count, c)
/* Search again for the last thing searched for. */
int
-rl_vi_search_again (count, key)
- int count, key;
+rl_vi_search_again (int count, int key)
{
switch (key)
{
@@ -363,8 +371,7 @@ rl_vi_search_again (count, key)
/* Do a vi style search. */
int
-rl_vi_search (count, key)
- int count, key;
+rl_vi_search (int count, int key)
{
switch (key)
{
@@ -387,14 +394,13 @@ rl_vi_search (count, key)
/* Completion, from vi's point of view. */
int
-rl_vi_complete (ignore, key)
- int ignore, key;
+rl_vi_complete (int ignore, int 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++;
+ _rl_vi_advance_point ();
}
if (key == '*')
@@ -414,8 +420,7 @@ rl_vi_complete (ignore, key)
/* Tilde expansion for vi mode. */
int
-rl_vi_tilde_expand (ignore, key)
- int ignore, key;
+rl_vi_tilde_expand (int ignore, int key)
{
rl_tilde_expand (0, key);
rl_vi_start_inserting (key, 1, rl_arg_sign);
@@ -424,8 +429,7 @@ rl_vi_tilde_expand (ignore, key)
/* Previous word in vi mode. */
int
-rl_vi_prev_word (count, key)
- int count, key;
+rl_vi_prev_word (int count, int key)
{
if (count < 0)
return (rl_vi_next_word (-count, key));
@@ -446,8 +450,7 @@ rl_vi_prev_word (count, key)
/* Next word in vi mode. */
int
-rl_vi_next_word (count, key)
- int count, key;
+rl_vi_next_word (int count, int key)
{
if (count < 0)
return (rl_vi_prev_word (-count, key));
@@ -465,10 +468,72 @@ rl_vi_next_word (count, key)
return (0);
}
+static inline int
+_rl_vi_advance_point (void)
+{
+ int point;
+
+ point = rl_point;
+ if (rl_point < rl_end)
+#if defined (HANDLE_MULTIBYTE)
+ {
+ if (MB_CUR_MAX == 1 || rl_byte_oriented)
+ rl_point++;
+ else
+ {
+ point = rl_point;
+ rl_point = _rl_forward_char_internal (1);
+ if (point == rl_point || rl_point > rl_end)
+ rl_point = rl_end;
+ }
+ }
+#else
+ rl_point++;
+#endif
+
+ return point;
+}
+
+/* Move the cursor back one character. */
+static inline void
+_rl_vi_backup (void)
+{
+ 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--;
+}
+
+/* Move the point back one character, returning the starting value and not
+ doing anything at the beginning of the line */
+static inline int
+_rl_vi_backup_point (void)
+{
+ int point;
+
+ point = rl_point;
+ if (rl_point > 0)
+#if defined (HANDLE_MULTIBYTE)
+ {
+ if (MB_CUR_MAX == 1 || rl_byte_oriented)
+ rl_point--;
+ else
+ {
+ point = rl_point;
+ rl_point = _rl_backward_char_internal (1);
+ if (rl_point < 0)
+ rl_point = 0; /* XXX - not really necessary */
+ }
+ }
+#else
+ rl_point--;
+#endif
+ return point;
+}
+
/* Move to the end of the ?next? word. */
int
-rl_vi_end_word (count, key)
- int count, key;
+rl_vi_end_word (int count, int key)
{
if (count < 0)
{
@@ -485,25 +550,23 @@ rl_vi_end_word (count, key)
/* Move forward a word the way that 'W' does. */
int
-rl_vi_fWord (count, ignore)
- int count, ignore;
+rl_vi_fWord (int count, int ignore)
{
while (count-- && rl_point < (rl_end - 1))
{
/* Skip until whitespace. */
while (!whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
+ _rl_vi_advance_point ();
/* Now skip whitespace. */
while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
+ _rl_vi_advance_point ();
}
return (0);
}
int
-rl_vi_bWord (count, ignore)
- int count, ignore;
+rl_vi_bWord (int count, int ignore)
{
while (count-- && rl_point > 0)
{
@@ -514,141 +577,177 @@ rl_vi_bWord (count, ignore)
rl_point--;
while (rl_point > 0 && whitespace (rl_line_buffer[rl_point]))
- rl_point--;
+ _rl_vi_backup_point ();
if (rl_point > 0)
{
- while (--rl_point >= 0 && !whitespace (rl_line_buffer[rl_point]));
- rl_point++;
+ do
+ _rl_vi_backup_point ();
+ while (rl_point > 0 && !whitespace (rl_line_buffer[rl_point]));
+ if (rl_point > 0) /* hit whitespace */
+ rl_point++;
+
+ if (rl_point < 0)
+ rl_point = 0;
}
}
return (0);
}
int
-rl_vi_eWord (count, ignore)
- int count, ignore;
+rl_vi_eWord (int count, int ignore)
{
+ int opoint;
+
while (count-- && rl_point < (rl_end - 1))
{
- if (!whitespace (rl_line_buffer[rl_point]))
- rl_point++;
+ if (whitespace (rl_line_buffer[rl_point]) == 0)
+ _rl_vi_advance_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]))
- rl_point++;
+ _rl_vi_advance_point ();
if (rl_point && rl_point < rl_end)
{
+ opoint = rl_point;
+
/* Skip whitespace. */
while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
- rl_point++;
+ opoint = _rl_vi_advance_point (); /* XXX - why? */
/* Skip until whitespace. */
while (rl_point < rl_end && !whitespace (rl_line_buffer[rl_point]))
- rl_point++;
+ opoint = _rl_vi_advance_point ();
/* Move back to the last character of the word. */
- rl_point--;
+ rl_point = opoint;
}
}
return (0);
}
int
-rl_vi_fword (count, ignore)
- int count, ignore;
+rl_vi_fword (int count, int ignore)
{
+ int opoint;
+
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++;
+ _rl_vi_advance_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++;
+ _rl_vi_advance_point ();
}
+ opoint = rl_point;
+
/* Move past whitespace. */
while (whitespace (rl_line_buffer[rl_point]) && rl_point < rl_end)
- rl_point++;
+ opoint = _rl_vi_advance_point ();
}
return (0);
}
int
-rl_vi_bword (count, ignore)
- int count, ignore;
+rl_vi_bword (int count, int ignore)
{
+ int opoint;
+
while (count-- && rl_point > 0)
{
- int last_is_ident;
+ int prev_is_ident, cur_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 (--rl_point == 0)
+ break;
/* 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--;
+ cur_is_ident = _rl_isident (rl_line_buffer[rl_point]);
+ opoint = _rl_vi_backup_point ();
+ prev_is_ident = _rl_isident (rl_line_buffer[rl_point]);
+ if ((cur_is_ident && !prev_is_ident) || (!cur_is_ident && prev_is_ident))
+ ; /* leave point alone, we backed it up one character */
+ else
+ rl_point = opoint;
while (rl_point > 0 && whitespace (rl_line_buffer[rl_point]))
- rl_point--;
+ _rl_vi_backup_point ();
if (rl_point > 0)
{
+ opoint = rl_point;
if (_rl_isident (rl_line_buffer[rl_point]))
- while (--rl_point >= 0 && _rl_isident (rl_line_buffer[rl_point]));
+ do
+ opoint = _rl_vi_backup_point ();
+ while (rl_point > 0 && _rl_isident (rl_line_buffer[rl_point]));
else
- while (--rl_point >= 0 && !_rl_isident (rl_line_buffer[rl_point]) &&
+ do
+ opoint = _rl_vi_backup_point ();
+ while (rl_point > 0 && !_rl_isident (rl_line_buffer[rl_point]) &&
!whitespace (rl_line_buffer[rl_point]));
- rl_point++;
+
+ if (rl_point > 0)
+ rl_point = opoint;
+
+ if (rl_point < 0)
+ rl_point = 0;
}
}
return (0);
}
int
-rl_vi_eword (count, ignore)
- int count, ignore;
+rl_vi_eword (int count, int ignore)
{
- while (count-- && rl_point < rl_end - 1)
+ int opoint;
+
+ while (count-- && rl_point < (rl_end - 1))
{
- if (!whitespace (rl_line_buffer[rl_point]))
- rl_point++;
+ if (whitespace (rl_line_buffer[rl_point]) == 0)
+ _rl_vi_advance_point ();
while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
- rl_point++;
+ _rl_vi_advance_point ();
+ opoint = 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]));
+ do
+ {
+ opoint = _rl_vi_advance_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])
+ do
+ {
+ opoint = _rl_vi_advance_point ();
+ }
+ while (rl_point < rl_end && !_rl_isident (rl_line_buffer[rl_point])
&& !whitespace (rl_line_buffer[rl_point]));
}
- rl_point--;
+ rl_point = opoint;
}
return (0);
}
int
-rl_vi_insert_beg (count, key)
- int count, key;
+rl_vi_insert_beg (int count, int key)
{
rl_beg_of_line (1, key);
rl_vi_insert_mode (1, key);
@@ -656,32 +755,13 @@ rl_vi_insert_beg (count, key)
}
static void
-_rl_vi_append_forward (key)
- int key;
+_rl_vi_append_forward (int key)
{
- int point;
-
- if (rl_point < rl_end)
- {
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
- rl_point++;
- else
- {
- point = rl_point;
-#if 0
- rl_forward_char (1, key);
-#else
- rl_point = _rl_forward_char_internal (1);
-#endif
- if (point == rl_point)
- rl_point = rl_end;
- }
- }
+ _rl_vi_advance_point ();
}
int
-rl_vi_append_mode (count, key)
- int count, key;
+rl_vi_append_mode (int count, int key)
{
_rl_vi_append_forward (key);
rl_vi_start_inserting (key, 1, rl_arg_sign);
@@ -689,8 +769,7 @@ rl_vi_append_mode (count, key)
}
int
-rl_vi_append_eol (count, key)
- int count, key;
+rl_vi_append_eol (int count, int key)
{
rl_end_of_line (1, key);
rl_vi_append_mode (1, key);
@@ -699,8 +778,7 @@ rl_vi_append_eol (count, key)
/* What to do in the case of C-d. */
int
-rl_vi_eof_maybe (count, c)
- int count, c;
+rl_vi_eof_maybe (int count, int c)
{
return (rl_newline (1, '\n'));
}
@@ -710,8 +788,7 @@ rl_vi_eof_maybe (count, c)
/* Switching from one mode to the other really just involves
switching keymaps. */
int
-rl_vi_insertion_mode (count, key)
- int count, key;
+rl_vi_insertion_mode (int count, int key)
{
_rl_keymap = vi_insertion_keymap;
_rl_vi_last_key_before_insert = key;
@@ -721,16 +798,14 @@ rl_vi_insertion_mode (count, key)
}
int
-rl_vi_insert_mode (count, key)
- int count, key;
+rl_vi_insert_mode (int count, int key)
{
rl_vi_start_inserting (key, 1, rl_arg_sign);
return (0);
}
static void
-vi_save_insert_buffer (start, len)
- int start, len;
+vi_save_insert_buffer (int start, int len)
{
/* Same code as _rl_vi_save_insert below */
if (len >= vi_insert_buffer_size)
@@ -743,7 +818,7 @@ vi_save_insert_buffer (start, len)
}
static void
-_rl_vi_save_replace ()
+_rl_vi_save_replace (void)
{
int len, start, end;
UNDO_LIST *up;
@@ -766,8 +841,7 @@ _rl_vi_save_replace ()
}
static void
-_rl_vi_save_insert (up)
- UNDO_LIST *up;
+_rl_vi_save_insert (UNDO_LIST *up)
{
int len, start, end;
@@ -786,7 +860,7 @@ _rl_vi_save_insert (up)
}
void
-_rl_vi_done_inserting ()
+_rl_vi_done_inserting (void)
{
if (_rl_vi_doing_insert)
{
@@ -821,8 +895,7 @@ _rl_vi_done_inserting ()
}
int
-rl_vi_movement_mode (count, key)
- int count, key;
+rl_vi_movement_mode (int count, int key)
{
if (rl_point > 0)
rl_backward_char (1, key);
@@ -843,8 +916,7 @@ rl_vi_movement_mode (count, key)
}
int
-rl_vi_arg_digit (count, c)
- int count, c;
+rl_vi_arg_digit (int count, int c)
{
if (c == '0' && rl_numeric_arg == 1 && !rl_explicit_arg)
return (rl_beg_of_line (1, c));
@@ -855,8 +927,7 @@ rl_vi_arg_digit (count, c)
/* Change the case of the next COUNT characters. */
#if defined (HANDLE_MULTIBYTE)
static int
-_rl_vi_change_mbchar_case (count)
- int count;
+_rl_vi_change_mbchar_case (int count)
{
wchar_t wc;
char mb[MB_LEN_MAX+1];
@@ -895,7 +966,7 @@ _rl_vi_change_mbchar_case (count)
rl_begin_undo_group ();
rl_vi_delete (1, 0);
if (rl_point < p) /* Did we retreat at EOL? */
- rl_point++; /* XXX - should we advance more than 1 for mbchar? */
+ _rl_vi_advance_point ();
rl_insert_text (mb);
rl_end_undo_group ();
rl_vi_check ();
@@ -909,8 +980,7 @@ _rl_vi_change_mbchar_case (count)
#endif
int
-rl_vi_change_case (count, ignore)
- int count, ignore;
+rl_vi_change_case (int count, int ignore)
{
int c, p;
@@ -956,8 +1026,7 @@ rl_vi_change_case (count, ignore)
}
int
-rl_vi_put (count, key)
- int count, key;
+rl_vi_put (int count, int 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);
@@ -969,36 +1038,26 @@ rl_vi_put (count, key)
return (0);
}
-static void
-_rl_vi_backup ()
-{
- 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--;
-}
-
+/* Move the cursor back one character if you're at the end of the line */
int
-rl_vi_check ()
+rl_vi_check (void)
{
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--;
- }
+ _rl_vi_backup ();
return (0);
}
+/* Move to the character position specified by COUNT */
int
-rl_vi_column (count, key)
- int count, key;
+rl_vi_column (int count, int key)
{
if (count > rl_end)
rl_end_of_line (1, key);
else
- rl_point = count - 1;
+ {
+ rl_point = 0;
+ rl_point = _rl_forward_char_internal (count - 1);
+ }
return (0);
}
@@ -1006,8 +1065,7 @@ rl_vi_column (count, key)
argument should be aborted, 0 if we should not read any more chars, and
1 if we should continue to read chars. */
static int
-_rl_vi_arg_dispatch (c)
- int c;
+_rl_vi_arg_dispatch (int c)
{
int key;
@@ -1041,7 +1099,7 @@ _rl_vi_arg_dispatch (c)
Don't recognize minus sign?
Should this do rl_save_prompt/rl_restore_prompt? */
static int
-rl_digit_loop1 ()
+rl_digit_loop1 (void)
{
int c, r;
@@ -1061,10 +1119,12 @@ rl_digit_loop1 ()
return (0);
}
+/* This set of functions is basically to handle the commands that take a
+ motion argument while in callback mode: read the command, read the motion
+ command modifier, find the extent of the text to affect, and dispatch the
+ command for execution. */
static void
-_rl_mvcxt_init (m, op, key)
- _rl_vimotion_cxt *m;
- int op, key;
+_rl_mvcxt_init (_rl_vimotion_cxt *m, int op, int key)
{
m->op = op;
m->state = m->flags = 0;
@@ -1077,8 +1137,7 @@ _rl_mvcxt_init (m, op, key)
}
static _rl_vimotion_cxt *
-_rl_mvcxt_alloc (op, key)
- int op, key;
+_rl_mvcxt_alloc (int op, int key)
{
_rl_vimotion_cxt *m;
@@ -1088,15 +1147,13 @@ _rl_mvcxt_alloc (op, key)
}
static void
-_rl_mvcxt_dispose (m)
- _rl_vimotion_cxt *m;
+_rl_mvcxt_dispose (_rl_vimotion_cxt *m)
{
xfree (m);
}
static int
-rl_domove_motion_callback (m)
- _rl_vimotion_cxt *m;
+rl_domove_motion_callback (_rl_vimotion_cxt *m)
{
int c;
@@ -1129,9 +1186,7 @@ rl_domove_motion_callback (m)
}
int
-_rl_vi_domove_motion_cleanup (c, m)
- int c;
- _rl_vimotion_cxt *m;
+_rl_vi_domove_motion_cleanup (int c, _rl_vimotion_cxt *m)
{
int r;
@@ -1153,7 +1208,7 @@ _rl_vi_domove_motion_cleanup (c, m)
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--;
+ rl_point--; /* XXX */
/* 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. */
@@ -1166,14 +1221,14 @@ _rl_vi_domove_motion_cleanup (c, m)
/* 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++;
+ _rl_vi_advance_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++;
+ _rl_vi_advance_point ();
}
}
@@ -1193,8 +1248,7 @@ _rl_vi_domove_motion_cleanup (c, m)
#define RL_VIMOVENUMARG() (RL_ISSTATE (RL_STATE_VIMOTION) && RL_ISSTATE (RL_STATE_NUMERICARG))
static int
-rl_domove_read_callback (m)
- _rl_vimotion_cxt *m;
+rl_domove_read_callback (_rl_vimotion_cxt *m)
{
int c, save;
@@ -1260,8 +1314,7 @@ rl_domove_read_callback (m)
}
static int
-rl_vi_domove_getchar (m)
- _rl_vimotion_cxt *m;
+rl_vi_domove_getchar (_rl_vimotion_cxt *m)
{
int c;
@@ -1274,8 +1327,7 @@ rl_vi_domove_getchar (m)
#if defined (READLINE_CALLBACKS)
int
-_rl_vi_domove_callback (m)
- _rl_vimotion_cxt *m;
+_rl_vi_domove_callback (_rl_vimotion_cxt *m)
{
int c, r;
@@ -1288,10 +1340,9 @@ _rl_vi_domove_callback (m)
}
#endif
-/* This code path taken when not in callback mode. */
+/* This code path is taken when not in callback mode. */
int
-rl_vi_domove (x, ignore)
- int x, *ignore;
+rl_vi_domove (int x, int *ignore)
{
int r;
_rl_vimotion_cxt *m;
@@ -1309,22 +1360,20 @@ rl_vi_domove (x, ignore)
}
static int
-vi_delete_dispatch (m)
- _rl_vimotion_cxt *m;
+vi_delete_dispatch (_rl_vimotion_cxt *m)
{
/* These are the motion commands that do not require adjusting the
mark. */
if (((strchr (" l|h^0bBFT`", m->motion) == 0) && (rl_point >= m->start)) &&
(rl_mark < rl_end))
- rl_mark++;
+ INCREMENT_POS (rl_mark);
rl_kill_text (rl_point, rl_mark);
return (0);
}
int
-rl_vi_delete_to (count, key)
- int count, key;
+rl_vi_delete_to (int count, int key)
{
int c, r;
@@ -1373,15 +1422,14 @@ rl_vi_delete_to (count, key)
}
static int
-vi_change_dispatch (m)
- _rl_vimotion_cxt *m;
+vi_change_dispatch (_rl_vimotion_cxt *m)
{
/* 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^0bBFT`", m->motion) == 0) && (rl_point >= m->start)) &&
(rl_mark < rl_end))
- rl_mark++;
+ INCREMENT_POS (rl_mark);
/* The cursor never moves with c[wW]. */
if ((_rl_to_upper (m->motion) == 'W') && rl_point < m->start)
@@ -1413,8 +1461,7 @@ vi_change_dispatch (m)
}
int
-rl_vi_change_to (count, key)
- int count, key;
+rl_vi_change_to (int count, int key)
{
int c, r;
@@ -1463,14 +1510,13 @@ rl_vi_change_to (count, key)
}
static int
-vi_yank_dispatch (m)
- _rl_vimotion_cxt *m;
+vi_yank_dispatch (_rl_vimotion_cxt *m)
{
/* These are the motion commands that do not require adjusting the
mark. */
if (((strchr (" l|h^0%bBFT`", m->motion) == 0) && (rl_point >= m->start)) &&
(rl_mark < rl_end))
- rl_mark++;
+ INCREMENT_POS (rl_mark);
rl_begin_undo_group ();
rl_kill_text (rl_point, rl_mark);
@@ -1482,8 +1528,7 @@ vi_yank_dispatch (m)
}
int
-rl_vi_yank_to (count, key)
- int count, key;
+rl_vi_yank_to (int count, int key)
{
int c, r;
@@ -1532,8 +1577,7 @@ rl_vi_yank_to (count, key)
}
static int
-vidomove_dispatch (m)
- _rl_vimotion_cxt *m;
+vidomove_dispatch (_rl_vimotion_cxt *m)
{
int r;
@@ -1559,8 +1603,7 @@ vidomove_dispatch (m)
}
int
-rl_vi_rubout (count, key)
- int count, key;
+rl_vi_rubout (int count, int key)
{
int opoint;
@@ -1590,8 +1633,7 @@ rl_vi_rubout (count, key)
}
int
-rl_vi_delete (count, key)
- int count, key;
+rl_vi_delete (int count, int key)
{
int end;
@@ -1626,8 +1668,7 @@ rl_vi_delete (count, key)
#define vi_unix_word_boundary(c) (whitespace(c) || ispunct(c))
int
-rl_vi_unix_word_rubout (count, key)
- int count, key;
+rl_vi_unix_word_rubout (int count, int key)
{
int orig_point;
@@ -1665,8 +1706,8 @@ rl_vi_unix_word_rubout (count, key)
while (rl_point && vi_unix_word_boundary (rl_line_buffer[rl_point - 1]))
rl_point--;
else if (rl_point > 0 && vi_unix_word_boundary (rl_line_buffer[rl_point]) == 0)
- while (rl_point && (vi_unix_word_boundary (rl_line_buffer[rl_point - 1]) == 0))
- rl_point--;
+ while (rl_point > 0 && (vi_unix_word_boundary (rl_line_buffer[rl_point - 1]) == 0))
+ _rl_vi_backup_point ();
}
rl_kill_text (orig_point, rl_point);
@@ -1677,8 +1718,7 @@ rl_vi_unix_word_rubout (count, key)
int
-rl_vi_back_to_indent (count, key)
- int count, key;
+rl_vi_back_to_indent (int count, int key)
{
rl_beg_of_line (1, key);
while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
@@ -1687,8 +1727,7 @@ rl_vi_back_to_indent (count, key)
}
int
-rl_vi_first_print (count, key)
- int count, key;
+rl_vi_first_print (int count, int key)
{
return (rl_vi_back_to_indent (1, key));
}
@@ -1697,8 +1736,7 @@ static int _rl_cs_dir, _rl_cs_orig_dir;
#if defined (READLINE_CALLBACKS)
static int
-_rl_vi_callback_char_search (data)
- _rl_callback_generic_arg *data;
+_rl_vi_callback_char_search (_rl_callback_generic_arg *data)
{
int c;
#if defined (HANDLE_MULTIBYTE)
@@ -1732,8 +1770,7 @@ _rl_vi_callback_char_search (data)
#endif
int
-rl_vi_char_search (count, key)
- int count, key;
+rl_vi_char_search (int count, int key)
{
int c;
#if defined (HANDLE_MULTIBYTE)
@@ -1826,8 +1863,7 @@ rl_vi_char_search (count, key)
/* Match brackets */
int
-rl_vi_match (ignore, key)
- int ignore, key;
+rl_vi_match (int ignore, int key)
{
int count = 1, brack, pos, tmp, pre;
@@ -1916,8 +1952,7 @@ rl_vi_match (ignore, key)
}
int
-rl_vi_bracktype (c)
- int c;
+rl_vi_bracktype (int c)
{
switch (c)
{
@@ -1932,9 +1967,7 @@ rl_vi_bracktype (c)
}
static int
-_rl_vi_change_char (count, c, mb)
- int count, c;
- char *mb;
+_rl_vi_change_char (int count, int c, char *mb)
{
int p;
@@ -1947,7 +1980,7 @@ _rl_vi_change_char (count, c, mb)
p = rl_point;
rl_vi_delete (1, c);
if (rl_point < p) /* Did we retreat at EOL? */
- rl_point++;
+ _rl_vi_append_forward (c);
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
rl_insert_text (mb);
@@ -1965,9 +1998,7 @@ _rl_vi_change_char (count, c, mb)
}
static int
-_rl_vi_callback_getchar (mb, mlen)
- char *mb;
- int mlen;
+_rl_vi_callback_getchar (char *mb, int mlen)
{
int c;
@@ -1988,13 +2019,18 @@ _rl_vi_callback_getchar (mb, mlen)
#if defined (READLINE_CALLBACKS)
static int
-_rl_vi_callback_change_char (data)
- _rl_callback_generic_arg *data;
+_rl_vi_callback_change_char (_rl_callback_generic_arg *data)
{
int c;
- char mb[MB_LEN_MAX];
+ char mb[MB_LEN_MAX+1];
- _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+ c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+#if defined (HANDLE_MULTIBYTE)
+ strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX);
+#else
+ _rl_vi_last_replacement[0] = c;
+#endif
+ _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* XXX */
if (c < 0)
return -1;
@@ -2007,17 +2043,16 @@ _rl_vi_callback_change_char (data)
#endif
int
-rl_vi_change_char (count, key)
- int count, key;
+rl_vi_change_char (int count, int key)
{
int c;
- char mb[MB_LEN_MAX];
+ char mb[MB_LEN_MAX+1];
if (_rl_vi_redoing)
{
- c = _rl_vi_last_replacement;
- mb[0] = c;
- mb[1] = '\0';
+ strncpy (mb, _rl_vi_last_replacement, MB_LEN_MAX);
+ c = (unsigned char)_rl_vi_last_replacement[0]; /* XXX */
+ mb[MB_LEN_MAX] = '\0';
}
#if defined (READLINE_CALLBACKS)
else if (RL_ISSTATE (RL_STATE_CALLBACK))
@@ -2028,7 +2063,15 @@ rl_vi_change_char (count, key)
}
#endif
else
- _rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+ {
+ c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+#ifdef HANDLE_MULTIBYTE
+ strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX);
+#else
+ _rl_vi_last_replacement[0] = c;
+#endif
+ _rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* just in case */
+ }
if (c < 0)
return -1;
@@ -2037,8 +2080,7 @@ rl_vi_change_char (count, key)
}
int
-rl_vi_subst (count, key)
- int count, key;
+rl_vi_subst (int count, int key)
{
/* If we are redoing, rl_vi_change_to will stuff the last motion char */
if (_rl_vi_redoing == 0)
@@ -2048,8 +2090,7 @@ rl_vi_subst (count, key)
}
int
-rl_vi_overstrike (count, key)
- int count, key;
+rl_vi_overstrike (int count, int key)
{
if (_rl_vi_doing_insert == 0)
{
@@ -2067,8 +2108,7 @@ rl_vi_overstrike (count, key)
}
int
-rl_vi_overstrike_delete (count, key)
- int count, key;
+rl_vi_overstrike_delete (int count, int key)
{
int i, s;
@@ -2098,8 +2138,7 @@ rl_vi_overstrike_delete (count, key)
}
int
-rl_vi_replace (count, key)
- int count, key;
+rl_vi_replace (int count, int key)
{
int i;
@@ -2130,6 +2169,9 @@ rl_vi_replace (count, key)
vi_insertion_keymap[CTRL ('H')].function == rl_rubout)
vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete;
+ /* Make sure this is the value we need. */
+ vi_replace_map[ANYOTHERKEY].type = ISFUNC;
+ vi_replace_map[ANYOTHERKEY].function = (rl_command_func_t *)NULL;
}
rl_vi_start_inserting (key, 1, rl_arg_sign);
@@ -2145,7 +2187,7 @@ rl_vi_replace (count, key)
the previous character. A space matches everything. Word delimiters are
space and ;. */
int
-rl_vi_possible_completions()
+rl_vi_possible_completions (void)
{
int save_pos = rl_point;
@@ -2153,7 +2195,7 @@ rl_vi_possible_completions()
{
while (rl_point < rl_end && rl_line_buffer[rl_point] != ' ' &&
rl_line_buffer[rl_point] != ';')
- rl_point++;
+ _rl_vi_advance_point ();
}
else if (rl_line_buffer[rl_point - 1] == ';')
{
@@ -2170,7 +2212,7 @@ rl_vi_possible_completions()
/* Functions to save and restore marks. */
static int
-_rl_vi_set_mark ()
+_rl_vi_set_mark (void)
{
int ch;
@@ -2190,8 +2232,7 @@ _rl_vi_set_mark ()
#if defined (READLINE_CALLBACKS)
static int
-_rl_vi_callback_set_mark (data)
- _rl_callback_generic_arg *data;
+_rl_vi_callback_set_mark (_rl_callback_generic_arg *data)
{
_rl_callback_func = 0;
_rl_want_redisplay = 1;
@@ -2201,8 +2242,7 @@ _rl_vi_callback_set_mark (data)
#endif
int
-rl_vi_set_mark (count, key)
- int count, key;
+rl_vi_set_mark (int count, int key)
{
#if defined (READLINE_CALLBACKS)
if (RL_ISSTATE (RL_STATE_CALLBACK))
@@ -2217,7 +2257,7 @@ rl_vi_set_mark (count, key)
}
static int
-_rl_vi_goto_mark ()
+_rl_vi_goto_mark (void)
{
int ch;
@@ -2248,8 +2288,7 @@ _rl_vi_goto_mark ()
#if defined (READLINE_CALLBACKS)
static int
-_rl_vi_callback_goto_mark (data)
- _rl_callback_generic_arg *data;
+_rl_vi_callback_goto_mark (_rl_callback_generic_arg *data)
{
_rl_callback_func = 0;
_rl_want_redisplay = 1;
@@ -2259,8 +2298,7 @@ _rl_vi_callback_goto_mark (data)
#endif
int
-rl_vi_goto_mark (count, key)
- int count, key;
+rl_vi_goto_mark (int count, int key)
{
#if defined (READLINE_CALLBACKS)
if (RL_ISSTATE (RL_STATE_CALLBACK))
diff --git a/xfree.c b/xfree.c
index 37a81e6..c199b29 100644
--- a/xfree.c
+++ b/xfree.c
@@ -1,6 +1,6 @@
/* xfree.c -- safe version of free that ignores attempts to free NUL */
-/* Copyright (C) 1991-2010 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2010,2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -42,8 +42,7 @@
/* Use this as the function to call when adding unwind protects so we
don't need to know what free() returns. */
void
-xfree (string)
- PTR_T string;
+xfree (PTR_T string)
{
if (string)
free (string);
diff --git a/xmalloc.c b/xmalloc.c
index c77d763..5d01d75 100644
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -1,6 +1,6 @@
/* xmalloc.c -- safe versions of malloc and realloc */
-/* Copyright (C) 1991-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -42,8 +42,7 @@
/* **************************************************************** */
static void
-memory_error_and_abort (fname)
- char *fname;
+memory_error_and_abort (char *fname)
{
fprintf (stderr, "%s: out of virtual memory\n", fname);
exit (2);
@@ -53,8 +52,7 @@ memory_error_and_abort (fname)
to hold BYTES number of bytes. If the memory cannot be allocated,
print an error message and abort. */
PTR_T
-xmalloc (bytes)
- size_t bytes;
+xmalloc (size_t bytes)
{
PTR_T temp;
@@ -65,9 +63,7 @@ xmalloc (bytes)
}
PTR_T
-xrealloc (pointer, bytes)
- PTR_T pointer;
- size_t bytes;
+xrealloc (PTR_T pointer, size_t bytes)
{
PTR_T temp;